unipo-ui 1.2.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cli/index.mjs +53 -4
- package/dist/admisi-YCOE3DMH.cjs +20 -0
- package/dist/admisi-YXCTBECZ.js +11 -0
- package/dist/akademik-PJGL6MSP.cjs +20 -0
- package/dist/akademik-TPDFEZGF.js +11 -0
- package/dist/akses-AUPQD6YN.cjs +20 -0
- package/dist/akses-V5XIMBWT.js +11 -0
- package/dist/arsip-2T7IEION.cjs +20 -0
- package/dist/arsip-LDRV7FYX.js +11 -0
- package/dist/cbt-4N6COVIN.js +11 -0
- package/dist/cbt-GMQSR7TP.cjs +20 -0
- package/dist/chunk-34OKV63Q.js +122 -0
- package/dist/chunk-34OKV63Q.js.map +1 -0
- package/dist/chunk-3O5ELKBH.cjs +18 -0
- package/dist/chunk-3O5ELKBH.cjs.map +1 -0
- package/dist/chunk-4BQOABRV.js +462 -0
- package/dist/chunk-4BQOABRV.js.map +1 -0
- package/dist/{chunk-DEF5CA7C.cjs → chunk-5VNCBW4R.cjs} +282 -1165
- package/dist/chunk-5VNCBW4R.cjs.map +1 -0
- package/dist/{chunk-SJ4DJOMZ.js → chunk-7AJ4LW5H.js} +163 -1019
- package/dist/chunk-7AJ4LW5H.js.map +1 -0
- package/dist/chunk-JASW45YF.cjs +510 -0
- package/dist/chunk-JASW45YF.cjs.map +1 -0
- package/dist/chunk-JSUHAYQ4.js +15 -0
- package/dist/chunk-JSUHAYQ4.js.map +1 -0
- package/dist/chunk-LN6HZMPI.js +1006 -0
- package/dist/chunk-LN6HZMPI.js.map +1 -0
- package/dist/chunk-LNJTDEQR.cjs +1937 -0
- package/dist/chunk-LNJTDEQR.cjs.map +1 -0
- package/dist/chunk-MKQEH7QS.cjs +1058 -0
- package/dist/chunk-MKQEH7QS.cjs.map +1 -0
- package/dist/chunk-TAKLMRU7.cjs +150 -0
- package/dist/chunk-TAKLMRU7.cjs.map +1 -0
- package/dist/chunk-TYCRRYCQ.js +1843 -0
- package/dist/chunk-TYCRRYCQ.js.map +1 -0
- package/dist/crm-C4XGSG6O.js +11 -0
- package/dist/crm-LTVCDNMK.cjs +20 -0
- package/dist/dasbor-OJLMSFTF.cjs +20 -0
- package/dist/dasbor-Y3UPFYFE.js +11 -0
- package/dist/edom-3GZUUB7H.cjs +20 -0
- package/dist/edom-K4Y2NV4K.js +11 -0
- package/dist/fakultas-DJRUVJBV.js +11 -0
- package/dist/fakultas-VVAQOPUX.cjs +20 -0
- package/dist/filter-D54KALbB.d.cts +436 -0
- package/dist/filter-D54KALbB.d.ts +436 -0
- package/dist/helpdesk-AWVC7BPE.cjs +20 -0
- package/dist/helpdesk-BAOXAU6G.js +11 -0
- package/dist/humas-7BMMJ3WF.js +11 -0
- package/dist/humas-H56JFUW6.cjs +20 -0
- package/dist/ikon.cjs +125 -0
- package/dist/ikon.cjs.map +1 -0
- package/dist/ikon.d.cts +140 -0
- package/dist/ikon.d.ts +140 -0
- package/dist/ikon.js +6 -0
- package/dist/ikon.js.map +1 -0
- package/dist/iku-7JLF2NIH.js +11 -0
- package/dist/iku-F47ZLMYJ.cjs +20 -0
- package/dist/index.cjs +544 -257
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +192 -2
- package/dist/index.d.ts +192 -2
- package/dist/index.js +126 -4
- package/dist/index.js.map +1 -1
- package/dist/induk-BGTGKRLL.js +11 -0
- package/dist/induk-DLYDMZAM.cjs +20 -0
- package/dist/integrasi-4VXNGA3V.cjs +20 -0
- package/dist/integrasi-IP3WWDO7.js +11 -0
- package/dist/kalender-DGQDGJCL.cjs +20 -0
- package/dist/kalender-FGGUBYKZ.js +11 -0
- package/dist/karier-H3HBFCQQ.js +11 -0
- package/dist/karier-QTU2P5YD.cjs +20 -0
- package/dist/katalog.cjs +1709 -0
- package/dist/katalog.cjs.map +1 -0
- package/dist/katalog.d.cts +645 -0
- package/dist/katalog.d.ts +645 -0
- package/dist/katalog.js +1626 -0
- package/dist/katalog.js.map +1 -0
- package/dist/kelulusan-BHFQM5N4.cjs +20 -0
- package/dist/kelulusan-ZR7CM6I5.js +11 -0
- package/dist/kemahasiswaan-EINWXAY7.cjs +20 -0
- package/dist/kemahasiswaan-NH2LEDH7.js +11 -0
- package/dist/kerjasama-FAOHZCML.js +11 -0
- package/dist/kerjasama-TXWJOU4Y.cjs +20 -0
- package/dist/keu-4TXF4FEP.cjs +20 -0
- package/dist/keu-SD7UOCDB.js +11 -0
- package/dist/kurikulum-SRO7TJYI.cjs +20 -0
- package/dist/kurikulum-XT7PZJOK.js +11 -0
- package/dist/layanan-RQ2AWCQ5.cjs +20 -0
- package/dist/layanan-Y6WUCSD2.js +11 -0
- package/dist/lms-5JYOSLBI.cjs +20 -0
- package/dist/lms-NTXMSHG2.js +11 -0
- package/dist/lppm-7DH7PRF3.cjs +20 -0
- package/dist/lppm-UXYGIOIF.js +11 -0
- package/dist/master-GKTTAKLF.cjs +20 -0
- package/dist/master-ZG4SPPDU.js +11 -0
- package/dist/mbkm-OGR72BTB.js +11 -0
- package/dist/mbkm-URKJHUIQ.cjs +20 -0
- package/dist/notifikasi-FMA26M4I.js +11 -0
- package/dist/notifikasi-QDCYIX7G.cjs +20 -0
- package/dist/pddikti-RJVYY2J4.cjs +20 -0
- package/dist/pddikti-VF2PXDKA.js +11 -0
- package/dist/{content-DaJPx5LX.d.cts → pemeliharaan-D5S-1lqW.d.ts} +38 -434
- package/dist/{content-DaJPx5LX.d.ts → pemeliharaan-Dr0HSxvZ.d.cts} +38 -434
- package/dist/perpustakaan-5RL33XG2.js +11 -0
- package/dist/perpustakaan-JXZW43MJ.cjs +20 -0
- package/dist/pilih-BEes_D3n.d.cts +205 -0
- package/dist/pilih-CEKqXMUS.d.ts +205 -0
- package/dist/pmb-EGTWW2ZH.cjs +20 -0
- package/dist/pmb-G7EAFJ3R.js +11 -0
- package/dist/portal-EI7TXN7H.cjs +20 -0
- package/dist/portal-MMUYX3RA.js +11 -0
- package/dist/portal-api-BJLO6AGI.js +11 -0
- package/dist/portal-api-Q6B3X6ZV.cjs +20 -0
- package/dist/profil-46FV46VH.cjs +20 -0
- package/dist/profil-4BIXIM6D.js +11 -0
- package/dist/referensi-HNYOJGNX.js +11 -0
- package/dist/referensi-VOT5BRCL.cjs +20 -0
- package/dist/registry.json +606 -4
- package/dist/repositori-2MJ43NXM.js +11 -0
- package/dist/repositori-KFXVJB7B.cjs +20 -0
- package/dist/rpl-2ZXHNSPF.js +11 -0
- package/dist/rpl-YF5MV2YA.cjs +20 -0
- package/dist/sarpras-CQ7QKVUN.js +11 -0
- package/dist/sarpras-XGPHHFCG.cjs +20 -0
- package/dist/scss/components/_animasi.scss +280 -0
- package/dist/scss/components/_ikon.scss +249 -0
- package/dist/scss/components/_katalog.scss +662 -0
- package/dist/scss/components/_platform.scss +364 -0
- package/dist/scss/index.scss +4 -0
- package/dist/sdm-N6LE66PP.cjs +20 -0
- package/dist/sdm-QKBXH3JF.js +11 -0
- package/dist/siakad.cjs +1389 -2915
- package/dist/siakad.cjs.map +1 -1
- package/dist/siakad.d.cts +31 -196
- package/dist/siakad.d.ts +31 -196
- package/dist/siakad.js +446 -2194
- package/dist/siakad.js.map +1 -1
- package/dist/spmi-J37NEYIU.js +11 -0
- package/dist/spmi-N6EU7KNC.cjs +20 -0
- package/dist/tracer-G6DDXVXC.cjs +20 -0
- package/dist/tracer-M3FTNWBG.js +11 -0
- package/dist/ui-unipo.css +1650 -0
- package/dist/ui-unipo.min.css +1 -1
- package/package.json +25 -3
- package/src/components/animasi.tsx +186 -0
- package/src/components/modal.tsx +113 -0
- package/src/components/overlays.tsx +6 -1
- package/src/components/pemeliharaan.tsx +152 -0
- package/src/components/platform.tsx +94 -0
- package/src/ikon/ilustrasi.tsx +283 -0
- package/src/ikon/index.ts +7 -0
- package/src/ikon/kotak.tsx +30 -0
- package/src/ikon/unipo.tsx +326 -0
- package/src/index.ts +8 -0
- package/src/katalog/aturan.ts +488 -0
- package/src/katalog/data/id.ts +749 -0
- package/src/katalog/data/indeks.json +1 -0
- package/src/katalog/data/muat.ts +47 -0
- package/src/katalog/ikon.tsx +11 -0
- package/src/katalog/index.ts +13 -0
- package/src/katalog/isian.tsx +372 -0
- package/src/katalog/katalog.tsx +138 -0
- package/src/katalog/kelola.tsx +620 -0
- package/src/katalog/modul.tsx +336 -0
- package/src/katalog/tampil.tsx +147 -0
- package/src/katalog/tipe.ts +141 -0
- package/src/katalog/wizard.tsx +155 -0
- package/src/lib/platform.ts +91 -0
- package/src/siakad/index.ts +1 -0
- package/src/siakad/pemeliharaan.tsx +118 -0
- package/src/siakad/provider.tsx +2 -0
- package/dist/chunk-DEF5CA7C.cjs.map +0 -1
- package/dist/chunk-SJ4DJOMZ.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/katalog/aturan.ts","../src/katalog/data/indeks.json","../src/katalog/data/muat.ts","../src/katalog/katalog.tsx","../src/katalog/isian.tsx","../src/katalog/tampil.tsx","../src/katalog/kelola.tsx","../src/katalog/ikon.tsx","../src/katalog/modul.tsx","../src/katalog/wizard.tsx"],"names":["j","teks","React","jsx","React2","jsxs","React3","s","kolomStatus","React5","React6","k"],"mappings":"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","file":"katalog.js","sourcesContent":["/**\n * Aturan yang sama dengan backend SIAKAD, dibaca dari katalog OpenAPI:\n *\n * - validasi isian = PusatData\\Aturan::bersihkan (teks:N, kode:N, enum, bool, int:min:max, angka, tanggal, waktu,\n * jam, email, url, telepon, json, ref) dan penanda `wajib`, dengan pesan galat yang sama;\n * - alur status aksi = PusatData\\Crud::aksi (aksi hanya sah bila status baris salah satu `dari`, lalu menjadi `ke`);\n * - scope = Principal::requireScope (semua scope operasi harus dimiliki token, cocok persis).\n *\n * Validasi di browser mencegah kiriman yang pasti ditolak; server tetap memeriksa ulang (kunci tabel lama\n * harus ada, nilai unik, hak pengelola), dan galat 422 dari server dipetakan ke isian yang sama.\n */\nimport type { Baris, Operasi, Parameter, Skema } from './tipe';\n\n// ================================================================ Label dan teks\nconst KHUSUS: Record<string, string> = {\n nim: 'NIM',\n nidn: 'NIDN',\n nik: 'NIK',\n nip: 'NIP',\n nuptk: 'NUPTK',\n npwp: 'NPWP',\n url: 'URL',\n id: 'ID',\n uuid: 'UUID',\n ipk: 'IPK',\n ips: 'IPS',\n sks: 'SKS',\n email: 'Email',\n kode_prodi: 'Program studi',\n kode_fakultas: 'Fakultas',\n tahun_id: 'Tahun akademik',\n nik_karyawan: 'Karyawan',\n username: 'Pengguna',\n created_at: 'Dibuat',\n updated_at: 'Diperbarui',\n};\n\n/** Label manusiawi dari nama kolom: `tanggal_mulai` → \"Tanggal mulai\", `mitra_id` → \"Mitra\". */\nexport function labelKolom(nama: string): string {\n const k = KHUSUS[nama.toLowerCase()];\n if (k) return k;\n const t = nama\n .replace(/_/g, ' ')\n .replace(/\\s+id$/i, '')\n .replace(/^id\\s+/i, '')\n .replace(/\\b(nim|nidn|nik|nip|ipk|ips|sks|url|uuid|cpl|cpmk|rps|ukt|kip|va|qr|pt|sk)\\b/gi, (m) => m.toUpperCase())\n .trim();\n return t.charAt(0).toUpperCase() + t.slice(1);\n}\n\n/** Label nilai enum: `kip_kuliah` → \"Kip kuliah\", `pemilik_atau_pengelola` → \"Pemilik atau pengelola\". */\nexport function labelNilai(v: unknown): string {\n if (v === null || v === undefined || v === '') return '–';\n if (typeof v === 'boolean') return v ? 'Ya' : 'Tidak';\n const s = String(v);\n if (/^[a-z0-9]+(_[a-z0-9]+)*$/.test(s) && s.length > 1) {\n const t = s.replace(/_/g, ' ');\n return t.charAt(0).toUpperCase() + t.slice(1);\n }\n return s;\n}\n\n/** Judul aksi tanpa awalan sumber: \"Program beasiswa: Buka pendaftaran\" → \"Buka pendaftaran\". */\nexport function judulOperasi(o: Pick<Operasi, 'sum' | 'path'>): string {\n const s = o.sum.includes(':') ? o.sum.split(':').slice(1).join(':').trim() : o.sum;\n return s ? s.charAt(0).toUpperCase() + s.slice(1) : o.path;\n}\n\n/** Keterangan isian tanpa nama tabel/kolom teknis (m_mahasiswa.NIM, ID di kmhs_ormawa, \"(unik)\"). */\nexport function keteranganIsian(s: Skema): string | undefined {\n let t = s.ds ?? '';\n t = t\n .replace(/\\((hanya baca|hanya pengelola|unik)(, (hanya baca|hanya pengelola|unik))*\\)/g, '')\n .replace(/\\bID (di )?[a-z]+_[a-z_]+\\b/g, '')\n .replace(/\\b[a-z_]+\\.[A-Za-z_]+\\b/g, '')\n .replace(/^[\\s;:,()-]+|[\\s;:,()-]+$/g, '')\n .trim();\n return t || undefined;\n}\n\n/** Penanda kolom dari keterangan backend: unik, hanya pengelola, hanya baca. */\nexport function penandaKolom(s: Skema): { unik: boolean; kelola: boolean; baca: boolean } {\n const ds = s.ds ?? '';\n return { unik: /\\bunik\\b/.test(ds), kelola: /hanya pengelola/.test(ds), baca: Boolean(s.ro) || /hanya baca/.test(ds) };\n}\n\n// ================================================================ Path\n/** Isi `{param}` di path. */\nexport function isiPath(path: string, nilai: Record<string, unknown>): string {\n return path.replace(/\\{([^}]+)\\}/g, (_, n: string) => encodeURIComponent(String(nilai[n] ?? '')));\n}\nexport function paramPath(path: string): string[] {\n return [...path.matchAll(/\\{([^}]+)\\}/g)].map((m) => m[1]);\n}\n\n// ================================================================ Jenis isian\nexport type JenisIsian =\n | 'file'\n | 'boolean'\n | 'enum'\n | 'bulat'\n | 'angka'\n | 'tanggal'\n | 'waktu'\n | 'jam'\n | 'email'\n | 'url'\n | 'telepon'\n | 'kode'\n | 'teks-panjang'\n | 'daftar'\n | 'json'\n | 'acuan'\n | 'teks';\n\nconst PANJANG = /(^isi|konten|deskripsi|keterangan|catatan|uraian|ringkasan|abstrak|alamat|tujuan|alasan|pesan|komentar|saran|tanggapan|_html$|teks|body|narasi|temuan|rekomendasi|syarat|ketentuan|kronologi|tindak_lanjut|hasil)/i;\nconst TELEPON = /^(telepon|telp|hp|no_hp|nomor_hp|no_telp|whatsapp|wa|no_wa|kontak_hp|telepon_.+|hp_.+)$/i;\nexport const POLA_KODE = '^[A-Za-z0-9._\\\\-/]+$';\nconst POLA_JAM = '^\\\\d{2}:\\\\d{2}$';\n\n/** Jenis isian untuk satu properti skema; menentukan kontrol dan aturan validasi. */\nexport function jenisIsian(nama: string, s: Skema): JenisIsian {\n if (s.f === 'binary' || (s.t === 'array' && s.i?.f === 'binary')) return 'file';\n if (s.rf && (!s.t || s.t === 'string' || s.t === 'integer')) return 'acuan';\n if (s.t === 'boolean') return 'boolean';\n if (s.e && s.e.length) return 'enum';\n if (s.t === 'integer') return 'bulat';\n if (s.t === 'number') return 'angka';\n if (s.t === 'array') return s.i && s.i.t !== 'object' && s.i.t !== 'array' ? 'daftar' : 'json';\n if (s.t === 'object' || (!s.t && /JSON/i.test(s.ds ?? ''))) return 'json';\n if (s.f === 'date') return 'tanggal';\n if (s.f === 'date-time') return 'waktu';\n if (s.f === 'time' || s.p === POLA_JAM) return 'jam';\n if (s.f === 'email') return 'email';\n if (s.f === 'uri') return 'url';\n if (s.p === POLA_KODE) return 'kode';\n if (!s.p && TELEPON.test(nama)) return 'telepon';\n if ((s.max && s.max > 300) || (!s.max && PANJANG.test(nama))) return 'teks-panjang';\n return 'teks';\n}\n\n/** Properti yang bisa diisi (bukan hanya baca), urut seperti di skema. */\nexport function isianSkema(skema: Skema | undefined): Array<[string, Skema]> {\n return Object.entries(skema?.pr ?? {}).filter(([, s]) => !penandaKolom(s).baca);\n}\n\n// ================================================================ Validasi (cermin PusatData\\Aturan)\nconst kosong = (v: unknown) => v === undefined || v === null || (typeof v === 'string' && v.trim() === '') || (typeof FileList !== 'undefined' && v instanceof FileList && v.length === 0) || (Array.isArray(v) && v.length === 0);\n\nfunction tanggalSah(v: string): boolean {\n if (!/^\\d{4}-\\d{2}-\\d{2}$/.test(v)) return false;\n const [y, m, d] = v.split('-').map(Number);\n const dt = new Date(Date.UTC(y, m - 1, d));\n return dt.getUTCFullYear() === y && dt.getUTCMonth() === m - 1 && dt.getUTCDate() === d;\n}\nconst EMAIL = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\nconst buangTag = (s: string) => s.replace(/<[^>]*>/g, '');\n\n/**\n * Periksa satu nilai seperti backend. Kembalikan pesan galat (huruf kecil, sama dengan respons 422) atau null.\n * Nilai kosong selalu lolos di sini; wajib-isi diperiksa {@link validasiBody}.\n */\nexport function validasiNilai(nama: string, s: Skema, v: unknown): string | null {\n if (kosong(v)) return null;\n const j = jenisIsian(nama, s);\n const teks = typeof v === 'string' ? v.trim() : String(v);\n switch (j) {\n case 'teks':\n case 'teks-panjang': {\n const maks = s.max ?? (j === 'teks-panjang' ? 65000 : undefined);\n if (maks && buangTag(teks).length > maks) return `maksimal ${maks} karakter`;\n if (s.p && !new RegExp(s.p).test(teks)) return 'format tidak valid';\n return null;\n }\n case 'kode':\n if (!new RegExp(POLA_KODE).test(teks) || (s.max && teks.length > s.max)) return `hanya huruf, angka, titik, garis bawah, strip, garis miring; maksimal ${s.max ?? 50} karakter`;\n return null;\n case 'enum':\n return s.e!.some((x) => String(x) === teks) ? null : `harus salah satu: ${s.e!.filter((x) => x !== null).join(', ')}`;\n case 'boolean':\n return [true, false, 1, 0, '1', '0', 'true', 'false'].includes(v as never) ? null : 'harus true atau false';\n case 'bulat':\n case 'acuan':\n if (j === 'acuan' && s.t !== 'integer') return teks.length > 50 ? 'tidak valid' : null;\n if (!/^-?\\d{1,10}$/.test(teks)) return j === 'acuan' || /\\bID di\\b/.test(s.ds ?? '') ? 'harus ID angka' : 'harus bilangan bulat';\n return rentang(Number(teks), s);\n case 'angka':\n if (teks === '' || Number.isNaN(Number(teks))) return 'harus angka';\n return rentang(Number(teks), s);\n case 'tanggal':\n return tanggalSah(teks) ? null : 'format YYYY-MM-DD';\n case 'waktu':\n if (!/^\\d{4}-\\d{2}-\\d{2}[ T]\\d{2}:\\d{2}(:\\d{2})?/.test(teks)) return 'format YYYY-MM-DD HH:MM:SS';\n return tanggalSah(teks.slice(0, 10)) ? null : 'waktu tidak valid';\n case 'jam':\n return /^([01]\\d|2[0-3]):[0-5]\\d(:[0-5]\\d)?$/.test(teks) ? null : 'format HH:MM';\n case 'email':\n return EMAIL.test(teks) && teks.length <= 150 ? null : 'email tidak valid';\n case 'url':\n return /^https?:\\/\\/[^\\s]+\\.[^\\s]+/i.test(teks) && teks.length <= 500 ? null : 'harus URL http/https';\n case 'telepon':\n return /^\\+?[0-9 ()-]{5,25}$/.test(teks) ? null : 'nomor telepon tidak valid';\n case 'json':\n if (typeof v === 'string') {\n try {\n const x = JSON.parse(v);\n if (x === null || typeof x !== 'object') return 'harus objek atau array';\n } catch {\n return 'harus JSON';\n }\n } else if (typeof v !== 'object') return 'harus objek atau array';\n return JSON.stringify(v).length > 60000 ? 'terlalu besar' : null;\n default:\n return null;\n }\n}\n\nfunction rentang(n: number, s: Skema): string | null {\n if (s.min !== undefined && s.mx !== undefined && (n < s.min || n > s.mx)) return `harus ${s.min} sampai ${s.mx}`;\n if (s.min !== undefined && s.mx === undefined && n < s.min) return `minimal ${s.min}`;\n if (s.mx !== undefined && s.min === undefined && n > s.mx) return `maksimal ${s.mx}`;\n return null;\n}\n\n/** Huruf besar di awal dan titik di akhir, untuk menampilkan galat backend/frontend dengan gaya yang sama. */\nexport function rapikanGalat(pesan: string): string {\n const t = pesan.trim();\n if (!t) return t;\n return t.charAt(0).toUpperCase() + t.slice(1) + (/[.!?]$/.test(t) ? '' : '.');\n}\n\nexport type NilaiForm = Record<string, unknown>;\nexport type GalatForm = Record<string, string>;\n\n/** Nilai JSON sebagai data; teks JSON dari server diurai dulu. */\nexport function uraiJson(v: unknown): unknown {\n if (v === undefined || v === null || v === '') return undefined;\n if (typeof v !== 'string') return v;\n try {\n return JSON.parse(v);\n } catch {\n return v;\n }\n}\n\n/** Nilai awal formulir dari baris yang ada (ubah) atau nilai bawaan skema (tambah). */\nexport function nilaiAwal(skema: Skema | undefined, data?: Baris | null): NilaiForm {\n const hasil: NilaiForm = {};\n for (const [k, s] of isianSkema(skema)) {\n const j = jenisIsian(k, s);\n let v = data ? data[k] : s.d;\n if (j === 'boolean') v = v === true || v === 1 || v === '1' || v === 'Y' || v === 'true';\n else if (j === 'json') v = uraiJson(v);\n else if (j === 'daftar') v = Array.isArray(v) ? v.map(String) : typeof v === 'string' && v ? v.split(',').map((x) => x.trim()) : [];\n else if (j === 'waktu' && typeof v === 'string') v = v.replace(' ', 'T').slice(0, 16);\n else if (j === 'tanggal' && typeof v === 'string') v = v.slice(0, 10);\n else if (j === 'jam' && typeof v === 'string') v = v.slice(0, 5);\n else if (j === 'file') v = undefined;\n else v = v === null || v === undefined ? '' : String(v);\n hasil[k] = v;\n }\n return hasil;\n}\n\nconst sama = (a: unknown, b: unknown) => JSON.stringify(a ?? '') === JSON.stringify(b ?? '');\n\nexport interface OpsiBody {\n /** Mode ubah (PUT/PATCH): hanya kolom yang berubah yang dikirim; wajib tidak boleh dikosongkan. */\n ubah?: boolean;\n /** Nilai awal (mode ubah) untuk menghitung perubahan. */\n awal?: NilaiForm;\n /** Kirim sebagai multipart (ada berkas). */\n multipart?: boolean;\n}\n\n/**\n * Periksa semua isian dan bentuk body permintaan, seperti PusatData\\Crud::tambah/ubah:\n * - tambah: kolom wajib harus terisi; isian kosong tidak dikirim;\n * - ubah: hanya kolom yang berubah dikirim; mengosongkan kolom wajib ditolak (\"wajib diisi\"),\n * kolom lain yang dikosongkan dikirim null.\n */\nexport function validasiBody(skema: Skema | undefined, nilai: NilaiForm, opsi: OpsiBody = {}): { body: Record<string, unknown> | FormData; galat: GalatForm; berubah: string[] } {\n const { ubah = false, awal, multipart = false } = opsi;\n const galat: GalatForm = {};\n const wajib = new Set(skema?.rq ?? []);\n const out: Record<string, unknown> = {};\n const berubah: string[] = [];\n for (const [k, s] of isianSkema(skema)) {\n const j = jenisIsian(k, s);\n const v = nilai[k];\n if (ubah && awal && sama(v, awal[k]) && j !== 'file') continue;\n if (kosong(v) || (j === 'json' && v !== null && typeof v === 'object' && Object.keys(v as object).length === 0)) {\n if (wajib.has(k) && (!ubah || (awal && !kosong(awal[k])))) galat[k] = 'wajib diisi';\n else if (ubah && j !== 'file') {\n out[k] = null;\n berubah.push(k);\n }\n continue;\n }\n const g = validasiNilai(k, s, v);\n if (g) {\n galat[k] = g;\n continue;\n }\n out[k] = keNilaiApi(j, s, v);\n berubah.push(k);\n }\n if (!multipart) return { body: out, galat, berubah };\n const fd = new FormData();\n for (const [k, v] of Object.entries(out)) {\n if (typeof FileList !== 'undefined' && v instanceof FileList) Array.from(v).forEach((f) => fd.append(skema?.pr?.[k]?.t === 'array' ? `${k}[]` : k, f));\n else if (v instanceof Blob) fd.append(k, v);\n else if (Array.isArray(v)) v.forEach((x) => fd.append(`${k}[]`, String(x)));\n else if (typeof v === 'boolean') fd.append(k, v ? '1' : '0');\n else if (v !== null && typeof v === 'object') fd.append(k, JSON.stringify(v));\n else if (v !== null) fd.append(k, String(v));\n }\n return { body: fd, galat, berubah };\n}\n\n/** Nilai formulir → nilai yang dikirim ke API. */\nexport function keNilaiApi(j: JenisIsian, s: Skema, v: unknown): unknown {\n switch (j) {\n case 'bulat':\n return Number(v);\n case 'angka':\n return Number(v);\n case 'acuan':\n return s.t === 'integer' ? Number(v) : String(v).trim();\n case 'boolean':\n return v === true || v === 1 || v === '1' || v === 'true';\n case 'json':\n return typeof v === 'string' ? JSON.parse(v) : v;\n case 'daftar': {\n const arr = Array.isArray(v) ? v : String(v).split(',');\n return arr.map((x) => String(x).trim()).filter(Boolean).map((x) => (s.i?.t === 'integer' || s.i?.t === 'number' ? Number(x) : x));\n }\n case 'waktu': {\n const t = String(v).replace('T', ' ');\n return t.length === 16 ? `${t}:00` : t;\n }\n case 'jam':\n return String(v).slice(0, 5);\n case 'file':\n return v;\n default:\n return typeof v === 'string' ? v.trim() : v;\n }\n}\n\n/** Galat 422 dari server (`details`: { kolom: pesan }) → galat per isian. */\nexport function galatDariServer(e: unknown): GalatForm | null {\n const err = e as { status?: number; details?: unknown; code?: string } | null;\n if (!err || (err.status !== 422 && err.code !== 'validation_failed')) return null;\n const d = err.details as Record<string, unknown> | undefined;\n if (!d || typeof d !== 'object') return null;\n const out: GalatForm = {};\n for (const [k, v] of Object.entries(d)) out[k] = Array.isArray(v) ? v.join('; ') : String(v);\n return Object.keys(out).length ? out : null;\n}\n\n// ================================================================ Parameter query\n/** Periksa parameter (query/path) seperti body. */\nexport function validasiParameter(pa: Parameter[] | undefined, nilai: NilaiForm): GalatForm {\n const galat: GalatForm = {};\n for (const p of pa ?? []) {\n const v = nilai[p.nm];\n if (kosong(v)) {\n if (p.rq) galat[p.nm] = 'wajib diisi';\n continue;\n }\n const g = validasiNilai(p.nm, p.s, v);\n if (g) galat[p.nm] = g;\n }\n return galat;\n}\n\n// ================================================================ Alur status (cermin PusatData\\Crud::aksi)\n/** Kolom status yang dipakai aksi: `status` bila ada, atau kolom enum yang memuat semua status asal. */\nexport function kolomStatus(skemaBaris: Skema | undefined, tr: Operasi['tr'], baris?: Baris | null): string {\n const pr = skemaBaris?.pr ?? {};\n if (!tr) return 'status';\n const cocok = (k: string) => {\n const e = pr[k]?.e?.map(String);\n return Boolean(e && tr.dari.every((d) => e.includes(d)));\n };\n if (cocok('status')) return 'status';\n const lain = Object.keys(pr).find(cocok);\n if (lain) return lain;\n if (baris) {\n const kb = Object.keys(baris).find((k) => /status/.test(k) && tr.dari.includes(String(baris[k])));\n if (kb) return kb;\n }\n return 'status';\n}\n\nexport interface KeabsahanAksi {\n boleh: boolean;\n /** Alasan bila tidak boleh (teks sama dengan respons 409 backend). */\n alasan?: string;\n}\n\n/**\n * Apakah aksi boleh dijalankan untuk baris ini menurut alur status.\n * Hak pelaku (pengelola/pemilik) tetap diperiksa server; di sini hanya status dan scope.\n */\nexport function keabsahanAksi(op: Operasi, baris: Baris | null | undefined, skemaBaris?: Skema, scopes?: readonly string[] | null): KeabsahanAksi {\n if (!punyaScope(op, scopes)) return { boleh: false, alasan: `Butuh izin ${op.sc!.filter((s) => !scopes!.includes(s)).join(', ')}.` };\n if (!op.tr || !baris) return { boleh: true };\n const k = kolomStatus(skemaBaris, op.tr, baris);\n const sekarang = baris[k] == null ? '' : String(baris[k]);\n if (op.tr.dari.includes(sekarang)) return { boleh: true };\n return { boleh: false, alasan: `${judulOperasi(op)} hanya bisa dilakukan bila status ${op.tr.dari.join('/')} (sekarang: ${sekarang || '-'}).` };\n}\n\n/** Semua scope operasi harus dimiliki token (Principal::requireScope). `scopes` tidak diisi = tidak diperiksa. */\nexport function punyaScope(op: Pick<Operasi, 'sc' | 'pub'>, scopes?: readonly string[] | null): boolean {\n if (!scopes || op.pub || !op.sc?.length) return true;\n return op.sc.every((s) => scopes.includes(s));\n}\n\n/** Urutan status dari alur aksi: [{ dari, ke, aksi }], untuk diagram alur. */\nexport function alurStatus(ops: Operasi[]): Array<{ dari: string[]; ke?: string; op: Operasi }> {\n return ops.filter((o) => o.tr).map((o) => ({ dari: o.tr!.dari, ke: o.tr!.ke, op: o }));\n}\n\n// ================================================================ Kolom tabel\nconst PRIORITAS = [\n /^(kode|nim|nidn|nik|nip|username|no|nomor)(_|$)/i,\n /^(nama|judul|title|subjek|perihal)(_|$)/i,\n /(nama|judul)/i,\n /^(jenis|tipe|kategori|level)(_|$)/i,\n /(prodi|fakultas|unit|periode|tahun)/i,\n /(tanggal|tgl|mulai|selesai|batas)/i,\n /(status|aktif)/i,\n];\nconst ABAIKAN = /(^uuid$|password|secret|hash|token|_html$|^isi$|^isi_|^konten|^body$|^blok|deskripsi|keterangan|catatan|^meta|created_by|updated_by|diubah_oleh|dibuat_oleh|deleted|^syarat|^updated_at$)/i;\n\n/** Pilih kolom tabel dari skema dan isi baris: kunci/nama dulu, lalu jenis, unit, tanggal, status. */\nexport function pilihKolom(skema: Skema | undefined, baris: Baris[] = [], maks = 6): { semua: string[]; awal: string[] } {\n const dariSkema = skema?.pr ? Object.keys(skema.pr) : [];\n const dariData = baris.length ? Object.keys(baris[0]) : [];\n const semua = dariData.length ? [...new Set([...dariSkema.filter((k) => dariData.includes(k)), ...dariData])] : dariSkema;\n const skor = (k: string) => {\n if (ABAIKAN.test(k)) return 100;\n const i = PRIORITAS.findIndex((r) => r.test(k));\n const contoh = baris[0]?.[k];\n const tipe = skema?.pr?.[k]?.t;\n const berat = (contoh !== null && typeof contoh === 'object') || tipe === 'object' || tipe === 'array' ? 50 : 0;\n return (i === -1 ? 20 : i) + berat;\n };\n const urut = semua.filter((k) => k !== 'id' || semua.length <= 2).sort((a, b) => skor(a) - skor(b));\n let awal = urut.filter((k) => skor(k) < 50).slice(0, maks);\n if (!awal.length) awal = semua.slice(0, maks);\n awal = semua.filter((k) => awal.includes(k));\n return { semua, awal };\n}\n\n/** Judul satu baris untuk panel detail dan konfirmasi. */\nexport function judulBaris(b: Baris | null | undefined, kunci?: string): string {\n if (!b) return '';\n for (const k of ['nama', 'judul', 'title', 'nama_lengkap', 'perihal', 'subjek', 'nama_prodi', 'nama_fakultas', 'nama_mk', 'nomor']) {\n if (typeof b[k] === 'string' && b[k]) return b[k];\n }\n const kn = Object.keys(b).find((k) => /^(nama|judul)/.test(k) && typeof b[k] === 'string' && b[k]);\n if (kn) return String(b[kn]);\n return String(b.kode ?? b[kunci ?? 'id'] ?? b.id ?? '');\n}\n\n/** Nilai kunci baris untuk path item ({id}, {kode}, {nim}). */\nexport function nilaiKunci(b: Baris, kunci = 'id'): string | undefined {\n const v = b[kunci] ?? b[kunci.toLowerCase()] ?? b[kunci.toUpperCase()] ?? b.id ?? b.uuid;\n return v === undefined || v === null ? undefined : String(v);\n}\n\ntype Nada = 'neutral' | 'primary' | 'secondary' | 'success' | 'warning' | 'danger' | 'info';\nconst NADA: Array<[RegExp, Nada]> = [\n [/^(aktif|a|buka|disetujui|setuju|terverifikasi|valid|lulus|selesai|terbit|diterbitkan|lunas|publik|published|diterima|tersedia|hadir|h|berlaku|sah|ditetapkan|sukses|berhasil|dibayar|tervalidasi|approved|done|ok)$/i, 'success'],\n [/^(draf|draft|baru|diajukan|menunggu|pending|review|diproses|proses|seleksi|berjalan|dijadwalkan|terjadwal|dipinjam|antre|antrean|cuti|c|izin|i|sakit|s|revisi|perbaikan|verifikasi)$/i, 'warning'],\n [/^(ditolak|tolak|batal|dibatalkan|gagal|kedaluwarsa|expired|nonaktif|non-aktif|n|d|do|drop out|keluar|hilang|rusak|alpa|blokir|diblokir|dicabut|ditutup|tutup|terlambat|denda|failed|rejected)$/i, 'danger'],\n [/^(arsip|diarsipkan|inaktif|nonaktif sementara|dihapus|musnah|l)$/i, 'neutral'],\n];\n/** Warna lencana untuk nilai status yang umum dipakai API SIAKAD. */\nexport function nadaStatus(v: unknown): Nada {\n const s = String(v ?? '').trim();\n for (const [re, n] of NADA) if (re.test(s)) return n;\n return 'info';\n}\n","{\"versi\":\"1.0.0\",\"grup\":[{\"key\":\"sistem\",\"title\":\"Sistem & Akses\",\"icon\":\"ShieldCheck\"},{\"key\":\"referensi\",\"title\":\"Referensi\",\"icon\":\"Database\"},{\"key\":\"akademik\",\"title\":\"Akademik\",\"icon\":\"GraduationCap\"},{\"key\":\"kemahasiswaan\",\"title\":\"Kemahasiswaan\",\"icon\":\"Users\"},{\"key\":\"alumni\",\"title\":\"Alumni\",\"icon\":\"Compass\"},{\"key\":\"kelembagaan\",\"title\":\"Kelembagaan\",\"icon\":\"Landmark\"},{\"key\":\"layanan\",\"title\":\"Layanan\",\"icon\":\"FileCheck2\"},{\"key\":\"sarana\",\"title\":\"Sarana\",\"icon\":\"Warehouse\"},{\"key\":\"humas\",\"title\":\"Humas\",\"icon\":\"Megaphone\"}],\"modul\":[{\"key\":\"akses\",\"group\":\"sistem\",\"title\":\"Aplikasi & Hak Akses\",\"icon\":\"ShieldCheck\",\"desc\":\"Aplikasi terdaftar, peran, izin, penugasan pengguna, klien API, dan lingkungan data live/development.\",\"jumlahOperasi\":63,\"scope\":[\"rbac:read\",\"rbac:write\",\"rbac:admin\"],\"sumber\":[{\"id\":\"/v1/rbac/akses-live\",\"title\":\"Pengajuan akses live\",\"tag\":\"RBAC: Akses database live\",\"sc\":[\"rbac:admin\"]},{\"id\":\"/v1/rbac/aplikasi\",\"title\":\"Aplikasi\",\"tag\":\"RBAC: Aplikasi\",\"sc\":[\"rbac:read\"]},{\"id\":\"/v1/rbac/db-dev/salinan\",\"title\":\"Riwayat salinan\",\"tag\":\"RBAC: Database development\",\"sc\":[\"rbac:admin\"]},{\"id\":\"/v1/rbac/izin\",\"title\":\"Izin\",\"tag\":\"RBAC: Izin\",\"sc\":[\"rbac:read\"]},{\"id\":\"/v1/rbac/jabatan\",\"title\":\"Peran untuk jabatan\",\"tag\":\"RBAC: Pemetaan\",\"sc\":[\"rbac:read\"]},{\"id\":\"/v1/rbac/klien-api\",\"title\":\"Klien API\",\"tag\":\"RBAC: Klien API\",\"sc\":[\"rbac:admin\"]},{\"id\":\"/v1/rbac/level\",\"title\":\"Peran untuk level lama\",\"tag\":\"RBAC: Pemetaan\",\"sc\":[\"rbac:read\"]},{\"id\":\"/v1/rbac/log-api\",\"title\":\"Log permintaan API\",\"tag\":\"RBAC: Log API\",\"sc\":[\"rbac:admin\"]},{\"id\":\"/v1/rbac/pengguna\",\"title\":\"Hak akses efektif\",\"tag\":\"RBAC: Hak akses efektif\",\"sc\":[\"rbac:read\"]},{\"id\":\"/v1/rbac/penugasan\",\"title\":\"Penugasan peran\",\"tag\":\"RBAC: Penugasan\",\"sc\":[\"rbac:read\"]},{\"id\":\"/v1/rbac/peran\",\"title\":\"Peran\",\"tag\":\"RBAC: Peran\",\"sc\":[\"rbac:read\"]},{\"id\":\"/v1/rbac/peran-izin\",\"title\":\"Izin peran\",\"tag\":\"RBAC: Peran\",\"sc\":[\"rbac:read\"]}],\"operasi\":[{\"id\":\"getLingkungan\",\"title\":\"Database yang dipakai aplikasi ini\",\"tag\":\"Lingkungan data\",\"m\":\"GET\"},{\"id\":\"postLingkunganPengajuanLive\",\"title\":\"Ajukan akses database live\",\"tag\":\"Lingkungan data\",\"m\":\"POST\"},{\"id\":\"getRbacSaya\",\"title\":\"Hak akses saya\",\"tag\":\"RBAC: Hak akses efektif\",\"m\":\"GET\",\"sc\":[\"rbac:read\"]},{\"id\":\"postRbacCek\",\"title\":\"Cek izin\",\"tag\":\"RBAC: Hak akses efektif\",\"m\":\"POST\",\"sc\":[\"rbac:read\"]},{\"id\":\"getRbacPemegang\",\"title\":\"Siapa pemegang izin\",\"tag\":\"RBAC: Hak akses efektif\",\"m\":\"GET\",\"sc\":[\"rbac:read\"]},{\"id\":\"getRbacKatalog\",\"title\":\"Katalog izin per aplikasi\",\"tag\":\"RBAC: Aplikasi\",\"m\":\"GET\",\"sc\":[\"rbac:read\"]},{\"id\":\"postRbacSinkron\",\"title\":\"Sinkron katalog\",\"tag\":\"RBAC: Aplikasi\",\"m\":\"POST\",\"sc\":[\"rbac:admin\"]},{\"id\":\"getRbacKlienApiScope\",\"title\":\"Katalog scope API\",\"tag\":\"RBAC: Klien API\",\"m\":\"GET\",\"sc\":[\"rbac:admin\"]},{\"id\":\"getRbacLogApiRingkasan\",\"title\":\"Ringkasan log API\",\"tag\":\"RBAC: Log API\",\"m\":\"GET\",\"sc\":[\"rbac:admin\"]},{\"id\":\"postRbacAksesLiveByIdSetujui\",\"title\":\"Setujui pengajuan\",\"tag\":\"RBAC: Akses database live\",\"m\":\"POST\",\"sc\":[\"rbac:admin\"]},{\"id\":\"postRbacAksesLiveByIdTolak\",\"title\":\"Tolak pengajuan\",\"tag\":\"RBAC: Akses database live\",\"m\":\"POST\",\"sc\":[\"rbac:admin\"]},{\"id\":\"postRbacKlienApiByIdAksesLiveAjukan\",\"title\":\"Ajukan akses live untuk aplikasi\",\"tag\":\"RBAC: Akses database live\",\"m\":\"POST\",\"sc\":[\"rbac:admin\"]},{\"id\":\"postRbacKlienApiByIdAksesLiveCabut\",\"title\":\"Cabut akses live\",\"tag\":\"RBAC: Akses database live\",\"m\":\"POST\",\"sc\":[\"rbac:admin\"]},{\"id\":\"getRbacDbDev\",\"title\":\"Status database development\",\"tag\":\"RBAC: Database development\",\"m\":\"GET\",\"sc\":[\"rbac:admin\"]}]},{\"key\":\"portal-api\",\"group\":\"sistem\",\"title\":\"Portal Pengembang API\",\"icon\":\"KeyRound\",\"desc\":\"Pengajuan akses API dari api.unipo.ac.id, aplikasi pengembang, dan tinjauan Pustikom.\",\"jumlahOperasi\":18,\"scope\":[\"apiportal:read\",\"apiportal:write\"],\"sumber\":[{\"id\":\"/v1/api-portal/aplikasi\",\"title\":\"Aplikasi saya\",\"tag\":\"Portal API: Aplikasi saya\",\"sc\":[\"apiportal:read\"]},{\"id\":\"/v1/api-portal/pengajuan\",\"title\":\"Pengajuan saya\",\"tag\":\"Portal API: Pengajuan\",\"sc\":[\"apiportal:read\"]},{\"id\":\"/v1/api-portal/tinjau\",\"title\":\"Pengajuan\",\"tag\":\"Portal API: Tinjauan Pustikom\",\"sc\":[\"apiportal:read\"]},{\"id\":\"/v1/api-portal/tinjau-aplikasi\",\"title\":\"Aplikasi portal\",\"tag\":\"Portal API: Tinjauan Pustikom\",\"sc\":[\"apiportal:read\"]}],\"operasi\":[{\"id\":\"getApiPortalInfo\",\"title\":\"Informasi portal\",\"tag\":\"Portal API: Pengajuan\",\"m\":\"GET\"},{\"id\":\"getApiPortalSaya\",\"title\":\"Ringkasan saya\",\"tag\":\"Portal API: Pengajuan\",\"m\":\"GET\",\"sc\":[\"apiportal:read\"]},{\"id\":\"postApiPortalTinjauByIdRevisi\",\"title\":\"Minta revisi\",\"tag\":\"Portal API: Tinjauan Pustikom\",\"m\":\"POST\",\"sc\":[\"apiportal:write\"]},{\"id\":\"postApiPortalTinjauByIdTolak\",\"title\":\"Tolak\",\"tag\":\"Portal API: Tinjauan Pustikom\",\"m\":\"POST\",\"sc\":[\"apiportal:write\"]},{\"id\":\"postApiPortalTinjauByIdSetujui\",\"title\":\"Setujui\",\"tag\":\"Portal API: Tinjauan Pustikom\",\"m\":\"POST\",\"sc\":[\"apiportal:write\"]}]},{\"key\":\"profil\",\"group\":\"sistem\",\"title\":\"Profil Pengguna\",\"icon\":\"UserRound\",\"desc\":\"Profil semua peran, verifikasi, riwayat, dokumen, dan permohonan perubahan data.\",\"jumlahOperasi\":86,\"scope\":[\"profil:read\",\"profil:write\"],\"sumber\":[{\"id\":\"/v1/profil/dokumen\",\"title\":\"Dokumen pribadi\",\"tag\":\"Profil: Dokumen\",\"sc\":[\"profil:read\"]},{\"id\":\"/v1/profil/organisasi\",\"title\":\"Organisasi\",\"tag\":\"Profil: Riwayat\",\"sc\":[\"profil:read\"]},{\"id\":\"/v1/profil/pekerjaan\",\"title\":\"Riwayat pekerjaan\",\"tag\":\"Profil: Riwayat\",\"sc\":[\"profil:read\"]},{\"id\":\"/v1/profil/pendidikan\",\"title\":\"Riwayat pendidikan\",\"tag\":\"Profil: Riwayat\",\"sc\":[\"profil:read\"]},{\"id\":\"/v1/profil/permohonan\",\"title\":\"Permohonan perubahan data induk\",\"tag\":\"Profil: Permohonan perubahan data\",\"sc\":[\"profil:read\"]},{\"id\":\"/v1/profil/prestasi\",\"title\":\"Prestasi dan sertifikasi\",\"tag\":\"Profil: Riwayat\",\"sc\":[\"profil:read\"]}],\"operasi\":[{\"id\":\"getProfilSaya\",\"title\":\"Profil saya\",\"tag\":\"Profil: Saya\",\"m\":\"GET\",\"sc\":[\"profil:read\"]},{\"id\":\"postProfilSaya\",\"title\":\"Simpan profil tambahan\",\"tag\":\"Profil: Saya\",\"m\":\"POST\",\"sc\":[\"profil:write\"]},{\"id\":\"postProfilSayaDataPribadi\",\"title\":\"Ubah data pribadi\",\"tag\":\"Profil: Saya\",\"m\":\"POST\",\"sc\":[\"profil:write\"]},{\"id\":\"getProfilSayaFoto\",\"title\":\"Pas foto saya\",\"tag\":\"Profil: Saya\",\"m\":\"GET\",\"sc\":[\"profil:read\"]},{\"id\":\"postProfilSayaFoto\",\"title\":\"Unggah pas foto\",\"tag\":\"Profil: Saya\",\"m\":\"POST\",\"sc\":[\"profil:write\"]},{\"id\":\"postProfilSayaFotoHapus\",\"title\":\"Hapus pas foto\",\"tag\":\"Profil: Saya\",\"m\":\"POST\",\"sc\":[\"profil:write\"]},{\"id\":\"postProfilSayaPassword\",\"title\":\"Ganti password\",\"tag\":\"Profil: Saya\",\"m\":\"POST\",\"sc\":[\"profil:write\"]},{\"id\":\"getProfilReferensi\",\"title\":\"Pilihan isian\",\"tag\":\"Profil: Saya\",\"m\":\"GET\",\"sc\":[\"profil:read\"]},{\"id\":\"getProfilAntrean\",\"title\":\"Antrean verifikasi\",\"tag\":\"Profil: Verifikasi\",\"m\":\"GET\",\"sc\":[\"profil:read\"]},{\"id\":\"getProfilPenggunaByUsernameFoto\",\"title\":\"Pas foto pengguna\",\"tag\":\"Profil: Verifikasi\",\"m\":\"GET\",\"sc\":[\"profil:read\"]}]},{\"key\":\"notifikasi\",\"group\":\"sistem\",\"title\":\"Notifikasi\",\"icon\":\"Bell\",\"desc\":\"Pengumuman, kotak masuk, antrean kirim, dan preferensi notifikasi.\",\"jumlahOperasi\":22,\"scope\":[\"notif:read\",\"notif:write\"],\"sumber\":[{\"id\":\"/v1/notif/antrean\",\"title\":\"Antrean pengiriman\",\"tag\":\"Notifikasi: Antrean\",\"sc\":[\"notif:read\"]},{\"id\":\"/v1/notif/kotak\",\"title\":\"Kotak masuk\",\"tag\":\"Notifikasi: Kotak masuk\",\"sc\":[\"notif:read\"]},{\"id\":\"/v1/notif/pengumuman\",\"title\":\"Pengumuman massal\",\"tag\":\"Notifikasi: Pengumuman\",\"sc\":[\"notif:read\"]},{\"id\":\"/v1/notif/preferensi\",\"title\":\"Preferensi kanal\",\"tag\":\"Notifikasi: Preferensi\",\"sc\":[\"notif:read\"]}],\"operasi\":[{\"id\":\"getNotifRingkas\",\"title\":\"Jumlah belum dibaca\",\"tag\":\"Notifikasi: Kotak masuk\",\"m\":\"GET\",\"sc\":[\"notif:read\"]},{\"id\":\"postNotifKotakBacaSemua\",\"title\":\"Tandai semua dibaca\",\"tag\":\"Notifikasi: Kotak masuk\",\"m\":\"POST\",\"sc\":[\"notif:write\"]},{\"id\":\"postNotifKirim\",\"title\":\"Kirim notifikasi\",\"tag\":\"Notifikasi: Kotak masuk\",\"m\":\"POST\",\"sc\":[\"notif:write\"]}]},{\"key\":\"integrasi\",\"group\":\"sistem\",\"title\":\"Integrasi Pihak Ketiga\",\"icon\":\"Plug\",\"desc\":\"AI, tanda tangan elektronik BSrE, captcha, payment gateway, penyimpanan berkas, cache, email & WhatsApp, rapat daring, webhook.\",\"jumlahOperasi\":66,\"scope\":[\"integrasi:admin\",\"integrasi:captcha\",\"integrasi:bayar\",\"integrasi:berkas\",\"integrasi:cache\",\"integrasi:pesan\",\"integrasi:webhook\",\"integrasi:rapat\",\"integrasi:esign\",\"integrasi:ai\"],\"sumber\":[{\"id\":\"/v1/integrasi/ai/penyedia\",\"title\":\"Penyedia AI yang aktif\",\"tag\":\"Integrasi: AI\",\"sc\":[\"integrasi:ai\"]},{\"id\":\"/v1/integrasi/antrean\",\"title\":\"Cache\",\"tag\":\"Integrasi: Cache\",\"sc\":[\"integrasi:cache\"]},{\"id\":\"/v1/integrasi/berkas\",\"title\":\"Berkas\",\"tag\":\"Integrasi: Berkas\",\"sc\":[\"integrasi:berkas\"]},{\"id\":\"/v1/integrasi/berkas/unduh\",\"title\":\"Berkas\",\"tag\":\"Integrasi: Berkas\"},{\"id\":\"/v1/integrasi/cache\",\"title\":\"Cache\",\"tag\":\"Integrasi: Cache\",\"sc\":[\"integrasi:cache\"]},{\"id\":\"/v1/integrasi/esign\",\"title\":\"Riwayat tanda tangan dan verifikasi\",\"tag\":\"Integrasi: Tanda tangan elektronik\",\"sc\":[\"integrasi:esign\"]},{\"id\":\"/v1/integrasi/katalog\",\"title\":\"Driver yang didukung\",\"tag\":\"Integrasi: Pengaturan\",\"sc\":[\"integrasi:admin\"]},{\"id\":\"/v1/integrasi/log\",\"title\":\"Log panggilan ke penyedia\",\"tag\":\"Integrasi: Pengaturan\",\"sc\":[\"integrasi:admin\"]},{\"id\":\"/v1/integrasi/pembayaran\",\"title\":\"Transaksi\",\"tag\":\"Integrasi: Pembayaran\",\"sc\":[\"integrasi:bayar\"]},{\"id\":\"/v1/integrasi/pembayaran/metode\",\"title\":\"Penyedia dan metode pembayaran yang aktif\",\"tag\":\"Integrasi: Pembayaran\",\"sc\":[\"integrasi:bayar\"]},{\"id\":\"/v1/integrasi/pengaturan\",\"title\":\"Penyedia\",\"tag\":\"Integrasi: Pengaturan\",\"sc\":[\"integrasi:admin\"]},{\"id\":\"/v1/integrasi/rapat\",\"title\":\"Rapat\",\"tag\":\"Integrasi: Rapat daring\",\"sc\":[\"integrasi:rapat\"]},{\"id\":\"/v1/integrasi/rapat/penyedia\",\"title\":\"Penyedia rapat yang aktif\",\"tag\":\"Integrasi: Rapat daring\",\"sc\":[\"integrasi:rapat\"]},{\"id\":\"/v1/integrasi/webhook\",\"title\":\"Pembayaran\",\"tag\":\"Integrasi: Pembayaran\"},{\"id\":\"/v1/integrasi/webhook-keluar\",\"title\":\"Langganan webhook\",\"tag\":\"Integrasi: Webhook keluar\",\"sc\":[\"integrasi:webhook\"]},{\"id\":\"/v1/integrasi/webhook-masuk\",\"title\":\"Notifikasi masuk dari payment gateway\",\"tag\":\"Integrasi: Pengaturan\",\"sc\":[\"integrasi:admin\"]}],\"operasi\":[{\"id\":\"getIntegrasiStatus\",\"title\":\"Integrasi yang aktif (publik)\",\"tag\":\"Integrasi: Status\",\"m\":\"GET\"},{\"id\":\"getIntegrasiRingkasan\",\"title\":\"Ringkasan integrasi\",\"tag\":\"Integrasi: Pengaturan\",\"m\":\"GET\",\"sc\":[\"integrasi:admin\"]},{\"id\":\"getIntegrasiCaptchaKonfigurasi\",\"title\":\"Info widget captcha (publik)\",\"tag\":\"Integrasi: Captcha\",\"m\":\"GET\"},{\"id\":\"postIntegrasiCaptchaVerifikasi\",\"title\":\"Verifikasi token captcha\",\"tag\":\"Integrasi: Captcha\",\"m\":\"POST\",\"sc\":[\"integrasi:captcha\"]},{\"id\":\"postIntegrasiBerkasUnggahLangsung\",\"title\":\"Minta URL unggah langsung ke bucket\",\"tag\":\"Integrasi: Berkas\",\"m\":\"POST\",\"sc\":[\"integrasi:berkas\"]},{\"id\":\"postIntegrasiEmailKirim\",\"title\":\"Kirim email\",\"tag\":\"Integrasi: Email & WhatsApp\",\"m\":\"POST\",\"sc\":[\"integrasi:pesan\"]},{\"id\":\"postIntegrasiWhatsappKirim\",\"title\":\"Kirim WhatsApp\",\"tag\":\"Integrasi: Email & WhatsApp\",\"m\":\"POST\",\"sc\":[\"integrasi:pesan\"]},{\"id\":\"postIntegrasiWebhookKeluarByIdKirimanByKirimanUlang\",\"title\":\"Kirim ulang satu kiriman\",\"tag\":\"Integrasi: Webhook keluar\",\"m\":\"POST\",\"sc\":[\"integrasi:webhook\"]},{\"id\":\"postIntegrasiEsignTandaTangan\",\"title\":\"Tandatangani PDF\",\"tag\":\"Integrasi: Tanda tangan elektronik\",\"m\":\"POST\",\"sc\":[\"integrasi:esign\"]},{\"id\":\"postIntegrasiEsignVerifikasi\",\"title\":\"Verifikasi PDF bertanda tangan\",\"tag\":\"Integrasi: Tanda tangan elektronik\",\"m\":\"POST\",\"sc\":[\"integrasi:esign\"]},{\"id\":\"postIntegrasiEsignStatusPengguna\",\"title\":\"Cek sertifikat penanda tangan\",\"tag\":\"Integrasi: Tanda tangan elektronik\",\"m\":\"POST\",\"sc\":[\"integrasi:esign\"]},{\"id\":\"postIntegrasiAiTeks\",\"title\":\"Minta jawaban model bahasa\",\"tag\":\"Integrasi: AI\",\"m\":\"POST\",\"sc\":[\"integrasi:ai\"]},{\"id\":\"getIntegrasiAiPemakaian\",\"title\":\"Rekap pemakaian AI\",\"tag\":\"Integrasi: AI\",\"m\":\"GET\",\"sc\":[\"integrasi:ai\"]}]},{\"key\":\"pddikti\",\"group\":\"sistem\",\"title\":\"PDDikti\",\"icon\":\"Send\",\"desc\":\"Pelaporan PDDikti/Neo Feeder: kirim, sinkronisasi otomatis, dan evaluasi data.\",\"jumlahOperasi\":25,\"scope\":[\"pddikti:read\",\"pddikti:write\",\"pddikti:admin\"],\"sumber\":[{\"id\":\"/v1/pddikti/antrean\",\"title\":\"Antrean dan riwayat sinkronisasi\",\"tag\":\"PDDikti: Kirim dan sinkronisasi\",\"sc\":[\"pddikti:read\"]},{\"id\":\"/v1/pddikti/data\",\"title\":\"Pelaporan\",\"tag\":\"PDDikti: Pelaporan\",\"sc\":[\"pddikti:read\"]},{\"id\":\"/v1/pddikti/data/{entitas}\",\"title\":\"Data pelaporan per jenis\",\"tag\":\"PDDikti: Pelaporan\",\"sc\":[\"pddikti:read\"]},{\"id\":\"/v1/pddikti/entitas\",\"title\":\"Jenis data pelaporan\",\"tag\":\"PDDikti: Pelaporan\",\"sc\":[\"pddikti:read\"]},{\"id\":\"/v1/pddikti/jadwal\",\"title\":\"Jadwal sinkronisasi otomatis\",\"tag\":\"PDDikti: Sinkronisasi otomatis\",\"sc\":[\"pddikti:read\"]},{\"id\":\"/v1/pddikti/kirim\",\"title\":\"Kirim dan sinkronisasi\",\"tag\":\"PDDikti: Kirim dan sinkronisasi\"},{\"id\":\"/v1/pddikti/komparasi\",\"title\":\"Riwayat komparasi\",\"tag\":\"PDDikti: Evaluasi data\",\"sc\":[\"pddikti:read\"]},{\"id\":\"/v1/pddikti/pdm\",\"title\":\"Pemutakhiran Data Mahasiswa\",\"tag\":\"PDDikti: Evaluasi data\",\"sc\":[\"pddikti:read\"]}],\"operasi\":[{\"id\":\"getPddiktiMonitoring\",\"title\":\"Monitoring pelaporan\",\"tag\":\"PDDikti: Pelaporan\",\"m\":\"GET\",\"sc\":[\"pddikti:read\"]},{\"id\":\"postPddiktiAntreanProses\",\"title\":\"Kirim antrean sekarang\",\"tag\":\"PDDikti: Kirim dan sinkronisasi\",\"m\":\"POST\",\"sc\":[\"pddikti:write\"]},{\"id\":\"getPddiktiPengaturan\",\"title\":\"Pengaturan kirim\",\"tag\":\"PDDikti: Kirim dan sinkronisasi\",\"m\":\"GET\",\"sc\":[\"pddikti:read\"]},{\"id\":\"postPddiktiPengaturan\",\"title\":\"Ubah pengaturan kirim\",\"tag\":\"PDDikti: Kirim dan sinkronisasi\",\"m\":\"POST\",\"sc\":[\"pddikti:admin\"]},{\"id\":\"getPddiktiKoneksi\",\"title\":\"Status koneksi Neo Feeder\",\"tag\":\"PDDikti: Kirim dan sinkronisasi\",\"m\":\"GET\",\"sc\":[\"pddikti:read\"]},{\"id\":\"postPddiktiKoneksiUji\",\"title\":\"Uji koneksi Neo Feeder\",\"tag\":\"PDDikti: Kirim dan sinkronisasi\",\"m\":\"POST\",\"sc\":[\"pddikti:admin\"]},{\"id\":\"getPddiktiEvaluasi\",\"title\":\"Evaluasi data semester\",\"tag\":\"PDDikti: Evaluasi data\",\"m\":\"GET\",\"sc\":[\"pddikti:read\"]},{\"id\":\"getPddiktiPisn\",\"title\":\"Simulasi PISN\",\"tag\":\"PDDikti: Evaluasi data\",\"m\":\"GET\",\"sc\":[\"pddikti:read\"]}]},{\"key\":\"dasbor\",\"group\":\"sistem\",\"title\":\"Dasbor & Peringatan Dini\",\"icon\":\"Gauge\",\"desc\":\"Ringkasan data dan early warning system mahasiswa.\",\"jumlahOperasi\":16,\"scope\":[\"dasbor:read\",\"dasbor:write\"],\"sumber\":[{\"id\":\"/v1/dasbor/ews\",\"title\":\"Mahasiswa berisiko\",\"tag\":\"Dasbor: Peringatan dini\",\"sc\":[\"dasbor:read\"]},{\"id\":\"/v1/dasbor/ews-aturan\",\"title\":\"Aturan EWS\",\"tag\":\"Dasbor: Peringatan dini\",\"sc\":[\"dasbor:read\"]},{\"id\":\"/v1/dasbor/kehadiran/mahasiswa\",\"title\":\"Mahasiswa kehadiran rendah\",\"tag\":\"Dasbor: Kehadiran\",\"sc\":[\"dasbor:read\"]},{\"id\":\"/v1/dasbor/perkuliahan/kelas\",\"title\":\"Realisasi per kelas\",\"tag\":\"Dasbor: Perkuliahan\",\"sc\":[\"dasbor:read\"]},{\"id\":\"/v1/dasbor/tren\",\"title\":\"Tren per semester\",\"tag\":\"Dasbor: Ringkasan\",\"sc\":[\"dasbor:read\"]}],\"operasi\":[{\"id\":\"getDasborRingkas\",\"title\":\"Dasbor pimpinan\",\"tag\":\"Dasbor: Ringkasan\",\"m\":\"GET\",\"sc\":[\"dasbor:read\"]},{\"id\":\"getDasborPerkuliahan\",\"title\":\"Monitoring perkuliahan\",\"tag\":\"Dasbor: Perkuliahan\",\"m\":\"GET\",\"sc\":[\"dasbor:read\"]},{\"id\":\"getDasborKehadiran\",\"title\":\"Analitik kehadiran mahasiswa\",\"tag\":\"Dasbor: Kehadiran\",\"m\":\"GET\",\"sc\":[\"dasbor:read\"]},{\"id\":\"getDasborOutcome\",\"title\":\"Monitoring outcome lulusan\",\"tag\":\"Dasbor: Outcome\",\"m\":\"GET\",\"sc\":[\"dasbor:read\"]},{\"id\":\"postDasborEwsHitung\",\"title\":\"Hitung ulang EWS\",\"tag\":\"Dasbor: Peringatan dini\",\"m\":\"POST\",\"sc\":[\"dasbor:write\"]}]},{\"key\":\"referensi\",\"group\":\"referensi\",\"title\":\"Referensi Akademik\",\"icon\":\"ListTree\",\"desc\":\"Fakultas, prodi, tahun akademik, ruang, wilayah, dan referensi lain, serta kelengkapan data.\",\"jumlahOperasi\":21,\"scope\":[\"referensi:read\",\"kelengkapan:saya\",\"kelengkapan:read\"],\"sumber\":[{\"id\":\"/v1/kelengkapan\",\"title\":\"Kelengkapan\",\"tag\":\"Kelengkapan data\",\"sc\":[\"kelengkapan:read\"]},{\"id\":\"/v1/kelengkapan/referensi/wilayah\",\"title\":\"Kecamatan\",\"tag\":\"Kelengkapan data\"},{\"id\":\"/v1/kelengkapan/ringkasan\",\"title\":\"Ringkasan kelengkapan\",\"tag\":\"Kelengkapan data\",\"sc\":[\"kelengkapan:read\"]},{\"id\":\"/v1/kelengkapan/{entitas}\",\"title\":\"Rekaman belum lengkap\",\"tag\":\"Kelengkapan data\",\"sc\":[\"kelengkapan:read\"]},{\"id\":\"/v1/referensi/fakultas\",\"title\":\"Fakultas\",\"tag\":\"Referensi\",\"sc\":[\"referensi:read\"]},{\"id\":\"/v1/referensi/item-biaya\",\"title\":\"Jenis item biaya\",\"tag\":\"Referensi\",\"sc\":[\"referensi:read\"]},{\"id\":\"/v1/referensi/jam\",\"title\":\"Jam kuliah per prodi\",\"tag\":\"Referensi\",\"sc\":[\"referensi:read\"]},{\"id\":\"/v1/referensi/kampus\",\"title\":\"Kampus\",\"tag\":\"Referensi\",\"sc\":[\"referensi:read\"]},{\"id\":\"/v1/referensi/kelas\",\"title\":\"Kelas per prodi\",\"tag\":\"Referensi\",\"sc\":[\"referensi:read\"]},{\"id\":\"/v1/referensi/kode\",\"title\":\"Grup kode referensi\",\"tag\":\"Referensi\",\"sc\":[\"referensi:read\"]},{\"id\":\"/v1/referensi/kode/{aplikasi}\",\"title\":\"Isi satu grup kode referensi\",\"tag\":\"Referensi\",\"sc\":[\"referensi:read\"]},{\"id\":\"/v1/referensi/prodi\",\"title\":\"Program studi\",\"tag\":\"Referensi\",\"sc\":[\"referensi:read\"]},{\"id\":\"/v1/referensi/ruang\",\"title\":\"Ruang\",\"tag\":\"Referensi\",\"sc\":[\"referensi:read\"]},{\"id\":\"/v1/referensi/skala-nilai\",\"title\":\"Skala nilai\",\"tag\":\"Referensi\",\"sc\":[\"referensi:read\"]},{\"id\":\"/v1/referensi/tahun-akademik\",\"title\":\"Tahun akademik\",\"tag\":\"Referensi\",\"sc\":[\"referensi:read\"]}],\"operasi\":[{\"id\":\"getReferensiPerguruanTinggi\",\"title\":\"Profil perguruan tinggi\",\"tag\":\"Referensi\",\"m\":\"GET\",\"sc\":[\"referensi:read\"]},{\"id\":\"getReferensiTahunAkademikAktif\",\"title\":\"Tahun akademik yang sedang dibuka\",\"tag\":\"Referensi\",\"m\":\"GET\",\"sc\":[\"referensi:read\"]},{\"id\":\"getKelengkapanSaya\",\"title\":\"Kelengkapan data saya\",\"tag\":\"Kelengkapan data\",\"m\":\"GET\",\"sc\":[\"kelengkapan:saya\"]},{\"id\":\"postKelengkapanSaya\",\"title\":\"Simpan isian wizard\",\"tag\":\"Kelengkapan data\",\"m\":\"POST\",\"sc\":[\"kelengkapan:saya\"]},{\"id\":\"getKelengkapanReferensi\",\"title\":\"Pilihan isian wizard\",\"tag\":\"Kelengkapan data\",\"m\":\"GET\"}]},{\"key\":\"master\",\"group\":\"referensi\",\"title\":\"Data Master\",\"icon\":\"Database\",\"desc\":\"Struktur akademik, data induk mahasiswa dan dosen, serta format dokumen akademik.\",\"jumlahOperasi\":25,\"scope\":[\"master:write\",\"referensi:read\",\"mahasiswa:write\",\"dosen:write\"],\"sumber\":[{\"id\":\"/v1/master/desain-ttd\",\"title\":\"Desain tanda tangan prodi\",\"tag\":\"Data master: Format dokumen akademik\",\"sc\":[\"referensi:read\"]},{\"id\":\"/v1/master/fakultas\",\"title\":\"Struktur akademik\",\"tag\":\"Data master: Struktur akademik\",\"sc\":[\"master:write\"]},{\"id\":\"/v1/master/format-dokumen\",\"title\":\"Format dokumen\",\"tag\":\"Data master: Format dokumen akademik\",\"sc\":[\"referensi:read\"]},{\"id\":\"/v1/master/format-dokumen/efektif\",\"title\":\"Format dokumen akademik\",\"tag\":\"Data master: Format dokumen akademik\",\"sc\":[\"referensi:read\"]},{\"id\":\"/v1/master/prodi\",\"title\":\"Struktur akademik\",\"tag\":\"Data master: Struktur akademik\",\"sc\":[\"master:write\"]}],\"operasi\":[{\"id\":\"postMasterJurusan\",\"title\":\"Tambah jurusan\",\"tag\":\"Data master: Struktur akademik\",\"m\":\"POST\",\"sc\":[\"master:write\"]},{\"id\":\"patchMasterMahasiswaByNimBiodata\",\"title\":\"Ubah biodata mahasiswa\",\"tag\":\"Data master: Mahasiswa dan dosen\",\"m\":\"PATCH\",\"sc\":[\"mahasiswa:write\"]},{\"id\":\"patchMasterMahasiswaByNimAlamat\",\"title\":\"Ubah alamat mahasiswa\",\"tag\":\"Data master: Mahasiswa dan dosen\",\"m\":\"PATCH\",\"sc\":[\"mahasiswa:write\"]},{\"id\":\"patchMasterDosenByNidnPribadi\",\"title\":\"Ubah data pribadi dosen\",\"tag\":\"Data master: Mahasiswa dan dosen\",\"m\":\"PATCH\",\"sc\":[\"dosen:write\"]},{\"id\":\"patchMasterDosenByNidnAlamat\",\"title\":\"Ubah alamat dosen\",\"tag\":\"Data master: Mahasiswa dan dosen\",\"m\":\"PATCH\",\"sc\":[\"dosen:write\"]},{\"id\":\"patchMasterDosenByNidnAkademik\",\"title\":\"Ubah data akademik dosen\",\"tag\":\"Data master: Mahasiswa dan dosen\",\"m\":\"PATCH\",\"sc\":[\"dosen:write\"]},{\"id\":\"patchMasterDosenByNidnJabatan\",\"title\":\"Ubah jabatan dosen\",\"tag\":\"Data master: Mahasiswa dan dosen\",\"m\":\"PATCH\",\"sc\":[\"dosen:write\"]}]},{\"key\":\"induk\",\"group\":\"referensi\",\"title\":\"Organisasi & Pejabat\",\"icon\":\"Building2\",\"desc\":\"Unit organisasi, orang, jabatan, pejabat, peran modul, dan log audit.\",\"jumlahOperasi\":38,\"scope\":[\"induk:read\",\"induk:admin\",\"induk:write\"],\"sumber\":[{\"id\":\"/v1/induk/jabatan\",\"title\":\"Jabatan struktural\",\"tag\":\"Induk: Jabatan\",\"sc\":[\"induk:read\"]},{\"id\":\"/v1/induk/log\",\"title\":\"Log audit pusat data\",\"tag\":\"Induk: Log audit\",\"sc\":[\"induk:read\"]},{\"id\":\"/v1/induk/orang\",\"title\":\"Orang\",\"tag\":\"Induk: Orang\",\"sc\":[\"induk:read\"]},{\"id\":\"/v1/induk/orang-peran\",\"title\":\"Peran orang\",\"tag\":\"Induk: Orang\",\"sc\":[\"induk:read\"]},{\"id\":\"/v1/induk/pejabat\",\"title\":\"Pejabat struktural\",\"tag\":\"Induk: Pejabat\",\"sc\":[\"induk:read\"]},{\"id\":\"/v1/induk/pejabat-aktif\",\"title\":\"Pejabat aktif suatu unit\",\"tag\":\"Induk: Pejabat\",\"sc\":[\"induk:read\"]},{\"id\":\"/v1/induk/peran\",\"title\":\"Peran pengelola modul\",\"tag\":\"Induk: Peran modul\",\"sc\":[\"induk:read\"]},{\"id\":\"/v1/induk/unit\",\"title\":\"Unit organisasi\",\"tag\":\"Induk: Unit organisasi\",\"sc\":[\"induk:read\"]},{\"id\":\"/v1/induk/unit-pohon\",\"title\":\"Pohon unit organisasi\",\"tag\":\"Induk: Unit organisasi\",\"sc\":[\"induk:read\"]}],\"operasi\":[{\"id\":\"postIndukUnitSinkronSiakad\",\"title\":\"Buat unit dari data SIAKAD\",\"tag\":\"Induk: Unit organisasi\",\"m\":\"POST\",\"sc\":[\"induk:admin\"]},{\"id\":\"postIndukOrangSinkronSiakad\",\"title\":\"Buat identitas dari data SIAKAD\",\"tag\":\"Induk: Orang\",\"m\":\"POST\",\"sc\":[\"induk:admin\"]},{\"id\":\"getIndukCariOrang\",\"title\":\"Cari orang dari kunci apa pun\",\"tag\":\"Induk: Orang\",\"m\":\"GET\",\"sc\":[\"induk:read\"]},{\"id\":\"getIndukSaya\",\"title\":\"Identitas saya\",\"tag\":\"Induk: Orang\",\"m\":\"GET\",\"sc\":[\"induk:read\"]}]},{\"key\":\"akademik\",\"group\":\"akademik\",\"title\":\"Perkuliahan\",\"icon\":\"GraduationCap\",\"desc\":\"Mahasiswa, dosen, jadwal dan kelas, KRS, nilai, presensi, pengajuan status, dokumen, dan lulusan.\",\"jumlahOperasi\":81,\"scope\":[\"mahasiswa:read\",\"krs:read\",\"krs:write\",\"nilai:read\",\"jadwal:read\",\"presensi:read\",\"keuangan:read\",\"lulusan:read\",\"dosen:read\",\"akademik:read\",\"akademik:write\"],\"sumber\":[{\"id\":\"/v1/akademik/batas/{jenis}\",\"title\":\"Batas waktu input\",\"tag\":\"Akademik: Batas waktu input\"},{\"id\":\"/v1/akademik/jadwal\",\"title\":\"Jadwal dan kelas\",\"tag\":\"Akademik: Jadwal dan kelas\",\"sc\":[\"akademik:write\"]},{\"id\":\"/v1/akademik/kartu-identitas\",\"title\":\"Dokumen dan laporan\",\"tag\":\"Akademik: Dokumen dan laporan\",\"sc\":[\"akademik:read\"]},{\"id\":\"/v1/akademik/kelas\",\"title\":\"Jadwal dan kelas\",\"tag\":\"Akademik: Jadwal dan kelas\",\"sc\":[\"akademik:write\"]},{\"id\":\"/v1/akademik/krs/persetujuan\",\"title\":\"Persetujuan KRS\",\"tag\":\"Akademik: Persetujuan KRS\",\"sc\":[\"akademik:read\"]},{\"id\":\"/v1/akademik/nilai/kelas\",\"title\":\"Nilai\",\"tag\":\"Akademik: Nilai\",\"sc\":[\"akademik:read\"]},{\"id\":\"/v1/akademik/pengajuan\",\"title\":\"Pengajuan status akademik\",\"tag\":\"Akademik: Pengajuan status\",\"sc\":[\"akademik:read\"]},{\"id\":\"/v1/akademik/presensi/kelas\",\"title\":\"Presensi dan jurnal\",\"tag\":\"Akademik: Presensi dan jurnal\",\"sc\":[\"akademik:read\"]},{\"id\":\"/v1/dosen\",\"title\":\"Dosen\",\"tag\":\"Dosen\",\"sc\":[\"dosen:read\"]},{\"id\":\"/v1/jadwal\",\"title\":\"Jadwal kuliah\",\"tag\":\"Jadwal\",\"sc\":[\"jadwal:read\"]},{\"id\":\"/v1/jadwal-ujian\",\"title\":\"Jadwal ujian\",\"tag\":\"Jadwal\",\"sc\":[\"jadwal:read\"]},{\"id\":\"/v1/keuangan/biaya\",\"title\":\"Master biaya per prodi dan periode\",\"tag\":\"Keuangan\",\"sc\":[\"keuangan:read\"]},{\"id\":\"/v1/keuangan/pembayaran\",\"title\":\"Transaksi pembayaran\",\"tag\":\"Keuangan\",\"sc\":[\"keuangan:read\"]},{\"id\":\"/v1/kurikulum\",\"title\":\"Ringkasan kurikulum per prodi\",\"tag\":\"Akademik\",\"sc\":[\"akademik:read\"]},{\"id\":\"/v1/lulusan\",\"title\":\"Lulusan dan mahasiswa keluar\",\"tag\":\"Lulusan\",\"sc\":[\"lulusan:read\"]},{\"id\":\"/v1/mahasiswa\",\"title\":\"Mahasiswa\",\"tag\":\"Mahasiswa\",\"sc\":[\"mahasiswa:read\"]},{\"id\":\"/v1/mata-kuliah\",\"title\":\"Mata kuliah\",\"tag\":\"Akademik\",\"sc\":[\"akademik:read\"]},{\"id\":\"/v1/wisuda\",\"title\":\"Periode wisuda\",\"tag\":\"Lulusan\",\"sc\":[\"lulusan:read\"]}],\"operasi\":[{\"id\":\"getMahasiswaByNimKrsPenawaran\",\"title\":\"Mata kuliah yang bisa diambil (form Ambil KRS)\",\"tag\":\"KRS\",\"m\":\"GET\",\"sc\":[\"krs:write\"]},{\"id\":\"getAkademikSaya\",\"title\":\"Hak akses akademik saya\",\"tag\":\"Akademik: Jadwal dan kelas\",\"m\":\"GET\",\"sc\":[\"akademik:read\"]},{\"id\":\"getAkademikJadwalReferensi\",\"title\":\"Referensi form jadwal\",\"tag\":\"Akademik: Jadwal dan kelas\",\"m\":\"GET\",\"sc\":[\"akademik:read\"]},{\"id\":\"postAkademikJadwalHapus\",\"title\":\"Hapus jadwal\",\"tag\":\"Akademik: Jadwal dan kelas\",\"m\":\"POST\",\"sc\":[\"akademik:write\"]},{\"id\":\"postAkademikJadwalSalin\",\"title\":\"Salin jadwal dari periode lain\",\"tag\":\"Akademik: Jadwal dan kelas\",\"m\":\"POST\",\"sc\":[\"akademik:write\"]},{\"id\":\"getAkademikBatas\",\"title\":\"Batas waktu input per prodi\",\"tag\":\"Akademik: Batas waktu input\",\"m\":\"GET\",\"sc\":[\"akademik:read\"]},{\"id\":\"getAkademikMahasiswaByNimRingkasan\",\"title\":\"Ringkasan akademik mahasiswa\",\"tag\":\"Akademik: Dokumen dan laporan\",\"m\":\"GET\",\"sc\":[\"akademik:read\"]},{\"id\":\"getAkademikMahasiswaByNimKartuUjian\",\"title\":\"Kartu ujian\",\"tag\":\"Akademik: Dokumen dan laporan\",\"m\":\"GET\",\"sc\":[\"akademik:read\"]},{\"id\":\"getAkademikMahasiswaByNimKtm\",\"title\":\"Kartu tanda mahasiswa (KTM)\",\"tag\":\"Akademik: Dokumen dan laporan\",\"m\":\"GET\",\"sc\":[\"akademik:read\"]},{\"id\":\"getAkademikMahasiswaByNimFoto\",\"title\":\"Foto mahasiswa\",\"tag\":\"Akademik: Dokumen dan laporan\",\"m\":\"GET\",\"sc\":[\"akademik:read\"]},{\"id\":\"getAkademikMahasiswaByNimTranskripSementara\",\"title\":\"Transkrip sementara\",\"tag\":\"Akademik: Dokumen dan laporan\",\"m\":\"GET\",\"sc\":[\"akademik:read\"]},{\"id\":\"getAkademikLaporan\",\"title\":\"Laporan akademik per prodi\",\"tag\":\"Akademik: Dokumen dan laporan\",\"m\":\"GET\",\"sc\":[\"akademik:read\"]}]},{\"key\":\"kurikulum\",\"group\":\"akademik\",\"title\":\"Kurikulum OBE\",\"icon\":\"BookOpen\",\"desc\":\"Profil lulusan, CPL, bahan kajian, mata kuliah, CPMK, RPS, dan evaluasi capaian.\",\"jumlahOperasi\":67,\"scope\":[\"kurikulum:read\",\"kurikulum:migrasi\",\"kurikulum:write\"],\"sumber\":[{\"id\":\"/v1/kurikulum-obe/capaian/mahasiswa\",\"title\":\"Evaluasi & capaian\",\"tag\":\"Kurikulum OBE: evaluasi & capaian\",\"sc\":[\"kurikulum:read\"]},{\"id\":\"/v1/kurikulum-obe/cpmk\",\"title\":\"Mata kuliah & CPMK\",\"tag\":\"Kurikulum OBE: mata kuliah & CPMK\"},{\"id\":\"/v1/kurikulum-obe/kurikulum\",\"title\":\"Kurikulum\",\"tag\":\"Kurikulum OBE\",\"sc\":[\"kurikulum:read\"]},{\"id\":\"/v1/kurikulum-obe/migrasi\",\"title\":\"Riwayat migrasi\",\"tag\":\"Kurikulum OBE: migrasi dari kurikulum lama\",\"sc\":[\"kurikulum:read\"]},{\"id\":\"/v1/kurikulum-obe/migrasi/semester-lama\",\"title\":\"Semester data MK lama satu prodi\",\"tag\":\"Kurikulum OBE: migrasi dari kurikulum lama\",\"sc\":[\"kurikulum:read\"]},{\"id\":\"/v1/kurikulum-obe/migrasi/status\",\"title\":\"Tahap migrasi per prodi\",\"tag\":\"Kurikulum OBE: migrasi dari kurikulum lama\",\"sc\":[\"kurikulum:read\"]},{\"id\":\"/v1/kurikulum-obe/mk\",\"title\":\"Mata kuliah & CPMK\",\"tag\":\"Kurikulum OBE: mata kuliah & CPMK\",\"sc\":[\"kurikulum:read\"]},{\"id\":\"/v1/kurikulum-obe/rps\",\"title\":\"RPS\",\"tag\":\"Kurikulum OBE: RPS\",\"sc\":[\"kurikulum:read\"]},{\"id\":\"/v1/kurikulum-obe/sub-cpmk\",\"title\":\"Mata kuliah & CPMK\",\"tag\":\"Kurikulum OBE: mata kuliah & CPMK\"}],\"operasi\":[{\"id\":\"getKurikulumObeReferensi\",\"title\":\"Ketentuan dan kode referensi\",\"tag\":\"Kurikulum OBE\",\"m\":\"GET\",\"sc\":[\"kurikulum:read\"]},{\"id\":\"postKurikulumObeMigrasiImpor\",\"title\":\"Tahap 1: impor kurikulum lama\",\"tag\":\"Kurikulum OBE: migrasi dari kurikulum lama\",\"m\":\"POST\",\"sc\":[\"kurikulum:migrasi\"]},{\"id\":\"postKurikulumObeMigrasiTerbit\",\"title\":\"Tahap 3: terbitkan MK ke SIAKAD lama\",\"tag\":\"Kurikulum OBE: migrasi dari kurikulum lama\",\"m\":\"POST\",\"sc\":[\"kurikulum:migrasi\"]},{\"id\":\"getKurikulumObeMigrasiSelisih\",\"title\":\"Bandingkan kurikulum baru dengan MK lama satu semester\",\"tag\":\"Kurikulum OBE: migrasi dari kurikulum lama\",\"m\":\"GET\",\"sc\":[\"kurikulum:read\"]},{\"id\":\"postKurikulumObeKurikulumByIdEkuivalensiOtomatis\",\"title\":\"Buat ekuivalensi otomatis\",\"tag\":\"Kurikulum OBE\",\"m\":\"POST\",\"sc\":[\"kurikulum:write\"]},{\"id\":\"postKurikulumObeKurikulumByIdCapaianRekam\",\"title\":\"Rekam capaian CPL\",\"tag\":\"Kurikulum OBE: evaluasi & capaian\",\"m\":\"POST\",\"sc\":[\"kurikulum:write\"]}]},{\"key\":\"kalender\",\"group\":\"akademik\",\"title\":\"Kalender Akademik\",\"icon\":\"CalendarDays\",\"desc\":\"Kegiatan, hari kerja, dan kalender terpadu.\",\"jumlahOperasi\":14,\"scope\":[\"kalender:read\",\"kalender:write\"],\"sumber\":[{\"id\":\"/v1/kalender/kegiatan\",\"title\":\"Kegiatan kalender\",\"tag\":\"Kalender: Kegiatan\"},{\"id\":\"/v1/kalender/tahun\",\"title\":\"Tahun akademik\",\"tag\":\"Kalender: Terpadu\",\"sc\":[\"kalender:read\"]},{\"id\":\"/v1/kalender/terpadu\",\"title\":\"Kalender terpadu\",\"tag\":\"Kalender: Terpadu\",\"sc\":[\"kalender:read\"]}],\"operasi\":[{\"id\":\"getKalenderIcs\",\"title\":\"Langganan iCalendar (publik)\",\"tag\":\"Kalender: Terpadu\",\"m\":\"GET\"},{\"id\":\"getKalenderHariKerja\",\"title\":\"Hitung hari kerja\",\"tag\":\"Kalender: Hari kerja\",\"m\":\"GET\",\"sc\":[\"kalender:read\"]},{\"id\":\"getKalenderTambahHariKerja\",\"title\":\"Tanggal setelah N hari kerja\",\"tag\":\"Kalender: Hari kerja\",\"m\":\"GET\",\"sc\":[\"kalender:read\"]}]},{\"key\":\"admisi\",\"group\":\"akademik\",\"title\":\"Admisi\",\"icon\":\"DoorOpen\",\"desc\":\"Penerimaan, seleksi, KIP Kuliah dan UKT, pendaftar, program studi, chat, dan laporan.\",\"jumlahOperasi\":68,\"scope\":[\"admisi:read\",\"admisi:write\",\"pmb:pendaftar\"],\"sumber\":[{\"id\":\"/v1/admisi/chat\",\"title\":\"Percakapan\",\"tag\":\"Admisi: Chat dan laporan\",\"sc\":[\"admisi:read\"]},{\"id\":\"/v1/admisi/format-nim\",\"title\":\"Format NIM\",\"tag\":\"Admisi: Penerimaan\",\"sc\":[\"admisi:read\"]},{\"id\":\"/v1/admisi/kip\",\"title\":\"KIP Kuliah\",\"tag\":\"Admisi: KIP Kuliah dan UKT\",\"sc\":[\"admisi:read\"]},{\"id\":\"/v1/admisi/loa\",\"title\":\"Letter of Acceptance\",\"tag\":\"Admisi: Penerimaan\",\"sc\":[\"admisi:read\"]},{\"id\":\"/v1/admisi/loa/verifikasi\",\"title\":\"Penerimaan\",\"tag\":\"Admisi: Penerimaan\"},{\"id\":\"/v1/admisi/ods\",\"title\":\"Penerimaan\",\"tag\":\"Admisi: Penerimaan\",\"sc\":[\"admisi:read\"]},{\"id\":\"/v1/admisi/petugas-sesi\",\"title\":\"Petugas sesi tes\",\"tag\":\"Admisi: Seleksi\",\"sc\":[\"admisi:read\"]},{\"id\":\"/v1/admisi/petugas/saya\",\"title\":\"Tugas sesi tes saya\",\"tag\":\"Admisi: Seleksi\",\"sc\":[\"admisi:read\"]},{\"id\":\"/v1/admisi/prodi-syarat\",\"title\":\"Persyaratan penerimaan prodi\",\"tag\":\"Admisi: Program studi\"},{\"id\":\"/v1/admisi/saya/pendaftaran\",\"title\":\"Pendaftar\",\"tag\":\"Admisi: Pendaftar\",\"sc\":[\"pmb:pendaftar\"]},{\"id\":\"/v1/admisi/ukt\",\"title\":\"UKT pendaftar\",\"tag\":\"Admisi: KIP Kuliah dan UKT\",\"sc\":[\"admisi:read\"]},{\"id\":\"/v1/admisi/ukt-aturan\",\"title\":\"Aturan usulan kelompok UKT\",\"tag\":\"Admisi: KIP Kuliah dan UKT\",\"sc\":[\"admisi:read\"]}],\"operasi\":[{\"id\":\"getAdmisiFeed\",\"title\":\"Feed PMB (publik)\",\"tag\":\"Admisi: Penerimaan\",\"m\":\"GET\"},{\"id\":\"getAdmisiRekomendasi\",\"title\":\"Rekomendasi kelulusan\",\"tag\":\"Admisi: Seleksi\",\"m\":\"GET\",\"sc\":[\"admisi:read\"]},{\"id\":\"getAdmisiNimUsulan\",\"title\":\"Usulan NIM berikutnya\",\"tag\":\"Admisi: Penerimaan\",\"m\":\"GET\",\"sc\":[\"admisi:read\"]},{\"id\":\"postAdmisiNimGenerate\",\"title\":\"Daftar ulang dengan NIM otomatis\",\"tag\":\"Admisi: Penerimaan\",\"m\":\"POST\",\"sc\":[\"admisi:write\"]},{\"id\":\"postAdmisiLoaTerbitkan\",\"title\":\"Terbitkan LoA\",\"tag\":\"Admisi: Penerimaan\",\"m\":\"POST\",\"sc\":[\"admisi:write\"]},{\"id\":\"getAdmisiLaporan\",\"title\":\"Laporan PMB\",\"tag\":\"Admisi: Chat dan laporan\",\"m\":\"GET\",\"sc\":[\"admisi:read\"]},{\"id\":\"getAdmisiSayaChat\",\"title\":\"Chat saya\",\"tag\":\"Admisi: Pendaftar\",\"m\":\"GET\",\"sc\":[\"pmb:pendaftar\"]},{\"id\":\"postAdmisiSayaChat\",\"title\":\"Kirim pesan ke panitia\",\"tag\":\"Admisi: Pendaftar\",\"m\":\"POST\",\"sc\":[\"pmb:pendaftar\"]}]},{\"key\":\"pmb\",\"group\":\"akademik\",\"title\":\"PMB\",\"icon\":\"UserPlus\",\"desc\":\"Penerimaan mahasiswa baru: periode, jalur, pendaftar, seleksi, dan pembayaran.\",\"jumlahOperasi\":120,\"scope\":[\"pmb:read\",\"pmb:pendaftar\",\"pmb:write\",\"pmb:keuangan\"],\"sumber\":[{\"id\":\"/v1/pmb/admin/berkas-jenis\",\"title\":\"Jenis berkas\",\"tag\":\"PMB Admin\",\"sc\":[\"pmb:read\"]},{\"id\":\"/v1/pmb/admin/faq\",\"title\":\"Faq\",\"tag\":\"PMB Admin\",\"sc\":[\"pmb:write\"]},{\"id\":\"/v1/pmb/admin/gelombang\",\"title\":\"Gelombang\",\"tag\":\"PMB Admin\",\"sc\":[\"pmb:read\"]},{\"id\":\"/v1/pmb/admin/jalur\",\"title\":\"Jalur seleksi dan syarat berkasnya\",\"tag\":\"PMB Admin\",\"sc\":[\"pmb:read\"]},{\"id\":\"/v1/pmb/admin/landing/pengaturan\",\"title\":\"Pengaturan\",\"tag\":\"PMB Admin\"},{\"id\":\"/v1/pmb/admin/notifikasi/antrean\",\"title\":\"Antrean email/WhatsApp/SMS\",\"tag\":\"PMB Admin\",\"sc\":[\"pmb:write\"]},{\"id\":\"/v1/pmb/admin/pendaftaran\",\"title\":\"Pendaftaran\",\"tag\":\"PMB Admin\",\"sc\":[\"pmb:read\"]},{\"id\":\"/v1/pmb/admin/pengumuman\",\"title\":\"Pengumuman\",\"tag\":\"PMB Admin\",\"sc\":[\"pmb:read\"]},{\"id\":\"/v1/pmb/admin/prodi-info\",\"title\":\"Prodi info\",\"tag\":\"PMB Admin\"},{\"id\":\"/v1/pmb/admin/referal\",\"title\":\"Kode referal (sekolah mitra, agen, alumni) dan jumlah pendaftarnya\",\"tag\":\"PMB Admin\",\"sc\":[\"pmb:read\"]},{\"id\":\"/v1/pmb/admin/sesi-tes\",\"title\":\"Sesi tes\",\"tag\":\"PMB Admin\",\"sc\":[\"pmb:read\"]},{\"id\":\"/v1/pmb/admin/tagihan\",\"title\":\"Tagihan PMB\",\"tag\":\"PMB Keuangan\",\"sc\":[\"pmb:keuangan\"]},{\"id\":\"/v1/pmb/admin/testimoni\",\"title\":\"Testimoni\",\"tag\":\"PMB Admin\",\"sc\":[\"pmb:write\"]},{\"id\":\"/v1/pmb/info/gelombang\",\"title\":\"Gelombang PMB yang diterbitkan\",\"tag\":\"PMB Publik\"},{\"id\":\"/v1/pmb/info/jalur\",\"title\":\"Jalur seleksi\",\"tag\":\"PMB Publik\"},{\"id\":\"/v1/pmb/info/pengumuman\",\"title\":\"Pengumuman PMB\",\"tag\":\"PMB Publik\"},{\"id\":\"/v1/pmb/info/perguruan-tinggi\",\"title\":\"Perguruan tinggi asal\",\"tag\":\"PMB Publik\"},{\"id\":\"/v1/pmb/info/sekolah\",\"title\":\"Sekolah asal\",\"tag\":\"PMB Publik\"},{\"id\":\"/v1/pmb/pendaftar\",\"title\":\"Pendaftar PMB\",\"tag\":\"PMB\",\"sc\":[\"pmb:read\"]},{\"id\":\"/v1/pmb/periode\",\"title\":\"Periode/gelombang PMB\",\"tag\":\"PMB\",\"sc\":[\"pmb:read\"]},{\"id\":\"/v1/pmb/saya/notifikasi\",\"title\":\"Notifikasi pendaftar\",\"tag\":\"PMB Pendaftar\",\"sc\":[\"pmb:pendaftar\"]},{\"id\":\"/v1/pmb/saya/pembayaran/metode\",\"title\":\"Metode pembayaran online\",\"tag\":\"PMB Pendaftar\",\"sc\":[\"pmb:pendaftar\"]},{\"id\":\"/v1/pmb/saya/pendaftaran\",\"title\":\"Pendaftaran saya\",\"tag\":\"PMB Pendaftar\",\"sc\":[\"pmb:pendaftar\"]}],\"operasi\":[{\"id\":\"getPmbInfoReferensiFormulir\",\"title\":\"Daftar kode isian formulir\",\"tag\":\"PMB Publik\",\"m\":\"GET\"},{\"id\":\"getPmbInfoLanding\",\"title\":\"Konten landing page\",\"tag\":\"PMB Publik\",\"m\":\"GET\"},{\"id\":\"postPmbAkunDaftar\",\"title\":\"Buat akun calon pendaftar\",\"tag\":\"PMB Akun\",\"m\":\"POST\",\"sc\":[\"pmb:pendaftar\"]},{\"id\":\"postPmbAkunVerifikasi\",\"title\":\"Verifikasi email\",\"tag\":\"PMB Akun\",\"m\":\"POST\",\"sc\":[\"pmb:pendaftar\"]},{\"id\":\"postPmbAkunVerifikasiKirimUlang\",\"title\":\"Token verifikasi baru\",\"tag\":\"PMB Akun\",\"m\":\"POST\",\"sc\":[\"pmb:pendaftar\"]},{\"id\":\"postPmbAkunMasuk\",\"title\":\"Masuk (login pendaftar)\",\"tag\":\"PMB Akun\",\"m\":\"POST\",\"sc\":[\"pmb:pendaftar\"]},{\"id\":\"postPmbAkunLupaPassword\",\"title\":\"Minta token reset password\",\"tag\":\"PMB Akun\",\"m\":\"POST\",\"sc\":[\"pmb:pendaftar\"]},{\"id\":\"postPmbAkunResetPassword\",\"title\":\"Reset password dengan token\",\"tag\":\"PMB Akun\",\"m\":\"POST\",\"sc\":[\"pmb:pendaftar\"]},{\"id\":\"getPmbSaya\",\"title\":\"Profil akun\",\"tag\":\"PMB Pendaftar\",\"m\":\"GET\",\"sc\":[\"pmb:pendaftar\"]},{\"id\":\"patchPmbSaya\",\"title\":\"Ubah nama/HP akun\",\"tag\":\"PMB Pendaftar\",\"m\":\"PATCH\",\"sc\":[\"pmb:pendaftar\"]},{\"id\":\"postPmbSayaGantiPassword\",\"title\":\"Ganti password\",\"tag\":\"PMB Pendaftar\",\"m\":\"POST\",\"sc\":[\"pmb:pendaftar\"]},{\"id\":\"postPmbSayaNotifikasiBaca\",\"title\":\"Tandai notifikasi dibaca\",\"tag\":\"PMB Pendaftar\",\"m\":\"POST\",\"sc\":[\"pmb:pendaftar\"]},{\"id\":\"postPmbSayaPendaftaranByIdTagihanByTagihanBukti\",\"title\":\"Unggah bukti transfer\",\"tag\":\"PMB Pendaftar\",\"m\":\"POST\",\"sc\":[\"pmb:pendaftar\"]},{\"id\":\"getPmbSayaPendaftaranByIdTagihanByTagihanBayar\",\"title\":\"Transaksi online yang menunggu\",\"tag\":\"PMB Pendaftar\",\"m\":\"GET\",\"sc\":[\"pmb:pendaftar\"]},{\"id\":\"postPmbSayaPendaftaranByIdTagihanByTagihanBayar\",\"title\":\"Bayar tagihan secara online\",\"tag\":\"PMB Pendaftar\",\"m\":\"POST\",\"sc\":[\"pmb:pendaftar\"]},{\"id\":\"deletePmbSayaPendaftaranByIdTagihanByTagihanBayar\",\"title\":\"Batalkan transaksi online\",\"tag\":\"PMB Pendaftar\",\"m\":\"DELETE\",\"sc\":[\"pmb:pendaftar\"]},{\"id\":\"getPmbAdminLanding\",\"title\":\"Konten landing page\",\"tag\":\"PMB Admin\",\"m\":\"GET\",\"sc\":[\"pmb:read\"]},{\"id\":\"postPmbAdminSesiTesByIdCbtNilai\",\"title\":\"Tarik nilai CBT ke sesi tes\",\"tag\":\"PMB Admin\",\"m\":\"POST\",\"sc\":[\"pmb:write\"]},{\"id\":\"getPmbAdminStatistik\",\"title\":\"Dashboard PMB\",\"tag\":\"PMB Admin\",\"m\":\"GET\",\"sc\":[\"pmb:read\"]},{\"id\":\"postPmbAdminNotifikasiByIdTerkirim\",\"title\":\"Tandai notifikasi terkirim/gagal\",\"tag\":\"PMB Admin\",\"m\":\"POST\",\"sc\":[\"pmb:write\"]},{\"id\":\"postPmbAdminPembayaranByPembayaranKonfirmasi\",\"title\":\"Konfirmasi bukti transfer\",\"tag\":\"PMB Keuangan\",\"m\":\"POST\",\"sc\":[\"pmb:keuangan\"]},{\"id\":\"getPmbAdminPembayaranByPembayaranBukti\",\"title\":\"Unduh bukti transfer\",\"tag\":\"PMB Keuangan\",\"m\":\"GET\",\"sc\":[\"pmb:keuangan\"]},{\"id\":\"postPmbPembayaranNotifikasi\",\"title\":\"Notifikasi pembayaran dari bank/payment gateway\",\"tag\":\"PMB Keuangan\",\"m\":\"POST\",\"sc\":[\"pmb:keuangan\"]}]},{\"key\":\"lms\",\"group\":\"akademik\",\"title\":\"LMS\",\"icon\":\"MonitorPlay\",\"desc\":\"Kelas daring, konten, tugas, kuis, forum, nilai, presensi, dan impor ke SIAKAD.\",\"jumlahOperasi\":104,\"scope\":[\"lms:read\",\"lms:kelola\",\"lms:write\"],\"sumber\":[{\"id\":\"/v1/lms/analitik/kelas\",\"title\":\"Pantau aktivitas lintas kelas\",\"tag\":\"LMS: Analitik\",\"sc\":[\"lms:read\"]},{\"id\":\"/v1/lms/analitik/mahasiswa\",\"title\":\"Analitik\",\"tag\":\"LMS: Analitik\",\"sc\":[\"lms:read\"]},{\"id\":\"/v1/lms/bank-soal\",\"title\":\"Bank soal\",\"tag\":\"LMS: Kuis\",\"sc\":[\"lms:kelola\"]},{\"id\":\"/v1/lms/file\",\"title\":\"File\",\"tag\":\"LMS: File\",\"sc\":[\"lms:read\"]},{\"id\":\"/v1/lms/forum\",\"title\":\"Forum\",\"tag\":\"LMS: Forum\"},{\"id\":\"/v1/lms/forum/post\",\"title\":\"Forum\",\"tag\":\"LMS: Forum\",\"sc\":[\"lms:read\"]},{\"id\":\"/v1/lms/impor-siakad\",\"title\":\"Impor ke SIAKAD\",\"tag\":\"LMS: Impor ke SIAKAD\",\"sc\":[\"lms:kelola\"]},{\"id\":\"/v1/lms/kalender\",\"title\":\"Kalender\",\"tag\":\"LMS: Beranda\",\"sc\":[\"lms:read\"]},{\"id\":\"/v1/lms/kelas\",\"title\":\"Kelas\",\"tag\":\"LMS: Kelas\",\"sc\":[\"lms:read\"]},{\"id\":\"/v1/lms/kelas/jadwal-tersedia\",\"title\":\"Jadwal SIAKAD yang belum punya kelas LMS\",\"tag\":\"LMS: Kelas\",\"sc\":[\"lms:read\"]},{\"id\":\"/v1/lms/kuis\",\"title\":\"Kuis\",\"tag\":\"LMS: Kuis\",\"sc\":[\"lms:read\"]},{\"id\":\"/v1/lms/kuis/percobaan\",\"title\":\"Kuis\",\"tag\":\"LMS: Kuis\",\"sc\":[\"lms:read\"]},{\"id\":\"/v1/lms/materi\",\"title\":\"Konten\",\"tag\":\"LMS: Konten\",\"sc\":[\"lms:read\"]},{\"id\":\"/v1/lms/nilai/item\",\"title\":\"Nilai\",\"tag\":\"LMS: Nilai\"},{\"id\":\"/v1/lms/notifikasi\",\"title\":\"Notifikasi pengguna\",\"tag\":\"LMS: Beranda\",\"sc\":[\"lms:read\"]},{\"id\":\"/v1/lms/presensi\",\"title\":\"Presensi\",\"tag\":\"LMS: Presensi\",\"sc\":[\"lms:read\"]},{\"id\":\"/v1/lms/rapat/penyedia\",\"title\":\"Penyedia rapat daring yang aktif\",\"tag\":\"LMS: Kelas daring\",\"sc\":[\"lms:read\"]},{\"id\":\"/v1/lms/terbuka\",\"title\":\"Katalog kelas terbuka\",\"tag\":\"LMS: Kelas terbuka\"},{\"id\":\"/v1/lms/topik\",\"title\":\"Konten\",\"tag\":\"LMS: Konten\"},{\"id\":\"/v1/lms/tugas\",\"title\":\"Tugas\",\"tag\":\"LMS: Tugas\",\"sc\":[\"lms:read\"]}],\"operasi\":[{\"id\":\"getLmsSaya\",\"title\":\"Ringkasan pengguna\",\"tag\":\"LMS: Beranda\",\"m\":\"GET\",\"sc\":[\"lms:read\"]},{\"id\":\"postLmsNotifikasiBaca\",\"title\":\"Tandai notifikasi dibaca\",\"tag\":\"LMS: Beranda\",\"m\":\"POST\",\"sc\":[\"lms:read\"]},{\"id\":\"postLmsKelasDariJadwal\",\"title\":\"Buat kelas dari jadwal SIAKAD\",\"tag\":\"LMS: Kelas\",\"m\":\"POST\",\"sc\":[\"lms:kelola\"]},{\"id\":\"postLmsKelasSinkronJadwal\",\"title\":\"Buat kelas untuk semua jadwal satu periode\",\"tag\":\"LMS: Kelas\",\"m\":\"POST\",\"sc\":[\"lms:kelola\"]},{\"id\":\"postLmsKelasGabung\",\"title\":\"Bergabung dengan kode kelas\",\"tag\":\"LMS: Kelas\",\"m\":\"POST\",\"sc\":[\"lms:write\"]},{\"id\":\"postLmsTerbukaByIdGabung\",\"title\":\"Ikuti kelas terbuka\",\"tag\":\"LMS: Kelas terbuka\",\"m\":\"POST\",\"sc\":[\"lms:write\"]},{\"id\":\"postLmsKelasByIdTopikMingguan\",\"title\":\"Buat topik pertemuan 1..n sekaligus\",\"tag\":\"LMS: Konten\",\"m\":\"POST\",\"sc\":[\"lms:kelola\"]},{\"id\":\"postLmsTugasByIdJawabanByNimNilai\",\"title\":\"Nilai jawaban\",\"tag\":\"LMS: Tugas\",\"m\":\"POST\",\"sc\":[\"lms:kelola\"]},{\"id\":\"postLmsKelasByIdNilaiItem\",\"title\":\"Tambah kolom nilai manual\",\"tag\":\"LMS: Nilai\",\"m\":\"POST\",\"sc\":[\"lms:kelola\"]},{\"id\":\"postLmsKelasByIdSiakadNilaiPratinjau\",\"title\":\"Pratinjau impor nilai\",\"tag\":\"LMS: Impor ke SIAKAD\",\"m\":\"POST\",\"sc\":[\"lms:kelola\"]},{\"id\":\"postLmsKelasByIdSiakadNilaiImpor\",\"title\":\"Impor nilai ke SIAKAD\",\"tag\":\"LMS: Impor ke SIAKAD\",\"m\":\"POST\",\"sc\":[\"lms:kelola\"]},{\"id\":\"postLmsKelasByIdSiakadPresensiPratinjau\",\"title\":\"Pratinjau impor presensi\",\"tag\":\"LMS: Impor ke SIAKAD\",\"m\":\"POST\",\"sc\":[\"lms:kelola\"]},{\"id\":\"postLmsKelasByIdSiakadPresensiImpor\",\"title\":\"Impor presensi ke SIAKAD\",\"tag\":\"LMS: Impor ke SIAKAD\",\"m\":\"POST\",\"sc\":[\"lms:kelola\"]}]},{\"key\":\"cbt\",\"group\":\"akademik\",\"title\":\"Ujian CBT\",\"icon\":\"ClipboardCheck\",\"desc\":\"Bank soal, ujian, sesi, peserta, koreksi, dan kirim nilai ke SIAKAD.\",\"jumlahOperasi\":50,\"scope\":[\"cbt:read\",\"cbt:write\"],\"sumber\":[{\"id\":\"/v1/cbt/kerjakan\",\"title\":\"Peserta ujian\",\"tag\":\"CBT: Peserta ujian\",\"sc\":[\"cbt:read\"]},{\"id\":\"/v1/cbt/latihan\",\"title\":\"Ujian latihan\",\"tag\":\"CBT: Ujian percobaan\",\"sc\":[\"cbt:read\"]},{\"id\":\"/v1/cbt/peserta\",\"title\":\"Peserta\",\"tag\":\"CBT: Peserta\",\"sc\":[\"cbt:read\"]},{\"id\":\"/v1/cbt/saya\",\"title\":\"Ujian saya\",\"tag\":\"CBT: Peserta ujian\",\"sc\":[\"cbt:read\"]},{\"id\":\"/v1/cbt/sesi\",\"title\":\"Sesi\",\"tag\":\"CBT: Sesi dan pengawasan\",\"sc\":[\"cbt:read\"]},{\"id\":\"/v1/cbt/soal\",\"title\":\"Soal\",\"tag\":\"CBT: Soal\",\"sc\":[\"cbt:read\"]},{\"id\":\"/v1/cbt/ujian\",\"title\":\"Ujian\",\"tag\":\"CBT: Ujian\",\"sc\":[\"cbt:read\"]}],\"operasi\":[{\"id\":\"postCbtUjianByIdNilaiSiakadByKirimBatal\",\"title\":\"Batalkan pengiriman nilai\",\"tag\":\"CBT: Nilai ke SIAKAD\",\"m\":\"POST\",\"sc\":[\"cbt:write\"]},{\"id\":\"postCbtLatihanByIdMulai\",\"title\":\"Mulai / ulangi ujian latihan\",\"tag\":\"CBT: Ujian percobaan\",\"m\":\"POST\",\"sc\":[\"cbt:write\"]},{\"id\":\"postCbtJawabanByIdKoreksi\",\"title\":\"Beri skor jawaban\",\"tag\":\"CBT: Koreksi dan hasil\",\"m\":\"POST\",\"sc\":[\"cbt:write\"]}]},{\"key\":\"edom\",\"group\":\"akademik\",\"title\":\"EDOM\",\"icon\":\"MessageSquareText\",\"desc\":\"Evaluasi dosen oleh mahasiswa: soal, pengisian, dan hasil.\",\"jumlahOperasi\":14,\"scope\":[\"edom:read\",\"edom:write\"],\"sumber\":[{\"id\":\"/v1/edom/hasil/dosen\",\"title\":\"Evaluasi per dosen\",\"tag\":\"EDOM: Hasil\",\"sc\":[\"edom:read\"]},{\"id\":\"/v1/edom/hasil/kelas\",\"title\":\"Evaluasi per kelas\",\"tag\":\"EDOM: Hasil\",\"sc\":[\"edom:read\"]},{\"id\":\"/v1/edom/hasil/soal\",\"title\":\"Sebaran jawaban per soal\",\"tag\":\"EDOM: Hasil\",\"sc\":[\"edom:read\"]},{\"id\":\"/v1/edom/isi\",\"title\":\"Pengisian\",\"tag\":\"EDOM: Pengisian\",\"sc\":[\"edom:read\"]},{\"id\":\"/v1/edom/monitoring\",\"title\":\"Monitoring pengisian\",\"tag\":\"EDOM: Hasil\",\"sc\":[\"edom:read\"]},{\"id\":\"/v1/edom/soal\",\"title\":\"Soal EDOM prodi per periode\",\"tag\":\"EDOM: Soal\",\"sc\":[\"edom:read\"]}],\"operasi\":[{\"id\":\"getEdomSaya\",\"title\":\"Hak akses EDOM saya\",\"tag\":\"EDOM: Soal\",\"m\":\"GET\",\"sc\":[\"edom:read\"]},{\"id\":\"postEdomSoalSalin\",\"title\":\"Salin soal dari periode lain\",\"tag\":\"EDOM: Soal\",\"m\":\"POST\",\"sc\":[\"edom:write\"]},{\"id\":\"postEdomSoalByIdkHapus\",\"title\":\"Hapus soal\",\"tag\":\"EDOM: Soal\",\"m\":\"POST\",\"sc\":[\"edom:write\"]},{\"id\":\"getEdomRekap\",\"title\":\"Rekapitulasi EDOM\",\"tag\":\"EDOM: Hasil\",\"m\":\"GET\",\"sc\":[\"edom:read\"]}]},{\"key\":\"mbkm\",\"group\":\"akademik\",\"title\":\"MBKM\",\"icon\":\"Route\",\"desc\":\"Program Merdeka Belajar, peserta, logbook, dan konversi nilai.\",\"jumlahOperasi\":58,\"scope\":[\"mbkm:read\",\"mbkm:write\"],\"sumber\":[{\"id\":\"/v1/mbkm/feeder\",\"title\":\"Data aktivitas bentuk Neo Feeder\",\"tag\":\"MBKM: Laporan\",\"sc\":[\"mbkm:read\"]},{\"id\":\"/v1/mbkm/konversi\",\"title\":\"Konversi ke mata kuliah\",\"tag\":\"MBKM: Nilai dan konversi\",\"sc\":[\"mbkm:read\"]},{\"id\":\"/v1/mbkm/logbook\",\"title\":\"Logbook kegiatan\",\"tag\":\"MBKM: Logbook\",\"sc\":[\"mbkm:read\"]},{\"id\":\"/v1/mbkm/pembimbing\",\"title\":\"Pembimbing dan penguji\",\"tag\":\"MBKM: Peserta\",\"sc\":[\"mbkm:read\"]},{\"id\":\"/v1/mbkm/penilaian\",\"title\":\"Komponen penilaian\",\"tag\":\"MBKM: Nilai dan konversi\",\"sc\":[\"mbkm:read\"]},{\"id\":\"/v1/mbkm/peserta\",\"title\":\"Peserta\",\"tag\":\"MBKM: Peserta\",\"sc\":[\"mbkm:read\"]},{\"id\":\"/v1/mbkm/program\",\"title\":\"Program MBKM\",\"tag\":\"MBKM: Program\",\"sc\":[\"mbkm:read\"]}],\"operasi\":[{\"id\":\"getMbkmSaya\",\"title\":\"Ringkasan MBKM saya (mahasiswa)\",\"tag\":\"MBKM: Peserta\",\"m\":\"GET\",\"sc\":[\"mbkm:read\"]}]},{\"key\":\"rpl\",\"group\":\"akademik\",\"title\":\"RPL\",\"icon\":\"Repeat\",\"desc\":\"Rekognisi pembelajaran lampau: pemohon, asesmen, pengajuan, dan master.\",\"jumlahOperasi\":75,\"scope\":[\"pmb:pendaftar\",\"rpl:read\",\"rpl:write\"],\"sumber\":[{\"id\":\"/v1/rpl/asesor\",\"title\":\"Asesor RPL\",\"tag\":\"RPL: Master\",\"sc\":[\"rpl:read\"]},{\"id\":\"/v1/rpl/asesor/saya\",\"title\":\"Tugas asesor saya\",\"tag\":\"RPL: Asesmen\",\"sc\":[\"rpl:read\"]},{\"id\":\"/v1/rpl/dokumen\",\"title\":\"Dokumen bukti RPL\",\"tag\":\"RPL: Pengajuan\",\"sc\":[\"rpl:read\"]},{\"id\":\"/v1/rpl/klaim\",\"title\":\"Mata kuliah yang diklaim\",\"tag\":\"RPL: Asesmen\",\"sc\":[\"rpl:read\"]},{\"id\":\"/v1/rpl/komponen\",\"title\":\"Komposisi penilaian RPL\",\"tag\":\"RPL: Master\",\"sc\":[\"rpl:read\"]},{\"id\":\"/v1/rpl/konversi\",\"title\":\"Pengajuan\",\"tag\":\"RPL: Pengajuan\",\"sc\":[\"rpl:read\"]},{\"id\":\"/v1/rpl/nilai\",\"title\":\"Nilai asesor\",\"tag\":\"RPL: Asesmen\",\"sc\":[\"rpl:read\"]},{\"id\":\"/v1/rpl/pengajuan\",\"title\":\"Pengajuan RPL\",\"tag\":\"RPL: Pengajuan\",\"sc\":[\"rpl:read\"]},{\"id\":\"/v1/rpl/pengalaman\",\"title\":\"Pengalaman pemohon RPL\",\"tag\":\"RPL: Pengajuan\",\"sc\":[\"rpl:read\"]},{\"id\":\"/v1/rpl/penugasan\",\"title\":\"Penugasan asesor\",\"tag\":\"RPL: Asesmen\",\"sc\":[\"rpl:read\"]},{\"id\":\"/v1/rpl/saya/pengajuan/{id}/mata-kuliah\",\"title\":\"Mata kuliah yang bisa diklaim\",\"tag\":\"RPL: Pemohon\",\"sc\":[\"pmb:pendaftar\"]},{\"id\":\"/v1/rpl/skema\",\"title\":\"Skema RPL\",\"tag\":\"RPL: Master\",\"sc\":[\"rpl:read\"]}],\"operasi\":[{\"id\":\"getRplSaya\",\"title\":\"RPL saya\",\"tag\":\"RPL: Pemohon\",\"m\":\"GET\",\"sc\":[\"pmb:pendaftar\"]},{\"id\":\"postRplSayaPengajuan\",\"title\":\"Buat/ubah pengajuan RPL\",\"tag\":\"RPL: Pemohon\",\"m\":\"POST\",\"sc\":[\"pmb:pendaftar\"]},{\"id\":\"postRplSayaPengajuanByIdPengalaman\",\"title\":\"Tambah/ubah pengalaman\",\"tag\":\"RPL: Pemohon\",\"m\":\"POST\",\"sc\":[\"pmb:pendaftar\"]},{\"id\":\"postRplSayaPengajuanByIdKlaim\",\"title\":\"Tambah/ubah klaim mata kuliah\",\"tag\":\"RPL: Pemohon\",\"m\":\"POST\",\"sc\":[\"pmb:pendaftar\"]},{\"id\":\"postRplSayaPengajuanByIdDokumen\",\"title\":\"Unggah dokumen bukti\",\"tag\":\"RPL: Pemohon\",\"m\":\"POST\",\"sc\":[\"pmb:pendaftar\"]},{\"id\":\"postRplSayaPengajuanByIdByJenisByAnakHapus\",\"title\":\"Hapus pengalaman/klaim/dokumen\",\"tag\":\"RPL: Pemohon\",\"m\":\"POST\",\"sc\":[\"pmb:pendaftar\"]},{\"id\":\"postRplSayaPengajuanByIdAjukan\",\"title\":\"Ajukan RPL\",\"tag\":\"RPL: Pemohon\",\"m\":\"POST\",\"sc\":[\"pmb:pendaftar\"]}]},{\"key\":\"kelulusan\",\"group\":\"akademik\",\"title\":\"Kelulusan & Wisuda\",\"icon\":\"Award\",\"desc\":\"Yudisium, syarat lulus, wisuda, ijazah dan sertifikat, poin dan SKPI.\",\"jumlahOperasi\":76,\"scope\":[\"kelulusan:read\",\"kelulusan:write\"],\"sumber\":[{\"id\":\"/v1/kelulusan/kandidat\",\"title\":\"Kandidat lulus\",\"tag\":\"Kelulusan: Yudisium\",\"sc\":[\"kelulusan:read\"]},{\"id\":\"/v1/kelulusan/lulusan\",\"title\":\"Data lulusan\",\"tag\":\"Kelulusan: Yudisium\",\"sc\":[\"kelulusan:read\"]},{\"id\":\"/v1/kelulusan/periode\",\"title\":\"Periode wisuda/yudisium\",\"tag\":\"Kelulusan: Wisuda\",\"sc\":[\"kelulusan:read\"]},{\"id\":\"/v1/kelulusan/poin/aturan\",\"title\":\"Aturan poin kemahasiswaan\",\"tag\":\"Kelulusan: Poin dan SKPI\",\"sc\":[\"kelulusan:read\"]},{\"id\":\"/v1/kelulusan/poin/kegiatan\",\"title\":\"Kegiatan dan poin mahasiswa\",\"tag\":\"Kelulusan: Poin dan SKPI\",\"sc\":[\"kelulusan:read\"]},{\"id\":\"/v1/kelulusan/predikat\",\"title\":\"Predikat kelulusan\",\"tag\":\"Kelulusan: Yudisium\",\"sc\":[\"kelulusan:read\"]},{\"id\":\"/v1/kelulusan/sertifikat\",\"title\":\"Sertifikat profesi dan kompetensi\",\"tag\":\"Kelulusan: Ijazah dan sertifikat\",\"sc\":[\"kelulusan:read\"]},{\"id\":\"/v1/kelulusan/skpi\",\"title\":\"SKPI\",\"tag\":\"Kelulusan: Poin dan SKPI\",\"sc\":[\"kelulusan:read\"]},{\"id\":\"/v1/kelulusan/skpi/verifikasi\",\"title\":\"Poin dan SKPI\",\"tag\":\"Kelulusan: Poin dan SKPI\"},{\"id\":\"/v1/kelulusan/syarat\",\"title\":\"Syarat kelulusan tambahan\",\"tag\":\"Kelulusan: Syarat\",\"sc\":[\"kelulusan:read\"]},{\"id\":\"/v1/kelulusan/syarat-mahasiswa\",\"title\":\"Pemenuhan syarat mahasiswa\",\"tag\":\"Kelulusan: Syarat\",\"sc\":[\"kelulusan:read\"]},{\"id\":\"/v1/kelulusan/wisudawan\",\"title\":\"Data wisudawan\",\"tag\":\"Kelulusan: Wisuda\",\"sc\":[\"kelulusan:read\"]}],\"operasi\":[{\"id\":\"getKelulusanSaya\",\"title\":\"Hak akses kelulusan saya\",\"tag\":\"Kelulusan: Yudisium\",\"m\":\"GET\",\"sc\":[\"kelulusan:read\"]},{\"id\":\"getKelulusanMahasiswaByNimSyarat\",\"title\":\"Periksa syarat kelulusan\",\"tag\":\"Kelulusan: Syarat\",\"m\":\"GET\",\"sc\":[\"kelulusan:read\"]},{\"id\":\"postKelulusanYudisium\",\"title\":\"Tetapkan lulus (yudisium)\",\"tag\":\"Kelulusan: Yudisium\",\"m\":\"POST\",\"sc\":[\"kelulusan:write\"]},{\"id\":\"postKelulusanMahasiswaByNimStatusAkhir\",\"title\":\"Tetapkan status akhir (DO, keluar, wafat, ...)\",\"tag\":\"Kelulusan: Yudisium\",\"m\":\"POST\",\"sc\":[\"kelulusan:write\"]},{\"id\":\"postKelulusanMahasiswaByNimStatusAkhirHapus\",\"title\":\"Hapus status akhir (ADMIN)\",\"tag\":\"Kelulusan: Yudisium\",\"m\":\"POST\",\"sc\":[\"kelulusan:write\"]},{\"id\":\"postKelulusanPeriodeByIdwHapus\",\"title\":\"Hapus periode wisuda\",\"tag\":\"Kelulusan: Wisuda\",\"m\":\"POST\",\"sc\":[\"kelulusan:write\"]},{\"id\":\"getKelulusanWisudaSaya\",\"title\":\"Status pendaftaran wisuda\",\"tag\":\"Kelulusan: Wisuda\",\"m\":\"GET\",\"sc\":[\"kelulusan:read\"]},{\"id\":\"postKelulusanWisudaDaftar\",\"title\":\"Daftar wisuda\",\"tag\":\"Kelulusan: Wisuda\",\"m\":\"POST\",\"sc\":[\"kelulusan:write\"]},{\"id\":\"postKelulusanWisudawanTerima\",\"title\":\"Terima/tolak pendaftar wisuda\",\"tag\":\"Kelulusan: Wisuda\",\"m\":\"POST\",\"sc\":[\"kelulusan:write\"]},{\"id\":\"postKelulusanWisudawanByIdwmHapus\",\"title\":\"Hapus pendaftaran wisuda\",\"tag\":\"Kelulusan: Wisuda\",\"m\":\"POST\",\"sc\":[\"kelulusan:write\"]},{\"id\":\"getKelulusanWisudawanByIdwmKartu\",\"title\":\"Kartu wisuda\",\"tag\":\"Kelulusan: Wisuda\",\"m\":\"GET\",\"sc\":[\"kelulusan:read\"]},{\"id\":\"getKelulusanMahasiswaByNimIjazah\",\"title\":\"Data ijazah\",\"tag\":\"Kelulusan: Ijazah dan sertifikat\",\"m\":\"GET\",\"sc\":[\"kelulusan:read\"]},{\"id\":\"postKelulusanMahasiswaByNimIjazah\",\"title\":\"Ubah identitas ijazah\",\"tag\":\"Kelulusan: Ijazah dan sertifikat\",\"m\":\"POST\",\"sc\":[\"kelulusan:write\"]},{\"id\":\"postKelulusanIjazahPin\",\"title\":\"Impor PIN ijazah (PISN)\",\"tag\":\"Kelulusan: Ijazah dan sertifikat\",\"m\":\"POST\",\"sc\":[\"kelulusan:write\"]},{\"id\":\"getKelulusanIjazahTtd\",\"title\":\"Penanda tangan ijazah\",\"tag\":\"Kelulusan: Ijazah dan sertifikat\",\"m\":\"GET\",\"sc\":[\"kelulusan:read\"]},{\"id\":\"postKelulusanIjazahTtd\",\"title\":\"Simpan penanda tangan ijazah\",\"tag\":\"Kelulusan: Ijazah dan sertifikat\",\"m\":\"POST\",\"sc\":[\"kelulusan:write\"]},{\"id\":\"getKelulusanMahasiswaByNimPoin\",\"title\":\"Poin kemahasiswaan mahasiswa\",\"tag\":\"Kelulusan: Poin dan SKPI\",\"m\":\"GET\",\"sc\":[\"kelulusan:read\"]}]},{\"key\":\"kemahasiswaan\",\"group\":\"kemahasiswaan\",\"title\":\"Kemahasiswaan\",\"icon\":\"Users\",\"desc\":\"Organisasi, prestasi, beasiswa, konseling, dan pelanggaran.\",\"jumlahOperasi\":92,\"scope\":[\"kemahasiswaan:read\",\"kemahasiswaan:write\"],\"sumber\":[{\"id\":\"/v1/kemahasiswaan/beasiswa\",\"title\":\"Program beasiswa\",\"tag\":\"Kemahasiswaan: Beasiswa\",\"sc\":[\"kemahasiswaan:read\"]},{\"id\":\"/v1/kemahasiswaan/kegiatan\",\"title\":\"Kegiatan ormawa\",\"tag\":\"Kemahasiswaan: Organisasi\",\"sc\":[\"kemahasiswaan:read\"]},{\"id\":\"/v1/kemahasiswaan/konseling\",\"title\":\"Konseling\",\"tag\":\"Kemahasiswaan: Konseling\",\"sc\":[\"kemahasiswaan:read\"]},{\"id\":\"/v1/kemahasiswaan/ormawa\",\"title\":\"Organisasi mahasiswa\",\"tag\":\"Kemahasiswaan: Organisasi\",\"sc\":[\"kemahasiswaan:read\"]},{\"id\":\"/v1/kemahasiswaan/pelanggaran\",\"title\":\"Pelanggaran dan sanksi\",\"tag\":\"Kemahasiswaan: Pelanggaran\",\"sc\":[\"kemahasiswaan:read\"]},{\"id\":\"/v1/kemahasiswaan/pencairan\",\"title\":\"Pencairan beasiswa\",\"tag\":\"Kemahasiswaan: Beasiswa\",\"sc\":[\"kemahasiswaan:read\"]},{\"id\":\"/v1/kemahasiswaan/pendaftar\",\"title\":\"Pendaftar beasiswa\",\"tag\":\"Kemahasiswaan: Beasiswa\",\"sc\":[\"kemahasiswaan:read\"]},{\"id\":\"/v1/kemahasiswaan/pengurus\",\"title\":\"Pengurus organisasi\",\"tag\":\"Kemahasiswaan: Organisasi\",\"sc\":[\"kemahasiswaan:read\"]},{\"id\":\"/v1/kemahasiswaan/prestasi\",\"title\":\"Prestasi mahasiswa\",\"tag\":\"Kemahasiswaan: Prestasi\",\"sc\":[\"kemahasiswaan:read\"]}],\"operasi\":[]},{\"key\":\"tracer\",\"group\":\"alumni\",\"title\":\"Tracer Study\",\"icon\":\"Compass\",\"desc\":\"Alumni, periode, kuesioner, responden, publikasi, dan referensi karier.\",\"jumlahOperasi\":80,\"scope\":[\"tracer:read\",\"tracer:manage\",\"tracer:pii\",\"tracer:respond\",\"tracer:dosen\",\"tracer:alumni\"],\"sumber\":[{\"id\":\"/v1/tracer/alumni\",\"title\":\"Alumni\",\"tag\":\"Tracer Study: alumni\",\"sc\":[\"tracer:read\"]},{\"id\":\"/v1/tracer/direktori\",\"title\":\"Direktori alumni\",\"tag\":\"Tracer Study: dasbor & dosen\"},{\"id\":\"/v1/tracer/dosen/alumni\",\"title\":\"Alumni bimbingan dosen\",\"tag\":\"Tracer Study: dasbor & dosen\",\"sc\":[\"tracer:dosen\"]},{\"id\":\"/v1/tracer/dosen/rekap\",\"title\":\"Dasbor & dosen\",\"tag\":\"Tracer Study: dasbor & dosen\",\"sc\":[\"tracer:dosen\"]},{\"id\":\"/v1/tracer/instansi\",\"title\":\"Instansi/pengguna lulusan\",\"tag\":\"Tracer Study: referensi & karir\",\"sc\":[\"tracer:read\"]},{\"id\":\"/v1/tracer/isi\",\"title\":\"Pengisian\",\"tag\":\"Tracer Study: pengisian\",\"sc\":[\"tracer:respond\"]},{\"id\":\"/v1/tracer/kuesioner\",\"title\":\"Kuesioner\",\"tag\":\"Tracer Study: kuesioner\",\"sc\":[\"tracer:read\"]},{\"id\":\"/v1/tracer/lowongan\",\"title\":\"Lowongan kerja\",\"tag\":\"Tracer Study: referensi & karir\"},{\"id\":\"/v1/tracer/periode\",\"title\":\"Periode survei\",\"tag\":\"Tracer Study: periode & responden\",\"sc\":[\"tracer:read\"]},{\"id\":\"/v1/tracer/publikasi\",\"title\":\"Publikasi hasil\",\"tag\":\"Tracer Study: publikasi\"},{\"id\":\"/v1/tracer/referensi/wilayah\",\"title\":\"Referensi provinsi/kabupaten\",\"tag\":\"Tracer Study: referensi & karir\",\"sc\":[\"tracer:respond\"]},{\"id\":\"/v1/tracer/responden\",\"title\":\"Periode & responden\",\"tag\":\"Tracer Study: periode & responden\",\"sc\":[\"tracer:read\"]},{\"id\":\"/v1/tracer/saya\",\"title\":\"Pengisian\",\"tag\":\"Tracer Study: pengisian\",\"sc\":[\"tracer:respond\"]},{\"id\":\"/v1/tracer/ump\",\"title\":\"Upah minimum provinsi\",\"tag\":\"Tracer Study: referensi & karir\",\"sc\":[\"tracer:read\"]}],\"operasi\":[{\"id\":\"getTracerSayaPenilai\",\"title\":\"Atasan/HRD yang menilai alumni ini\",\"tag\":\"Tracer Study: pengisian\",\"m\":\"GET\",\"sc\":[\"tracer:respond\"]},{\"id\":\"postTracerSayaPenilai\",\"title\":\"Alumni mengusulkan atasan/HRD sebagai penilai\",\"tag\":\"Tracer Study: pengisian\",\"m\":\"POST\",\"sc\":[\"tracer:respond\"]},{\"id\":\"getTracerStatistik\",\"title\":\"Statistik alumni\",\"tag\":\"Tracer Study: dasbor & dosen\",\"m\":\"GET\",\"sc\":[\"tracer:read\"]},{\"id\":\"getTracerDosen\",\"title\":\"Dasbor dosen\",\"tag\":\"Tracer Study: dasbor & dosen\",\"m\":\"GET\",\"sc\":[\"tracer:dosen\"]},{\"id\":\"postTracerAlumniAksesVerifikasi\",\"title\":\"Verifikasi alumni tanpa akun SIAKAD\",\"tag\":\"Tracer Study: dasbor & dosen\",\"m\":\"POST\",\"sc\":[\"tracer:alumni\",\"tracer:pii\"]},{\"id\":\"postTracerAlumniByNimBerkasByUuidHapus\",\"title\":\"Hapus berkas alumni\",\"tag\":\"Tracer Study: alumni\",\"m\":\"POST\"},{\"id\":\"getTracerAlumniByNimBerkasFileByUuidUnduh\",\"title\":\"Unduh berkas alumni\",\"tag\":\"Tracer Study: alumni\",\"m\":\"GET\"}]},{\"key\":\"karier\",\"group\":\"alumni\",\"title\":\"Pusat Karier\",\"icon\":\"Briefcase\",\"desc\":\"Mitra, lowongan, acara, profil dan CV, lamaran, dan rekomendasi.\",\"jumlahOperasi\":89,\"scope\":[\"karier:read\",\"karier:write\"],\"sumber\":[{\"id\":\"/v1/karier/acara\",\"title\":\"Acara karier\",\"tag\":\"Karier: Acara\"},{\"id\":\"/v1/karier/artikel\",\"title\":\"Tips dan artikel karier\",\"tag\":\"Karier: Tips\"},{\"id\":\"/v1/karier/cv\",\"title\":\"Profil dan CV\",\"tag\":\"Karier: Profil dan CV\",\"sc\":[\"karier:read\"]},{\"id\":\"/v1/karier/interaksi\",\"title\":\"Interaksi dengan mitra\",\"tag\":\"Karier: Mitra\",\"sc\":[\"karier:read\"]},{\"id\":\"/v1/karier/kandidat\",\"title\":\"Kandidat\",\"tag\":\"Karier: Profil dan CV\",\"sc\":[\"karier:read\"]},{\"id\":\"/v1/karier/lamaran\",\"title\":\"Lamaran kerja\",\"tag\":\"Karier: Lamaran\",\"sc\":[\"karier:read\"]},{\"id\":\"/v1/karier/mitra\",\"title\":\"Perusahaan mitra\",\"tag\":\"Karier: Mitra\",\"sc\":[\"karier:read\"]},{\"id\":\"/v1/karier/pengalaman\",\"title\":\"Pengalaman\",\"tag\":\"Karier: Profil dan CV\",\"sc\":[\"karier:read\"]},{\"id\":\"/v1/karier/peserta\",\"title\":\"Pendaftar acara\",\"tag\":\"Karier: Acara\",\"sc\":[\"karier:read\"]},{\"id\":\"/v1/karier/profil\",\"title\":\"Profil karier\",\"tag\":\"Karier: Profil dan CV\",\"sc\":[\"karier:read\"]},{\"id\":\"/v1/karier/rekomendasi\",\"title\":\"Rekomendasi lulusan\",\"tag\":\"Karier: Rekomendasi\",\"sc\":[\"karier:read\"]},{\"id\":\"/v1/karier/undangan-mitra\",\"title\":\"Undangan mitra\",\"tag\":\"Karier: Mitra\",\"sc\":[\"karier:read\"]},{\"id\":\"/v1/karier/undangan-mitra/terima\",\"title\":\"Mitra\",\"tag\":\"Karier: Mitra\"}],\"operasi\":[{\"id\":\"getKarierRekap\",\"title\":\"Rekap pusat karier\",\"tag\":\"Karier: Laporan\",\"m\":\"GET\",\"sc\":[\"karier:read\"]},{\"id\":\"getKarierLowonganPantau\",\"title\":\"Pemantauan lowongan\",\"tag\":\"Karier: Laporan\",\"m\":\"GET\",\"sc\":[\"karier:read\"]},{\"id\":\"getKarierLowonganByIdSaranKandidat\",\"title\":\"Saran kandidat untuk lowongan\",\"tag\":\"Karier: Rekomendasi\",\"m\":\"GET\",\"sc\":[\"karier:read\"]},{\"id\":\"postKarierUndanganMitraByIdCabut\",\"title\":\"Cabut undangan mitra\",\"tag\":\"Karier: Mitra\",\"m\":\"POST\",\"sc\":[\"karier:write\"]}]},{\"key\":\"fakultas\",\"group\":\"kelembagaan\",\"title\":\"Fakultas\",\"icon\":\"Landmark\",\"desc\":\"Portal dan dasbor fakultas, termasuk kelola akademik di tingkat fakultas.\",\"jumlahOperasi\":45,\"scope\":[\"fakultas:read\",\"fakultas:write\"],\"sumber\":[{\"id\":\"/v1/fakultas\",\"title\":\"Fakultas\",\"tag\":\"Fakultas\"},{\"id\":\"/v1/fakultas/{kode}/dosen\",\"title\":\"Kelola akademik\",\"tag\":\"Fakultas: kelola akademik\",\"sc\":[\"fakultas:read\"]},{\"id\":\"/v1/fakultas/{kode}/jadwal\",\"title\":\"Kelola akademik\",\"tag\":\"Fakultas: kelola akademik\",\"sc\":[\"fakultas:write\"]},{\"id\":\"/v1/fakultas/{kode}/kelas\",\"title\":\"Kelola akademik\",\"tag\":\"Fakultas: kelola akademik\",\"sc\":[\"fakultas:write\"]},{\"id\":\"/v1/fakultas/{kode}/krs/persetujuan\",\"title\":\"Kelola akademik\",\"tag\":\"Fakultas: kelola akademik\",\"sc\":[\"fakultas:read\"]},{\"id\":\"/v1/fakultas/{kode}/mahasiswa\",\"title\":\"Mahasiswa\",\"tag\":\"Fakultas\",\"sc\":[\"fakultas:read\"]},{\"id\":\"/v1/fakultas/{kode}/mahasiswa/{nim}\",\"title\":\"Kelola akademik\",\"tag\":\"Fakultas: kelola akademik\",\"sc\":[\"fakultas:read\"]},{\"id\":\"/v1/fakultas/{kode}/modul\",\"title\":\"Modul\",\"tag\":\"Fakultas\",\"sc\":[\"fakultas:read\"]},{\"id\":\"/v1/fakultas/{kode}/nilai/kelas\",\"title\":\"Kelola akademik\",\"tag\":\"Fakultas: kelola akademik\",\"sc\":[\"fakultas:read\"]},{\"id\":\"/v1/fakultas/{kode}/statistik\",\"title\":\"Statistik\",\"tag\":\"Fakultas\",\"sc\":[\"fakultas:read\"]}],\"operasi\":[{\"id\":\"getFakultasByKodeAngka\",\"title\":\"Fakultas dalam angka\",\"tag\":\"Fakultas\",\"m\":\"GET\"},{\"id\":\"getFakultasByKodeSaya\",\"title\":\"Konteks & hak akses saya\",\"tag\":\"Fakultas\",\"m\":\"GET\",\"sc\":[\"fakultas:read\"]},{\"id\":\"getFakultasByKodeRingkasan\",\"title\":\"Beranda dasbor\",\"tag\":\"Fakultas\",\"m\":\"GET\",\"sc\":[\"fakultas:read\"]},{\"id\":\"getFakultasByKodePerkuliahan\",\"title\":\"Perkuliahan dan jadwal\",\"tag\":\"Fakultas\",\"m\":\"GET\",\"sc\":[\"fakultas:read\"]},{\"id\":\"getFakultasByKodeLms\",\"title\":\"Pantauan LMS\",\"tag\":\"Fakultas\",\"m\":\"GET\",\"sc\":[\"fakultas:read\"]},{\"id\":\"getFakultasByKodeKrs\",\"title\":\"Rekap KRS\",\"tag\":\"Fakultas\",\"m\":\"GET\",\"sc\":[\"fakultas:read\"]},{\"id\":\"getFakultasByKodeKhs\",\"title\":\"KHS dan nilai\",\"tag\":\"Fakultas\",\"m\":\"GET\",\"sc\":[\"fakultas:read\"]},{\"id\":\"getFakultasByKodeKurikulum\",\"title\":\"Kurikulum\",\"tag\":\"Fakultas\",\"m\":\"GET\",\"sc\":[\"fakultas:read\"]},{\"id\":\"getFakultasByKodeTugasAkhir\",\"title\":\"Ujian proposal dan skripsi\",\"tag\":\"Fakultas\",\"m\":\"GET\",\"sc\":[\"fakultas:read\"]},{\"id\":\"getFakultasByKodeWisuda\",\"title\":\"Wisuda\",\"tag\":\"Fakultas\",\"m\":\"GET\",\"sc\":[\"fakultas:read\"]},{\"id\":\"getFakultasByKodeAlumni\",\"title\":\"Alumni\",\"tag\":\"Fakultas\",\"m\":\"GET\",\"sc\":[\"fakultas:read\"]},{\"id\":\"getFakultasByKodePmb\",\"title\":\"Data PMB\",\"tag\":\"Fakultas\",\"m\":\"GET\",\"sc\":[\"fakultas:read\"]},{\"id\":\"getFakultasByKodeTracer\",\"title\":\"Tracer study\",\"tag\":\"Fakultas\",\"m\":\"GET\",\"sc\":[\"fakultas:read\"]},{\"id\":\"getFakultasByKodeJadwalReferensi\",\"title\":\"Referensi form jadwal\",\"tag\":\"Fakultas: kelola akademik\",\"m\":\"GET\",\"sc\":[\"fakultas:read\"]},{\"id\":\"postFakultasByKodeJadwalHapus\",\"title\":\"Hapus jadwal\",\"tag\":\"Fakultas: kelola akademik\",\"m\":\"POST\",\"sc\":[\"fakultas:write\"]},{\"id\":\"postFakultasByKodeJadwalSalin\",\"title\":\"Salin jadwal dari periode lain\",\"tag\":\"Fakultas: kelola akademik\",\"m\":\"POST\",\"sc\":[\"fakultas:write\"]},{\"id\":\"getFakultasByKodeRuangMahasiswa\",\"title\":\"Beranda mahasiswa\",\"tag\":\"Fakultas: kelola akademik\",\"m\":\"GET\",\"sc\":[\"fakultas:read\"]},{\"id\":\"getFakultasByKodeAkses\",\"title\":\"Pengaturan akses fakultas\",\"tag\":\"Fakultas\",\"m\":\"GET\",\"sc\":[\"fakultas:read\"]},{\"id\":\"postFakultasByKodeAkses\",\"title\":\"Beri peran tendik/operator\",\"tag\":\"Fakultas\",\"m\":\"POST\",\"sc\":[\"fakultas:write\"]},{\"id\":\"postFakultasByKodeAksesByIdCabut\",\"title\":\"Cabut peran tendik/operator\",\"tag\":\"Fakultas\",\"m\":\"POST\",\"sc\":[\"fakultas:write\"]}]},{\"key\":\"sdm\",\"group\":\"kelembagaan\",\"title\":\"Kepegawaian\",\"icon\":\"IdCard\",\"desc\":\"Pegawai, riwayat, presensi, cuti, kinerja, usulan, PAK, honor, dan SISTER.\",\"jumlahOperasi\":228,\"scope\":[\"sdm:read\",\"sdm:admin\",\"sdm:write\"],\"sumber\":[{\"id\":\"/v1/sdm/cuti\",\"title\":\"Cuti dan izin\",\"tag\":\"SDM: Cuti\",\"sc\":[\"sdm:read\"]},{\"id\":\"/v1/sdm/file\",\"title\":\"File\",\"tag\":\"SDM: File\",\"sc\":[\"sdm:read\"]},{\"id\":\"/v1/sdm/honor\",\"title\":\"Honor\",\"tag\":\"SDM: Honor\",\"sc\":[\"sdm:read\"]},{\"id\":\"/v1/sdm/honor/komponen\",\"title\":\"Komponen honor yang dihitung otomatis\",\"tag\":\"SDM: Honor\",\"sc\":[\"sdm:read\"]},{\"id\":\"/v1/sdm/honor/tarif\",\"title\":\"Tarif honor\",\"tag\":\"SDM: Honor\",\"sc\":[\"sdm:read\"]},{\"id\":\"/v1/sdm/kinerja\",\"title\":\"Laporan kinerja\",\"tag\":\"SDM: Kinerja\",\"sc\":[\"sdm:read\"]},{\"id\":\"/v1/sdm/kinerja/item\",\"title\":\"Kinerja\",\"tag\":\"SDM: Kinerja\"},{\"id\":\"/v1/sdm/kinerja/periode\",\"title\":\"Periode penilaian\",\"tag\":\"SDM: Kinerja\",\"sc\":[\"sdm:read\"]},{\"id\":\"/v1/sdm/laporan/dosen-prodi\",\"title\":\"Dosen per prodi\",\"tag\":\"SDM: Laporan\",\"sc\":[\"sdm:read\"]},{\"id\":\"/v1/sdm/laporan/duk\",\"title\":\"Urut kepangkatan\",\"tag\":\"SDM: Laporan\",\"sc\":[\"sdm:read\"]},{\"id\":\"/v1/sdm/log\",\"title\":\"Log audit\",\"tag\":\"SDM: Laporan\",\"sc\":[\"sdm:admin\"]},{\"id\":\"/v1/sdm/master/golongan\",\"title\":\"Pangkat/golongan\",\"tag\":\"SDM: Master\",\"sc\":[\"sdm:read\"]},{\"id\":\"/v1/sdm/master/hari-libur\",\"title\":\"Hari libur\",\"tag\":\"SDM: Master\",\"sc\":[\"sdm:read\"]},{\"id\":\"/v1/sdm/master/jabatan\",\"title\":\"Jabatan struktural, tugas tambahan, fungsional tendik\",\"tag\":\"SDM: Master\",\"sc\":[\"sdm:read\"]},{\"id\":\"/v1/sdm/master/jabatan-akademik\",\"title\":\"Jenjang jabatan akademik dan syarat promosi\",\"tag\":\"SDM: Master\",\"sc\":[\"sdm:read\"]},{\"id\":\"/v1/sdm/master/jenis-cuti\",\"title\":\"Jenis cuti, izin, dan dinas\",\"tag\":\"SDM: Master\",\"sc\":[\"sdm:read\"]},{\"id\":\"/v1/sdm/master/unit\",\"title\":\"Unit kerja\",\"tag\":\"SDM: Master\",\"sc\":[\"sdm:read\"]},{\"id\":\"/v1/sdm/pegawai\",\"title\":\"Pegawai\",\"tag\":\"SDM: Pegawai\",\"sc\":[\"sdm:read\"]},{\"id\":\"/v1/sdm/petugas\",\"title\":\"Petugas kepegawaian\",\"tag\":\"SDM: Master\",\"sc\":[\"sdm:read\"]},{\"id\":\"/v1/sdm/presensi\",\"title\":\"Presensi\",\"tag\":\"SDM: Presensi\",\"sc\":[\"sdm:read\"]},{\"id\":\"/v1/sdm/presensi/rekap\",\"title\":\"Rekap presensi bulanan\",\"tag\":\"SDM: Presensi\",\"sc\":[\"sdm:read\"]},{\"id\":\"/v1/sdm/riwayat/diklat\",\"title\":\"Riwayat\",\"tag\":\"SDM: Riwayat\",\"sc\":[\"sdm:read\"]},{\"id\":\"/v1/sdm/riwayat/disiplin\",\"title\":\"Riwayat\",\"tag\":\"SDM: Riwayat\",\"sc\":[\"sdm:read\"]},{\"id\":\"/v1/sdm/riwayat/gaji\",\"title\":\"Riwayat\",\"tag\":\"SDM: Riwayat\",\"sc\":[\"sdm:read\"]},{\"id\":\"/v1/sdm/riwayat/jabatan\",\"title\":\"Riwayat\",\"tag\":\"SDM: Riwayat\",\"sc\":[\"sdm:read\"]},{\"id\":\"/v1/sdm/riwayat/jabatan-akademik\",\"title\":\"Riwayat\",\"tag\":\"SDM: Riwayat\",\"sc\":[\"sdm:read\"]},{\"id\":\"/v1/sdm/riwayat/keluarga\",\"title\":\"Riwayat\",\"tag\":\"SDM: Riwayat\",\"sc\":[\"sdm:read\"]},{\"id\":\"/v1/sdm/riwayat/organisasi\",\"title\":\"Riwayat\",\"tag\":\"SDM: Riwayat\",\"sc\":[\"sdm:read\"]},{\"id\":\"/v1/sdm/riwayat/pangkat\",\"title\":\"Riwayat\",\"tag\":\"SDM: Riwayat\",\"sc\":[\"sdm:read\"]},{\"id\":\"/v1/sdm/riwayat/pekerjaan\",\"title\":\"Riwayat\",\"tag\":\"SDM: Riwayat\",\"sc\":[\"sdm:read\"]},{\"id\":\"/v1/sdm/riwayat/pendidikan\",\"title\":\"Riwayat\",\"tag\":\"SDM: Riwayat\",\"sc\":[\"sdm:read\"]},{\"id\":\"/v1/sdm/riwayat/penghargaan\",\"title\":\"Riwayat\",\"tag\":\"SDM: Riwayat\",\"sc\":[\"sdm:read\"]},{\"id\":\"/v1/sdm/riwayat/sertifikasi\",\"title\":\"Riwayat\",\"tag\":\"SDM: Riwayat\",\"sc\":[\"sdm:read\"]},{\"id\":\"/v1/sdm/riwayat/status\",\"title\":\"Riwayat\",\"tag\":\"SDM: Riwayat\",\"sc\":[\"sdm:read\"]},{\"id\":\"/v1/sdm/riwayat/tes\",\"title\":\"Riwayat\",\"tag\":\"SDM: Riwayat\",\"sc\":[\"sdm:read\"]},{\"id\":\"/v1/sdm/riwayat/tunjangan\",\"title\":\"Riwayat\",\"tag\":\"SDM: Riwayat\",\"sc\":[\"sdm:read\"]},{\"id\":\"/v1/sdm/sister/jenis\",\"title\":\"Jenis data SISTER\",\"tag\":\"SDM: SISTER\",\"sc\":[\"sdm:read\"]},{\"id\":\"/v1/sdm/sister/kirim\",\"title\":\"Antrean kirim ke SISTER\",\"tag\":\"SDM: SISTER\",\"sc\":[\"sdm:admin\"]},{\"id\":\"/v1/sdm/sister/log\",\"title\":\"Log tarik data SISTER\",\"tag\":\"SDM: SISTER\",\"sc\":[\"sdm:admin\"]},{\"id\":\"/v1/sdm/sister/pegawai\",\"title\":\"Pegawai dan status SISTER\",\"tag\":\"SDM: SISTER\",\"sc\":[\"sdm:admin\"]},{\"id\":\"/v1/sdm/sister/sdm\",\"title\":\"SDM di SISTER\",\"tag\":\"SDM: SISTER\",\"sc\":[\"sdm:admin\"]},{\"id\":\"/v1/sdm/unit/pohon\",\"title\":\"Struktur organisasi\",\"tag\":\"SDM: Master\",\"sc\":[\"sdm:read\"]},{\"id\":\"/v1/sdm/usulan\",\"title\":\"Usulan\",\"tag\":\"SDM: Usulan\",\"sc\":[\"sdm:read\"]},{\"id\":\"/v1/sdm/verifikasi\",\"title\":\"Antrian verifikasi\",\"tag\":\"SDM: Pegawai\",\"sc\":[\"sdm:read\"]}],\"operasi\":[{\"id\":\"getSdmReferensi\",\"title\":\"Pilihan nilai (enum) dan data referensi\",\"tag\":\"SDM: Master\",\"m\":\"GET\",\"sc\":[\"sdm:read\"]},{\"id\":\"getSdmSaya\",\"title\":\"Profil kepegawaian saya\",\"tag\":\"SDM: Pegawai\",\"m\":\"GET\",\"sc\":[\"sdm:read\"]},{\"id\":\"postSdmSinkronSiakad\",\"title\":\"Tarik data dari SIAKAD\",\"tag\":\"SDM: Master\",\"m\":\"POST\",\"sc\":[\"sdm:admin\"]},{\"id\":\"getSdmPengaturan\",\"title\":\"Pengaturan\",\"tag\":\"SDM: Master\",\"m\":\"GET\",\"sc\":[\"sdm:read\"]},{\"id\":\"putSdmPengaturan\",\"title\":\"Ubah pengaturan\",\"tag\":\"SDM: Master\",\"m\":\"PUT\",\"sc\":[\"sdm:admin\"]},{\"id\":\"getSdmCutiHitungHari\",\"title\":\"Hitung hari kerja\",\"tag\":\"SDM: Cuti\",\"m\":\"GET\",\"sc\":[\"sdm:read\"]},{\"id\":\"getSdmPresensiHariIni\",\"title\":\"Presensi saya hari ini\",\"tag\":\"SDM: Presensi\",\"m\":\"GET\",\"sc\":[\"sdm:read\"]},{\"id\":\"postSdmPresensiCatat\",\"title\":\"Catat masuk/pulang\",\"tag\":\"SDM: Presensi\",\"m\":\"POST\",\"sc\":[\"sdm:write\"]},{\"id\":\"postSdmPresensiImpor\",\"title\":\"Impor log mesin absensi\",\"tag\":\"SDM: Presensi\",\"m\":\"POST\",\"sc\":[\"sdm:write\"]},{\"id\":\"postSdmHonorHitung\",\"title\":\"Hitung honor, vakasi, dan remunerasi satu semester\",\"tag\":\"SDM: Honor\",\"m\":\"POST\",\"sc\":[\"sdm:admin\"]},{\"id\":\"getSdmHonorRekap\",\"title\":\"Rekap honor per pegawai\",\"tag\":\"SDM: Honor\",\"m\":\"GET\",\"sc\":[\"sdm:read\"]},{\"id\":\"postSdmHonorProses\",\"title\":\"Setujui, bayar, kembalikan, atau batalkan honor\",\"tag\":\"SDM: Honor\",\"m\":\"POST\",\"sc\":[\"sdm:admin\"]},{\"id\":\"getSdmLaporanRingkasan\",\"title\":\"Ringkasan\",\"tag\":\"SDM: Laporan\",\"m\":\"GET\",\"sc\":[\"sdm:read\"]},{\"id\":\"getSdmLaporanPengingat\",\"title\":\"Pengingat\",\"tag\":\"SDM: Laporan\",\"m\":\"GET\",\"sc\":[\"sdm:read\"]},{\"id\":\"getSdmSisterStatus\",\"title\":\"Status integrasi SISTER\",\"tag\":\"SDM: SISTER\",\"m\":\"GET\",\"sc\":[\"sdm:admin\"]},{\"id\":\"getSdmSisterPengaturan\",\"title\":\"Pengaturan koneksi SISTER\",\"tag\":\"SDM: SISTER\",\"m\":\"GET\",\"sc\":[\"sdm:admin\"]},{\"id\":\"postSdmSisterPengaturan\",\"title\":\"Simpan pengaturan koneksi SISTER\",\"tag\":\"SDM: SISTER\",\"m\":\"POST\",\"sc\":[\"sdm:admin\"]},{\"id\":\"postSdmSisterUji\",\"title\":\"Uji koneksi SISTER\",\"tag\":\"SDM: SISTER\",\"m\":\"POST\",\"sc\":[\"sdm:admin\"]},{\"id\":\"postSdmSisterCocokkan\",\"title\":\"Cocokkan pegawai dengan SISTER\",\"tag\":\"SDM: SISTER\",\"m\":\"POST\",\"sc\":[\"sdm:admin\"]},{\"id\":\"postSdmSisterTarik\",\"title\":\"Tarik data SISTER banyak pegawai\",\"tag\":\"SDM: SISTER\",\"m\":\"POST\",\"sc\":[\"sdm:admin\"]},{\"id\":\"getSdmSisterTeruskan\",\"title\":\"Teruskan GET ke SISTER\",\"tag\":\"SDM: SISTER\",\"m\":\"GET\",\"sc\":[\"sdm:admin\"]},{\"id\":\"postSdmSisterKirimProses\",\"title\":\"Kirim antrean ke SISTER sekarang\",\"tag\":\"SDM: SISTER\",\"m\":\"POST\",\"sc\":[\"sdm:admin\"]},{\"id\":\"postSdmSisterKirimAntrekan\",\"title\":\"Antrekan riwayat lama\",\"tag\":\"SDM: SISTER\",\"m\":\"POST\",\"sc\":[\"sdm:admin\"]},{\"id\":\"getSdmSisterKirimPratinjau\",\"title\":\"Pratinjau kiriman\",\"tag\":\"SDM: SISTER\",\"m\":\"GET\",\"sc\":[\"sdm:admin\"]},{\"id\":\"postSdmSisterKirimByIdUlang\",\"title\":\"Ulangi kiriman\",\"tag\":\"SDM: SISTER\",\"m\":\"POST\",\"sc\":[\"sdm:admin\"]},{\"id\":\"postSdmSisterKirimByIdBatal\",\"title\":\"Batalkan kiriman\",\"tag\":\"SDM: SISTER\",\"m\":\"POST\",\"sc\":[\"sdm:admin\"]},{\"id\":\"postSdmPegawaiByIdSisterTarik\",\"title\":\"SISTER: tarik data pegawai\",\"tag\":\"SDM: SISTER\",\"m\":\"POST\",\"sc\":[\"sdm:write\"]},{\"id\":\"getSdmPegawaiByIdSisterProfil\",\"title\":\"SISTER: bandingkan profil\",\"tag\":\"SDM: SISTER\",\"m\":\"GET\",\"sc\":[\"sdm:read\"]},{\"id\":\"postSdmPegawaiByIdSisterTerapkanProfil\",\"title\":\"SISTER: terapkan profil\",\"tag\":\"SDM: SISTER\",\"m\":\"POST\",\"sc\":[\"sdm:write\"]},{\"id\":\"postSdmPegawaiByIdSisterHubungkan\",\"title\":\"SISTER: hubungkan manual\",\"tag\":\"SDM: SISTER\",\"m\":\"POST\",\"sc\":[\"sdm:admin\"]},{\"id\":\"postSdmPegawaiByIdSisterLepas\",\"title\":\"SISTER: lepas pemetaan\",\"tag\":\"SDM: SISTER\",\"m\":\"POST\",\"sc\":[\"sdm:admin\"]}]},{\"key\":\"keu\",\"group\":\"kelembagaan\",\"title\":\"Keuangan\",\"icon\":\"Wallet\",\"desc\":\"Anggaran, realisasi, penerimaan, tagihan dan tarif mahasiswa, UKT, dispensasi, cicilan, kasir, dan virtual account.\",\"jumlahOperasi\":174,\"scope\":[\"keu:read\",\"keu:write\",\"keuangan:read\",\"keuangan:write\"],\"sumber\":[{\"id\":\"/v1/keu/akun\",\"title\":\"Akun\",\"tag\":\"Keuangan: Master\",\"sc\":[\"keu:read\"]},{\"id\":\"/v1/keu/pembayaran-mahasiswa\",\"title\":\"Rekap pembayaran mahasiswa\",\"tag\":\"Keuangan: Laporan\",\"sc\":[\"keu:read\"]},{\"id\":\"/v1/keu/penerimaan\",\"title\":\"Penerimaan lain\",\"tag\":\"Keuangan: Penerimaan\",\"sc\":[\"keu:read\"]},{\"id\":\"/v1/keu/periode\",\"title\":\"Periode anggaran\",\"tag\":\"Keuangan: Master\",\"sc\":[\"keu:read\"]},{\"id\":\"/v1/keu/realisasi\",\"title\":\"Pengajuan dana/realisasi\",\"tag\":\"Keuangan: Realisasi\",\"sc\":[\"keu:read\"]},{\"id\":\"/v1/keu/rka\",\"title\":\"RKA unit\",\"tag\":\"Keuangan: Anggaran\",\"sc\":[\"keu:read\"]},{\"id\":\"/v1/keu/rka-item\",\"title\":\"Rincian RKA\",\"tag\":\"Keuangan: Anggaran\",\"sc\":[\"keu:read\"]},{\"id\":\"/v1/keu/va\",\"title\":\"Virtual account\",\"tag\":\"Keuangan: Virtual account\",\"sc\":[\"keu:read\"]},{\"id\":\"/v1/keuangan/cicilan\",\"title\":\"Cicilan pembayaran\",\"tag\":\"Keuangan: Cicilan\",\"sc\":[\"keuangan:read\"]},{\"id\":\"/v1/keuangan/denda\",\"title\":\"Denda keterlambatan\",\"tag\":\"Keuangan: Denda\",\"sc\":[\"keuangan:read\"]},{\"id\":\"/v1/keuangan/deposit\",\"title\":\"Refund dan deposit\",\"tag\":\"Keuangan: Refund dan deposit\",\"sc\":[\"keuangan:read\"]},{\"id\":\"/v1/keuangan/dispensasi\",\"title\":\"Dispensasi pembayaran\",\"tag\":\"Keuangan: Dispensasi\",\"sc\":[\"keuangan:read\"]},{\"id\":\"/v1/keuangan/invoice\",\"title\":\"Invoice pembayaran online\",\"tag\":\"Keuangan: Pembayaran dan kwitansi\",\"sc\":[\"keuangan:read\"]},{\"id\":\"/v1/keuangan/kasir\",\"title\":\"Sesi kasir\",\"tag\":\"Keuangan: Kasir\",\"sc\":[\"keuangan:read\"]},{\"id\":\"/v1/keuangan/kwitansi/verifikasi\",\"title\":\"Pembayaran dan kwitansi\",\"tag\":\"Keuangan: Pembayaran dan kwitansi\"},{\"id\":\"/v1/keuangan/mahasiswa\",\"title\":\"Mahasiswa\",\"tag\":\"Keuangan: Mahasiswa\",\"sc\":[\"keuangan:read\"]},{\"id\":\"/v1/keuangan/periode\",\"title\":\"Periode pembayaran\",\"tag\":\"Keuangan: Pengaturan\",\"sc\":[\"keuangan:read\"]},{\"id\":\"/v1/keuangan/potongan\",\"title\":\"Potongan tagihan\",\"tag\":\"Keuangan: Potongan\",\"sc\":[\"keuangan:read\"]},{\"id\":\"/v1/keuangan/refund\",\"title\":\"Refund\",\"tag\":\"Keuangan: Refund dan deposit\",\"sc\":[\"keuangan:read\"]},{\"id\":\"/v1/keuangan/rekonsiliasi/online\",\"title\":\"Rekonsiliasi dan laporan\",\"tag\":\"Keuangan: Rekonsiliasi dan laporan\"},{\"id\":\"/v1/keuangan/rekonsiliasi/va\",\"title\":\"Rekonsiliasi dan laporan\",\"tag\":\"Keuangan: Rekonsiliasi dan laporan\"},{\"id\":\"/v1/keuangan/tagihan\",\"title\":\"Tagihan\",\"tag\":\"Keuangan: Tagihan\",\"sc\":[\"keuangan:read\"]},{\"id\":\"/v1/keuangan/tarif-mk\",\"title\":\"Tarif per mata kuliah\",\"tag\":\"Keuangan: Tarif\",\"sc\":[\"keuangan:read\"]},{\"id\":\"/v1/keuangan/tarif/item\",\"title\":\"Jenis biaya\",\"tag\":\"Keuangan: Tarif\",\"sc\":[\"keuangan:read\"]},{\"id\":\"/v1/keuangan/transaksi\",\"title\":\"Pembayaran lewat API\",\"tag\":\"Keuangan: Pembayaran dan kwitansi\",\"sc\":[\"keuangan:read\"]},{\"id\":\"/v1/keuangan/ukt/kelompok\",\"title\":\"Kelompok UKT\",\"tag\":\"Keuangan: UKT\",\"sc\":[\"keuangan:read\"]},{\"id\":\"/v1/keuangan/ukt/mahasiswa\",\"title\":\"Penetapan UKT mahasiswa\",\"tag\":\"Keuangan: UKT\",\"sc\":[\"keuangan:read\"]},{\"id\":\"/v1/keuangan/voucher\",\"title\":\"Voucher\",\"tag\":\"Keuangan: Potongan\",\"sc\":[\"keuangan:read\"]}],\"operasi\":[{\"id\":\"getKeuSerapan\",\"title\":\"Serapan anggaran\",\"tag\":\"Keuangan: Laporan\",\"m\":\"GET\",\"sc\":[\"keu:read\"]},{\"id\":\"postKeuVaNotifikasi\",\"title\":\"Notifikasi pembayaran bank\",\"tag\":\"Keuangan: Virtual account\",\"m\":\"POST\",\"sc\":[\"keu:write\"]},{\"id\":\"getKeuanganSaya\",\"title\":\"Hak akses keuangan saya\",\"tag\":\"Keuangan: Tagihan\",\"m\":\"GET\",\"sc\":[\"keuangan:read\"]},{\"id\":\"getKeuanganTarif\",\"title\":\"Tarif biaya prodi per periode\",\"tag\":\"Keuangan: Tarif\",\"m\":\"GET\",\"sc\":[\"keuangan:read\"]},{\"id\":\"postKeuanganTarif\",\"title\":\"Tambah/ubah tarif\",\"tag\":\"Keuangan: Tarif\",\"m\":\"POST\",\"sc\":[\"keuangan:write\"]},{\"id\":\"postKeuanganTarifSalin\",\"title\":\"Salin tarif dari periode lain\",\"tag\":\"Keuangan: Tarif\",\"m\":\"POST\",\"sc\":[\"keuangan:write\"]},{\"id\":\"postKeuanganTarifByIdbHapus\",\"title\":\"Hapus tarif\",\"tag\":\"Keuangan: Tarif\",\"m\":\"POST\",\"sc\":[\"keuangan:write\"]},{\"id\":\"getKeuanganTagihanRekap\",\"title\":\"Rekap tagihan per prodi\",\"tag\":\"Keuangan: Tagihan\",\"m\":\"GET\",\"sc\":[\"keuangan:read\"]},{\"id\":\"postKeuanganTagihanGenerate\",\"title\":\"Generate tagihan otomatis\",\"tag\":\"Keuangan: Tagihan\",\"m\":\"POST\",\"sc\":[\"keuangan:write\"]},{\"id\":\"postKeuanganTagihanGenerateMk\",\"title\":\"Generate tagihan dari KRS (tarif per mata kuliah)\",\"tag\":\"Keuangan: Tagihan\",\"m\":\"POST\",\"sc\":[\"keuangan:write\"]},{\"id\":\"postKeuanganTagihanKirim\",\"title\":\"Kirim notifikasi tagihan\",\"tag\":\"Keuangan: Tagihan\",\"m\":\"POST\",\"sc\":[\"keuangan:write\"]},{\"id\":\"postKeuanganDendaHitung\",\"title\":\"Hitung dan tagihkan denda\",\"tag\":\"Keuangan: Denda\",\"m\":\"POST\",\"sc\":[\"keuangan:write\"]},{\"id\":\"postKeuanganKasirBuka\",\"title\":\"Buka sesi kasir\",\"tag\":\"Keuangan: Kasir\",\"m\":\"POST\",\"sc\":[\"keuangan:write\"]},{\"id\":\"postKeuanganDepositPakai\",\"title\":\"Bayar tagihan dari deposit\",\"tag\":\"Keuangan: Refund dan deposit\",\"m\":\"POST\",\"sc\":[\"keuangan:write\"]},{\"id\":\"postKeuanganVoucherPakai\",\"title\":\"Pakai voucher\",\"tag\":\"Keuangan: Potongan\",\"m\":\"POST\",\"sc\":[\"keuangan:write\"]},{\"id\":\"getKeuanganRekonsiliasi\",\"title\":\"Rekonsiliasi pembayaran\",\"tag\":\"Keuangan: Rekonsiliasi dan laporan\",\"m\":\"GET\",\"sc\":[\"keuangan:read\"]},{\"id\":\"getKeuanganLaporan\",\"title\":\"Laporan keuangan mahasiswa\",\"tag\":\"Keuangan: Rekonsiliasi dan laporan\",\"m\":\"GET\",\"sc\":[\"keuangan:read\"]},{\"id\":\"getKeuanganLaporanHarian\",\"title\":\"Penerimaan harian\",\"tag\":\"Keuangan: Rekonsiliasi dan laporan\",\"m\":\"GET\",\"sc\":[\"keuangan:read\"]}]},{\"key\":\"lppm\",\"group\":\"kelembagaan\",\"title\":\"LPPM\",\"icon\":\"FlaskConical\",\"desc\":\"Penelitian, pengabdian, KKN, review, luaran, publikasi, dan rekap.\",\"jumlahOperasi\":157,\"scope\":[\"lppm:read\",\"lppm:write\"],\"sumber\":[{\"id\":\"/v1/lppm/bidang\",\"title\":\"Bidang fokus, tema, topik, rumpun ilmu\",\"tag\":\"LPPM: Master\",\"sc\":[\"lppm:read\"]},{\"id\":\"/v1/lppm/file\",\"title\":\"File\",\"tag\":\"LPPM: File\"},{\"id\":\"/v1/lppm/file/{entitas}\",\"title\":\"File\",\"tag\":\"LPPM: File\",\"sc\":[\"lppm:read\"]},{\"id\":\"/v1/lppm/jenis-luaran\",\"title\":\"Jenis luaran\",\"tag\":\"LPPM: Master\",\"sc\":[\"lppm:read\"]},{\"id\":\"/v1/lppm/jurnal\",\"title\":\"Jurnal kampus\",\"tag\":\"LPPM: Master\",\"sc\":[\"lppm:read\"]},{\"id\":\"/v1/lppm/kegiatan\",\"title\":\"Usulan/kegiatan\",\"tag\":\"LPPM: Kegiatan\",\"sc\":[\"lppm:read\"]},{\"id\":\"/v1/lppm/kkn/bimbingan\",\"title\":\"Kelompok bimbingan saya\",\"tag\":\"LPPM: KKN\",\"sc\":[\"lppm:read\"]},{\"id\":\"/v1/lppm/kkn/kelompok\",\"title\":\"KKN\",\"tag\":\"LPPM: KKN\",\"sc\":[\"lppm:read\"]},{\"id\":\"/v1/lppm/kkn/periode\",\"title\":\"Periode KKN\",\"tag\":\"LPPM: KKN\",\"sc\":[\"lppm:read\"]},{\"id\":\"/v1/lppm/kkn/peserta\",\"title\":\"KKN\",\"tag\":\"LPPM: KKN\",\"sc\":[\"lppm:read\"]},{\"id\":\"/v1/lppm/kkn/saya\",\"title\":\"KKN saya\",\"tag\":\"LPPM: KKN\",\"sc\":[\"lppm:read\"]},{\"id\":\"/v1/lppm/kolaborasi\",\"title\":\"Kolaborasi\",\"tag\":\"LPPM: Kolaborasi\"},{\"id\":\"/v1/lppm/kolaborator\",\"title\":\"Direktori kolaborator\",\"tag\":\"LPPM: Kolaborasi\",\"sc\":[\"lppm:read\"]},{\"id\":\"/v1/lppm/kriteria\",\"title\":\"Kriteria penilaian\",\"tag\":\"LPPM: Master\",\"sc\":[\"lppm:read\"]},{\"id\":\"/v1/lppm/laporan\",\"title\":\"Laporan lintas kegiatan\",\"tag\":\"LPPM: Pelaksanaan\",\"sc\":[\"lppm:read\"]},{\"id\":\"/v1/lppm/log\",\"title\":\"Log audit\",\"tag\":\"LPPM: Umum\",\"sc\":[\"lppm:read\"]},{\"id\":\"/v1/lppm/luaran\",\"title\":\"Luaran\",\"tag\":\"LPPM: Luaran\",\"sc\":[\"lppm:read\"]},{\"id\":\"/v1/lppm/mitra\",\"title\":\"Mitra\",\"tag\":\"LPPM: Master\",\"sc\":[\"lppm:read\"]},{\"id\":\"/v1/lppm/notifikasi\",\"title\":\"Notifikasi saya\",\"tag\":\"LPPM: Umum\",\"sc\":[\"lppm:read\"]},{\"id\":\"/v1/lppm/peneliti\",\"title\":\"Dosen peneliti\",\"tag\":\"LPPM: Peneliti\",\"sc\":[\"lppm:read\"]},{\"id\":\"/v1/lppm/pengelola\",\"title\":\"Pengelola LPPM\",\"tag\":\"LPPM: Master\",\"sc\":[\"lppm:read\"]},{\"id\":\"/v1/lppm/periode\",\"title\":\"Periode/batch usulan\",\"tag\":\"LPPM: Master\",\"sc\":[\"lppm:read\"]},{\"id\":\"/v1/lppm/periode-skema\",\"title\":\"Skema yang dibuka per periode\",\"tag\":\"LPPM: Master\",\"sc\":[\"lppm:read\"]},{\"id\":\"/v1/lppm/rekap/dosen\",\"title\":\"Rekap kinerja per dosen\",\"tag\":\"LPPM: Rekap\",\"sc\":[\"lppm:read\"]},{\"id\":\"/v1/lppm/rekap/lkps\",\"title\":\"Rekap\",\"tag\":\"LPPM: Rekap\",\"sc\":[\"lppm:read\"]},{\"id\":\"/v1/lppm/review\",\"title\":\"Review\",\"tag\":\"LPPM: Review\",\"sc\":[\"lppm:read\"]},{\"id\":\"/v1/lppm/review/peringkat\",\"title\":\"Peringkat usulan per periode/skema\",\"tag\":\"LPPM: Review\",\"sc\":[\"lppm:read\"]},{\"id\":\"/v1/lppm/review/saya\",\"title\":\"Tugas review saya\",\"tag\":\"LPPM: Review\",\"sc\":[\"lppm:read\"]},{\"id\":\"/v1/lppm/reviewer\",\"title\":\"Reviewer\",\"tag\":\"LPPM: Master\",\"sc\":[\"lppm:read\"]},{\"id\":\"/v1/lppm/riwayat/{entitas}\",\"title\":\"Umum\",\"tag\":\"LPPM: Umum\",\"sc\":[\"lppm:read\"]},{\"id\":\"/v1/lppm/riwayat/{entitas}/{id}\",\"title\":\"Riwayat perubahan entitas\",\"tag\":\"LPPM: Umum\",\"sc\":[\"lppm:read\"]},{\"id\":\"/v1/lppm/skema\",\"title\":\"Skema hibah\",\"tag\":\"LPPM: Master\",\"sc\":[\"lppm:read\"]},{\"id\":\"/v1/lppm/skema-luaran\",\"title\":\"Luaran wajib/tambahan skema\",\"tag\":\"LPPM: Master\",\"sc\":[\"lppm:read\"]}],\"operasi\":[{\"id\":\"getLppmReferensi\",\"title\":\"Pilihan nilai (enum)\",\"tag\":\"LPPM: Umum\",\"m\":\"GET\",\"sc\":[\"lppm:read\"]},{\"id\":\"getLppmSaya\",\"title\":\"Hak dan ringkasan pemilik token\",\"tag\":\"LPPM: Umum\",\"m\":\"GET\",\"sc\":[\"lppm:read\"]},{\"id\":\"postLppmNotifikasiBaca\",\"title\":\"Tandai notifikasi dibaca\",\"tag\":\"LPPM: Umum\",\"m\":\"POST\",\"sc\":[\"lppm:read\"]},{\"id\":\"postLppmImporLama\",\"title\":\"Impor penelitian/pengabdian dosen dari tabel lama\",\"tag\":\"LPPM: Umum\",\"m\":\"POST\",\"sc\":[\"lppm:write\"]},{\"id\":\"putLppmKegiatanByIdRabRealisasi\",\"title\":\"Isi realisasi RAB\",\"tag\":\"LPPM: Pelaksanaan\",\"m\":\"PUT\",\"sc\":[\"lppm:write\"]},{\"id\":\"getLppmRekapDasbor\",\"title\":\"Dasbor\",\"tag\":\"LPPM: Rekap\",\"m\":\"GET\",\"sc\":[\"lppm:read\"]},{\"id\":\"getLppmPublikasiDoi\",\"title\":\"Metadata dari DOI (Crossref)\",\"tag\":\"LPPM: Publikasi\",\"m\":\"GET\",\"sc\":[\"lppm:read\"]},{\"id\":\"postLppmPublikasiSitasi\",\"title\":\"Perbarui jumlah sitasi (OpenAlex)\",\"tag\":\"LPPM: Publikasi\",\"m\":\"POST\",\"sc\":[\"lppm:write\"]},{\"id\":\"postLppmKknLogbookByLogPeriksa\",\"title\":\"DPL memeriksa logbook\",\"tag\":\"LPPM: KKN\",\"m\":\"POST\",\"sc\":[\"lppm:write\"]}]},{\"key\":\"spmi\",\"group\":\"kelembagaan\",\"title\":\"SPMI\",\"icon\":\"BadgeCheck\",\"desc\":\"Penjaminan mutu: penetapan, pelaksanaan, AMI, pengendalian, peningkatan, survei, akreditasi.\",\"jumlahOperasi\":200,\"scope\":[\"spmi:read\",\"spmi:write\",\"spmi:respond\"],\"sumber\":[{\"id\":\"/v1/spmi/akreditasi\",\"title\":\"Status akreditasi\",\"tag\":\"SPMI: Akreditasi\",\"sc\":[\"spmi:read\"]},{\"id\":\"/v1/spmi/akreditasi-butir\",\"title\":\"Butir persiapan akreditasi\",\"tag\":\"SPMI: Akreditasi\",\"sc\":[\"spmi:read\"]},{\"id\":\"/v1/spmi/akreditasi-instrumen\",\"title\":\"Instrumen akreditasi\",\"tag\":\"SPMI: Akreditasi\",\"sc\":[\"spmi:read\"]},{\"id\":\"/v1/spmi/akreditasi-kriteria\",\"title\":\"Kriteria instrumen\",\"tag\":\"SPMI: Akreditasi\",\"sc\":[\"spmi:read\"]},{\"id\":\"/v1/spmi/akreditasi-persiapan\",\"title\":\"Persiapan akreditasi\",\"tag\":\"SPMI: Akreditasi\",\"sc\":[\"spmi:read\"]},{\"id\":\"/v1/spmi/audit\",\"title\":\"Audit mutu internal\",\"tag\":\"SPMI: AMI\",\"sc\":[\"spmi:read\"]},{\"id\":\"/v1/spmi/audit/tugas-saya\",\"title\":\"Penugasan audit saya\",\"tag\":\"SPMI: AMI\",\"sc\":[\"spmi:read\"]},{\"id\":\"/v1/spmi/auditee\",\"title\":\"AMI\",\"tag\":\"SPMI: AMI\",\"sc\":[\"spmi:read\"]},{\"id\":\"/v1/spmi/auditor\",\"title\":\"Auditor\",\"tag\":\"SPMI: Organisasi\",\"sc\":[\"spmi:read\"]},{\"id\":\"/v1/spmi/capaian\",\"title\":\"Capaian indikator\",\"tag\":\"SPMI: Pelaksanaan\",\"sc\":[\"spmi:read\"]},{\"id\":\"/v1/spmi/dokumen\",\"title\":\"Dokumen mutu\",\"tag\":\"SPMI: Penetapan\",\"sc\":[\"spmi:read\"]},{\"id\":\"/v1/spmi/file\",\"title\":\"File\",\"tag\":\"SPMI: File\"},{\"id\":\"/v1/spmi/file/{entitas}\",\"title\":\"File\",\"tag\":\"SPMI: File\",\"sc\":[\"spmi:read\"]},{\"id\":\"/v1/spmi/indikator\",\"title\":\"Indikator\",\"tag\":\"SPMI: Penetapan\",\"sc\":[\"spmi:read\"]},{\"id\":\"/v1/spmi/kegiatan\",\"title\":\"Kegiatan PPEPP\",\"tag\":\"SPMI: Pelaksanaan\",\"sc\":[\"spmi:read\"]},{\"id\":\"/v1/spmi/lkps\",\"title\":\"Tabel LKPS\",\"tag\":\"SPMI: Akreditasi\",\"sc\":[\"spmi:read\"]},{\"id\":\"/v1/spmi/notifikasi\",\"title\":\"Notifikasi saya\",\"tag\":\"SPMI: Umum\",\"sc\":[\"spmi:read\"]},{\"id\":\"/v1/spmi/pelaporan\",\"title\":\"Pelaporan\",\"tag\":\"SPMI: Pelaporan\",\"sc\":[\"spmi:read\"]},{\"id\":\"/v1/spmi/pelaporan-butir\",\"title\":\"Pelaporan\",\"tag\":\"SPMI: Pelaporan\"},{\"id\":\"/v1/spmi/periode\",\"title\":\"Periode\",\"tag\":\"SPMI: Penetapan\",\"sc\":[\"spmi:read\"]},{\"id\":\"/v1/spmi/personel\",\"title\":\"Personel mutu\",\"tag\":\"SPMI: Organisasi\",\"sc\":[\"spmi:read\"]},{\"id\":\"/v1/spmi/publik/akreditasi\",\"title\":\"Status akreditasi terkini\",\"tag\":\"SPMI: Publik\"},{\"id\":\"/v1/spmi/publik/dokumen\",\"title\":\"Dokumen mutu publik\",\"tag\":\"SPMI: Publik\"},{\"id\":\"/v1/spmi/publik/survei\",\"title\":\"Publik\",\"tag\":\"SPMI: Publik\"},{\"id\":\"/v1/spmi/risiko\",\"title\":\"Risiko\",\"tag\":\"SPMI: Pengendalian\",\"sc\":[\"spmi:read\"]},{\"id\":\"/v1/spmi/rtm\",\"title\":\"Rapat tinjauan manajemen\",\"tag\":\"SPMI: Peningkatan\",\"sc\":[\"spmi:read\"]},{\"id\":\"/v1/spmi/rtm-keputusan\",\"title\":\"Keputusan RTM\",\"tag\":\"SPMI: Peningkatan\",\"sc\":[\"spmi:read\"]},{\"id\":\"/v1/spmi/standar\",\"title\":\"Standar\",\"tag\":\"SPMI: Penetapan\",\"sc\":[\"spmi:read\"]},{\"id\":\"/v1/spmi/survei\",\"title\":\"Survei kepuasan\",\"tag\":\"SPMI: Survei\",\"sc\":[\"spmi:read\"]},{\"id\":\"/v1/spmi/survei-pertanyaan\",\"title\":\"Butir survei\",\"tag\":\"SPMI: Survei\",\"sc\":[\"spmi:read\"]},{\"id\":\"/v1/spmi/survei/saya\",\"title\":\"Survei untuk saya\",\"tag\":\"SPMI: Survei\",\"sc\":[\"spmi:respond\"]},{\"id\":\"/v1/spmi/target\",\"title\":\"Target\",\"tag\":\"SPMI: Penetapan\",\"sc\":[\"spmi:read\"]},{\"id\":\"/v1/spmi/temuan\",\"title\":\"Temuan\",\"tag\":\"SPMI: Pengendalian\",\"sc\":[\"spmi:read\"]},{\"id\":\"/v1/spmi/tilik\",\"title\":\"AMI\",\"tag\":\"SPMI: AMI\"},{\"id\":\"/v1/spmi/unit\",\"title\":\"Unit\",\"tag\":\"SPMI: Organisasi\",\"sc\":[\"spmi:read\"]}],\"operasi\":[{\"id\":\"getSpmiReferensi\",\"title\":\"Pilihan nilai dan dasar regulasi\",\"tag\":\"SPMI: Umum\",\"m\":\"GET\",\"sc\":[\"spmi:read\"]},{\"id\":\"getSpmiSaya\",\"title\":\"Peran SPMI saya\",\"tag\":\"SPMI: Umum\",\"m\":\"GET\",\"sc\":[\"spmi:read\"]},{\"id\":\"getSpmiDasbor\",\"title\":\"Dasbor siklus PPEPP\",\"tag\":\"SPMI: Umum\",\"m\":\"GET\",\"sc\":[\"spmi:read\"]},{\"id\":\"getSpmiTugasSaya\",\"title\":\"Tugas SPMI saya\",\"tag\":\"SPMI: Umum\",\"m\":\"GET\",\"sc\":[\"spmi:read\"]},{\"id\":\"postSpmiNotifikasiBaca\",\"title\":\"Tandai semua notifikasi dibaca\",\"tag\":\"SPMI: Umum\",\"m\":\"POST\",\"sc\":[\"spmi:read\"]},{\"id\":\"postSpmiNotifikasiByIdBaca\",\"title\":\"Tandai satu notifikasi dibaca\",\"tag\":\"SPMI: Umum\",\"m\":\"POST\",\"sc\":[\"spmi:read\"]},{\"id\":\"postSpmiUnitSinkronSiakad\",\"title\":\"Buat unit dari data SIAKAD\",\"tag\":\"SPMI: Organisasi\",\"m\":\"POST\",\"sc\":[\"spmi:write\"]},{\"id\":\"getSpmiMetrikByKodeUji\",\"title\":\"Uji metrik otomatis\",\"tag\":\"SPMI: Penetapan\",\"m\":\"GET\",\"sc\":[\"spmi:read\"]},{\"id\":\"getSpmiCapaianRekap\",\"title\":\"Rekap pemenuhan standar\",\"tag\":\"SPMI: Pelaksanaan\",\"m\":\"GET\",\"sc\":[\"spmi:read\"]},{\"id\":\"postSpmiCapaianSiapkan\",\"title\":\"Siapkan baris capaian\",\"tag\":\"SPMI: Pelaksanaan\",\"m\":\"POST\",\"sc\":[\"spmi:write\"]},{\"id\":\"postSpmiCapaianHitung\",\"title\":\"Hitung capaian otomatis dari SIAKAD\",\"tag\":\"SPMI: Pelaksanaan\",\"m\":\"POST\",\"sc\":[\"spmi:write\"]},{\"id\":\"postSpmiCapaianAjukan\",\"title\":\"Ajukan semua capaian unit\",\"tag\":\"SPMI: Pelaksanaan\",\"m\":\"POST\",\"sc\":[\"spmi:write\"]},{\"id\":\"postSpmiAuditeeByIdTilikSiapkan\",\"title\":\"Buat daftar tilik dari standar\",\"tag\":\"SPMI: AMI\",\"m\":\"POST\",\"sc\":[\"spmi:write\"]},{\"id\":\"getSpmiSurveiEdom\",\"title\":\"Rekap kuisioner layanan dosen lama\",\"tag\":\"SPMI: Survei\",\"m\":\"GET\",\"sc\":[\"spmi:read\"]},{\"id\":\"getSpmiAkreditasiPantau\",\"title\":\"Pantau masa berlaku akreditasi\",\"tag\":\"SPMI: Akreditasi\",\"m\":\"GET\",\"sc\":[\"spmi:read\"]},{\"id\":\"postSpmiAkreditasiSinkronSiakad\",\"title\":\"Impor status akreditasi dari SIAKAD\",\"tag\":\"SPMI: Akreditasi\",\"m\":\"POST\",\"sc\":[\"spmi:write\"]}]},{\"key\":\"iku\",\"group\":\"kelembagaan\",\"title\":\"IKU\",\"icon\":\"Target\",\"desc\":\"Indikator kinerja utama: dasbor, pengaturan, dan bukti.\",\"jumlahOperasi\":27,\"scope\":[\"iku:read\",\"iku:write\",\"iku:admin\"],\"sumber\":[{\"id\":\"/v1/iku/bukti\",\"title\":\"Bukti capaian IKU\",\"tag\":\"IKU: Bukti\",\"sc\":[\"iku:read\"]},{\"id\":\"/v1/iku/capaian\",\"title\":\"Dasbor\",\"tag\":\"IKU: Dasbor\",\"sc\":[\"iku:read\"]},{\"id\":\"/v1/iku/dasbor/prodi\",\"title\":\"Dasbor\",\"tag\":\"IKU: Dasbor\",\"sc\":[\"iku:read\"]},{\"id\":\"/v1/iku/indikator\",\"title\":\"Indikator IKU\",\"tag\":\"IKU: Pengaturan\",\"sc\":[\"iku:read\"]},{\"id\":\"/v1/iku/metode\",\"title\":\"Metode penghitung\",\"tag\":\"IKU: Pengaturan\",\"sc\":[\"iku:read\"]},{\"id\":\"/v1/iku/target\",\"title\":\"Target IKU\",\"tag\":\"IKU: Pengaturan\",\"sc\":[\"iku:read\"]},{\"id\":\"/v1/iku/unduh\",\"title\":\"Unduh data IKU\",\"tag\":\"IKU: Dasbor\",\"sc\":[\"iku:read\"]}],\"operasi\":[{\"id\":\"getIkuDasbor\",\"title\":\"Dasbor IKU\",\"tag\":\"IKU: Dasbor\",\"m\":\"GET\",\"sc\":[\"iku:read\"]},{\"id\":\"postIkuHitung\",\"title\":\"Hitung ulang capaian\",\"tag\":\"IKU: Pengaturan\",\"m\":\"POST\",\"sc\":[\"iku:write\"]},{\"id\":\"postIkuCapaianManual\",\"title\":\"Isi capaian manual\",\"tag\":\"IKU: Pengaturan\",\"m\":\"POST\",\"sc\":[\"iku:write\"]},{\"id\":\"postIkuCapaianKunci\",\"title\":\"Kunci capaian final\",\"tag\":\"IKU: Pengaturan\",\"m\":\"POST\",\"sc\":[\"iku:admin\"]}]},{\"key\":\"kerjasama\",\"group\":\"kelembagaan\",\"title\":\"Kerja Sama\",\"icon\":\"Handshake\",\"desc\":\"Mitra, dokumen MoU/MoA/IA, kegiatan, dan evaluasi.\",\"jumlahOperasi\":43,\"scope\":[\"kerjasama:read\",\"kerjasama:write\"],\"sumber\":[{\"id\":\"/v1/kerjasama/akan-berakhir\",\"title\":\"Dokumen yang akan berakhir\",\"tag\":\"Kerja sama: Laporan\",\"sc\":[\"kerjasama:read\"]},{\"id\":\"/v1/kerjasama/dokumen\",\"title\":\"Dokumen kerja sama\",\"tag\":\"Kerja sama: Dokumen\",\"sc\":[\"kerjasama:read\"]},{\"id\":\"/v1/kerjasama/dokumen-mitra\",\"title\":\"Pihak tambahan dokumen\",\"tag\":\"Kerja sama: Dokumen\",\"sc\":[\"kerjasama:read\"]},{\"id\":\"/v1/kerjasama/evaluasi\",\"title\":\"Evaluasi kerja sama\",\"tag\":\"Kerja sama: Evaluasi\",\"sc\":[\"kerjasama:read\"]},{\"id\":\"/v1/kerjasama/kegiatan\",\"title\":\"Kegiatan pelaksanaan\",\"tag\":\"Kerja sama: Kegiatan\",\"sc\":[\"kerjasama:read\"]},{\"id\":\"/v1/kerjasama/mitra\",\"title\":\"Mitra\",\"tag\":\"Kerja sama: Mitra\",\"sc\":[\"kerjasama:read\"]}],\"operasi\":[{\"id\":\"getKerjasamaRekap\",\"title\":\"Rekap untuk akreditasi\",\"tag\":\"Kerja sama: Laporan\",\"m\":\"GET\",\"sc\":[\"kerjasama:read\"]}]},{\"key\":\"layanan\",\"group\":\"layanan\",\"title\":\"Layanan Administrasi\",\"icon\":\"FileCheck2\",\"desc\":\"Katalog layanan, permohonan surat/dokumen, dan verifikasi dokumen (QR).\",\"jumlahOperasi\":30,\"scope\":[\"layanan:read\",\"layanan:write\"],\"sumber\":[{\"id\":\"/v1/layanan/dokumen\",\"title\":\"Dokumen terverifikasi\",\"tag\":\"Layanan: Verifikasi dokumen\",\"sc\":[\"layanan:read\"]},{\"id\":\"/v1/layanan/jenis\",\"title\":\"Jenis layanan\",\"tag\":\"Layanan: Katalog\",\"sc\":[\"layanan:read\"]},{\"id\":\"/v1/layanan/permohonan\",\"title\":\"Permohonan layanan\",\"tag\":\"Layanan: Permohonan\",\"sc\":[\"layanan:read\"]},{\"id\":\"/v1/layanan/verifikasi\",\"title\":\"Verifikasi dokumen\",\"tag\":\"Layanan: Verifikasi dokumen\"}],\"operasi\":[]},{\"key\":\"arsip\",\"group\":\"layanan\",\"title\":\"Arsip & Persuratan\",\"icon\":\"Archive\",\"desc\":\"Surat masuk/keluar, disposisi, dokumen, berkas, berbagi, peminjaman, dan penyusutan.\",\"jumlahOperasi\":123,\"scope\":[\"arsip:read\",\"arsip:admin\",\"arsip:write\"],\"sumber\":[{\"id\":\"/v1/arsip/bagikan\",\"title\":\"Berbagi\",\"tag\":\"Arsip: Berbagi\"},{\"id\":\"/v1/arsip/berkas\",\"title\":\"Berkas\",\"tag\":\"Arsip: Berkas\",\"sc\":[\"arsip:read\"]},{\"id\":\"/v1/arsip/disposisi\",\"title\":\"Kotak disposisi saya\",\"tag\":\"Arsip: Disposisi\",\"sc\":[\"arsip:read\"]},{\"id\":\"/v1/arsip/dokumen\",\"title\":\"Dokumen\",\"tag\":\"Arsip: Dokumen\",\"sc\":[\"arsip:read\"]},{\"id\":\"/v1/arsip/file\",\"title\":\"File\",\"tag\":\"Arsip: File\",\"sc\":[\"arsip:read\"]},{\"id\":\"/v1/arsip/jenis\",\"title\":\"Jenis naskah dan dokumen\",\"tag\":\"Arsip: Master\",\"sc\":[\"arsip:read\"]},{\"id\":\"/v1/arsip/klasifikasi\",\"title\":\"Klasifikasi arsip dan JRA\",\"tag\":\"Arsip: Master\",\"sc\":[\"arsip:read\"]},{\"id\":\"/v1/arsip/laporan/agenda\",\"title\":\"Buku agenda surat\",\"tag\":\"Arsip: Laporan\",\"sc\":[\"arsip:read\"]},{\"id\":\"/v1/arsip/laporan/daftar-arsip\",\"title\":\"Arsip aktif/inaktif\",\"tag\":\"Arsip: Laporan\",\"sc\":[\"arsip:read\"]},{\"id\":\"/v1/arsip/log\",\"title\":\"Log audit\",\"tag\":\"Arsip: Laporan\",\"sc\":[\"arsip:admin\"]},{\"id\":\"/v1/arsip/lokasi\",\"title\":\"Lokasi simpan fisik\",\"tag\":\"Arsip: Master\",\"sc\":[\"arsip:read\"]},{\"id\":\"/v1/arsip/peminjaman\",\"title\":\"Peminjaman\",\"tag\":\"Arsip: Peminjaman\",\"sc\":[\"arsip:read\"]},{\"id\":\"/v1/arsip/penomoran\",\"title\":\"Format penomoran\",\"tag\":\"Arsip: Master\",\"sc\":[\"arsip:read\"]},{\"id\":\"/v1/arsip/penyusutan\",\"title\":\"Usulan penyusutan\",\"tag\":\"Arsip: Penyusutan\",\"sc\":[\"arsip:read\"]},{\"id\":\"/v1/arsip/penyusutan/kandidat\",\"title\":\"Arsip jatuh tempo penyusutan\",\"tag\":\"Arsip: Penyusutan\",\"sc\":[\"arsip:read\"]},{\"id\":\"/v1/arsip/petugas\",\"title\":\"Master\",\"tag\":\"Arsip: Master\"},{\"id\":\"/v1/arsip/saya/dokumen\",\"title\":\"Arsip pribadi saya\",\"tag\":\"Arsip: Dokumen\",\"sc\":[\"arsip:read\"]},{\"id\":\"/v1/arsip/saya/notifikasi\",\"title\":\"Notifikasi\",\"tag\":\"Arsip: Saya\",\"sc\":[\"arsip:read\"]},{\"id\":\"/v1/arsip/surat\",\"title\":\"Surat\",\"tag\":\"Arsip: Surat\",\"sc\":[\"arsip:read\"]},{\"id\":\"/v1/arsip/surat-keluar\",\"title\":\"Surat keluar\",\"tag\":\"Arsip: Surat\",\"sc\":[\"arsip:read\"]},{\"id\":\"/v1/arsip/surat-masuk\",\"title\":\"Surat masuk\",\"tag\":\"Arsip: Surat\",\"sc\":[\"arsip:read\"]},{\"id\":\"/v1/arsip/template\",\"title\":\"Templat surat\",\"tag\":\"Arsip: Master\",\"sc\":[\"arsip:read\"]},{\"id\":\"/v1/arsip/unit\",\"title\":\"Unit pemilik arsip\",\"tag\":\"Arsip: Master\",\"sc\":[\"arsip:read\"]},{\"id\":\"/v1/arsip/verifikasi\",\"title\":\"Publik\",\"tag\":\"Arsip: Publik\"}],\"operasi\":[{\"id\":\"getArsipReferensi\",\"title\":\"Pilihan nilai (enum)\",\"tag\":\"Arsip: Master\",\"m\":\"GET\",\"sc\":[\"arsip:read\"]},{\"id\":\"postArsipUnitSinkronSiakad\",\"title\":\"Buat unit dari data SIAKAD\",\"tag\":\"Arsip: Master\",\"m\":\"POST\",\"sc\":[\"arsip:admin\"]},{\"id\":\"getArsipPenomoranPratinjau\",\"title\":\"Pratinjau nomor berikutnya\",\"tag\":\"Arsip: Master\",\"m\":\"GET\",\"sc\":[\"arsip:read\"]},{\"id\":\"postArsipSayaKirimSurat\",\"title\":\"Kirim surat/permohonan ke unit\",\"tag\":\"Arsip: Surat\",\"m\":\"POST\",\"sc\":[\"arsip:write\"]},{\"id\":\"getArsipSaya\",\"title\":\"Ringkasan saya\",\"tag\":\"Arsip: Saya\",\"m\":\"GET\",\"sc\":[\"arsip:read\"]},{\"id\":\"postArsipSayaNotifikasiBaca\",\"title\":\"Tandai notifikasi dibaca\",\"tag\":\"Arsip: Saya\",\"m\":\"POST\",\"sc\":[\"arsip:read\"]},{\"id\":\"getArsipLaporanRingkasan\",\"title\":\"Dasbor arsip\",\"tag\":\"Arsip: Laporan\",\"m\":\"GET\",\"sc\":[\"arsip:read\"]},{\"id\":\"getArsipLaporanPengingat\",\"title\":\"Pengingat\",\"tag\":\"Arsip: Laporan\",\"m\":\"GET\",\"sc\":[\"arsip:read\"]},{\"id\":\"getArsipCari\",\"title\":\"Pencarian gabungan\",\"tag\":\"Arsip: Laporan\",\"m\":\"GET\",\"sc\":[\"arsip:read\"]}]},{\"key\":\"helpdesk\",\"group\":\"layanan\",\"title\":\"Helpdesk\",\"icon\":\"LifeBuoy\",\"desc\":\"Tiket bantuan, kategori, dan laporan.\",\"jumlahOperasi\":25,\"scope\":[\"helpdesk:read\",\"helpdesk:write\"],\"sumber\":[{\"id\":\"/v1/helpdesk/kategori\",\"title\":\"Kategori\",\"tag\":\"Helpdesk: Kategori\"},{\"id\":\"/v1/helpdesk/publik/lacak\",\"title\":\"Publik\",\"tag\":\"Helpdesk: Publik\"},{\"id\":\"/v1/helpdesk/tiket\",\"title\":\"Tiket\",\"tag\":\"Helpdesk: Tiket\",\"sc\":[\"helpdesk:read\"]}],\"operasi\":[{\"id\":\"postHelpdeskPublikTiket\",\"title\":\"Kirim tiket tanpa login\",\"tag\":\"Helpdesk: Publik\",\"m\":\"POST\"},{\"id\":\"getHelpdeskRekap\",\"title\":\"Rekap kinerja layanan\",\"tag\":\"Helpdesk: Laporan\",\"m\":\"GET\",\"sc\":[\"helpdesk:read\"]}]},{\"key\":\"sarpras\",\"group\":\"sarana\",\"title\":\"Sarana Prasarana\",\"icon\":\"Warehouse\",\"desc\":\"Gedung, ruang, aset, pemeliharaan, dan peminjaman.\",\"jumlahOperasi\":67,\"scope\":[\"sarpras:read\",\"sarpras:write\"],\"sumber\":[{\"id\":\"/v1/sarpras/aset\",\"title\":\"Aset\",\"tag\":\"Sarpras: Aset\",\"sc\":[\"sarpras:read\"]},{\"id\":\"/v1/sarpras/gedung\",\"title\":\"Gedung\",\"tag\":\"Sarpras: Gedung dan ruang\",\"sc\":[\"sarpras:read\"]},{\"id\":\"/v1/sarpras/kategori\",\"title\":\"Kategori aset\",\"tag\":\"Sarpras: Aset\",\"sc\":[\"sarpras:read\"]},{\"id\":\"/v1/sarpras/mutasi\",\"title\":\"Mutasi aset\",\"tag\":\"Sarpras: Aset\",\"sc\":[\"sarpras:read\"]},{\"id\":\"/v1/sarpras/pemeliharaan\",\"title\":\"Pemeliharaan dan perbaikan\",\"tag\":\"Sarpras: Pemeliharaan\",\"sc\":[\"sarpras:read\"]},{\"id\":\"/v1/sarpras/peminjaman\",\"title\":\"Peminjaman ruang/aset\",\"tag\":\"Sarpras: Peminjaman\",\"sc\":[\"sarpras:read\"]},{\"id\":\"/v1/sarpras/ruang\",\"title\":\"Ruang\",\"tag\":\"Sarpras: Gedung dan ruang\",\"sc\":[\"sarpras:read\"]},{\"id\":\"/v1/sarpras/ruang-tersedia\",\"title\":\"Ruang tersedia\",\"tag\":\"Sarpras: Peminjaman\",\"sc\":[\"sarpras:read\"]}],\"operasi\":[{\"id\":\"getSarprasRekap\",\"title\":\"Rekap sarpras\",\"tag\":\"Sarpras: Laporan\",\"m\":\"GET\",\"sc\":[\"sarpras:read\"]},{\"id\":\"postSarprasSinkronRuang\",\"title\":\"Sinkron ruang dari tabel lama\",\"tag\":\"Sarpras: Gedung dan ruang\",\"m\":\"POST\",\"sc\":[\"sarpras:write\"]}]},{\"key\":\"perpustakaan\",\"group\":\"sarana\",\"title\":\"Perpustakaan\",\"icon\":\"BookMarked\",\"desc\":\"Katalog, pengelolaan koleksi, sirkulasi, layanan anggota, dan laporan.\",\"jumlahOperasi\":44,\"scope\":[\"perpustakaan:write\",\"perpustakaan:read\"],\"sumber\":[{\"id\":\"/v1/perpustakaan/anggota\",\"title\":\"Sirkulasi\",\"tag\":\"Perpustakaan: Sirkulasi\",\"sc\":[\"perpustakaan:read\"]},{\"id\":\"/v1/perpustakaan/anggota-slims\",\"title\":\"Ekspor anggota untuk SLiMS\",\"tag\":\"Perpustakaan: Laporan dan integrasi\",\"sc\":[\"perpustakaan:read\"]},{\"id\":\"/v1/perpustakaan/bebas-pustaka\",\"title\":\"Laporan dan integrasi\",\"tag\":\"Perpustakaan: Laporan dan integrasi\",\"sc\":[\"perpustakaan:read\"]},{\"id\":\"/v1/perpustakaan/eksemplar\",\"title\":\"Pengelolaan koleksi\",\"tag\":\"Perpustakaan: Pengelolaan koleksi\"},{\"id\":\"/v1/perpustakaan/katalog\",\"title\":\"Katalog\",\"tag\":\"Perpustakaan: Katalog\"},{\"id\":\"/v1/perpustakaan/koleksi\",\"title\":\"Pengelolaan koleksi\",\"tag\":\"Perpustakaan: Pengelolaan koleksi\",\"sc\":[\"perpustakaan:write\"]},{\"id\":\"/v1/perpustakaan/kunjungan\",\"title\":\"Buku tamu kunjungan\",\"tag\":\"Perpustakaan: Layanan\",\"sc\":[\"perpustakaan:read\"]},{\"id\":\"/v1/perpustakaan/pinjaman\",\"title\":\"Peminjaman\",\"tag\":\"Perpustakaan: Sirkulasi\",\"sc\":[\"perpustakaan:read\"]},{\"id\":\"/v1/perpustakaan/referensi\",\"title\":\"Katalog\",\"tag\":\"Perpustakaan: Katalog\"},{\"id\":\"/v1/perpustakaan/referensi/{jenis}\",\"title\":\"Referensi katalog\",\"tag\":\"Perpustakaan: Katalog\"},{\"id\":\"/v1/perpustakaan/reservasi\",\"title\":\"Reservasi\",\"tag\":\"Perpustakaan: Sirkulasi\",\"sc\":[\"perpustakaan:read\"]},{\"id\":\"/v1/perpustakaan/slims/anggota\",\"title\":\"Laporan dan integrasi\",\"tag\":\"Perpustakaan: Laporan dan integrasi\",\"sc\":[\"perpustakaan:read\"]},{\"id\":\"/v1/perpustakaan/slims/katalog\",\"title\":\"Katalog\",\"tag\":\"Perpustakaan: Katalog\"},{\"id\":\"/v1/perpustakaan/usulan\",\"title\":\"Usulan pengadaan koleksi\",\"tag\":\"Perpustakaan: Layanan\",\"sc\":[\"perpustakaan:read\"]}],\"operasi\":[{\"id\":\"postPerpustakaanPinjam\",\"title\":\"Pinjam\",\"tag\":\"Perpustakaan: Sirkulasi\",\"m\":\"POST\",\"sc\":[\"perpustakaan:write\"]},{\"id\":\"postPerpustakaanKembali\",\"title\":\"Kembalikan\",\"tag\":\"Perpustakaan: Sirkulasi\",\"m\":\"POST\",\"sc\":[\"perpustakaan:write\"]},{\"id\":\"postPerpustakaanPinjamanByIdPerpanjang\",\"title\":\"Perpanjang peminjaman\",\"tag\":\"Perpustakaan: Sirkulasi\",\"m\":\"POST\",\"sc\":[\"perpustakaan:write\"]},{\"id\":\"postPerpustakaanPinjamanByIdHapus\",\"title\":\"Hapus peminjaman\",\"tag\":\"Perpustakaan: Sirkulasi\",\"m\":\"POST\",\"sc\":[\"perpustakaan:write\"]},{\"id\":\"postPerpustakaanReservasiByIdBatal\",\"title\":\"Batalkan reservasi\",\"tag\":\"Perpustakaan: Sirkulasi\",\"m\":\"POST\",\"sc\":[\"perpustakaan:write\"]},{\"id\":\"getPerpustakaanSaya\",\"title\":\"Perpustakaan saya\",\"tag\":\"Perpustakaan: Layanan anggota\",\"m\":\"GET\",\"sc\":[\"perpustakaan:read\"]},{\"id\":\"postPerpustakaanSayaPinjamanByIdPerpanjang\",\"title\":\"Perpanjang pinjaman saya\",\"tag\":\"Perpustakaan: Layanan anggota\",\"m\":\"POST\",\"sc\":[\"perpustakaan:write\"]},{\"id\":\"postPerpustakaanSayaReservasi\",\"title\":\"Reservasi koleksi\",\"tag\":\"Perpustakaan: Layanan anggota\",\"m\":\"POST\",\"sc\":[\"perpustakaan:write\"]},{\"id\":\"postPerpustakaanSayaReservasiByIdBatal\",\"title\":\"Batalkan reservasi saya\",\"tag\":\"Perpustakaan: Layanan anggota\",\"m\":\"POST\",\"sc\":[\"perpustakaan:write\"]},{\"id\":\"getPerpustakaanSayaBebasPustaka\",\"title\":\"Cek bebas pustaka saya\",\"tag\":\"Perpustakaan: Layanan anggota\",\"m\":\"GET\",\"sc\":[\"perpustakaan:read\"]},{\"id\":\"postPerpustakaanSayaKunjungan\",\"title\":\"Isi buku tamu\",\"tag\":\"Perpustakaan: Layanan anggota\",\"m\":\"POST\",\"sc\":[\"perpustakaan:write\"]},{\"id\":\"getPerpustakaanLaporan\",\"title\":\"Laporan perpustakaan\",\"tag\":\"Perpustakaan: Laporan dan integrasi\",\"m\":\"GET\",\"sc\":[\"perpustakaan:read\"]},{\"id\":\"getPerpustakaanPengaturan\",\"title\":\"Pengaturan layanan\",\"tag\":\"Perpustakaan: Laporan dan integrasi\",\"m\":\"GET\",\"sc\":[\"perpustakaan:read\"]},{\"id\":\"postPerpustakaanPengaturan\",\"title\":\"Ubah pengaturan layanan\",\"tag\":\"Perpustakaan: Laporan dan integrasi\",\"m\":\"POST\",\"sc\":[\"perpustakaan:write\"]}]},{\"key\":\"repositori\",\"group\":\"sarana\",\"title\":\"Repositori\",\"icon\":\"Library\",\"desc\":\"Karya ilmiah, koleksi, dan OAI-PMH.\",\"jumlahOperasi\":22,\"scope\":[\"repositori:write\"],\"sumber\":[{\"id\":\"/v1/repositori/karya\",\"title\":\"Karya ilmiah\",\"tag\":\"Repositori: Karya\"},{\"id\":\"/v1/repositori/koleksi\",\"title\":\"Koleksi\",\"tag\":\"Repositori: Koleksi\"}],\"operasi\":[{\"id\":\"getRepositoriOai\",\"title\":\"OAI-PMH 2.0\",\"tag\":\"Repositori: OAI-PMH\",\"m\":\"GET\"},{\"id\":\"getRepositoriStatistik\",\"title\":\"Statistik repositori\",\"tag\":\"Repositori: Karya\",\"m\":\"GET\"},{\"id\":\"postRepositoriImporTa\",\"title\":\"Impor dari tugas akhir lama\",\"tag\":\"Repositori: Karya\",\"m\":\"POST\",\"sc\":[\"repositori:write\"]}]},{\"key\":\"humas\",\"group\":\"humas\",\"title\":\"Ruang Redaksi\",\"icon\":\"Megaphone\",\"desc\":\"Rilis, liputan, agenda redaksi, dan umpan berita untuk aplikasi lain.\",\"jumlahOperasi\":53,\"scope\":[\"portal:read\",\"portal:write\"],\"sumber\":[{\"id\":\"/v1/humas/agenda/{id}/peserta\",\"title\":\"Redaksi\",\"tag\":\"Humas: redaksi\"},{\"id\":\"/v1/humas/galeri/{id}/item\",\"title\":\"Redaksi\",\"tag\":\"Humas: redaksi\"},{\"id\":\"/v1/humas/konten/agenda\",\"title\":\"Agenda\",\"tag\":\"Humas: redaksi\",\"sc\":[\"portal:write\"]},{\"id\":\"/v1/humas/konten/berita\",\"title\":\"Berita\",\"tag\":\"Humas: redaksi\",\"sc\":[\"portal:write\"]},{\"id\":\"/v1/humas/konten/galeri\",\"title\":\"Galeri\",\"tag\":\"Humas: redaksi\",\"sc\":[\"portal:write\"]},{\"id\":\"/v1/humas/konten/halaman\",\"title\":\"Halaman\",\"tag\":\"Humas: redaksi\",\"sc\":[\"portal:write\"]},{\"id\":\"/v1/humas/konten/pengumuman\",\"title\":\"Pengumuman\",\"tag\":\"Humas: redaksi\",\"sc\":[\"portal:write\"]},{\"id\":\"/v1/humas/media\",\"title\":\"Redaksi\",\"tag\":\"Humas: redaksi\"},{\"id\":\"/v1/humas/pesan\",\"title\":\"Redaksi\",\"tag\":\"Humas: redaksi\"},{\"id\":\"/v1/humas/pola\",\"title\":\"Pola blok\",\"tag\":\"Humas: redaksi\",\"sc\":[\"portal:write\"]},{\"id\":\"/v1/humas/siaran\",\"title\":\"Riwayat notifikasi siaran\",\"tag\":\"Humas: redaksi\",\"sc\":[\"portal:write\"]},{\"id\":\"/v1/humas/sindikasi\",\"title\":\"Redaksi\",\"tag\":\"Humas: redaksi\"},{\"id\":\"/v1/humas/situs\",\"title\":\"Redaksi\",\"tag\":\"Humas: redaksi\"},{\"id\":\"/v1/humas/topik\",\"title\":\"Topik tayang\",\"tag\":\"Humas\",\"sc\":[\"portal:read\"]},{\"id\":\"/v1/humas/umpan\",\"title\":\"Umpan\",\"tag\":\"Humas\",\"sc\":[\"portal:read\"]}],\"operasi\":[{\"id\":\"getHumasSaya\",\"title\":\"Profil redaksi saya\",\"tag\":\"Humas: redaksi\",\"m\":\"GET\",\"sc\":[\"portal:write\"]},{\"id\":\"getHumasRingkasan\",\"title\":\"Dasbor redaksi\",\"tag\":\"Humas: redaksi\",\"m\":\"GET\",\"sc\":[\"portal:write\"]},{\"id\":\"postHumasPratinjau\",\"title\":\"Pratinjau HTML dari blok\",\"tag\":\"Humas: redaksi\",\"m\":\"POST\",\"sc\":[\"portal:write\"]},{\"id\":\"postHumasSitusByKodePengelolaByUsernameHapus\",\"title\":\"Hapus pengelola situs (alias POST dari DELETE)\",\"tag\":\"Humas: redaksi\",\"m\":\"POST\",\"sc\":[\"portal:write\"]}]},{\"key\":\"portal\",\"group\":\"humas\",\"title\":\"Portal & Berita\",\"icon\":\"Newspaper\",\"desc\":\"Situs universitas, fakultas, dan prodi: berita, agenda, halaman, galeri, menu.\",\"jumlahOperasi\":138,\"scope\":[\"portal:read\",\"portal:interaksi\",\"portal:write\",\"portal:admin\"],\"sumber\":[{\"id\":\"/v1/portal/agenda\",\"title\":\"Agenda\",\"tag\":\"Portal\",\"sc\":[\"portal:read\"]},{\"id\":\"/v1/portal/banner\",\"title\":\"Banner\",\"tag\":\"Portal\",\"sc\":[\"portal:read\"]},{\"id\":\"/v1/portal/berita\",\"title\":\"Berita\",\"tag\":\"Portal\",\"sc\":[\"portal:read\"]},{\"id\":\"/v1/portal/cari\",\"title\":\"Pencarian gabungan\",\"tag\":\"Portal\",\"sc\":[\"portal:read\"]},{\"id\":\"/v1/portal/dokumen\",\"title\":\"Dokumen\",\"tag\":\"Portal\",\"sc\":[\"portal:read\"]},{\"id\":\"/v1/portal/faq\",\"title\":\"FAQ\",\"tag\":\"Portal\",\"sc\":[\"portal:read\"]},{\"id\":\"/v1/portal/galeri\",\"title\":\"Galeri\",\"tag\":\"Portal\",\"sc\":[\"portal:read\"]},{\"id\":\"/v1/portal/halaman\",\"title\":\"Halaman\",\"tag\":\"Portal\",\"sc\":[\"portal:read\"]},{\"id\":\"/v1/portal/kalender-akademik\",\"title\":\"Kalender akademik dari SIAKAD\",\"tag\":\"Portal\",\"sc\":[\"portal:read\"]},{\"id\":\"/v1/portal/kategori\",\"title\":\"Kategori\",\"tag\":\"Portal\",\"sc\":[\"portal:read\"]},{\"id\":\"/v1/portal/kelola/agenda\",\"title\":\"Agenda\",\"tag\":\"Portal: kelola\",\"sc\":[\"portal:write\"]},{\"id\":\"/v1/portal/kelola/banner\",\"title\":\"Banner/slider\",\"tag\":\"Portal: kelola\",\"sc\":[\"portal:write\"]},{\"id\":\"/v1/portal/kelola/berita\",\"title\":\"Berita\",\"tag\":\"Portal: kelola\",\"sc\":[\"portal:write\"]},{\"id\":\"/v1/portal/kelola/dokumen\",\"title\":\"Dokumen\",\"tag\":\"Portal: kelola\",\"sc\":[\"portal:write\"]},{\"id\":\"/v1/portal/kelola/faq\",\"title\":\"FAQ\",\"tag\":\"Portal: kelola\",\"sc\":[\"portal:write\"]},{\"id\":\"/v1/portal/kelola/galeri\",\"title\":\"Galeri\",\"tag\":\"Portal: kelola\",\"sc\":[\"portal:write\"]},{\"id\":\"/v1/portal/kelola/halaman\",\"title\":\"Halaman\",\"tag\":\"Portal: kelola\",\"sc\":[\"portal:write\"]},{\"id\":\"/v1/portal/kelola/kategori\",\"title\":\"Kategori\",\"tag\":\"Portal: kelola\",\"sc\":[\"portal:write\"]},{\"id\":\"/v1/portal/kelola/media\",\"title\":\"Pustaka media\",\"tag\":\"Portal: kelola\",\"sc\":[\"portal:write\"]},{\"id\":\"/v1/portal/kelola/menu\",\"title\":\"Menu\",\"tag\":\"Portal: kelola\",\"sc\":[\"portal:write\"]},{\"id\":\"/v1/portal/kelola/pengumuman\",\"title\":\"Pengumuman\",\"tag\":\"Portal: kelola\",\"sc\":[\"portal:write\"]},{\"id\":\"/v1/portal/kelola/pesan\",\"title\":\"Pesan masuk\",\"tag\":\"Portal: kelola\",\"sc\":[\"portal:write\"]},{\"id\":\"/v1/portal/kelola/sindikasi\",\"title\":\"Sindikasi masuk\",\"tag\":\"Portal: kelola\",\"sc\":[\"portal:write\"]},{\"id\":\"/v1/portal/kelola/situs\",\"title\":\"Kelola\",\"tag\":\"Portal: kelola\",\"sc\":[\"portal:write\"]},{\"id\":\"/v1/portal/kelola/struktur\",\"title\":\"Struktur/pimpinan\",\"tag\":\"Portal: kelola\",\"sc\":[\"portal:write\"]},{\"id\":\"/v1/portal/kelola/tautan\",\"title\":\"Tautan cepat\",\"tag\":\"Portal: kelola\",\"sc\":[\"portal:write\"]},{\"id\":\"/v1/portal/pengumuman\",\"title\":\"Pengumuman\",\"tag\":\"Portal\",\"sc\":[\"portal:read\"]},{\"id\":\"/v1/portal/pengumuman/saya\",\"title\":\"Pengumuman untuk pengguna yang login\",\"tag\":\"Portal\",\"sc\":[\"portal:read\"]},{\"id\":\"/v1/portal/situs\",\"title\":\"Situs portal\",\"tag\":\"Portal\",\"sc\":[\"portal:read\"]},{\"id\":\"/v1/portal/struktur\",\"title\":\"Struktur\",\"tag\":\"Portal\",\"sc\":[\"portal:read\"]},{\"id\":\"/v1/portal/tautan\",\"title\":\"Tautan\",\"tag\":\"Portal\",\"sc\":[\"portal:read\"]}],\"operasi\":[{\"id\":\"postPortalPesan\",\"title\":\"Kirim pesan kontak/saran/pengaduan\",\"tag\":\"Portal\",\"m\":\"POST\",\"sc\":[\"portal:interaksi\"]},{\"id\":\"getPortalKelolaSaya\",\"title\":\"Situs yang saya kelola\",\"tag\":\"Portal: kelola\",\"m\":\"GET\",\"sc\":[\"portal:write\"]},{\"id\":\"postPortalKelolaMediaTautan\",\"title\":\"Tambah video YouTube/Vimeo\",\"tag\":\"Portal: kelola\",\"m\":\"POST\",\"sc\":[\"portal:write\"]}]},{\"key\":\"crm\",\"group\":\"humas\",\"title\":\"CRM Calon Mahasiswa\",\"icon\":\"Contact\",\"desc\":\"Prospek, skor, dan segmen calon mahasiswa untuk promosi.\",\"jumlahOperasi\":35,\"scope\":[\"crm:read\",\"crm:write\"],\"sumber\":[{\"id\":\"/v1/crm/interaksi\",\"title\":\"Riwayat interaksi prospek\",\"tag\":\"CRM: Prospek\",\"sc\":[\"crm:read\"]},{\"id\":\"/v1/crm/prospek\",\"title\":\"Prospek calon mahasiswa\",\"tag\":\"CRM: Prospek\",\"sc\":[\"crm:read\"]},{\"id\":\"/v1/crm/segmen\",\"title\":\"Segmen prospek\",\"tag\":\"CRM: Skor dan segmen\",\"sc\":[\"crm:read\"]},{\"id\":\"/v1/crm/skor-aturan\",\"title\":\"Aturan lead scoring\",\"tag\":\"CRM: Skor dan segmen\",\"sc\":[\"crm:read\"]},{\"id\":\"/v1/crm/tindak-lanjut\",\"title\":\"Tindak lanjut prospek\",\"tag\":\"CRM: Prospek\",\"sc\":[\"crm:read\"]}],\"operasi\":[{\"id\":\"getCrmPipeline\",\"title\":\"Pipeline pendaftaran\",\"tag\":\"CRM: Prospek\",\"m\":\"GET\",\"sc\":[\"crm:read\"]},{\"id\":\"getCrmKonversi\",\"title\":\"Analisis konversi\",\"tag\":\"CRM: Prospek\",\"m\":\"GET\",\"sc\":[\"crm:read\"]},{\"id\":\"postCrmSinkron\",\"title\":\"Sinkron dengan PMB\",\"tag\":\"CRM: Prospek\",\"m\":\"POST\",\"sc\":[\"crm:write\"]},{\"id\":\"postCrmSkorHitung\",\"title\":\"Hitung ulang skor semua prospek\",\"tag\":\"CRM: Skor dan segmen\",\"m\":\"POST\",\"sc\":[\"crm:write\"]},{\"id\":\"postCrmSegmenCari\",\"title\":\"Coba kriteria segmen\",\"tag\":\"CRM: Skor dan segmen\",\"m\":\"POST\",\"sc\":[\"crm:read\"]},{\"id\":\"postCrmImpor\",\"title\":\"Impor prospek\",\"tag\":\"CRM: Prospek\",\"m\":\"POST\",\"sc\":[\"crm:write\"]},{\"id\":\"postCrmBagi\",\"title\":\"Bagi prospek ke petugas\",\"tag\":\"CRM: Prospek\",\"m\":\"POST\",\"sc\":[\"crm:write\"]}]}],\"peta\":{\"/v1/admisi/chat\":\"admisi\",\"/v1/admisi/format-nim\":\"admisi\",\"/v1/admisi/kip\":\"admisi\",\"/v1/admisi/kip/{id}/berkas\":\"admisi\",\"/v1/admisi/loa\":\"admisi\",\"/v1/admisi/loa/verifikasi\":\"admisi\",\"/v1/admisi/ods\":\"admisi\",\"/v1/admisi/petugas-sesi\":\"admisi\",\"/v1/admisi/petugas/saya\":\"admisi\",\"/v1/admisi/prodi-syarat\":\"admisi\",\"/v1/admisi/saya/pendaftaran\":\"admisi\",\"/v1/admisi/ukt\":\"admisi\",\"/v1/admisi/ukt-aturan\":\"admisi\",\"/v1/admisi/ukt/{id}/berkas\":\"admisi\",\"/v1/akademik/batas/{jenis}\":\"akademik\",\"/v1/akademik/jadwal\":\"akademik\",\"/v1/akademik/kartu-identitas\":\"akademik\",\"/v1/akademik/kelas\":\"akademik\",\"/v1/akademik/krs/persetujuan\":\"akademik\",\"/v1/akademik/nilai/kelas\":\"akademik\",\"/v1/akademik/pengajuan\":\"akademik\",\"/v1/akademik/pengajuan/{id}/berkas\":\"akademik\",\"/v1/akademik/presensi/kelas\":\"akademik\",\"/v1/akademik/presensi/kelas/{idj}/mahasiswa\":\"akademik\",\"/v1/akademik/presensi/kelas/{idj}/pertemuan\":\"akademik\",\"/v1/api-portal/aplikasi\":\"portal-api\",\"/v1/api-portal/pengajuan\":\"portal-api\",\"/v1/api-portal/tinjau\":\"portal-api\",\"/v1/api-portal/tinjau-aplikasi\":\"portal-api\",\"/v1/arsip/bagikan\":\"arsip\",\"/v1/arsip/berkas\":\"arsip\",\"/v1/arsip/berkas/{ref}/bagikan\":\"arsip\",\"/v1/arsip/disposisi\":\"arsip\",\"/v1/arsip/disposisi/{ref}/file\":\"arsip\",\"/v1/arsip/dokumen\":\"arsip\",\"/v1/arsip/dokumen/{ref}/bagikan\":\"arsip\",\"/v1/arsip/dokumen/{ref}/file\":\"arsip\",\"/v1/arsip/file\":\"arsip\",\"/v1/arsip/jenis\":\"arsip\",\"/v1/arsip/klasifikasi\":\"arsip\",\"/v1/arsip/laporan/agenda\":\"arsip\",\"/v1/arsip/laporan/daftar-arsip\":\"arsip\",\"/v1/arsip/log\":\"arsip\",\"/v1/arsip/lokasi\":\"arsip\",\"/v1/arsip/peminjaman\":\"arsip\",\"/v1/arsip/peminjaman/{ref}/file\":\"arsip\",\"/v1/arsip/penomoran\":\"arsip\",\"/v1/arsip/penyusutan\":\"arsip\",\"/v1/arsip/penyusutan/kandidat\":\"arsip\",\"/v1/arsip/penyusutan/{ref}/file\":\"arsip\",\"/v1/arsip/petugas\":\"arsip\",\"/v1/arsip/saya/dokumen\":\"arsip\",\"/v1/arsip/saya/notifikasi\":\"arsip\",\"/v1/arsip/surat\":\"arsip\",\"/v1/arsip/surat-keluar\":\"arsip\",\"/v1/arsip/surat-masuk\":\"arsip\",\"/v1/arsip/surat/{ref}/bagikan\":\"arsip\",\"/v1/arsip/surat/{ref}/disposisi\":\"arsip\",\"/v1/arsip/surat/{ref}/file\":\"arsip\",\"/v1/arsip/template\":\"arsip\",\"/v1/arsip/unit\":\"arsip\",\"/v1/arsip/unit/{id}/petugas\":\"arsip\",\"/v1/arsip/verifikasi\":\"arsip\",\"/v1/cbt/kerjakan\":\"cbt\",\"/v1/cbt/latihan\":\"cbt\",\"/v1/cbt/peserta\":\"cbt\",\"/v1/cbt/saya\":\"cbt\",\"/v1/cbt/sesi\":\"cbt\",\"/v1/cbt/soal\":\"cbt\",\"/v1/cbt/ujian\":\"cbt\",\"/v1/cbt/ujian/{id}/koreksi\":\"cbt\",\"/v1/cbt/ujian/{id}/nilai-siakad/riwayat\":\"cbt\",\"/v1/crm/interaksi\":\"crm\",\"/v1/crm/prospek\":\"crm\",\"/v1/crm/segmen\":\"crm\",\"/v1/crm/segmen/{id}/anggota\":\"crm\",\"/v1/crm/skor-aturan\":\"crm\",\"/v1/crm/tindak-lanjut\":\"crm\",\"/v1/dasbor/ews\":\"dasbor\",\"/v1/dasbor/ews-aturan\":\"dasbor\",\"/v1/dasbor/kehadiran/mahasiswa\":\"dasbor\",\"/v1/dasbor/perkuliahan/kelas\":\"dasbor\",\"/v1/dasbor/tren\":\"dasbor\",\"/v1/dosen\":\"akademik\",\"/v1/dosen/{nidn}/jadwal\":\"akademik\",\"/v1/dosen/{nidn}/mahasiswa-bimbingan\":\"akademik\",\"/v1/edom/hasil/dosen\":\"edom\",\"/v1/edom/hasil/kelas\":\"edom\",\"/v1/edom/hasil/soal\":\"edom\",\"/v1/edom/isi\":\"edom\",\"/v1/edom/monitoring\":\"edom\",\"/v1/edom/soal\":\"edom\",\"/v1/fakultas\":\"fakultas\",\"/v1/fakultas/{kode}/dosen\":\"fakultas\",\"/v1/fakultas/{kode}/jadwal\":\"fakultas\",\"/v1/fakultas/{kode}/kelas\":\"fakultas\",\"/v1/fakultas/{kode}/krs/persetujuan\":\"fakultas\",\"/v1/fakultas/{kode}/mahasiswa\":\"fakultas\",\"/v1/fakultas/{kode}/mahasiswa/{nim}\":\"fakultas\",\"/v1/fakultas/{kode}/modul\":\"fakultas\",\"/v1/fakultas/{kode}/nilai/kelas\":\"fakultas\",\"/v1/fakultas/{kode}/statistik\":\"fakultas\",\"/v1/helpdesk/kategori\":\"helpdesk\",\"/v1/helpdesk/publik/lacak\":\"helpdesk\",\"/v1/helpdesk/tiket\":\"helpdesk\",\"/v1/helpdesk/tiket/{id}/berkas\":\"helpdesk\",\"/v1/humas/agenda/{id}/peserta\":\"humas\",\"/v1/humas/galeri/{id}/item\":\"humas\",\"/v1/humas/konten/agenda\":\"humas\",\"/v1/humas/konten/berita\":\"humas\",\"/v1/humas/konten/galeri\":\"humas\",\"/v1/humas/konten/halaman\":\"humas\",\"/v1/humas/konten/pengumuman\":\"humas\",\"/v1/humas/media\":\"humas\",\"/v1/humas/pesan\":\"humas\",\"/v1/humas/pola\":\"humas\",\"/v1/humas/siaran\":\"humas\",\"/v1/humas/sindikasi\":\"humas\",\"/v1/humas/situs\":\"humas\",\"/v1/humas/topik\":\"humas\",\"/v1/humas/umpan\":\"humas\",\"/v1/humas/umpan/{kode}/agenda\":\"humas\",\"/v1/humas/umpan/{kode}/berita\":\"humas\",\"/v1/humas/umpan/{kode}/galeri\":\"humas\",\"/v1/humas/umpan/{kode}/pengumuman\":\"humas\",\"/v1/iku/bukti\":\"iku\",\"/v1/iku/bukti/{id}/berkas\":\"iku\",\"/v1/iku/capaian\":\"iku\",\"/v1/iku/dasbor/prodi\":\"iku\",\"/v1/iku/indikator\":\"iku\",\"/v1/iku/metode\":\"iku\",\"/v1/iku/target\":\"iku\",\"/v1/iku/unduh\":\"iku\",\"/v1/induk/jabatan\":\"induk\",\"/v1/induk/log\":\"induk\",\"/v1/induk/orang\":\"induk\",\"/v1/induk/orang-peran\":\"induk\",\"/v1/induk/pejabat\":\"induk\",\"/v1/induk/pejabat-aktif\":\"induk\",\"/v1/induk/peran\":\"induk\",\"/v1/induk/unit\":\"induk\",\"/v1/induk/unit-pohon\":\"induk\",\"/v1/integrasi/ai/penyedia\":\"integrasi\",\"/v1/integrasi/antrean\":\"integrasi\",\"/v1/integrasi/berkas\":\"integrasi\",\"/v1/integrasi/berkas/unduh\":\"integrasi\",\"/v1/integrasi/cache\":\"integrasi\",\"/v1/integrasi/esign\":\"integrasi\",\"/v1/integrasi/katalog\":\"integrasi\",\"/v1/integrasi/log\":\"integrasi\",\"/v1/integrasi/pembayaran\":\"integrasi\",\"/v1/integrasi/pembayaran/metode\":\"integrasi\",\"/v1/integrasi/pengaturan\":\"integrasi\",\"/v1/integrasi/rapat\":\"integrasi\",\"/v1/integrasi/rapat/penyedia\":\"integrasi\",\"/v1/integrasi/webhook\":\"integrasi\",\"/v1/integrasi/webhook-keluar\":\"integrasi\",\"/v1/integrasi/webhook-keluar/{id}/kiriman\":\"integrasi\",\"/v1/integrasi/webhook-masuk\":\"integrasi\",\"/v1/jadwal\":\"akademik\",\"/v1/jadwal-ujian\":\"akademik\",\"/v1/kalender/kegiatan\":\"kalender\",\"/v1/kalender/kegiatan/{id}/berkas\":\"kalender\",\"/v1/kalender/tahun\":\"kalender\",\"/v1/kalender/terpadu\":\"kalender\",\"/v1/karier/acara\":\"karier\",\"/v1/karier/acara/{id}/berkas\":\"karier\",\"/v1/karier/artikel\":\"karier\",\"/v1/karier/artikel/{id}/berkas\":\"karier\",\"/v1/karier/cv\":\"karier\",\"/v1/karier/interaksi\":\"karier\",\"/v1/karier/kandidat\":\"karier\",\"/v1/karier/lamaran\":\"karier\",\"/v1/karier/lamaran/{id}/berkas\":\"karier\",\"/v1/karier/mitra\":\"karier\",\"/v1/karier/pengalaman\":\"karier\",\"/v1/karier/pengalaman/{id}/berkas\":\"karier\",\"/v1/karier/peserta\":\"karier\",\"/v1/karier/profil\":\"karier\",\"/v1/karier/profil/{id}/berkas\":\"karier\",\"/v1/karier/rekomendasi\":\"karier\",\"/v1/karier/undangan-mitra\":\"karier\",\"/v1/karier/undangan-mitra/terima\":\"karier\",\"/v1/kelengkapan\":\"referensi\",\"/v1/kelengkapan/referensi/wilayah\":\"referensi\",\"/v1/kelengkapan/ringkasan\":\"referensi\",\"/v1/kelengkapan/{entitas}\":\"referensi\",\"/v1/kelulusan/kandidat\":\"kelulusan\",\"/v1/kelulusan/lulusan\":\"kelulusan\",\"/v1/kelulusan/periode\":\"kelulusan\",\"/v1/kelulusan/poin/aturan\":\"kelulusan\",\"/v1/kelulusan/poin/kegiatan\":\"kelulusan\",\"/v1/kelulusan/poin/kegiatan/{id}/berkas\":\"kelulusan\",\"/v1/kelulusan/predikat\":\"kelulusan\",\"/v1/kelulusan/sertifikat\":\"kelulusan\",\"/v1/kelulusan/sertifikat/{id}/berkas\":\"kelulusan\",\"/v1/kelulusan/skpi\":\"kelulusan\",\"/v1/kelulusan/skpi/verifikasi\":\"kelulusan\",\"/v1/kelulusan/syarat\":\"kelulusan\",\"/v1/kelulusan/syarat-mahasiswa\":\"kelulusan\",\"/v1/kelulusan/syarat-mahasiswa/{id}/berkas\":\"kelulusan\",\"/v1/kelulusan/wisudawan\":\"kelulusan\",\"/v1/kemahasiswaan/beasiswa\":\"kemahasiswaan\",\"/v1/kemahasiswaan/beasiswa/{id}/berkas\":\"kemahasiswaan\",\"/v1/kemahasiswaan/kegiatan\":\"kemahasiswaan\",\"/v1/kemahasiswaan/kegiatan/{id}/berkas\":\"kemahasiswaan\",\"/v1/kemahasiswaan/konseling\":\"kemahasiswaan\",\"/v1/kemahasiswaan/ormawa\":\"kemahasiswaan\",\"/v1/kemahasiswaan/ormawa/{id}/berkas\":\"kemahasiswaan\",\"/v1/kemahasiswaan/pelanggaran\":\"kemahasiswaan\",\"/v1/kemahasiswaan/pelanggaran/{id}/berkas\":\"kemahasiswaan\",\"/v1/kemahasiswaan/pencairan\":\"kemahasiswaan\",\"/v1/kemahasiswaan/pencairan/{id}/berkas\":\"kemahasiswaan\",\"/v1/kemahasiswaan/pendaftar\":\"kemahasiswaan\",\"/v1/kemahasiswaan/pendaftar/{id}/berkas\":\"kemahasiswaan\",\"/v1/kemahasiswaan/pengurus\":\"kemahasiswaan\",\"/v1/kemahasiswaan/prestasi\":\"kemahasiswaan\",\"/v1/kemahasiswaan/prestasi/{id}/berkas\":\"kemahasiswaan\",\"/v1/kerjasama/akan-berakhir\":\"kerjasama\",\"/v1/kerjasama/dokumen\":\"kerjasama\",\"/v1/kerjasama/dokumen-mitra\":\"kerjasama\",\"/v1/kerjasama/dokumen/{id}/berkas\":\"kerjasama\",\"/v1/kerjasama/evaluasi\":\"kerjasama\",\"/v1/kerjasama/kegiatan\":\"kerjasama\",\"/v1/kerjasama/kegiatan/{id}/berkas\":\"kerjasama\",\"/v1/kerjasama/mitra\":\"kerjasama\",\"/v1/kerjasama/mitra/{id}/berkas\":\"kerjasama\",\"/v1/keu/akun\":\"keu\",\"/v1/keu/pembayaran-mahasiswa\":\"keu\",\"/v1/keu/penerimaan\":\"keu\",\"/v1/keu/penerimaan/{id}/berkas\":\"keu\",\"/v1/keu/periode\":\"keu\",\"/v1/keu/realisasi\":\"keu\",\"/v1/keu/realisasi/{id}/berkas\":\"keu\",\"/v1/keu/rka\":\"keu\",\"/v1/keu/rka-item\":\"keu\",\"/v1/keu/rka/{id}/berkas\":\"keu\",\"/v1/keu/va\":\"keu\",\"/v1/keuangan/biaya\":\"akademik\",\"/v1/keuangan/cicilan\":\"keu\",\"/v1/keuangan/cicilan/{id}/berkas\":\"keu\",\"/v1/keuangan/denda\":\"keu\",\"/v1/keuangan/deposit\":\"keu\",\"/v1/keuangan/dispensasi\":\"keu\",\"/v1/keuangan/dispensasi/{id}/berkas\":\"keu\",\"/v1/keuangan/invoice\":\"keu\",\"/v1/keuangan/kasir\":\"keu\",\"/v1/keuangan/kwitansi/verifikasi\":\"keu\",\"/v1/keuangan/mahasiswa\":\"keu\",\"/v1/keuangan/pembayaran\":\"akademik\",\"/v1/keuangan/periode\":\"keu\",\"/v1/keuangan/potongan\":\"keu\",\"/v1/keuangan/refund\":\"keu\",\"/v1/keuangan/refund/{id}/berkas\":\"keu\",\"/v1/keuangan/rekonsiliasi/online\":\"keu\",\"/v1/keuangan/rekonsiliasi/va\":\"keu\",\"/v1/keuangan/tagihan\":\"keu\",\"/v1/keuangan/tarif-mk\":\"keu\",\"/v1/keuangan/tarif/item\":\"keu\",\"/v1/keuangan/transaksi\":\"keu\",\"/v1/keuangan/ukt/kelompok\":\"keu\",\"/v1/keuangan/ukt/mahasiswa\":\"keu\",\"/v1/keuangan/voucher\":\"keu\",\"/v1/kurikulum\":\"akademik\",\"/v1/kurikulum-obe/capaian/mahasiswa\":\"kurikulum\",\"/v1/kurikulum-obe/cpmk\":\"kurikulum\",\"/v1/kurikulum-obe/kurikulum\":\"kurikulum\",\"/v1/kurikulum-obe/kurikulum/{id}/bahan-kajian\":\"kurikulum\",\"/v1/kurikulum-obe/kurikulum/{id}/capaian/riwayat\":\"kurikulum\",\"/v1/kurikulum-obe/kurikulum/{id}/cpl\":\"kurikulum\",\"/v1/kurikulum-obe/kurikulum/{id}/ekuivalensi\":\"kurikulum\",\"/v1/kurikulum-obe/kurikulum/{id}/matriks\":\"kurikulum\",\"/v1/kurikulum-obe/kurikulum/{id}/mk\":\"kurikulum\",\"/v1/kurikulum-obe/kurikulum/{id}/peninjauan\":\"kurikulum\",\"/v1/kurikulum-obe/kurikulum/{id}/profil-lulusan\":\"kurikulum\",\"/v1/kurikulum-obe/migrasi\":\"kurikulum\",\"/v1/kurikulum-obe/migrasi/semester-lama\":\"kurikulum\",\"/v1/kurikulum-obe/migrasi/status\":\"kurikulum\",\"/v1/kurikulum-obe/mk\":\"kurikulum\",\"/v1/kurikulum-obe/mk/{mk}/cpmk\":\"kurikulum\",\"/v1/kurikulum-obe/mk/{mk}/rps\":\"kurikulum\",\"/v1/kurikulum-obe/rps\":\"kurikulum\",\"/v1/kurikulum-obe/sub-cpmk\":\"kurikulum\",\"/v1/layanan/dokumen\":\"layanan\",\"/v1/layanan/dokumen/{id}/berkas\":\"layanan\",\"/v1/layanan/jenis\":\"layanan\",\"/v1/layanan/permohonan\":\"layanan\",\"/v1/layanan/permohonan/{id}/berkas\":\"layanan\",\"/v1/layanan/verifikasi\":\"layanan\",\"/v1/lms/analitik/kelas\":\"lms\",\"/v1/lms/analitik/mahasiswa\":\"lms\",\"/v1/lms/bank-soal\":\"lms\",\"/v1/lms/file\":\"lms\",\"/v1/lms/forum\":\"lms\",\"/v1/lms/forum/post\":\"lms\",\"/v1/lms/forum/{id}/post\":\"lms\",\"/v1/lms/impor-siakad\":\"lms\",\"/v1/lms/kalender\":\"lms\",\"/v1/lms/kelas\":\"lms\",\"/v1/lms/kelas/jadwal-tersedia\":\"lms\",\"/v1/lms/kelas/{id}/anggota\":\"lms\",\"/v1/lms/kelas/{id}/cpmk\":\"lms\",\"/v1/lms/kelas/{id}/forum\":\"lms\",\"/v1/lms/kelas/{id}/kuis\":\"lms\",\"/v1/lms/kelas/{id}/materi\":\"lms\",\"/v1/lms/kelas/{id}/peserta\":\"lms\",\"/v1/lms/kelas/{id}/siakad/impor\":\"lms\",\"/v1/lms/kelas/{id}/tugas\":\"lms\",\"/v1/lms/kuis\":\"lms\",\"/v1/lms/kuis/percobaan\":\"lms\",\"/v1/lms/kuis/{id}/percobaan\":\"lms\",\"/v1/lms/materi\":\"lms\",\"/v1/lms/nilai/item\":\"lms\",\"/v1/lms/notifikasi\":\"lms\",\"/v1/lms/presensi\":\"lms\",\"/v1/lms/rapat/penyedia\":\"lms\",\"/v1/lms/terbuka\":\"lms\",\"/v1/lms/topik\":\"lms\",\"/v1/lms/tugas\":\"lms\",\"/v1/lms/tugas/{id}/jawaban\":\"lms\",\"/v1/lppm/bidang\":\"lppm\",\"/v1/lppm/file\":\"lppm\",\"/v1/lppm/file/{entitas}\":\"lppm\",\"/v1/lppm/file/{entitas}/{id}\":\"lppm\",\"/v1/lppm/jenis-luaran\":\"lppm\",\"/v1/lppm/jurnal\":\"lppm\",\"/v1/lppm/kegiatan\":\"lppm\",\"/v1/lppm/kegiatan/{id}/anggota\":\"lppm\",\"/v1/lppm/kegiatan/{id}/laporan/{jenis}\":\"lppm\",\"/v1/lppm/kegiatan/{id}/logbook\":\"lppm\",\"/v1/lppm/kegiatan/{id}/luaran-target\":\"lppm\",\"/v1/lppm/kegiatan/{id}/mitra\":\"lppm\",\"/v1/lppm/kegiatan/{id}/pencairan\":\"lppm\",\"/v1/lppm/kegiatan/{id}/riwayat\":\"lppm\",\"/v1/lppm/kkn/bimbingan\":\"lppm\",\"/v1/lppm/kkn/kelompok\":\"lppm\",\"/v1/lppm/kkn/periode\":\"lppm\",\"/v1/lppm/kkn/periode/{id}/kelompok\":\"lppm\",\"/v1/lppm/kkn/periode/{id}/peserta\":\"lppm\",\"/v1/lppm/kkn/peserta\":\"lppm\",\"/v1/lppm/kkn/peserta/{id}/logbook\":\"lppm\",\"/v1/lppm/kkn/saya\":\"lppm\",\"/v1/lppm/kolaborasi\":\"lppm\",\"/v1/lppm/kolaborator\":\"lppm\",\"/v1/lppm/kriteria\":\"lppm\",\"/v1/lppm/laporan\":\"lppm\",\"/v1/lppm/log\":\"lppm\",\"/v1/lppm/luaran\":\"lppm\",\"/v1/lppm/mitra\":\"lppm\",\"/v1/lppm/notifikasi\":\"lppm\",\"/v1/lppm/peneliti\":\"lppm\",\"/v1/lppm/pengelola\":\"lppm\",\"/v1/lppm/periode\":\"lppm\",\"/v1/lppm/periode-skema\":\"lppm\",\"/v1/lppm/rekap/dosen\":\"lppm\",\"/v1/lppm/rekap/lkps\":\"lppm\",\"/v1/lppm/review\":\"lppm\",\"/v1/lppm/review/peringkat\":\"lppm\",\"/v1/lppm/review/saya\":\"lppm\",\"/v1/lppm/reviewer\":\"lppm\",\"/v1/lppm/riwayat/{entitas}\":\"lppm\",\"/v1/lppm/riwayat/{entitas}/{id}\":\"lppm\",\"/v1/lppm/skema\":\"lppm\",\"/v1/lppm/skema-luaran\":\"lppm\",\"/v1/lulusan\":\"akademik\",\"/v1/mahasiswa\":\"akademik\",\"/v1/mahasiswa/{nim}/krs/pesan\":\"akademik\",\"/v1/mahasiswa/{nim}/tugas-akhir\":\"akademik\",\"/v1/master/desain-ttd\":\"master\",\"/v1/master/fakultas\":\"master\",\"/v1/master/fakultas/{fak}/jurusan\":\"master\",\"/v1/master/format-dokumen\":\"master\",\"/v1/master/format-dokumen/efektif\":\"master\",\"/v1/master/prodi\":\"master\",\"/v1/master/prodi/{kode}/konsentrasi\":\"master\",\"/v1/mata-kuliah\":\"akademik\",\"/v1/mbkm/feeder\":\"mbkm\",\"/v1/mbkm/konversi\":\"mbkm\",\"/v1/mbkm/logbook\":\"mbkm\",\"/v1/mbkm/logbook/{id}/berkas\":\"mbkm\",\"/v1/mbkm/pembimbing\":\"mbkm\",\"/v1/mbkm/penilaian\":\"mbkm\",\"/v1/mbkm/peserta\":\"mbkm\",\"/v1/mbkm/peserta/{id}/berkas\":\"mbkm\",\"/v1/mbkm/program\":\"mbkm\",\"/v1/mbkm/program/{id}/berkas\":\"mbkm\",\"/v1/notif/antrean\":\"notifikasi\",\"/v1/notif/kotak\":\"notifikasi\",\"/v1/notif/pengumuman\":\"notifikasi\",\"/v1/notif/preferensi\":\"notifikasi\",\"/v1/pddikti/antrean\":\"pddikti\",\"/v1/pddikti/data\":\"pddikti\",\"/v1/pddikti/data/{entitas}\":\"pddikti\",\"/v1/pddikti/data/{entitas}/galat\":\"pddikti\",\"/v1/pddikti/entitas\":\"pddikti\",\"/v1/pddikti/jadwal\":\"pddikti\",\"/v1/pddikti/kirim\":\"pddikti\",\"/v1/pddikti/komparasi\":\"pddikti\",\"/v1/pddikti/pdm\":\"pddikti\",\"/v1/perpustakaan/anggota\":\"perpustakaan\",\"/v1/perpustakaan/anggota-slims\":\"perpustakaan\",\"/v1/perpustakaan/bebas-pustaka\":\"perpustakaan\",\"/v1/perpustakaan/eksemplar\":\"perpustakaan\",\"/v1/perpustakaan/katalog\":\"perpustakaan\",\"/v1/perpustakaan/koleksi\":\"perpustakaan\",\"/v1/perpustakaan/kunjungan\":\"perpustakaan\",\"/v1/perpustakaan/pinjaman\":\"perpustakaan\",\"/v1/perpustakaan/referensi\":\"perpustakaan\",\"/v1/perpustakaan/referensi/{jenis}\":\"perpustakaan\",\"/v1/perpustakaan/reservasi\":\"perpustakaan\",\"/v1/perpustakaan/slims/anggota\":\"perpustakaan\",\"/v1/perpustakaan/slims/katalog\":\"perpustakaan\",\"/v1/perpustakaan/usulan\":\"perpustakaan\",\"/v1/pmb/admin/berkas-jenis\":\"pmb\",\"/v1/pmb/admin/faq\":\"pmb\",\"/v1/pmb/admin/gelombang\":\"pmb\",\"/v1/pmb/admin/gelombang/{gelombang}/biaya\":\"pmb\",\"/v1/pmb/admin/gelombang/{gelombang}/jadwal\":\"pmb\",\"/v1/pmb/admin/gelombang/{gelombang}/prodi\":\"pmb\",\"/v1/pmb/admin/jalur\":\"pmb\",\"/v1/pmb/admin/landing/pengaturan\":\"pmb\",\"/v1/pmb/admin/notifikasi/antrean\":\"pmb\",\"/v1/pmb/admin/pendaftaran\":\"pmb\",\"/v1/pmb/admin/pendaftaran/{id}/berkas\":\"pmb\",\"/v1/pmb/admin/pengumuman\":\"pmb\",\"/v1/pmb/admin/prodi-info\":\"pmb\",\"/v1/pmb/admin/referal\":\"pmb\",\"/v1/pmb/admin/sesi-tes\":\"pmb\",\"/v1/pmb/admin/sesi-tes/{id}/peserta\":\"pmb\",\"/v1/pmb/admin/tagihan\":\"pmb\",\"/v1/pmb/admin/testimoni\":\"pmb\",\"/v1/pmb/info/gelombang\":\"pmb\",\"/v1/pmb/info/jalur\":\"pmb\",\"/v1/pmb/info/pengumuman\":\"pmb\",\"/v1/pmb/info/perguruan-tinggi\":\"pmb\",\"/v1/pmb/info/sekolah\":\"pmb\",\"/v1/pmb/pendaftar\":\"pmb\",\"/v1/pmb/periode\":\"pmb\",\"/v1/pmb/saya/notifikasi\":\"pmb\",\"/v1/pmb/saya/pembayaran/metode\":\"pmb\",\"/v1/pmb/saya/pendaftaran\":\"pmb\",\"/v1/pmb/saya/pendaftaran/{id}/berkas\":\"pmb\",\"/v1/pmb/saya/pendaftaran/{id}/prestasi\":\"pmb\",\"/v1/pmb/saya/pendaftaran/{id}/tagihan\":\"pmb\",\"/v1/pmb/saya/pendaftaran/{id}/ujian\":\"pmb\",\"/v1/portal/agenda\":\"portal\",\"/v1/portal/banner\":\"portal\",\"/v1/portal/berita\":\"portal\",\"/v1/portal/cari\":\"portal\",\"/v1/portal/dokumen\":\"portal\",\"/v1/portal/faq\":\"portal\",\"/v1/portal/galeri\":\"portal\",\"/v1/portal/halaman\":\"portal\",\"/v1/portal/kalender-akademik\":\"portal\",\"/v1/portal/kategori\":\"portal\",\"/v1/portal/kelola/agenda\":\"portal\",\"/v1/portal/kelola/agenda/{id}/peserta\":\"portal\",\"/v1/portal/kelola/agenda/{id}/revisi\":\"portal\",\"/v1/portal/kelola/banner\":\"portal\",\"/v1/portal/kelola/banner/{id}/revisi\":\"portal\",\"/v1/portal/kelola/berita\":\"portal\",\"/v1/portal/kelola/berita/{id}/revisi\":\"portal\",\"/v1/portal/kelola/dokumen\":\"portal\",\"/v1/portal/kelola/dokumen/{id}/revisi\":\"portal\",\"/v1/portal/kelola/faq\":\"portal\",\"/v1/portal/kelola/faq/{id}/revisi\":\"portal\",\"/v1/portal/kelola/galeri\":\"portal\",\"/v1/portal/kelola/galeri/{id}/item\":\"portal\",\"/v1/portal/kelola/galeri/{id}/revisi\":\"portal\",\"/v1/portal/kelola/halaman\":\"portal\",\"/v1/portal/kelola/halaman/{id}/revisi\":\"portal\",\"/v1/portal/kelola/kategori\":\"portal\",\"/v1/portal/kelola/kategori/{id}/revisi\":\"portal\",\"/v1/portal/kelola/media\":\"portal\",\"/v1/portal/kelola/menu\":\"portal\",\"/v1/portal/kelola/menu/{id}/revisi\":\"portal\",\"/v1/portal/kelola/pengumuman\":\"portal\",\"/v1/portal/kelola/pengumuman/{id}/revisi\":\"portal\",\"/v1/portal/kelola/pesan\":\"portal\",\"/v1/portal/kelola/sindikasi\":\"portal\",\"/v1/portal/kelola/situs\":\"portal\",\"/v1/portal/kelola/situs/{kode}/pengelola\":\"portal\",\"/v1/portal/kelola/struktur\":\"portal\",\"/v1/portal/kelola/struktur/{id}/revisi\":\"portal\",\"/v1/portal/kelola/tautan\":\"portal\",\"/v1/portal/kelola/tautan/{id}/revisi\":\"portal\",\"/v1/portal/pengumuman\":\"portal\",\"/v1/portal/pengumuman/saya\":\"portal\",\"/v1/portal/situs\":\"portal\",\"/v1/portal/situs/{kode}/dosen\":\"portal\",\"/v1/portal/struktur\":\"portal\",\"/v1/portal/tautan\":\"portal\",\"/v1/profil/dokumen\":\"profil\",\"/v1/profil/dokumen/{id}/berkas\":\"profil\",\"/v1/profil/organisasi\":\"profil\",\"/v1/profil/organisasi/{id}/berkas\":\"profil\",\"/v1/profil/pekerjaan\":\"profil\",\"/v1/profil/pekerjaan/{id}/berkas\":\"profil\",\"/v1/profil/pendidikan\":\"profil\",\"/v1/profil/pendidikan/{id}/berkas\":\"profil\",\"/v1/profil/permohonan\":\"profil\",\"/v1/profil/permohonan/{id}/berkas\":\"profil\",\"/v1/profil/prestasi\":\"profil\",\"/v1/profil/prestasi/{id}/berkas\":\"profil\",\"/v1/rbac/akses-live\":\"akses\",\"/v1/rbac/aplikasi\":\"akses\",\"/v1/rbac/db-dev/salinan\":\"akses\",\"/v1/rbac/izin\":\"akses\",\"/v1/rbac/jabatan\":\"akses\",\"/v1/rbac/klien-api\":\"akses\",\"/v1/rbac/level\":\"akses\",\"/v1/rbac/log-api\":\"akses\",\"/v1/rbac/pengguna\":\"akses\",\"/v1/rbac/penugasan\":\"akses\",\"/v1/rbac/peran\":\"akses\",\"/v1/rbac/peran-izin\":\"akses\",\"/v1/referensi/fakultas\":\"referensi\",\"/v1/referensi/item-biaya\":\"referensi\",\"/v1/referensi/jam\":\"referensi\",\"/v1/referensi/kampus\":\"referensi\",\"/v1/referensi/kelas\":\"referensi\",\"/v1/referensi/kode\":\"referensi\",\"/v1/referensi/kode/{aplikasi}\":\"referensi\",\"/v1/referensi/prodi\":\"referensi\",\"/v1/referensi/ruang\":\"referensi\",\"/v1/referensi/skala-nilai\":\"referensi\",\"/v1/referensi/tahun-akademik\":\"referensi\",\"/v1/repositori/karya\":\"repositori\",\"/v1/repositori/karya/{id}/berkas\":\"repositori\",\"/v1/repositori/koleksi\":\"repositori\",\"/v1/rpl/asesor\":\"rpl\",\"/v1/rpl/asesor/saya\":\"rpl\",\"/v1/rpl/dokumen\":\"rpl\",\"/v1/rpl/dokumen/{id}/berkas\":\"rpl\",\"/v1/rpl/klaim\":\"rpl\",\"/v1/rpl/komponen\":\"rpl\",\"/v1/rpl/konversi\":\"rpl\",\"/v1/rpl/nilai\":\"rpl\",\"/v1/rpl/pengajuan\":\"rpl\",\"/v1/rpl/pengalaman\":\"rpl\",\"/v1/rpl/pengalaman/{id}/berkas\":\"rpl\",\"/v1/rpl/penugasan\":\"rpl\",\"/v1/rpl/saya/pengajuan/{id}/mata-kuliah\":\"rpl\",\"/v1/rpl/skema\":\"rpl\",\"/v1/sarpras/aset\":\"sarpras\",\"/v1/sarpras/aset/{id}/berkas\":\"sarpras\",\"/v1/sarpras/gedung\":\"sarpras\",\"/v1/sarpras/gedung/{id}/berkas\":\"sarpras\",\"/v1/sarpras/kategori\":\"sarpras\",\"/v1/sarpras/mutasi\":\"sarpras\",\"/v1/sarpras/pemeliharaan\":\"sarpras\",\"/v1/sarpras/pemeliharaan/{id}/berkas\":\"sarpras\",\"/v1/sarpras/peminjaman\":\"sarpras\",\"/v1/sarpras/peminjaman/{id}/berkas\":\"sarpras\",\"/v1/sarpras/ruang\":\"sarpras\",\"/v1/sarpras/ruang-tersedia\":\"sarpras\",\"/v1/sarpras/ruang/{id}/berkas\":\"sarpras\",\"/v1/sdm/cuti\":\"sdm\",\"/v1/sdm/file\":\"sdm\",\"/v1/sdm/honor\":\"sdm\",\"/v1/sdm/honor/komponen\":\"sdm\",\"/v1/sdm/honor/tarif\":\"sdm\",\"/v1/sdm/kinerja\":\"sdm\",\"/v1/sdm/kinerja/item\":\"sdm\",\"/v1/sdm/kinerja/periode\":\"sdm\",\"/v1/sdm/laporan/dosen-prodi\":\"sdm\",\"/v1/sdm/laporan/duk\":\"sdm\",\"/v1/sdm/log\":\"sdm\",\"/v1/sdm/master/golongan\":\"sdm\",\"/v1/sdm/master/hari-libur\":\"sdm\",\"/v1/sdm/master/jabatan\":\"sdm\",\"/v1/sdm/master/jabatan-akademik\":\"sdm\",\"/v1/sdm/master/jenis-cuti\":\"sdm\",\"/v1/sdm/master/unit\":\"sdm\",\"/v1/sdm/pegawai\":\"sdm\",\"/v1/sdm/pegawai/{id}/diklat\":\"sdm\",\"/v1/sdm/pegawai/{id}/disiplin\":\"sdm\",\"/v1/sdm/pegawai/{id}/gaji\":\"sdm\",\"/v1/sdm/pegawai/{id}/jabatan\":\"sdm\",\"/v1/sdm/pegawai/{id}/jabatan-akademik\":\"sdm\",\"/v1/sdm/pegawai/{id}/keluarga\":\"sdm\",\"/v1/sdm/pegawai/{id}/log\":\"sdm\",\"/v1/sdm/pegawai/{id}/organisasi\":\"sdm\",\"/v1/sdm/pegawai/{id}/pangkat\":\"sdm\",\"/v1/sdm/pegawai/{id}/pekerjaan\":\"sdm\",\"/v1/sdm/pegawai/{id}/pendidikan\":\"sdm\",\"/v1/sdm/pegawai/{id}/penghargaan\":\"sdm\",\"/v1/sdm/pegawai/{id}/saldo-cuti\":\"sdm\",\"/v1/sdm/pegawai/{id}/sertifikasi\":\"sdm\",\"/v1/sdm/pegawai/{id}/sister\":\"sdm\",\"/v1/sdm/pegawai/{id}/sister/data_pribadi\":\"sdm\",\"/v1/sdm/pegawai/{id}/sister/data_pribadi/{bagian}\":\"sdm\",\"/v1/sdm/pegawai/{id}/sister/kirim\":\"sdm\",\"/v1/sdm/pegawai/{id}/sister/{jenis}\":\"sdm\",\"/v1/sdm/pegawai/{id}/status\":\"sdm\",\"/v1/sdm/pegawai/{id}/tes\":\"sdm\",\"/v1/sdm/pegawai/{id}/tunjangan\":\"sdm\",\"/v1/sdm/petugas\":\"sdm\",\"/v1/sdm/presensi\":\"sdm\",\"/v1/sdm/presensi/rekap\":\"sdm\",\"/v1/sdm/riwayat/diklat\":\"sdm\",\"/v1/sdm/riwayat/disiplin\":\"sdm\",\"/v1/sdm/riwayat/gaji\":\"sdm\",\"/v1/sdm/riwayat/jabatan\":\"sdm\",\"/v1/sdm/riwayat/jabatan-akademik\":\"sdm\",\"/v1/sdm/riwayat/keluarga\":\"sdm\",\"/v1/sdm/riwayat/organisasi\":\"sdm\",\"/v1/sdm/riwayat/pangkat\":\"sdm\",\"/v1/sdm/riwayat/pekerjaan\":\"sdm\",\"/v1/sdm/riwayat/pendidikan\":\"sdm\",\"/v1/sdm/riwayat/penghargaan\":\"sdm\",\"/v1/sdm/riwayat/sertifikasi\":\"sdm\",\"/v1/sdm/riwayat/status\":\"sdm\",\"/v1/sdm/riwayat/tes\":\"sdm\",\"/v1/sdm/riwayat/tunjangan\":\"sdm\",\"/v1/sdm/sister/jenis\":\"sdm\",\"/v1/sdm/sister/kirim\":\"sdm\",\"/v1/sdm/sister/log\":\"sdm\",\"/v1/sdm/sister/pegawai\":\"sdm\",\"/v1/sdm/sister/sdm\":\"sdm\",\"/v1/sdm/unit/pohon\":\"sdm\",\"/v1/sdm/usulan\":\"sdm\",\"/v1/sdm/verifikasi\":\"sdm\",\"/v1/spmi/akreditasi\":\"spmi\",\"/v1/spmi/akreditasi-butir\":\"spmi\",\"/v1/spmi/akreditasi-butir/{id}/riwayat\":\"spmi\",\"/v1/spmi/akreditasi-instrumen\":\"spmi\",\"/v1/spmi/akreditasi-instrumen/{id}/riwayat\":\"spmi\",\"/v1/spmi/akreditasi-kriteria\":\"spmi\",\"/v1/spmi/akreditasi-kriteria/{id}/riwayat\":\"spmi\",\"/v1/spmi/akreditasi-persiapan\":\"spmi\",\"/v1/spmi/akreditasi-persiapan/{id}/riwayat\":\"spmi\",\"/v1/spmi/akreditasi/{id}/riwayat\":\"spmi\",\"/v1/spmi/audit\":\"spmi\",\"/v1/spmi/audit/tugas-saya\":\"spmi\",\"/v1/spmi/audit/{id}/auditee\":\"spmi\",\"/v1/spmi/audit/{id}/riwayat\":\"spmi\",\"/v1/spmi/auditee\":\"spmi\",\"/v1/spmi/auditee/{id}/tilik\":\"spmi\",\"/v1/spmi/auditee/{id}/tim\":\"spmi\",\"/v1/spmi/auditor\":\"spmi\",\"/v1/spmi/auditor/{id}/riwayat\":\"spmi\",\"/v1/spmi/capaian\":\"spmi\",\"/v1/spmi/dokumen\":\"spmi\",\"/v1/spmi/dokumen/{id}/riwayat\":\"spmi\",\"/v1/spmi/file\":\"spmi\",\"/v1/spmi/file/{entitas}\":\"spmi\",\"/v1/spmi/file/{entitas}/{id}\":\"spmi\",\"/v1/spmi/indikator\":\"spmi\",\"/v1/spmi/indikator/{id}/riwayat\":\"spmi\",\"/v1/spmi/kegiatan\":\"spmi\",\"/v1/spmi/kegiatan/{id}/riwayat\":\"spmi\",\"/v1/spmi/lkps\":\"spmi\",\"/v1/spmi/notifikasi\":\"spmi\",\"/v1/spmi/pelaporan\":\"spmi\",\"/v1/spmi/pelaporan-butir\":\"spmi\",\"/v1/spmi/periode\":\"spmi\",\"/v1/spmi/periode/{id}/riwayat\":\"spmi\",\"/v1/spmi/personel\":\"spmi\",\"/v1/spmi/personel/{id}/riwayat\":\"spmi\",\"/v1/spmi/publik/akreditasi\":\"spmi\",\"/v1/spmi/publik/dokumen\":\"spmi\",\"/v1/spmi/publik/survei\":\"spmi\",\"/v1/spmi/risiko\":\"spmi\",\"/v1/spmi/risiko/{id}/riwayat\":\"spmi\",\"/v1/spmi/rtm\":\"spmi\",\"/v1/spmi/rtm-keputusan\":\"spmi\",\"/v1/spmi/rtm-keputusan/{id}/riwayat\":\"spmi\",\"/v1/spmi/rtm/{id}/riwayat\":\"spmi\",\"/v1/spmi/standar\":\"spmi\",\"/v1/spmi/standar/{id}/riwayat\":\"spmi\",\"/v1/spmi/survei\":\"spmi\",\"/v1/spmi/survei-pertanyaan\":\"spmi\",\"/v1/spmi/survei-pertanyaan/{id}/riwayat\":\"spmi\",\"/v1/spmi/survei/saya\":\"spmi\",\"/v1/spmi/survei/{id}/riwayat\":\"spmi\",\"/v1/spmi/target\":\"spmi\",\"/v1/spmi/target/{id}/riwayat\":\"spmi\",\"/v1/spmi/temuan\":\"spmi\",\"/v1/spmi/temuan/{id}/tindak-lanjut\":\"spmi\",\"/v1/spmi/tilik\":\"spmi\",\"/v1/spmi/unit\":\"spmi\",\"/v1/spmi/unit/{id}/riwayat\":\"spmi\",\"/v1/tracer/alumni\":\"tracer\",\"/v1/tracer/alumni/{nim}/jawaban-lama\":\"tracer\",\"/v1/tracer/alumni/{nim}/pekerjaan\":\"tracer\",\"/v1/tracer/alumni/{nim}/studi-lanjut\":\"tracer\",\"/v1/tracer/direktori\":\"tracer\",\"/v1/tracer/dosen/alumni\":\"tracer\",\"/v1/tracer/dosen/rekap\":\"tracer\",\"/v1/tracer/instansi\":\"tracer\",\"/v1/tracer/isi\":\"tracer\",\"/v1/tracer/kuesioner\":\"tracer\",\"/v1/tracer/lowongan\":\"tracer\",\"/v1/tracer/periode\":\"tracer\",\"/v1/tracer/periode/{id}/ekspor\":\"tracer\",\"/v1/tracer/periode/{id}/responden\":\"tracer\",\"/v1/tracer/publikasi\":\"tracer\",\"/v1/tracer/referensi/wilayah\":\"tracer\",\"/v1/tracer/responden\":\"tracer\",\"/v1/tracer/saya\":\"tracer\",\"/v1/tracer/ump\":\"tracer\",\"/v1/wisuda\":\"akademik\"}}","// Dibuat oleh scripts/katalog/buat.mjs. Jangan diubah manual.\nimport type { ModulKatalog } from '../tipe';\n\nconst j = (m: { default?: unknown }) => (m.default ?? m) as ModulKatalog;\n\nexport const MUAT_MODUL: Record<string, () => Promise<ModulKatalog>> = {\n 'akses': () => import('./modul/akses.json').then(j),\n 'portal-api': () => import('./modul/portal-api.json').then(j),\n 'profil': () => import('./modul/profil.json').then(j),\n 'notifikasi': () => import('./modul/notifikasi.json').then(j),\n 'integrasi': () => import('./modul/integrasi.json').then(j),\n 'pddikti': () => import('./modul/pddikti.json').then(j),\n 'dasbor': () => import('./modul/dasbor.json').then(j),\n 'referensi': () => import('./modul/referensi.json').then(j),\n 'master': () => import('./modul/master.json').then(j),\n 'induk': () => import('./modul/induk.json').then(j),\n 'akademik': () => import('./modul/akademik.json').then(j),\n 'kurikulum': () => import('./modul/kurikulum.json').then(j),\n 'kalender': () => import('./modul/kalender.json').then(j),\n 'admisi': () => import('./modul/admisi.json').then(j),\n 'pmb': () => import('./modul/pmb.json').then(j),\n 'lms': () => import('./modul/lms.json').then(j),\n 'cbt': () => import('./modul/cbt.json').then(j),\n 'edom': () => import('./modul/edom.json').then(j),\n 'mbkm': () => import('./modul/mbkm.json').then(j),\n 'rpl': () => import('./modul/rpl.json').then(j),\n 'kelulusan': () => import('./modul/kelulusan.json').then(j),\n 'kemahasiswaan': () => import('./modul/kemahasiswaan.json').then(j),\n 'tracer': () => import('./modul/tracer.json').then(j),\n 'karier': () => import('./modul/karier.json').then(j),\n 'fakultas': () => import('./modul/fakultas.json').then(j),\n 'sdm': () => import('./modul/sdm.json').then(j),\n 'keu': () => import('./modul/keu.json').then(j),\n 'lppm': () => import('./modul/lppm.json').then(j),\n 'spmi': () => import('./modul/spmi.json').then(j),\n 'iku': () => import('./modul/iku.json').then(j),\n 'kerjasama': () => import('./modul/kerjasama.json').then(j),\n 'layanan': () => import('./modul/layanan.json').then(j),\n 'arsip': () => import('./modul/arsip.json').then(j),\n 'helpdesk': () => import('./modul/helpdesk.json').then(j),\n 'sarpras': () => import('./modul/sarpras.json').then(j),\n 'perpustakaan': () => import('./modul/perpustakaan.json').then(j),\n 'repositori': () => import('./modul/repositori.json').then(j),\n 'humas': () => import('./modul/humas.json').then(j),\n 'portal': () => import('./modul/portal.json').then(j),\n 'crm': () => import('./modul/crm.json').then(j),\n};\n","'use client';\nimport * as React from 'react';\nimport indeksJson from './data/indeks.json';\nimport { MUAT_MODUL } from './data/muat';\nimport type { IndeksKatalog, ModulIndeks, ModulKatalog, Operasi, Skema, Sumber } from './tipe';\n\n/** Katalog bawaan: dibuat dari OpenAPI API SIAKAD saat paket dirilis. */\nexport const INDEKS_KATALOG = indeksJson as unknown as IndeksKatalog;\n\nexport interface KatalogContextValue {\n indeks: IndeksKatalog;\n /** Muat katalog satu modul. */\n muat: (key: string) => Promise<ModulKatalog>;\n /**\n * Scope token pengguna (mis. dari id_token SSO atau /v1/rbac/saya). Bila diisi, menu, tombol tambah/ubah/hapus,\n * dan aksi yang butuh scope lain disembunyikan, sama seperti backend menolaknya dengan 403.\n */\n scopes?: readonly string[] | null;\n /** Modul yang ditampilkan (bawaan semua). */\n modul?: readonly string[];\n}\n\nconst cacheBawaan = new Map<string, Promise<ModulKatalog>>();\n/** Muat katalog satu modul dari data bawaan paket (tanpa React). */\nexport function muatModulKatalog(key: string): Promise<ModulKatalog> {\n return muatBawaan(key);\n}\nfunction muatBawaan(key: string): Promise<ModulKatalog> {\n let p = cacheBawaan.get(key);\n if (!p) {\n const f = MUAT_MODUL[key];\n p = f ? f() : Promise.reject(new Error(`Modul \"${key}\" tidak ada di katalog.`));\n p.catch(() => cacheBawaan.delete(key));\n cacheBawaan.set(key, p);\n }\n return p;\n}\n\nconst KatalogContext = React.createContext<KatalogContextValue>({ indeks: INDEKS_KATALOG, muat: muatBawaan });\n\nexport interface KatalogProviderProps {\n children: React.ReactNode;\n /** Katalog sendiri (mis. dibuat ulang dari openapi.json terbaru dengan scripts/katalog/buat.mjs). */\n indeks?: IndeksKatalog;\n muat?: (key: string) => Promise<ModulKatalog>;\n scopes?: readonly string[] | null;\n modul?: readonly string[];\n}\n\n/**\n * Penyedia katalog fitur. Opsional: tanpa provider, komponen memakai katalog bawaan tanpa penyaringan scope.\n * <KatalogProvider scopes={token.scope.split(' ')}>…</KatalogProvider>\n */\nexport function KatalogProvider({ children, indeks = INDEKS_KATALOG, muat = muatBawaan, scopes, modul }: KatalogProviderProps) {\n const value = React.useMemo(() => ({ indeks, muat, scopes, modul }), [indeks, muat, scopes, modul]);\n return <KatalogContext.Provider value={value}>{children}</KatalogContext.Provider>;\n}\n\nexport function useKatalog(): KatalogContextValue {\n return React.useContext(KatalogContext);\n}\n\n/** Modul yang terlihat (sesuai `modul` dan scope di provider), dikelompokkan per grup. */\nexport function useModulTerlihat(): Array<{ grup: IndeksKatalog['grup'][number]; modul: ModulIndeks[] }> {\n const { indeks, scopes, modul } = useKatalog();\n return React.useMemo(() => {\n const boleh = (m: ModulIndeks) => (!modul || modul.includes(m.key)) && (!scopes || !m.scope?.length || m.scope.some((s) => scopes.includes(s)));\n return indeks.grup.map((g) => ({ grup: g, modul: indeks.modul.filter((m) => m.group === g.key && boleh(m)) })).filter((x) => x.modul.length);\n }, [indeks, scopes, modul]);\n}\n\nexport interface ModulState {\n modul: ModulKatalog | undefined;\n loading: boolean;\n error: Error | null;\n}\n\nconst hasilModul = new Map<string, ModulKatalog>();\n\n/** Muat katalog satu modul (operasi + skema). */\nexport function useModulKatalog(key: string | undefined | null): ModulState {\n const { muat } = useKatalog();\n const [state, setState] = React.useState<ModulState>(() => ({ modul: key ? hasilModul.get(key) : undefined, loading: Boolean(key && !hasilModul.has(key)), error: null }));\n React.useEffect(() => {\n if (!key) return void setState({ modul: undefined, loading: false, error: null });\n const hit = hasilModul.get(key);\n if (hit) return void setState({ modul: hit, loading: false, error: null });\n let hidup = true;\n setState({ modul: undefined, loading: true, error: null });\n muat(key).then(\n (m) => {\n hasilModul.set(key, m);\n if (hidup) setState({ modul: m, loading: false, error: null });\n },\n (e: Error) => hidup && setState({ modul: undefined, loading: false, error: e }),\n );\n return () => {\n hidup = false;\n };\n }, [key, muat]);\n return state;\n}\n\n/** Kunci modul untuk path sumber, mis. '/v1/kemahasiswaan/beasiswa' → 'kemahasiswaan'. */\nexport function modulUntukSumber(indeks: IndeksKatalog, id: string): string | undefined {\n if (indeks.peta[id]) return indeks.peta[id];\n // Sumber anak dengan nilai path terisi, mis. /v1/x/12/berkas → cocokkan pola.\n const norm = id.replace(/\\/\\d+(?=\\/|$)/g, '/{}');\n for (const [k, v] of Object.entries(indeks.peta)) if (k.replace(/\\{[^}]+\\}/g, '{}') === norm) return v;\n return undefined;\n}\n\nexport interface SumberState extends ModulState {\n sumber: Sumber | undefined;\n /** Operasi berdasarkan id. */\n op: (id: string | undefined) => Operasi | undefined;\n /** Skema baris (hasil daftar/detail). */\n skemaBaris: Skema | undefined;\n}\n\n/** Muat satu sumber data berdasarkan path-nya. */\nexport function useSumber(id: string): SumberState {\n const { indeks } = useKatalog();\n const key = modulUntukSumber(indeks, id);\n const st = useModulKatalog(key);\n const sumber = st.modul?.resources.find((r) => r.id === id);\n const op = React.useCallback((x: string | undefined) => (x ? st.modul?.ops[x] : undefined), [st.modul]);\n const contoh = sumber && (op(sumber.list) ?? op(sumber.get) ?? op(sumber.create));\n const skemaBaris = contoh?.it ? st.modul?.skema[contoh.it] : undefined;\n return {\n ...st,\n error: st.error ?? (!key ? new Error(`Sumber \"${id}\" tidak ada di katalog.`) : st.modul && !sumber ? new Error(`Sumber \"${id}\" tidak ada di modul ${key}.`) : null),\n loading: st.loading,\n sumber,\n op,\n skemaBaris,\n };\n}\n","'use client';\nimport * as React from 'react';\nimport { Upload } from 'lucide-react';\nimport { Tag } from '../components/actions';\nimport { DatePicker } from '../components/calendar';\nimport { Field, Input, Switch, Textarea } from '../components/forms';\nimport { Select } from '../components/select';\nimport { cn } from '../lib/cn';\nimport { PilihEntitas, SUMBER_ENTITAS, type SumberEntitas } from '../siakad/pilih';\nimport {\n galatDariServer,\n isianSkema,\n jenisIsian,\n keteranganIsian,\n labelKolom,\n labelNilai,\n nilaiAwal,\n penandaKolom,\n rapikanGalat,\n validasiBody,\n validasiNilai,\n type GalatForm,\n type NilaiForm,\n} from './aturan';\nimport { judulBaris } from './aturan';\nimport type { Acuan, Baris, Skema } from './tipe';\n\nconst teks = (v: unknown) => (v == null ? '' : String(v));\nconst gabung = (...xs: unknown[]) => xs.filter((x) => x != null && x !== '').join(' · ');\n\n// ================================================================ Acuan → sumber PilihEntitas\nconst cacheSumber = new Map<string, SumberEntitas>();\n\n/**\n * Sumber pilih-cari untuk isian referensi dari katalog (`rf`). Kunci tabel lama (NIM, NIDN, username, prodi,\n * fakultas) memakai sumber bawaan {@link SUMBER_ENTITAS}; tabel modul memakai endpoint daftarnya sendiri.\n */\nexport function sumberDariAcuan(rf: Acuan, nama = ''): SumberEntitas {\n const id = `${rf.l}|${rf.k}|${rf.d ?? ''}|${rf.q ?? ''}`;\n const hit = cacheSumber.get(id);\n if (hit) return hit;\n let s: SumberEntitas | undefined;\n if (rf.l === 'pengguna') s = SUMBER_ENTITAS.pengguna;\n else s = Object.values(SUMBER_ENTITAS).find((x) => x.path === rf.l && x.kunci === rf.k);\n if (!s && rf.l === '/v1/referensi/tahun-akademik') {\n s = {\n nama: 'tahun akademik',\n path: rf.l,\n kunci: rf.k,\n klien: true,\n judul: (r) => teks(r.nama ?? r.nama_tahun ?? r.tahun_id),\n meta: (r) => gabung(r.tahun_id, r.aktif === true || r.aktif === 'Y' ? 'Aktif' : null),\n placeholder: 'Pilih tahun akademik',\n };\n }\n if (!s) {\n const benda = labelKolom(nama || rf.l.split('/').pop() || '').toLowerCase();\n s = {\n nama: benda || 'data',\n path: rf.l,\n kunci: rf.k,\n satu: rf.d,\n klien: rf.q === 0,\n judul: (r) => judulBaris(r, rf.k),\n meta: (r) => gabung(r.kode && r.kode !== judulBaris(r) ? r.kode : null, r.jenis && labelNilai(r.jenis), r.status && labelNilai(r.status)),\n placeholder: `Cari ${benda || 'data'}`,\n };\n }\n cacheSumber.set(id, s);\n return s;\n}\n\n// ================================================================ Satu isian\nexport interface IsianSkemaProps {\n nama: string;\n skema: Skema;\n value: unknown;\n onValueChange: (v: unknown) => void;\n onBlur?: () => void;\n id?: string;\n disabled?: boolean;\n invalid?: boolean;\n /** Saringan tambahan untuk isian pilih-cari, mis. { prodi: '55201' }. */\n query?: Record<string, string | number | boolean | undefined>;\n}\n\nconst keTanggal = (s: unknown) => {\n if (typeof s !== 'string' || !/^\\d{4}-\\d{2}-\\d{2}/.test(s)) return null;\n const [y, m, d] = s.slice(0, 10).split('-').map(Number);\n return new Date(y, m - 1, d);\n};\nconst dariTanggal = (d: Date | null) => (d ? `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, '0')}-${String(d.getDate()).padStart(2, '0')}` : '');\n\n/** Kontrol untuk satu properti skema: pilih-cari, pilihan, tanggal, angka, saklar, berkas, daftar, JSON, atau teks. */\nexport function IsianSkema({ nama, skema: s, value: v, onValueChange: set, onBlur, id, disabled, invalid, query }: IsianSkemaProps) {\n const j = jenisIsian(nama, s);\n switch (j) {\n case 'acuan':\n return (\n <PilihEntitas\n id={id}\n jenis={sumberDariAcuan(s.rf!, nama)}\n value={teks(v) || null}\n onValueChange={(x) => {\n set(x ?? '');\n onBlur?.();\n }}\n query={query}\n disabled={disabled}\n />\n );\n case 'boolean':\n return (\n <span className=\"u-isian-saklar\">\n <Switch id={id} checked={Boolean(v)} onCheckedChange={(x) => set(x)} disabled={disabled} />\n <span>{v ? 'Ya' : 'Tidak'}</span>\n </span>\n );\n case 'enum':\n return (\n <Select<string>\n id={id}\n value={teks(v) || null}\n onValueChange={(x) => {\n set(x ?? '');\n onBlur?.();\n }}\n disabled={disabled}\n placeholder=\"Pilih…\"\n options={s.e!.filter((x) => x !== null).map((x) => ({ value: String(x), label: labelNilai(x) }))}\n />\n );\n case 'tanggal':\n return <DatePicker id={id} value={keTanggal(v)} onValueChange={(d) => (set(dariTanggal(d)), onBlur?.())} disabled={disabled} />;\n case 'teks-panjang':\n return <Textarea id={id} value={teks(v)} onChange={(e) => set(e.target.value)} onBlur={onBlur} rows={4} maxLength={s.max} disabled={disabled} aria-invalid={invalid || undefined} />;\n case 'json':\n return <IsianJson id={id} value={v} onValueChange={set} onBlur={onBlur} disabled={disabled} />;\n case 'daftar':\n return <IsianDaftar id={id} value={Array.isArray(v) ? v.map(String) : []} onValueChange={set} disabled={disabled} angka={s.i?.t === 'integer' || s.i?.t === 'number'} enumNilai={s.i?.e?.map(String)} />;\n case 'file':\n return (\n <label htmlFor={id} className={cn('u-isian-berkas', disabled && 'is-disabled')}>\n <Upload aria-hidden />\n <span>{typeof FileList !== 'undefined' && v instanceof FileList && v.length ? Array.from(v).map((f) => f.name).join(', ') : 'Pilih berkas…'}</span>\n <input id={id} type=\"file\" className=\"u-sr-only\" multiple={s.t === 'array'} onChange={(e) => set(e.target.files)} disabled={disabled} />\n </label>\n );\n default: {\n const type = { bulat: 'number', angka: 'number', waktu: 'datetime-local', email: 'email', url: 'url', jam: 'time', telepon: 'tel' }[j as string] ?? 'text';\n return (\n <Input\n id={id}\n type={type}\n inputMode={j === 'bulat' ? 'numeric' : j === 'angka' ? 'decimal' : undefined}\n value={teks(v)}\n onChange={(e) => set(e.target.value)}\n onBlur={onBlur}\n maxLength={s.max}\n min={s.min}\n max={s.mx}\n step={j === 'angka' ? 'any' : undefined}\n placeholder={s.ex !== undefined ? String(s.ex) : j === 'kode' ? 'huruf, angka, . _ - /' : undefined}\n disabled={disabled}\n className={j === 'kode' ? 'u-mono' : undefined}\n />\n );\n }\n }\n}\n\n/** Daftar nilai pendek (tag): Enter atau koma menambah. */\nexport function IsianDaftar({ value, onValueChange, id, disabled, angka, enumNilai }: { value: string[]; onValueChange: (v: string[]) => void; id?: string; disabled?: boolean; angka?: boolean; enumNilai?: string[] }) {\n const [draf, setDraf] = React.useState('');\n const tambah = (t: string) => {\n const x = t.trim().replace(/,$/, '');\n if (!x || value.includes(x) || (angka && Number.isNaN(Number(x))) || (enumNilai && !enumNilai.includes(x))) return;\n onValueChange([...value, x]);\n setDraf('');\n };\n if (enumNilai) {\n return (\n <div className=\"u-isian-daftar\" id={id}>\n {enumNilai.map((x) => (\n <Tag key={x} active={value.includes(x)} render={<button type=\"button\" disabled={disabled} />} onClick={() => onValueChange(value.includes(x) ? value.filter((y) => y !== x) : [...value, x])}>\n {labelNilai(x)}\n </Tag>\n ))}\n </div>\n );\n }\n return (\n <div className=\"u-isian-daftar\">\n {value.map((x) => (\n <Tag key={x} onRemove={disabled ? undefined : () => onValueChange(value.filter((y) => y !== x))}>\n {x}\n </Tag>\n ))}\n <Input\n id={id}\n value={draf}\n disabled={disabled}\n inputMode={angka ? 'numeric' : undefined}\n placeholder={value.length ? 'Tambah…' : 'Ketik lalu Enter'}\n onChange={(e) => (e.target.value.endsWith(',') ? tambah(e.target.value) : setDraf(e.target.value))}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n tambah(draf);\n } else if (e.key === 'Backspace' && !draf && value.length) onValueChange(value.slice(0, -1));\n }}\n onBlur={() => tambah(draf)}\n />\n </div>\n );\n}\n\n/** Objek/array JSON sebagai teks yang diurai saat keluar dari isian. */\nexport function IsianJson({ value, onValueChange, onBlur, id, disabled }: { value: unknown; onValueChange: (v: unknown) => void; onBlur?: () => void; id?: string; disabled?: boolean }) {\n const [t, setT] = React.useState(() => (value === undefined || value === null || value === '' ? '' : typeof value === 'string' ? value : JSON.stringify(value, null, 2)));\n return (\n <Textarea\n id={id}\n className=\"u-mono\"\n rows={5}\n value={t}\n disabled={disabled}\n placeholder='{\"kunci\": \"nilai\"}'\n onChange={(e) => {\n setT(e.target.value);\n onValueChange(e.target.value);\n }}\n onBlur={() => {\n try {\n if (t.trim()) {\n const x = JSON.parse(t);\n onValueChange(x);\n setT(JSON.stringify(x, null, 2));\n } else onValueChange(undefined);\n } catch {\n /* galat ditampilkan validasi */\n }\n onBlur?.();\n }}\n />\n );\n}\n\n// ================================================================ Formulir\nexport interface UseFormulirSkemaOpsi {\n /** Baris yang diubah (mode ubah). Tanpa ini = mode tambah dengan nilai bawaan skema. */\n data?: Baris | null;\n /** Nilai awal tambahan (mis. kolom induk pada sumber anak). */\n nilai?: NilaiForm;\n}\n\n/**\n * State formulir dari skema: nilai, galat per isian (diperiksa saat keluar isian, dihapus saat diketik),\n * dan `kirim()` yang memvalidasi semua isian lalu membentuk body seperti backend.\n */\nexport function useFormulirSkema(skema: Skema | undefined, { data, nilai: tambahan }: UseFormulirSkemaOpsi = {}) {\n const ubah = Boolean(data);\n const awal = React.useMemo(() => ({ ...nilaiAwal(skema, data), ...tambahan }), [skema, data, JSON.stringify(tambahan ?? {})]); // eslint-disable-line react-hooks/exhaustive-deps\n const [nilai, setNilai] = React.useState<NilaiForm>(awal);\n const [galat, setGalat] = React.useState<GalatForm>({});\n React.useEffect(() => {\n setNilai(awal);\n setGalat({});\n }, [awal]);\n const multipart = isianSkema(skema).some(([k, s]) => jenisIsian(k, s) === 'file');\n return {\n nilai,\n galat,\n ubah,\n setGalat,\n set: (k: string, v: unknown) => {\n setNilai((n) => ({ ...n, [k]: v }));\n setGalat((g) => (g[k] ? { ...g, [k]: '' } : g));\n },\n periksa: (k: string) => {\n const s = skema?.pr?.[k];\n if (!s) return;\n const g = validasiNilai(k, s, nilai[k]);\n setGalat((x) => ({ ...x, [k]: g ?? '' }));\n },\n reset: () => {\n setNilai(awal);\n setGalat({});\n },\n /** Validasi semua isian; kembalikan body atau null bila ada galat (galat ditampilkan). */\n kirim: (): Record<string, unknown> | FormData | null => {\n const r = validasiBody(skema, nilai, { ubah, awal, multipart });\n const ada = Object.keys(r.galat).length > 0;\n setGalat(r.galat);\n if (ada) {\n const k = Object.keys(r.galat)[0];\n requestAnimationFrame(() => document.getElementById(`isian-${k}`)?.focus());\n }\n return ada ? null : r.body;\n },\n /** Petakan galat 422 server ke isian. Kembalikan true bila ada yang terpetakan. */\n galatServer: (e: unknown) => {\n const g = galatDariServer(e);\n if (g) setGalat(g);\n return Boolean(g);\n },\n berubah: () => validasiBody(skema, nilai, { ubah, awal }).berubah.length > 0,\n };\n}\nexport type FormulirSkemaState = ReturnType<typeof useFormulirSkema>;\n\nexport interface FormulirSkemaProps {\n skema: Skema | undefined;\n form: FormulirSkemaState;\n /** Hanya tampilkan isian ini (urutannya diikuti). */\n kolom?: string[];\n /** Sembunyikan isian ini (mis. kolom induk yang sudah terisi). */\n sembunyi?: string[];\n /** Jumlah kolom grid di layar lebar. */\n columns?: 1 | 2;\n /** Ganti kontrol isian tertentu. */\n render?: Record<string, (p: IsianSkemaProps) => React.ReactNode>;\n /** Saringan pilih-cari per isian. */\n query?: Record<string, Record<string, string | number | boolean | undefined>>;\n disabled?: boolean;\n className?: string;\n}\n\n/**\n * Formulir dari skema katalog: label dari nama kolom, tanda wajib dari `required`, kontrol dari tipe, dan\n * galat yang sama dengan backend. Kunci data lain (NIM, NIDN, ID tabel) selalu pilih-cari, bukan ketik ID.\n */\nexport function FormulirSkema({ skema, form, kolom, sembunyi, columns = 2, render, query, disabled, className }: FormulirSkemaProps) {\n const wajib = new Set(skema?.rq ?? []);\n let props = isianSkema(skema);\n if (kolom) props = kolom.map((k) => [k, skema?.pr?.[k]] as [string, Skema]).filter(([, s]) => s && !penandaKolom(s).baca);\n if (sembunyi) props = props.filter(([k]) => !sembunyi.includes(k));\n if (!props.length) return <p className=\"u-field-description\">Tidak ada isian.</p>;\n return (\n <div className={cn('u-formulir-skema', className)} data-columns={columns}>\n {props.map(([k, s]) => {\n const j = jenisIsian(k, s);\n const lebar = columns === 1 || ['teks-panjang', 'json', 'file', 'daftar'].includes(j);\n const p: IsianSkemaProps = {\n nama: k,\n skema: s,\n value: form.nilai[k],\n onValueChange: (v) => form.set(k, v),\n onBlur: () => form.periksa(k),\n id: `isian-${k}`,\n disabled,\n invalid: Boolean(form.galat[k]),\n query: query?.[k],\n };\n const tanda = penandaKolom(s);\n const ket = [keteranganIsian(s), tanda.kelola ? 'Hanya pengelola' : null, s.max && j !== 'kode' && (j === 'teks' || j === 'teks-panjang') ? `Maksimal ${s.max} karakter` : null].filter(Boolean).join('. ');\n return (\n <Field\n key={k}\n label={labelKolom(k)}\n required={wajib.has(k) && !form.ubah}\n error={form.galat[k] ? rapikanGalat(form.galat[k]) : undefined}\n description={ket || undefined}\n className={lebar ? 'u-formulir-lebar' : undefined}\n >\n {render?.[k] ? render[k](p) : <IsianSkema {...p} />}\n </Field>\n );\n })}\n </div>\n );\n}\n","'use client';\nimport * as React from 'react';\nimport { ArrowRight, Check } from 'lucide-react';\nimport { Badge } from '../components/actions';\nimport { DescriptionList } from '../components/display';\nimport { cn } from '../lib/cn';\nimport { formatDate, formatNumber, formatRupiah } from '../lib/format';\nimport { judulOperasi, keabsahanAksi, labelKolom, labelNilai, nadaStatus } from './aturan';\nimport type { Baris, Operasi, Skema } from './tipe';\n\n// Dicocokkan per kata (dipisah _), agar mis. ruang_id tidak dianggap uang.\nconst UANG = /(^|_)(nominal|biaya|tarif|harga|jumlah_bayar|jumlah_tagihan|total_bayar|total_tagihan|saldo|anggaran|pagu|realisasi|denda|potongan|honor|gaji|nilai_kontrak|uang|rupiah|bayar|tagihan)(_|$)/i;\nconst STATUS = /(^status|_status$|^aktif$|^tahap$|^kondisi$)/i;\n\n/** Tampilan satu nilai sesuai tipe skema: lencana status, tanggal, rupiah, Ya/Tidak, tautan, atau teks. */\nexport function NilaiSel({ nama, value: v, skema: s, ringkas = true }: { nama: string; value: unknown; skema?: Skema; ringkas?: boolean }) {\n if (v === null || v === undefined || v === '') return <span className=\"u-nilai-kosong\">–</span>;\n if (typeof v === 'boolean' || s?.t === 'boolean') {\n const ya = v === true || v === 1 || v === '1' || v === 'Y' || v === 'true';\n return (\n <Badge variant={ya ? 'success' : 'neutral'}>\n {ya ? 'Ya' : 'Tidak'}\n </Badge>\n );\n }\n if ((s?.e || STATUS.test(nama)) && typeof v !== 'object') {\n return (\n <Badge variant={nadaStatus(v)} dot>\n {labelNilai(v)}\n </Badge>\n );\n }\n if (s?.f === 'date' || (typeof v === 'string' && /^\\d{4}-\\d{2}-\\d{2}$/.test(v))) return <span className=\"u-nilai-tanggal\">{formatDate(String(v), 'medium')}</span>;\n if (s?.f === 'date-time' || (typeof v === 'string' && /^\\d{4}-\\d{2}-\\d{2}[ T]\\d{2}:\\d{2}/.test(v))) {\n const d = new Date(String(v).replace(' ', 'T'));\n return <span className=\"u-nilai-tanggal\">{Number.isNaN(d.getTime()) ? String(v) : `${formatDate(d, 'medium')} ${String(d.getHours()).padStart(2, '0')}.${String(d.getMinutes()).padStart(2, '0')}`}</span>;\n }\n if ((typeof v === 'number' || (typeof v === 'string' && /^-?\\d+(\\.\\d+)?$/.test(v))) && (s?.t === 'number' || s?.t === 'integer' || typeof v === 'number')) {\n const n = Number(v);\n if (UANG.test(nama) && !/(^|_)id$/i.test(nama)) return <span className=\"u-nilai-angka\">{formatRupiah(n)}</span>;\n if (/^(id|.*_id|tahun.*|kode.*|nim|nidn|nik|nip|no.*|nomor.*)$/i.test(nama)) return <span className=\"u-mono\">{String(v)}</span>;\n return <span className=\"u-nilai-angka\">{formatNumber(n)}</span>;\n }\n if (typeof v === 'string' && /^https?:\\/\\//.test(v)) {\n return (\n <a href={v} target=\"_blank\" rel=\"noreferrer\" className=\"u-link u-nilai-tautan\">\n {v.replace(/^https?:\\/\\//, '').slice(0, 48)}\n </a>\n );\n }\n if (Array.isArray(v)) {\n if (v.every((x) => x === null || typeof x !== 'object'))\n return (\n <span className=\"u-nilai-daftar\">\n {v.slice(0, ringkas ? 4 : undefined).map((x, i) => (\n <Badge key={i} variant=\"neutral\">\n {labelNilai(x)}\n </Badge>\n ))}\n {ringkas && v.length > 4 && <small>+{v.length - 4}</small>}\n </span>\n );\n return <span className=\"u-nilai-kosong\">{v.length} butir</span>;\n }\n if (typeof v === 'object') {\n const o = v as Baris;\n const j = o.nama ?? o.judul ?? o.label;\n if (j) return <span>{String(j)}</span>;\n return ringkas ? <span className=\"u-nilai-kosong\">{Object.keys(o).length} kolom</span> : <pre className=\"u-nilai-json\">{JSON.stringify(o, null, 2)}</pre>;\n }\n const t = String(v);\n if (/^(kode|nim|nidn|nik|nip|username|uuid|no_|nomor)/i.test(nama)) return <span className=\"u-mono\">{t}</span>;\n if (ringkas && t.length > 90) return <span title={t}>{t.slice(0, 88)}…</span>;\n return <span className={ringkas ? undefined : 'u-nilai-panjang'}>{t}</span>;\n}\n\nexport interface DetailBarisProps {\n baris: Baris;\n skema?: Skema;\n /** Kolom yang ditampilkan (bawaan semua kecuali teknis). */\n kolom?: string[];\n sembunyi?: string[];\n className?: string;\n}\n\nconst TEKNIS = /^(uuid|deleted_at|password|secret|.*_hash|token)$/i;\n\n/** Daftar label: nilai untuk satu baris API, dengan format yang sama dengan sel tabel. */\nexport function DetailBaris({ baris, skema, kolom, sembunyi = [], className }: DetailBarisProps) {\n const keys = kolom ?? [...new Set([...Object.keys(skema?.pr ?? {}).filter((k) => k in baris), ...Object.keys(baris)])].filter((k) => !TEKNIS.test(k) && !sembunyi.includes(k));\n return <DescriptionList className={className} items={keys.map((k) => ({ label: labelKolom(k), value: <NilaiSel nama={k} value={baris[k]} skema={skema?.pr?.[k]} ringkas={false} /> }))} />;\n}\n\nexport interface AlurStatusProps {\n /** Nilai status yang mungkin (enum kolom status). */\n status: string[];\n /** Status sekarang. */\n sekarang?: string | null;\n /** Aksi berstatus dari katalog: menampilkan aksi yang menghubungkan tiap status. */\n aksi?: Operasi[];\n baris?: Baris | null;\n skemaBaris?: Skema;\n className?: string;\n}\n\n/**\n * Diagram alur status dari aturan backend (Status harus A, menjadi B): status yang sudah dilewati, sekarang,\n * dan aksi yang tersedia dari status sekarang.\n */\nexport function AlurStatus({ status, sekarang, aksi = [], baris, skemaBaris, className }: AlurStatusProps) {\n const urut = React.useMemo(() => {\n // Urutkan mengikuti rantai aksi bila bisa (draf → buka → seleksi → …), sisanya urutan enum.\n const ke = new Map<string, string>();\n for (const o of aksi) if (o.tr?.ke && o.tr.dari.length === 1) ke.set(o.tr.dari[0], o.tr.ke);\n const awal = status.find((s) => ![...ke.values()].includes(s) && ke.has(s)) ?? status[0];\n const out: string[] = [];\n let s: string | undefined = awal;\n while (s && !out.includes(s)) {\n out.push(s);\n s = ke.get(s);\n }\n return [...out, ...status.filter((x) => !out.includes(x))];\n }, [status, aksi]);\n const idx = sekarang ? urut.indexOf(sekarang) : -1;\n const tersedia = aksi.filter((o) => keabsahanAksi(o, baris ?? (sekarang ? { status: sekarang } : null), skemaBaris).boleh && o.tr);\n return (\n <div className={cn('u-alur-status', className)}>\n <ol>\n {urut.map((s, i) => (\n <li key={s} data-state={i < idx ? 'lewat' : i === idx ? 'sekarang' : 'nanti'} data-tone={nadaStatus(s)}>\n <span className=\"u-alur-titik\">{i < idx ? <Check aria-hidden /> : null}</span>\n <span>{labelNilai(s)}</span>\n </li>\n ))}\n </ol>\n {sekarang && tersedia.length > 0 && (\n <p className=\"u-alur-lanjut\">\n {tersedia.map((o) => (\n <span key={o.id}>\n {judulOperasi(o)} <ArrowRight aria-hidden /> <b>{labelNilai(o.tr!.ke ?? sekarang)}</b>\n </span>\n ))}\n </p>\n )}\n </div>\n );\n}\n","'use client';\nimport * as React from 'react';\nimport { Download, FileText, Paperclip, Pencil, Plus, RefreshCw, Trash2 } from 'lucide-react';\nimport type { Siakad } from 'unipo-siakad-sdk';\nimport { Badge, Button, Skeleton } from '../components/actions';\nimport { Dropzone } from '../components/calendar';\nimport { Empty, Tabs } from '../components/display';\nimport { DataTable, type DataColumn, type SortState } from '../components/data-table';\nimport { FilterBar, type FilterField } from '../components/filter';\nimport { ConfirmDialog, Dialog, DialogClose, Sheet, Tooltip, useToast, type MenuEntry } from '../components/overlays';\nimport { formatBytes, formatDate } from '../lib/format';\nimport { GalatApi } from '../siakad/galat';\nimport { PilihEntitas } from '../siakad/pilih';\nimport { invalidateSiakad, pesanGalat, useOptionalSiakad, useSiakad, useSiakadQuery } from '../siakad/provider';\nimport { useSiakadTable } from '../siakad/tabel';\nimport {\n isiPath,\n judulBaris,\n judulOperasi,\n keabsahanAksi,\n labelKolom,\n labelNilai,\n nilaiKunci,\n paramPath,\n pilihKolom,\n punyaScope,\n} from './aturan';\nimport { FormulirSkema, sumberDariAcuan, useFormulirSkema } from './isian';\nimport { useKatalog, useSumber, type SumberState } from './katalog';\nimport { AlurStatus, DetailBaris, NilaiSel } from './tampil';\nimport type { Baris, Operasi, Skema } from './tipe';\n\nconst SISTEM = new Set(['page', 'per_page', 'q', 'urut', 'dari', 'sampai', 'limit', 'offset', 'sort']);\n\n/** Field saringan dari parameter query endpoint daftar: enum → pilihan, boolean → saklar, kunci tabel → pilih-cari, dari/sampai → rentang tanggal. */\nexport function saringanDariOperasi(op: Operasi | undefined, sembunyi: string[] = []): FilterField[] {\n if (!op?.pa) return [];\n const out: FilterField[] = [];\n for (const p of op.pa) {\n if (p.in !== 'query' || SISTEM.has(p.nm) || sembunyi.includes(p.nm)) continue;\n const s = p.s;\n if (s.e?.length) out.push({ key: p.nm, label: labelKolom(p.nm), type: 'select', options: s.e.filter((x) => x !== null).map((x) => ({ value: String(x), label: labelNilai(x) })) });\n else if (s.t === 'boolean') out.push({ key: p.nm, label: labelKolom(p.nm), type: 'boolean' });\n else if (s.rf) {\n const src = sumberDariAcuan(s.rf, p.nm);\n out.push({\n key: p.nm,\n label: labelKolom(p.nm),\n type: 'custom',\n render: (v, set) => <PilihEntitas jenis={src} value={(v as string) ?? null} onValueChange={(x) => set(x ?? undefined)} size=\"sm\" />,\n });\n }\n }\n if (op.pa.some((p) => p.nm === 'dari') && op.pa.some((p) => p.nm === 'sampai')) out.push({ key: 'rentang', label: 'Tanggal', type: 'date-range', params: ['dari', 'sampai'] });\n return out;\n}\n\nasync function jalankan(siakad: Siakad, op: Operasi, nilaiPath: Record<string, unknown>, body?: unknown, query?: Record<string, unknown>) {\n const multipart = typeof FormData !== 'undefined' && body instanceof FormData;\n return siakad.request({ method: op.m, path: op.path, query: { ...(query as object), ...nilaiPath } as never, body, multipart, public: Boolean(op.pub) });\n}\n\n/** Nilai path item untuk satu baris: kunci item + parameter induk yang sudah diketahui. */\nfunction nilaiPathBaris(sumber: SumberState['sumber'], baris: Baris, induk?: Record<string, unknown>): Record<string, unknown> {\n const out: Record<string, unknown> = { ...induk };\n if (sumber?.key) out[sumber.key] = nilaiKunci(baris, sumber.key);\n return out;\n}\n\n// ================================================================ Tabel\nexport interface TabelSumberProps {\n /** Path sumber data, mis. '/v1/kemahasiswaan/beasiswa'. */\n sumber: string;\n /** Nilai parameter path induk untuk sumber anak, mis. { id: 12 } untuk /v1/x/{id}/anak. */\n induk?: Record<string, unknown>;\n /** Saringan tetap (tidak tampil di bilah saringan). */\n query?: Record<string, string | number | boolean | undefined>;\n /** Kolom yang ditampilkan (bawaan dipilih otomatis). */\n kolom?: string[];\n /** Ganti isi sel kolom tertentu. */\n sel?: Record<string, (b: Baris) => React.ReactNode>;\n onRowClick?: (b: Baris) => void;\n rowActions?: (b: Baris) => MenuEntry[];\n actions?: React.ReactNode;\n perPage?: number;\n /** Simpan saringan di URL. */\n syncUrl?: boolean;\n /** Muat ulang dari luar (naikkan angka). */\n muatUlang?: number;\n className?: string;\n}\n\n/** Tabel data dari endpoint daftar katalog: saringan dari parameter API, urut server, halaman, ekspor CSV. */\nexport function TabelSumber({ sumber: id, induk, query, kolom, sel, onRowClick, rowActions, actions, perPage = 20, syncUrl, className }: TabelSumberProps) {\n const st = useSumber(id);\n const list = st.op(st.sumber?.list);\n if (st.loading) return <Skeleton height={240} />;\n if (st.error) return <GalatApi error={st.error} title=\"Katalog tidak dapat dimuat\" />;\n if (!list) return <Empty title=\"Sumber ini tidak punya daftar\" description=\"Gunakan operasi detail atau aksi yang tersedia.\" bordered />;\n return <TabelSumberDalam st={st} list={list} induk={induk} query={query} kolom={kolom} sel={sel} onRowClick={onRowClick} rowActions={rowActions} actions={actions} perPage={perPage} syncUrl={syncUrl} className={className} />;\n}\n\nfunction TabelSumberDalam({ st, list, induk, query, kolom, sel, onRowClick, rowActions, actions, perPage, syncUrl, className }: Omit<TabelSumberProps, 'sumber'> & { st: SumberState; list: Operasi }) {\n const tetap = Object.keys(query ?? {});\n const fields = React.useMemo(() => saringanDariOperasi(list, [...tetap, ...paramPath(list.path)]), [list, tetap.join()]); // eslint-disable-line react-hooks/exhaustive-deps\n const bisaUrut = Boolean(list.pa?.some((p) => p.nm === 'urut'));\n const bisaCari = Boolean(list.pa?.some((p) => p.nm === 'q'));\n const [sort, setSort] = React.useState<SortState>(null);\n const path = isiPath(list.path, induk ?? {});\n const t = useSiakadTable<Baris>({\n key: `katalog:${path}:${JSON.stringify(query ?? {})}:${sort ? (sort.dir === 'desc' ? '-' : '') + sort.key : ''}`,\n fetch: (s, q, signal) => s.request<Baris[]>({ method: 'GET', path, query: { ...query, ...q, ...(sort ? { urut: (sort.dir === 'desc' ? '-' : '') + sort.key } : {}) } as never, public: Boolean(list.pub) }, { signal }),\n fields,\n perPage,\n syncUrl,\n });\n const rows = Array.isArray(t.data) ? t.data : undefined;\n const { semua, awal } = pilihKolom(st.skemaBaris, rows ?? [], 6);\n const tampil = kolom ?? awal;\n const columns: DataColumn<Baris>[] = semua\n .filter((k) => tampil.includes(k) || !kolom)\n .map((k) => ({\n key: k,\n header: labelKolom(k),\n label: labelKolom(k),\n sortable: bisaUrut,\n defaultHidden: !tampil.includes(k),\n cell: sel?.[k] ?? ((b: Baris) => <NilaiSel nama={k} value={b[k]} skema={st.skemaBaris?.pr?.[k]} />),\n value: (b: Baris) => (b[k] == null || typeof b[k] === 'object' ? '' : b[k]),\n mobile: k === tampil[0] ? 'title' : /status/.test(k) ? 'badge' : undefined,\n }));\n return (\n <DataTable<Baris>\n className={className}\n {...t.tableProps}\n rows={rows}\n columns={columns}\n rowKey={(b) => String(nilaiKunci(b, st.sumber?.key) ?? JSON.stringify(b))}\n onRowClick={onRowClick}\n rowActions={rowActions}\n sort={bisaUrut ? sort : undefined}\n onSortChange={bisaUrut ? setSort : undefined}\n exportCsv={st.sumber?.title}\n toolbar={fields.length || bisaCari ? <FilterBar fields={fields} {...t.filterProps} search={bisaCari ? { placeholder: `Cari ${st.sumber?.title.toLowerCase() ?? ''}` } : false} resultLabel={st.sumber?.title.toLowerCase()} /> : undefined}\n actions={actions}\n empty={{ icon: <FileText />, title: `Belum ada ${st.sumber?.title.toLowerCase() ?? 'data'}` }}\n />\n );\n}\n\n// ================================================================ Aksi baris\nexport interface TombolAksiProps {\n op: Operasi;\n /** Baris sasaran (aksi item) atau kosong (aksi koleksi). */\n baris?: Baris | null;\n /** Nilai parameter path, mis. { id: 12 }. */\n nilaiPath: Record<string, unknown>;\n skemaBaris?: Skema;\n onSelesai?: (hasil: unknown) => void;\n /** Tampilan tombol. */\n variant?: 'primary' | 'outline' | 'ghost' | 'destructive' | 'secondary';\n size?: 'sm' | 'md';\n /** Tetap tampil (nonaktif dengan alasan) bila status tidak memenuhi. Bawaan disembunyikan. */\n tampilkanTakSah?: boolean;\n}\n\nconst BAHAYA = /(hapus|tolak|batal|cabut|blokir|musnah|nonaktif|tutup|kembalikan|reset)/i;\n\n/**\n * Satu aksi alur kerja (POST /{id}/aksi): disembunyikan bila status baris tidak sesuai aturan backend, membuka\n * formulir bila aksi punya isian (catatan, alasan, nilai), atau konfirmasi bila tidak.\n */\nexport function TombolAksi({ op, baris, nilaiPath, skemaBaris, onSelesai, variant, size = 'sm', tampilkanTakSah }: TombolAksiProps) {\n const siakad = useSiakad();\n const { scopes } = useKatalog();\n const toast = useToast();\n const [buka, setBuka] = React.useState(false);\n const sah = keabsahanAksi(op, baris, skemaBaris, scopes);\n const judul = judulOperasi(op);\n const punyaIsian = Boolean(op.b && Object.keys(op.b.s.pr ?? {}).length);\n const form = useFormulirSkema(op.b?.s);\n const [galat, setGalat] = React.useState<unknown>(null);\n const [sibuk, setSibuk] = React.useState(false);\n const v = variant ?? (BAHAYA.test(judul) ? 'outline' : 'primary');\n if (!sah.boleh && !tampilkanTakSah) return null;\n const selesai = (hasil: unknown) => {\n toast.add({ title: `${judul} berhasil`, description: op.tr?.ke ? `Status menjadi ${labelNilai(op.tr.ke)}.` : undefined, type: 'success' });\n invalidateSiakad('katalog:');\n onSelesai?.(hasil);\n };\n const tombol = (\n <Button variant={v} size={size} disabled={!sah.boleh}>\n {judul}\n </Button>\n );\n if (!sah.boleh) return <Tooltip content={sah.alasan}>{<span tabIndex={0}>{tombol}</span>}</Tooltip>;\n if (!punyaIsian) {\n return (\n <ConfirmDialog\n trigger={tombol}\n title={`${judul}?`}\n description={[baris ? judulBaris(baris) : null, op.tr?.ke ? `Status akan menjadi ${labelNilai(op.tr.ke)}.` : null, op.ds?.replace(/(Pengelola modul|Pemilik data( atau pengelola)?|Admin modul)\\.\\s*/, '').replace(/Status harus[^.]*\\.\\s*/, '')].filter(Boolean).join(' ') || undefined}\n confirmLabel={judul}\n tone={BAHAYA.test(judul) ? 'danger' : 'primary'}\n onConfirm={async () => {\n try {\n const r = await jalankan(siakad, op, nilaiPath, op.m === 'POST' ? {} : undefined);\n selesai(r.data);\n } catch (e) {\n toast.add({ title: `${judul} gagal`, description: pesanGalat(e), type: 'error' });\n throw e;\n }\n }}\n />\n );\n }\n return (\n <Dialog\n open={buka}\n onOpenChange={(o) => {\n setBuka(o);\n if (!o) {\n form.reset();\n setGalat(null);\n }\n }}\n trigger={tombol}\n title={judul}\n description={baris ? judulBaris(baris) : op.ds}\n size=\"md\"\n footer={\n <>\n <DialogClose render={<Button variant=\"ghost\" />}>Batal</DialogClose>\n <Button\n variant={BAHAYA.test(judul) ? 'destructive' : 'primary'}\n loading={sibuk}\n onClick={async () => {\n const body = form.kirim();\n if (!body) return;\n setSibuk(true);\n setGalat(null);\n try {\n const r = await jalankan(siakad, op, nilaiPath, body);\n setBuka(false);\n selesai(r.data);\n } catch (e) {\n if (!form.galatServer(e)) setGalat(e);\n } finally {\n setSibuk(false);\n }\n }}\n >\n {judul}\n </Button>\n </>\n }\n >\n {galat ? <GalatApi error={galat} title={`${judul} gagal`} /> : null}\n <FormulirSkema skema={op.b?.s} form={form} columns={1} />\n </Dialog>\n );\n}\n\n/** Semua aksi alur kerja yang sah untuk satu baris, berderet. */\nexport function AksiSumber({ sumber: id, baris, induk, onSelesai, tampilkanTakSah }: { sumber: string; baris: Baris; induk?: Record<string, unknown>; onSelesai?: (hasil: unknown) => void; tampilkanTakSah?: boolean }) {\n const st = useSumber(id);\n if (!st.sumber) return null;\n const ops = st.sumber.actions.map((a) => st.op(a)).filter((o): o is Operasi => Boolean(o) && o!.m !== 'GET');\n if (!ops.length) return null;\n return (\n <div className=\"u-aksi-sumber\">\n {ops.map((o) => (\n <TombolAksi key={o.id} op={o} baris={baris} nilaiPath={nilaiPathBaris(st.sumber, baris, induk)} skemaBaris={st.skemaBaris} onSelesai={onSelesai} tampilkanTakSah={tampilkanTakSah} />\n ))}\n </div>\n );\n}\n\n// ================================================================ Formulir tambah/ubah\nexport interface FormulirSumberProps {\n sumber: string;\n /** Baris yang diubah; kosong = tambah. */\n baris?: Baris | null;\n induk?: Record<string, unknown>;\n /** Nilai awal tambahan untuk mode tambah. */\n nilai?: Record<string, unknown>;\n open?: boolean;\n onOpenChange?: (o: boolean) => void;\n trigger?: React.ReactElement;\n onTersimpan?: (b: Baris) => void;\n /** Tampil sebagai panel samping (bawaan) atau dialog. */\n tampilan?: 'sheet' | 'dialog';\n}\n\n/** Panel tambah/ubah satu sumber data dengan validasi backend dan galat 422 per isian. */\nexport function FormulirSumber({ sumber: id, baris, induk, nilai, open, onOpenChange, trigger, onTersimpan, tampilan = 'sheet' }: FormulirSumberProps) {\n const st = useSumber(id);\n const siakad = useSiakad();\n const toast = useToast();\n const ubah = Boolean(baris);\n const op = st.op(ubah ? st.sumber?.update : st.sumber?.create);\n const skema = op?.b?.s;\n const form = useFormulirSkema(skema, { data: baris ?? undefined, nilai });\n const [galat, setGalat] = React.useState<unknown>(null);\n const [sibuk, setSibuk] = React.useState(false);\n const [inner, setInner] = React.useState(false);\n const isOpen = open ?? inner;\n const setOpen = (o: boolean) => {\n setInner(o);\n onOpenChange?.(o);\n if (!o) setGalat(null);\n };\n if (!op) return null;\n const nama = st.sumber?.title.toLowerCase() ?? 'data';\n const W = tampilan === 'sheet' ? Sheet : Dialog;\n return (\n <W\n open={isOpen}\n onOpenChange={setOpen}\n trigger={trigger}\n size=\"lg\"\n title={ubah ? `Ubah ${nama}` : `Tambah ${nama}`}\n description={ubah ? judulBaris(baris, st.sumber?.key) : op.ds?.replace(/(Pengelola modul|Pemilik data( atau pengelola)?|Admin modul)\\.\\s*/, '') || undefined}\n footer={\n <>\n <DialogClose render={<Button variant=\"ghost\" />}>Batal</DialogClose>\n <Button\n loading={sibuk}\n onClick={async () => {\n const body = form.kirim();\n if (!body) return;\n if (ubah && body && !(body instanceof FormData) && !Object.keys(body).length) {\n setOpen(false);\n return;\n }\n setSibuk(true);\n setGalat(null);\n try {\n const nilaiPath = ubah ? nilaiPathBaris(st.sumber, baris!, induk) : { ...induk };\n const r = await jalankan(siakad, op, nilaiPath, body);\n toast.add({ title: ubah ? 'Perubahan tersimpan' : `${st.sumber?.title} ditambahkan`, type: 'success' });\n invalidateSiakad('katalog:');\n setOpen(false);\n if (!ubah) form.reset();\n onTersimpan?.((r.data as Baris) ?? {});\n } catch (e) {\n if (!form.galatServer(e)) setGalat(e);\n } finally {\n setSibuk(false);\n }\n }}\n >\n {ubah ? 'Simpan perubahan' : `Tambah ${nama}`}\n </Button>\n </>\n }\n >\n {galat ? <GalatApi error={galat} title=\"Gagal menyimpan\" /> : null}\n <FormulirSkema skema={skema} form={form} sembunyi={Object.keys(induk ?? {})} />\n </W>\n );\n}\n\n// ================================================================ Lampiran (sumber /berkas)\n/** Lampiran baris (PusatData berkas): daftar, unggah (seret berkas), unduh, dan hapus. */\nexport function LampiranSumber({ path, bisaUbah = true }: { path: string; bisaUbah?: boolean }) {\n const siakad = useSiakad();\n const toast = useToast();\n const q = useSiakadQuery<Baris[]>(['katalog:berkas', path], (s, signal) => s.request({ method: 'GET', path }, { signal }));\n const [sibuk, setSibuk] = React.useState(false);\n const unggah = async (files: File[]) => {\n setSibuk(true);\n try {\n for (const f of files) {\n const fd = new FormData();\n fd.append('berkas', f);\n await siakad.request({ method: 'POST', path, body: fd, multipart: true });\n }\n toast.add({ title: `${files.length} berkas diunggah`, type: 'success' });\n q.refetch();\n } catch (e) {\n toast.add({ title: 'Gagal mengunggah', description: pesanGalat(e), type: 'error' });\n } finally {\n setSibuk(false);\n }\n };\n const unduh = async (b: Baris) => {\n try {\n const r = await siakad.request<unknown>({ method: 'GET', path: `${path}/${b.uuid}` });\n const url = (r.data as Baris | undefined)?.url;\n if (typeof url === 'string') window.open(url, '_blank', 'noopener');\n } catch (e) {\n toast.add({ title: 'Gagal mengunduh', description: pesanGalat(e), type: 'error' });\n }\n };\n return (\n <div className=\"u-lampiran\">\n {q.error ? <GalatApi error={q.error} onRetry={q.refetch} /> : null}\n {q.loading && !q.data ? <Skeleton height={64} /> : null}\n {Array.isArray(q.data) && q.data.length > 0 && (\n <ul className=\"u-lampiran-daftar\">\n {q.data.map((b) => (\n <li key={String(b.uuid)}>\n <Paperclip aria-hidden />\n <span>\n <b>{String(b.nama ?? b.uuid)}</b>\n <small>{[b.jenis, typeof b.ukuran === 'number' ? formatBytes(b.ukuran) : null, b.created_at ? formatDate(String(b.created_at), 'medium') : null].filter(Boolean).join(' · ')}</small>\n </span>\n <Button variant=\"ghost\" size=\"sm\" iconOnly aria-label=\"Unduh\" onClick={() => unduh(b)}>\n <Download />\n </Button>\n {bisaUbah && (\n <ConfirmDialog\n trigger={\n <Button variant=\"ghost\" size=\"sm\" iconOnly aria-label=\"Hapus lampiran\">\n <Trash2 />\n </Button>\n }\n title=\"Hapus lampiran?\"\n description={String(b.nama ?? '')}\n confirmLabel=\"Hapus lampiran\"\n onConfirm={async () => {\n await siakad.request({ method: 'DELETE', path: `${path}/${b.uuid}` });\n q.refetch();\n }}\n />\n )}\n </li>\n ))}\n </ul>\n )}\n {Array.isArray(q.data) && q.data.length === 0 && !bisaUbah && <p className=\"u-field-description\">Belum ada lampiran.</p>}\n {bisaUbah && <Dropzone onFiles={unggah} multiple disabled={sibuk} title={sibuk ? 'Mengunggah…' : 'Seret berkas ke sini atau pilih'} hint=\"PDF, gambar, dokumen Office/ODF, CSV, TXT, ZIP\" maxSize={20 * 1024 * 1024} />}\n </div>\n );\n}\n\n// ================================================================ Detail baris\nexport interface DetailSumberProps {\n sumber: string;\n baris: Baris;\n induk?: Record<string, unknown>;\n onUbah?: () => void;\n onHapus?: () => void;\n onBerubah?: (b: Baris) => void;\n}\n\n/** Isi panel detail: alur status, aksi yang sah, data lengkap (dimuat ulang dari endpoint detail), lampiran, dan data anak. */\nexport function DetailSumber({ sumber: id, baris, induk, onBerubah }: DetailSumberProps) {\n const st = useSumber(id);\n const get = st.op(st.sumber?.get);\n const nilaiPath = nilaiPathBaris(st.sumber, baris, induk);\n const kunci = st.sumber?.key ? nilaiKunci(baris, st.sumber.key) : undefined;\n const q = useSiakadQuery<Baris>(['katalog:detail', get?.path, nilaiPath], (s, signal) => s.request({ method: 'GET', path: get!.path, query: nilaiPath as never, public: Boolean(get?.pub) }, { signal }), { enabled: Boolean(get && kunci) });\n const b = (q.data && typeof q.data === 'object' && !Array.isArray(q.data) ? q.data : null) ?? baris;\n const aksi = (st.sumber?.actions ?? []).map((a) => st.op(a)).filter((o): o is Operasi => Boolean(o));\n const kolomStatus = st.skemaBaris?.pr?.status?.e ? 'status' : undefined;\n const anak = (st.sumber?.children ?? []).filter((c) => !/\\/berkas$/.test(c));\n const berkas = (st.sumber?.children ?? []).find((c) => /\\/berkas$/.test(c));\n const tabs = [\n {\n value: 'data',\n label: 'Data',\n content: (\n <div className=\"u-detail-sumber\">\n {kolomStatus && aksi.some((o) => o.tr) && <AlurStatus status={st.skemaBaris!.pr!.status.e!.map(String)} sekarang={b.status == null ? null : String(b.status)} aksi={aksi} baris={b} skemaBaris={st.skemaBaris} />}\n {q.error ? <GalatApi error={q.error} onRetry={q.refetch} variant=\"warning\" title=\"Data terbaru tidak dapat dimuat\" /> : null}\n <DetailBaris baris={b} skema={st.skemaBaris} />\n </div>\n ),\n },\n ...(berkas && st.sumber?.key\n ? [{ value: 'berkas', label: 'Lampiran', icon: <Paperclip />, content: <LampiranSumber path={isiPath(berkas, { ...induk, [paramPath(berkas)[0] ?? 'id']: kunci })} bisaUbah={Boolean(st.sumber.update)} /> }]\n : []),\n ...anak.map((c) => ({\n value: c,\n label: st.modul?.resources.find((r) => r.id === c)?.title ?? labelKolom(c.split('/').pop() ?? c),\n content: <KelolaSumber sumber={c} induk={{ ...induk, [paramPath(c).at(-1) ?? 'id']: kunci }} ringkas />,\n })),\n ];\n return (\n <div className=\"u-detail-sumber-wrap\">\n {aksi.length > 0 && <AksiSumber sumber={id} baris={b} induk={induk} onSelesai={(h) => (q.refetch(), h && typeof h === 'object' && onBerubah?.(h as Baris))} />}\n {tabs.length > 1 ? <Tabs items={tabs} defaultValue=\"data\" /> : tabs[0].content}\n </div>\n );\n}\n\n// ================================================================ Kelola: tabel + tambah + detail + ubah + hapus + aksi\nexport interface KelolaSumberProps extends Omit<TabelSumberProps, 'onRowClick' | 'rowActions' | 'actions'> {\n /** Judul di atas tabel (bawaan judul sumber). Isi false untuk tanpa judul. */\n judul?: React.ReactNode | false;\n deskripsi?: React.ReactNode;\n /** Sembunyikan tombol tambah/ubah/hapus (tampilan baca saja). */\n bacaSaja?: boolean;\n /** Tampilan ringkas untuk tab di dalam detail (tanpa judul). */\n ringkas?: boolean;\n /** Tombol tambahan di bilah alat. */\n actions?: React.ReactNode;\n}\n\n/**\n * Halaman kelola lengkap satu sumber data API SIAKAD: daftar dengan saringan, tambah, detail (alur status, aksi\n * yang sah menurut backend, lampiran, data anak), ubah, dan hapus. Tombol disembunyikan bila scope token kurang.\n *\n * <KelolaSumber sumber=\"/v1/kemahasiswaan/beasiswa\" />\n */\nexport function KelolaSumber({ sumber: id, judul, deskripsi, bacaSaja, ringkas, induk, actions, ...tabel }: KelolaSumberProps) {\n const st = useSumber(id);\n const { scopes } = useKatalog();\n const siakad = useOptionalSiakad();\n const toast = useToast();\n const [detail, setDetail] = React.useState<Baris | null>(null);\n const [ubah, setUbah] = React.useState<Baris | null>(null);\n const [tambah, setTambah] = React.useState(false);\n const [hapus, setHapus] = React.useState<Baris | null>(null);\n if (st.loading) return <Skeleton height={280} />;\n if (st.error || !st.sumber) return <GalatApi error={st.error ?? new Error('Sumber tidak ditemukan.')} title=\"Katalog tidak dapat dimuat\" />;\n const s = st.sumber;\n const opCreate = st.op(s.create);\n const opUpdate = st.op(s.update);\n const opDel = st.op(s.del);\n const boleh = (o: Operasi | undefined) => Boolean(o) && !bacaSaja && punyaScope(o!, scopes);\n const nama = s.title.toLowerCase();\n const rowActions = (b: Baris): MenuEntry[] => [\n { label: 'Lihat detail', onSelect: () => setDetail(b) },\n ...(boleh(opUpdate) ? [{ label: 'Ubah', icon: <Pencil />, onSelect: () => setUbah(b) }] : []),\n ...(boleh(opDel) ? [{ type: 'separator' as const }, { label: 'Hapus', icon: <Trash2 />, destructive: true, onSelect: () => setHapus(b) }] : []),\n ];\n return (\n <section className=\"u-kelola-sumber\" data-ringkas={ringkas || undefined}>\n {judul !== false && !ringkas && (\n <header className=\"u-kelola-head\">\n <div>\n <h2>{judul ?? s.title}</h2>\n {deskripsi !== undefined ? deskripsi && <p>{deskripsi}</p> : <p className=\"u-mono\">{s.base}</p>}\n </div>\n <div className=\"u-kelola-head-aksi\">\n {(st.op(s.list)?.sc ?? []).map((sc) => (\n <Badge key={sc} variant=\"neutral\">\n {sc}\n </Badge>\n ))}\n </div>\n </header>\n )}\n <TabelSumber\n {...tabel}\n sumber={id}\n induk={induk}\n onRowClick={st.sumber.get || st.sumber.item ? setDetail : undefined}\n rowActions={rowActions}\n actions={\n <>\n {actions}\n <Tooltip content=\"Muat ulang\">\n <Button variant=\"ghost\" size=\"sm\" iconOnly aria-label=\"Muat ulang\" onClick={() => invalidateSiakad('katalog:')}>\n <RefreshCw />\n </Button>\n </Tooltip>\n {boleh(opCreate) && (\n <Button size=\"sm\" onClick={() => setTambah(true)}>\n <Plus /> Tambah {ringkas ? '' : nama}\n </Button>\n )}\n </>\n }\n />\n {boleh(opCreate) && <FormulirSumber sumber={id} induk={induk} open={tambah} onOpenChange={setTambah} onTersimpan={(b) => b && Object.keys(b).length && setDetail(b)} />}\n {ubah && <FormulirSumber sumber={id} induk={induk} baris={ubah} open onOpenChange={(o) => !o && setUbah(null)} onTersimpan={(b) => detail && setDetail({ ...detail, ...b })} />}\n <Sheet\n open={Boolean(detail)}\n onOpenChange={(o) => !o && setDetail(null)}\n size=\"lg\"\n title={detail ? judulBaris(detail, s.key) || s.title : s.title}\n description={s.title}\n footer={\n detail && (boleh(opUpdate) || boleh(opDel)) ? (\n <>\n {boleh(opDel) && (\n <Button variant=\"ghost\" onClick={() => setHapus(detail)}>\n <Trash2 /> Hapus\n </Button>\n )}\n {boleh(opUpdate) && (\n <Button variant=\"outline\" onClick={() => setUbah(detail)}>\n <Pencil /> Ubah\n </Button>\n )}\n </>\n ) : undefined\n }\n >\n {detail && <DetailSumber sumber={id} baris={detail} induk={induk} onBerubah={(b) => setDetail({ ...detail, ...b })} />}\n </Sheet>\n <ConfirmDialog\n open={Boolean(hapus)}\n onOpenChange={(o) => !o && setHapus(null)}\n title={`Hapus ${nama}?`}\n description={hapus ? `${judulBaris(hapus, s.key)} akan dihapus. Data yang sudah dipakai di tempat lain bisa ditolak server.` : undefined}\n confirmLabel={`Hapus ${nama}`}\n onConfirm={async () => {\n if (!hapus || !siakad || !opDel) return;\n try {\n await jalankan(siakad, opDel, nilaiPathBaris(s, hapus, induk));\n toast.add({ title: `${s.title} dihapus`, type: 'success' });\n invalidateSiakad('katalog:');\n if (detail && nilaiKunci(detail, s.key) === nilaiKunci(hapus, s.key)) setDetail(null);\n } catch (e) {\n toast.add({ title: 'Gagal menghapus', description: pesanGalat(e), type: 'error' });\n throw e;\n }\n }}\n />\n </section>\n );\n}\n\n/** Alias pendek: `<Fitur sumber=\"/v1/sarpras/peminjaman\" />`. */\nexport const Fitur = KelolaSumber;\n","'use client';\nimport * as React from 'react';\nimport { Boxes, ShieldCheck, Database, GraduationCap, Users, Compass, Landmark, FileCheck2, Warehouse, Megaphone, KeyRound, UserRound, Bell, Plug, Send, Gauge, ListTree, Building2, BookOpen, CalendarDays, DoorOpen, UserPlus, MonitorPlay, ClipboardCheck, MessageSquareText, Route, Repeat, Award, Briefcase, IdCard, Wallet, FlaskConical, BadgeCheck, Target, Handshake, Archive, LifeBuoy, BookMarked, Library, Newspaper, Contact } from 'lucide-react';\n\nconst PETA: Record<string, React.ComponentType> = { ShieldCheck, Database, GraduationCap, Users, Compass, Landmark, FileCheck2, Warehouse, Megaphone, KeyRound, UserRound, Bell, Plug, Send, Gauge, ListTree, Building2, BookOpen, CalendarDays, DoorOpen, UserPlus, MonitorPlay, ClipboardCheck, MessageSquareText, Route, Repeat, Award, Briefcase, IdCard, Wallet, FlaskConical, BadgeCheck, Target, Handshake, Archive, LifeBuoy, BookMarked, Library, Newspaper, Contact };\n\n/** Ikon modul/grup katalog dari nama ikon lucide di scripts/katalog/modul.mjs. */\nexport function IkonKatalog({ nama }: { nama: string | undefined }) {\n const I = (nama && PETA[nama]) || Boxes;\n return <I />;\n}\n","'use client';\nimport * as React from 'react';\nimport { ArrowLeft, ChevronRight, Play, Search, Workflow } from 'lucide-react';\nimport { Badge, Button, Skeleton } from '../components/actions';\nimport { Card, Empty } from '../components/display';\nimport { Combobox } from '../components/select';\nimport type { NavGroup } from '../components/layout';\nimport { cn } from '../lib/cn';\nimport { GalatApi } from '../siakad/galat';\nimport { useSiakad } from '../siakad/provider';\nimport { isiPath, judulOperasi, labelKolom, paramPath, punyaScope, rapikanGalat, validasiParameter } from './aturan';\nimport { FormulirSkema, IsianSkema, useFormulirSkema } from './isian';\nimport { IkonKatalog } from './ikon';\nimport { IkonKotak } from '../ikon/kotak';\nimport { ADEGAN, Ilustrasi } from '../ikon/ilustrasi';\nimport { Animasi } from '../components/animasi';\nimport { KelolaSumber } from './kelola';\nimport { useKatalog, useModulKatalog, useModulTerlihat } from './katalog';\nimport { DetailBaris, NilaiSel } from './tampil';\nimport type { Baris, ModulIndeks, Operasi } from './tipe';\nimport { Field } from '../components/forms';\nimport { DataTable } from '../components/data-table';\n\n// ================================================================ Menu\nexport interface MenuKatalogOpsi {\n /** Tautan modul, mis. (m) => `/fitur/${m}`. */\n href?: (modul: string) => string;\n onClick?: (modul: string) => void;\n /** Tampilkan sumber data sebagai sub-menu. */\n sumber?: boolean;\n hrefSumber?: (modul: string, sumber: string) => string;\n}\n\n/** Grup menu Sidebar dari katalog (sesuai scope di KatalogProvider). */\nexport function useMenuKatalog({ href, onClick, sumber, hrefSumber }: MenuKatalogOpsi = {}): NavGroup[] {\n const grup = useModulTerlihat();\n return grup.map(({ grup: g, modul }) => ({\n label: g.title,\n items: modul.map((m) => ({\n key: m.key,\n label: m.title,\n icon: <IkonKatalog nama={m.icon} />,\n href: href?.(m.key),\n onClick: onClick ? () => onClick(m.key) : undefined,\n children: sumber ? m.sumber.map((s) => ({ key: `${m.key}:${s.id}`, label: s.title, href: hrefSumber?.(m.key, s.id) })) : undefined,\n })),\n }));\n}\n\n// ================================================================ Daftar modul\nexport interface DaftarModulProps {\n /** Batasi ke grup tertentu, mis. ['akademik']. */\n grup?: string[];\n onPilih?: (modul: ModulIndeks) => void;\n href?: (modul: string) => string;\n className?: string;\n}\n\n/** Kartu modul per grup (Sistem & Akses, Referensi, Akademik, …) dengan jumlah sumber data dan operasi. */\nexport function DaftarModul({ grup, onPilih, href, className }: DaftarModulProps) {\n const semua = useModulTerlihat().filter((g) => !grup || grup.includes(g.grup.key));\n return (\n <div className={cn('u-daftar-modul', className)}>\n {semua.map(({ grup: g, modul }) => (\n <section key={g.key}>\n <h3>\n <IkonKotak nada={ADEGAN[g.key]?.nada} ukuran=\"sm\" gaya=\"lembut\">\n <IkonKatalog nama={g.icon} />\n </IkonKotak>{' '}\n {g.title}\n </h3>\n <div className=\"u-daftar-modul-kisi\">\n {modul.map((m, i) => (\n <Animasi key={m.key} jenis=\"masuk\" tunda={i} pemicu=\"terlihat\">\n <Card\n interactive\n className=\"u-kartu-modul\"\n render={href ? <a href={href(m.key)} /> : <button type=\"button\" onClick={() => onPilih?.(m)} />}\n >\n <IkonKotak nada={ADEGAN[m.key]?.nada ?? ADEGAN[m.group]?.nada} ukuran=\"lg\">\n <IkonKatalog nama={m.icon} />\n </IkonKotak>\n <span className=\"u-kartu-modul-teks\">\n <b>{m.title}</b>\n <small>{m.desc}</small>\n <span className=\"u-kartu-modul-meta\">\n {m.sumber.length} data · {m.jumlahOperasi} operasi\n </span>\n </span>\n <ChevronRight className=\"u-kartu-modul-panah\" aria-hidden />\n </Card>\n </Animasi>\n ))}\n </div>\n </section>\n ))}\n </div>\n );\n}\n\n// ================================================================ Halaman modul\nexport interface HalamanModulProps {\n modul: string;\n /** Sumber aktif (terkendali), mis. dari URL. */\n sumber?: string | null;\n onSumberChange?: (id: string | null) => void;\n onKembali?: () => void;\n className?: string;\n}\n\n/**\n * Satu modul lengkap: daftar sumber data di kiri, halaman kelola di kanan, plus operasi mandiri (laporan, impor,\n * sinkronisasi) yang dijalankan dengan formulir parameter.\n */\nexport function HalamanModul({ modul: key, sumber: sumberProp, onSumberChange, onKembali, className }: HalamanModulProps) {\n const { indeks, scopes } = useKatalog();\n const info = indeks.modul.find((m) => m.key === key);\n const st = useModulKatalog(key);\n const [inner, setInner] = React.useState<string | null>(null);\n const aktif = sumberProp !== undefined ? sumberProp : inner;\n const pilih = (id: string | null) => {\n setInner(id);\n onSumberChange?.(id);\n };\n if (!info) return <Empty title=\"Modul tidak ditemukan\" description={key} bordered />;\n const akar = info.sumber.filter((s) => !scopes || !s.sc?.length || s.sc.every((x) => scopes.includes(x)));\n const mandiri = info.operasi.filter((o) => !scopes || !o.sc?.length || o.sc.every((x) => scopes.includes(x)));\n const pertama = aktif ?? akar[0]?.id ?? (mandiri[0] ? `op:${mandiri[0].id}` : null);\n const op = pertama?.startsWith('op:') ? st.modul?.ops[pertama.slice(3)] : undefined;\n // Kelompokkan sumber per tag (\"Kemahasiswaan: Beasiswa\" → \"Beasiswa\").\n const perTag = new Map<string, Array<{ id: string; title: string; op?: boolean }>>();\n for (const s of akar) {\n const t = s.tag.includes(':') ? s.tag.split(':').slice(1).join(':').trim() : s.tag;\n if (!perTag.has(t)) perTag.set(t, []);\n perTag.get(t)!.push({ id: s.id, title: s.title });\n }\n if (mandiri.length) perTag.set('Operasi lain', mandiri.map((o) => ({ id: `op:${o.id}`, title: judulOperasi({ sum: o.title, path: o.id }), op: true })));\n return (\n <div className={cn('u-halaman-modul', className)}>\n <header className=\"u-halaman-modul-head\">\n {onKembali && (\n <Button variant=\"ghost\" size=\"sm\" iconOnly aria-label=\"Kembali\" onClick={onKembali}>\n <ArrowLeft />\n </Button>\n )}\n <IkonKotak nada={ADEGAN[info.key]?.nada ?? ADEGAN[info.group]?.nada} ukuran=\"xl\">\n <IkonKatalog nama={info.icon} />\n </IkonKotak>\n <div className=\"u-halaman-modul-judul\">\n <h1>{info.title}</h1>\n <p>{info.desc}</p>\n </div>\n <Ilustrasi nama={ADEGAN[info.key] ? info.key : info.group} lebar={150} className=\"u-halaman-modul-ilus\" />\n </header>\n <div className=\"u-halaman-modul-isi\">\n <nav className=\"u-halaman-modul-nav\" aria-label={`Data ${info.title}`}>\n {[...perTag.entries()].map(([t, items]) => (\n <div key={t}>\n <h4>{t}</h4>\n <ul>\n {items.map((s) => (\n <li key={s.id}>\n <button type=\"button\" aria-current={s.id === pertama ? 'page' : undefined} onClick={() => pilih(s.id)}>\n {s.op ? <Workflow aria-hidden /> : null}\n {s.title}\n </button>\n </li>\n ))}\n </ul>\n </div>\n ))}\n </nav>\n <div className=\"u-halaman-modul-konten\">\n {st.loading ? <Skeleton height={320} /> : st.error ? <GalatApi error={st.error} /> : pertama?.startsWith('op:') ? op ? <FormOperasi op={op} key={op.id} /> : null : pertama ? <KelolaSumber key={pertama} sumber={pertama} /> : <Empty title=\"Belum ada data di modul ini\" bordered />}\n </div>\n </div>\n </div>\n );\n}\n\n// ================================================================ Operasi mandiri\n/** Jalankan satu operasi API dari katalog: isian parameter + body dengan aturan backend, lalu tampilkan hasilnya. */\nexport function FormOperasi({ op, nilaiPath, onSelesai }: { op: Operasi; nilaiPath?: Record<string, unknown>; onSelesai?: (data: unknown) => void }) {\n const siakad = useSiakad();\n const { scopes } = useKatalog();\n const params = (op.pa ?? []).filter((p) => p.in !== 'header' && !(nilaiPath && p.nm in nilaiPath));\n const [nilaiP, setNilaiP] = React.useState<Record<string, unknown>>({});\n const [galatP, setGalatP] = React.useState<Record<string, string>>({});\n const form = useFormulirSkema(op.b?.s);\n const [hasil, setHasil] = React.useState<{ data: unknown; meta?: unknown } | null>(null);\n const [galat, setGalat] = React.useState<unknown>(null);\n const [sibuk, setSibuk] = React.useState(false);\n const izin = punyaScope(op, scopes);\n const jalan = async () => {\n const gp = validasiParameter(params, nilaiP);\n setGalatP(gp);\n const body = op.b ? form.kirim() : undefined;\n if (Object.keys(gp).length || body === null) return;\n setSibuk(true);\n setGalat(null);\n try {\n const query: Record<string, unknown> = { ...nilaiPath };\n for (const p of params) if (nilaiP[p.nm] !== undefined && nilaiP[p.nm] !== '') query[p.nm] = nilaiP[p.nm];\n const r = await siakad.request({ method: op.m, path: op.path, query: query as never, body: body ?? (op.m === 'POST' ? {} : undefined), multipart: typeof FormData !== 'undefined' && body instanceof FormData, public: Boolean(op.pub) });\n setHasil({ data: r.data, meta: r.meta });\n onSelesai?.(r.data);\n } catch (e) {\n if (!form.galatServer(e)) setGalat(e);\n } finally {\n setSibuk(false);\n }\n };\n return (\n <section className=\"u-form-operasi\">\n <header className=\"u-kelola-head\">\n <div>\n <h2>{judulOperasi(op)}</h2>\n <p>\n <Badge variant={op.m === 'GET' ? 'info' : op.m === 'DELETE' ? 'danger' : 'primary'}>\n {op.m}\n </Badge>{' '}\n <span className=\"u-mono\">{op.path}</span>\n </p>\n {op.ds && <p className=\"u-form-operasi-ds\">{op.ds}</p>}\n </div>\n <div className=\"u-kelola-head-aksi\">\n {(op.sc ?? []).map((sc) => (\n <Badge key={sc} variant={scopes && !scopes.includes(sc) ? 'danger' : 'neutral'}>\n {sc}\n </Badge>\n ))}\n </div>\n </header>\n {params.length > 0 && (\n <div className=\"u-formulir-skema\" data-columns={2}>\n {params.map((p) => (\n <Field key={p.nm} label={labelKolom(p.nm)} required={Boolean(p.rq)} description={p.ds} error={galatP[p.nm] ? rapikanGalat(galatP[p.nm]) : undefined}>\n <IsianSkema\n nama={p.nm}\n skema={p.s}\n id={`param-${p.nm}`}\n value={nilaiP[p.nm] ?? ''}\n onValueChange={(v) => {\n setNilaiP((x) => ({ ...x, [p.nm]: v }));\n setGalatP((g) => ({ ...g, [p.nm]: '' }));\n }}\n />\n </Field>\n ))}\n </div>\n )}\n {op.b && <FormulirSkema skema={op.b.s} form={form} />}\n <div className=\"u-form-operasi-aksi\">\n <Button onClick={jalan} loading={sibuk} disabled={!izin}>\n <Play /> {op.m === 'GET' ? 'Tampilkan' : judulOperasi(op)}\n </Button>\n {!izin && <small>Butuh izin {op.sc?.join(', ')}.</small>}\n </div>\n {galat ? <GalatApi error={galat} title={`${judulOperasi(op)} gagal`} /> : null}\n {hasil && <HasilOperasi data={hasil.data} />}\n </section>\n );\n}\n\n/** Hasil operasi: tabel untuk daftar, daftar label untuk objek, atau teks. */\nexport function HasilOperasi({ data }: { data: unknown }) {\n if (Array.isArray(data)) {\n if (!data.length) return <Empty title=\"Tidak ada data\" bordered />;\n if (data.every((x) => x && typeof x === 'object')) {\n const keys = [...new Set(data.slice(0, 20).flatMap((x) => Object.keys(x as object)))].slice(0, 8);\n return (\n <DataTable<Baris>\n rows={data as Baris[]}\n rowKey={(b) => JSON.stringify(b).slice(0, 200)}\n columns={keys.map((k) => ({ key: k, header: labelKolom(k), label: labelKolom(k), cell: (b: Baris) => <NilaiSel nama={k} value={b[k]} /> }))}\n exportCsv=\"hasil\"\n />\n );\n }\n return <pre className=\"u-nilai-json\">{JSON.stringify(data, null, 2)}</pre>;\n }\n if (data && typeof data === 'object') return <DetailBaris baris={data as Baris} />;\n return <pre className=\"u-nilai-json\">{data === undefined ? 'Selesai.' : String(data)}</pre>;\n}\n\n// ================================================================ Pencarian fitur\ninterface ButirFitur {\n key: string;\n modul: ModulIndeks;\n judul: string;\n jenis: 'modul' | 'sumber' | 'operasi';\n id?: string;\n}\n\n/** Kotak cari semua fitur (modul, sumber data, operasi) di katalog; cocok untuk palet perintah ⌘K. */\nexport function PencarianFitur({ onPilih, placeholder = 'Cari fitur: beasiswa, KRS, peminjaman ruang…', className }: { onPilih: (b: { modul: string; sumber?: string; operasi?: string }) => void; placeholder?: string; className?: string }) {\n const grup = useModulTerlihat();\n const items = React.useMemo<ButirFitur[]>(\n () =>\n grup.flatMap(({ modul }) =>\n modul.flatMap((m) => [\n { key: `m:${m.key}`, modul: m, judul: m.title, jenis: 'modul' as const },\n ...m.sumber.map((s) => ({ key: `s:${s.id}`, modul: m, judul: s.title, jenis: 'sumber' as const, id: s.id })),\n ...m.operasi.map((o) => ({ key: `o:${o.id}`, modul: m, judul: judulOperasi({ sum: o.title, path: o.id }), jenis: 'operasi' as const, id: o.id })),\n ]),\n ),\n [grup],\n );\n return (\n <Combobox<ButirFitur>\n className={className}\n items={items}\n icon={<Search />}\n placeholder={placeholder}\n itemKey={(b) => b.key}\n itemToString={(b) => `${b.judul} ${b.modul.title} ${b.id ?? ''}`}\n emptyText=\"Fitur tidak ditemukan.\"\n renderItem={(b) => (\n <span className=\"u-butir-fitur\">\n <IkonKatalog nama={b.modul.icon} />\n <span>\n <b>{b.judul}</b>\n <small>{b.jenis === 'modul' ? 'Modul' : `${b.modul.title}${b.id && b.jenis === 'sumber' ? ` · ${b.id}` : ''}`}</small>\n </span>\n </span>\n )}\n value={null}\n onValueChange={(b) => b && onPilih({ modul: b.modul.key, sumber: b.jenis === 'sumber' ? b.id : undefined, operasi: b.jenis === 'operasi' ? b.id : undefined })}\n />\n );\n}\n\n/** Isi path dengan nilai, bila semua parameter tersedia; null bila belum. */\nexport function pathSiap(path: string, nilai: Record<string, unknown>): string | null {\n return paramPath(path).every((p) => nilai[p] !== undefined && nilai[p] !== '') ? isiPath(path, nilai) : null;\n}\n","'use client';\nimport * as React from 'react';\nimport { Wizard, WizardReview, type WizardStep } from '../components/wizard';\nimport { useToast } from '../components/overlays';\nimport { Skeleton } from '../components/actions';\nimport { GalatApi } from '../siakad/galat';\nimport { invalidateSiakad, pesanGalat, useSiakad } from '../siakad/provider';\nimport { isianSkema, jenisIsian, labelKolom, labelNilai, rapikanGalat, validasiBody, type JenisIsian } from './aturan';\nimport { FormulirSkema, useFormulirSkema } from './isian';\nimport { useSumber } from './katalog';\nimport type { Baris, Skema } from './tipe';\n\nexport interface LangkahSkema {\n id: string;\n judul: string;\n keterangan?: string;\n /** Kolom skema di langkah ini. */\n kolom: string[];\n}\n\nconst KELOMPOK: Array<{ id: string; judul: string; keterangan: string; cocok: (k: string, j: JenisIsian) => boolean }> = [\n { id: 'identitas', judul: 'Identitas', keterangan: 'Kode, nama, dan jenis.', cocok: (k, j) => /^(kode|nama|judul|jenis|tipe|kategori|level|bidang|perihal|subjek|nomor|no_)/.test(k) || (j === 'enum' && /jenis|tipe|kategori/.test(k)) },\n { id: 'pihak', judul: 'Pihak terkait', keterangan: 'Mahasiswa, dosen, unit, atau data lain yang dirujuk.', cocok: (_, j) => j === 'acuan' },\n { id: 'jadwal', judul: 'Waktu', keterangan: 'Tanggal, jam, dan periode.', cocok: (k, j) => j === 'tanggal' || j === 'waktu' || j === 'jam' || /(mulai|selesai|batas|periode|semester)/.test(k) },\n { id: 'nilai', judul: 'Angka & ketentuan', keterangan: 'Nominal, kuota, dan batas.', cocok: (_, j) => j === 'angka' || j === 'bulat' || j === 'boolean' },\n { id: 'uraian', judul: 'Uraian', keterangan: 'Keterangan, syarat, dan lampiran.', cocok: (_, j) => j === 'teks-panjang' || j === 'json' || j === 'file' || j === 'daftar' },\n];\n\n/** Bagi isian skema menjadi langkah (identitas, pihak terkait, waktu, angka, uraian, lainnya). */\nexport function langkahDariSkema(skema: Skema | undefined, maksPerLangkah = 6): LangkahSkema[] {\n const sisa = isianSkema(skema).map(([k, s]) => [k, jenisIsian(k, s)] as const);\n const out: LangkahSkema[] = [];\n const pakai = new Set<string>();\n for (const g of KELOMPOK) {\n const kolom = sisa.filter(([k, j]) => !pakai.has(k) && g.cocok(k, j)).map(([k]) => k);\n kolom.forEach((k) => pakai.add(k));\n for (let i = 0; i < kolom.length; i += maksPerLangkah) out.push({ id: `${g.id}-${i}`, judul: g.judul, keterangan: g.keterangan, kolom: kolom.slice(i, i + maksPerLangkah) });\n }\n const lain = sisa.filter(([k]) => !pakai.has(k)).map(([k]) => k);\n if (lain.length) {\n // Isian lain digabung ke langkah pertama bila sedikit.\n if (out.length && lain.length <= 2) out[0].kolom.push(...lain);\n else out.push({ id: 'lain', judul: 'Lainnya', kolom: lain });\n }\n return out.length ? out : [{ id: 'semua', judul: 'Data', kolom: [] }];\n}\n\nexport interface WizardSumberProps {\n /** Path sumber data, mis. '/v1/sarpras/peminjaman'. */\n sumber: string;\n induk?: Record<string, unknown>;\n /** Langkah sendiri; bawaan dibagi otomatis dari skema. */\n langkah?: LangkahSkema[];\n /** Nilai awal. */\n nilai?: Record<string, unknown>;\n title?: React.ReactNode;\n description?: React.ReactNode;\n aside?: React.ReactNode;\n finishLabel?: string;\n onSelesai?: (b: Baris) => void;\n}\n\n/**\n * Formulir tambah bertahap dari skema endpoint POST: tiap langkah divalidasi dengan aturan backend sebelum lanjut,\n * langkah terakhir ringkasan, lalu dikirim sekali. Galat 422 dari server membuka langkah isian yang salah.\n */\nexport function WizardSumber({ sumber: id, induk, langkah, nilai, title, description, aside, finishLabel, onSelesai }: WizardSumberProps) {\n const st = useSumber(id);\n const siakad = useSiakad();\n const toast = useToast();\n const op = st.op(st.sumber?.create);\n const skema = op?.b?.s;\n const form = useFormulirSkema(skema, { nilai });\n const [step, setStep] = React.useState(0);\n const daftar = React.useMemo(() => (langkah ?? langkahDariSkema(skema)).map((l) => ({ ...l, kolom: l.kolom.filter((k) => !(induk && k in induk)) })).filter((l) => l.kolom.length), [langkah, skema, induk]);\n if (st.loading) return <Skeleton height={320} />;\n if (st.error) return <GalatApi error={st.error} />;\n if (!op || !skema) return <GalatApi error={new Error('Sumber ini tidak bisa ditambah lewat API.')} />;\n const wajib = new Set(skema.rq ?? []);\n const periksaLangkah = (kolom: string[]) => {\n const sub: Skema = { ...skema, pr: Object.fromEntries(kolom.map((k) => [k, skema.pr![k]])), rq: (skema.rq ?? []).filter((k) => kolom.includes(k)) };\n const r = validasiBody(sub, form.nilai);\n form.setGalat((g) => ({ ...g, ...Object.fromEntries(kolom.map((k) => [k, r.galat[k] ?? ''])) }));\n const k = Object.keys(r.galat)[0];\n return k ? `${labelKolom(k)}: ${rapikanGalat(r.galat[k])}` : null;\n };\n const steps: WizardStep[] = [\n ...daftar.map((l) => ({\n id: l.id,\n title: l.judul,\n description: l.keterangan,\n error: l.kolom.some((k) => form.galat[k]),\n optional: !l.kolom.some((k) => wajib.has(k)),\n content: <FormulirSkema skema={skema} form={form} kolom={l.kolom} />,\n onNext: () => periksaLangkah(l.kolom),\n })),\n {\n id: 'tinjau',\n title: 'Tinjau',\n description: 'Periksa lalu kirim.',\n content: (\n <WizardReview\n sections={daftar.map((l, i) => ({\n title: l.judul,\n onEdit: () => setStep(i),\n items: l.kolom.map((k) => ({ label: labelKolom(k), value: tampilNilai(form.nilai[k]) })),\n }))}\n />\n ),\n },\n ];\n return (\n <Wizard\n steps={steps}\n step={step}\n onStepChange={setStep}\n title={title ?? `Tambah ${st.sumber?.title.toLowerCase()}`}\n description={description}\n aside={aside}\n finishLabel={finishLabel ?? 'Kirim'}\n onFinish={async () => {\n const body = form.kirim();\n if (!body) {\n const k = Object.keys(form.galat).find((x) => form.galat[x]);\n const i = daftar.findIndex((l) => k && l.kolom.includes(k));\n if (i >= 0) setStep(i);\n return 'Masih ada isian yang perlu diperbaiki.';\n }\n try {\n const r = await siakad.request({ method: op.m, path: op.path, query: { ...induk } as never, body, multipart: typeof FormData !== 'undefined' && body instanceof FormData });\n toast.add({ title: `${st.sumber?.title} terkirim`, type: 'success' });\n invalidateSiakad('katalog:');\n onSelesai?.((r.data as Baris) ?? {});\n return null;\n } catch (e) {\n if (form.galatServer(e)) {\n const g = (e as { details?: Record<string, unknown> }).details ?? {};\n const i = daftar.findIndex((l) => l.kolom.some((k) => k in g));\n if (i >= 0) setStep(i);\n return 'Server menolak beberapa isian. Periksa langkah yang ditandai.';\n }\n return pesanGalat(e);\n }\n }}\n />\n );\n}\n\nfunction tampilNilai(v: unknown): string {\n if (v === undefined || v === null || v === '') return '–';\n if (Array.isArray(v)) return v.join(', ') || '–';\n if (typeof FileList !== 'undefined' && v instanceof FileList) return Array.from(v).map((f) => f.name).join(', ');\n if (typeof v === 'object') return JSON.stringify(v);\n return labelNilai(v);\n}\n"]}
|