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.
Files changed (173) hide show
  1. package/cli/index.mjs +53 -4
  2. package/dist/admisi-YCOE3DMH.cjs +20 -0
  3. package/dist/admisi-YXCTBECZ.js +11 -0
  4. package/dist/akademik-PJGL6MSP.cjs +20 -0
  5. package/dist/akademik-TPDFEZGF.js +11 -0
  6. package/dist/akses-AUPQD6YN.cjs +20 -0
  7. package/dist/akses-V5XIMBWT.js +11 -0
  8. package/dist/arsip-2T7IEION.cjs +20 -0
  9. package/dist/arsip-LDRV7FYX.js +11 -0
  10. package/dist/cbt-4N6COVIN.js +11 -0
  11. package/dist/cbt-GMQSR7TP.cjs +20 -0
  12. package/dist/chunk-34OKV63Q.js +122 -0
  13. package/dist/chunk-34OKV63Q.js.map +1 -0
  14. package/dist/chunk-3O5ELKBH.cjs +18 -0
  15. package/dist/chunk-3O5ELKBH.cjs.map +1 -0
  16. package/dist/chunk-4BQOABRV.js +462 -0
  17. package/dist/chunk-4BQOABRV.js.map +1 -0
  18. package/dist/{chunk-DEF5CA7C.cjs → chunk-5VNCBW4R.cjs} +282 -1165
  19. package/dist/chunk-5VNCBW4R.cjs.map +1 -0
  20. package/dist/{chunk-SJ4DJOMZ.js → chunk-7AJ4LW5H.js} +163 -1019
  21. package/dist/chunk-7AJ4LW5H.js.map +1 -0
  22. package/dist/chunk-JASW45YF.cjs +510 -0
  23. package/dist/chunk-JASW45YF.cjs.map +1 -0
  24. package/dist/chunk-JSUHAYQ4.js +15 -0
  25. package/dist/chunk-JSUHAYQ4.js.map +1 -0
  26. package/dist/chunk-LN6HZMPI.js +1006 -0
  27. package/dist/chunk-LN6HZMPI.js.map +1 -0
  28. package/dist/chunk-LNJTDEQR.cjs +1937 -0
  29. package/dist/chunk-LNJTDEQR.cjs.map +1 -0
  30. package/dist/chunk-MKQEH7QS.cjs +1058 -0
  31. package/dist/chunk-MKQEH7QS.cjs.map +1 -0
  32. package/dist/chunk-TAKLMRU7.cjs +150 -0
  33. package/dist/chunk-TAKLMRU7.cjs.map +1 -0
  34. package/dist/chunk-TYCRRYCQ.js +1843 -0
  35. package/dist/chunk-TYCRRYCQ.js.map +1 -0
  36. package/dist/crm-C4XGSG6O.js +11 -0
  37. package/dist/crm-LTVCDNMK.cjs +20 -0
  38. package/dist/dasbor-OJLMSFTF.cjs +20 -0
  39. package/dist/dasbor-Y3UPFYFE.js +11 -0
  40. package/dist/edom-3GZUUB7H.cjs +20 -0
  41. package/dist/edom-K4Y2NV4K.js +11 -0
  42. package/dist/fakultas-DJRUVJBV.js +11 -0
  43. package/dist/fakultas-VVAQOPUX.cjs +20 -0
  44. package/dist/filter-D54KALbB.d.cts +436 -0
  45. package/dist/filter-D54KALbB.d.ts +436 -0
  46. package/dist/helpdesk-AWVC7BPE.cjs +20 -0
  47. package/dist/helpdesk-BAOXAU6G.js +11 -0
  48. package/dist/humas-7BMMJ3WF.js +11 -0
  49. package/dist/humas-H56JFUW6.cjs +20 -0
  50. package/dist/ikon.cjs +125 -0
  51. package/dist/ikon.cjs.map +1 -0
  52. package/dist/ikon.d.cts +140 -0
  53. package/dist/ikon.d.ts +140 -0
  54. package/dist/ikon.js +6 -0
  55. package/dist/ikon.js.map +1 -0
  56. package/dist/iku-7JLF2NIH.js +11 -0
  57. package/dist/iku-F47ZLMYJ.cjs +20 -0
  58. package/dist/index.cjs +544 -257
  59. package/dist/index.cjs.map +1 -1
  60. package/dist/index.d.cts +192 -2
  61. package/dist/index.d.ts +192 -2
  62. package/dist/index.js +126 -4
  63. package/dist/index.js.map +1 -1
  64. package/dist/induk-BGTGKRLL.js +11 -0
  65. package/dist/induk-DLYDMZAM.cjs +20 -0
  66. package/dist/integrasi-4VXNGA3V.cjs +20 -0
  67. package/dist/integrasi-IP3WWDO7.js +11 -0
  68. package/dist/kalender-DGQDGJCL.cjs +20 -0
  69. package/dist/kalender-FGGUBYKZ.js +11 -0
  70. package/dist/karier-H3HBFCQQ.js +11 -0
  71. package/dist/karier-QTU2P5YD.cjs +20 -0
  72. package/dist/katalog.cjs +1709 -0
  73. package/dist/katalog.cjs.map +1 -0
  74. package/dist/katalog.d.cts +645 -0
  75. package/dist/katalog.d.ts +645 -0
  76. package/dist/katalog.js +1626 -0
  77. package/dist/katalog.js.map +1 -0
  78. package/dist/kelulusan-BHFQM5N4.cjs +20 -0
  79. package/dist/kelulusan-ZR7CM6I5.js +11 -0
  80. package/dist/kemahasiswaan-EINWXAY7.cjs +20 -0
  81. package/dist/kemahasiswaan-NH2LEDH7.js +11 -0
  82. package/dist/kerjasama-FAOHZCML.js +11 -0
  83. package/dist/kerjasama-TXWJOU4Y.cjs +20 -0
  84. package/dist/keu-4TXF4FEP.cjs +20 -0
  85. package/dist/keu-SD7UOCDB.js +11 -0
  86. package/dist/kurikulum-SRO7TJYI.cjs +20 -0
  87. package/dist/kurikulum-XT7PZJOK.js +11 -0
  88. package/dist/layanan-RQ2AWCQ5.cjs +20 -0
  89. package/dist/layanan-Y6WUCSD2.js +11 -0
  90. package/dist/lms-5JYOSLBI.cjs +20 -0
  91. package/dist/lms-NTXMSHG2.js +11 -0
  92. package/dist/lppm-7DH7PRF3.cjs +20 -0
  93. package/dist/lppm-UXYGIOIF.js +11 -0
  94. package/dist/master-GKTTAKLF.cjs +20 -0
  95. package/dist/master-ZG4SPPDU.js +11 -0
  96. package/dist/mbkm-OGR72BTB.js +11 -0
  97. package/dist/mbkm-URKJHUIQ.cjs +20 -0
  98. package/dist/notifikasi-FMA26M4I.js +11 -0
  99. package/dist/notifikasi-QDCYIX7G.cjs +20 -0
  100. package/dist/pddikti-RJVYY2J4.cjs +20 -0
  101. package/dist/pddikti-VF2PXDKA.js +11 -0
  102. package/dist/{content-DaJPx5LX.d.cts → pemeliharaan-D5S-1lqW.d.ts} +38 -434
  103. package/dist/{content-DaJPx5LX.d.ts → pemeliharaan-Dr0HSxvZ.d.cts} +38 -434
  104. package/dist/perpustakaan-5RL33XG2.js +11 -0
  105. package/dist/perpustakaan-JXZW43MJ.cjs +20 -0
  106. package/dist/pilih-BEes_D3n.d.cts +205 -0
  107. package/dist/pilih-CEKqXMUS.d.ts +205 -0
  108. package/dist/pmb-EGTWW2ZH.cjs +20 -0
  109. package/dist/pmb-G7EAFJ3R.js +11 -0
  110. package/dist/portal-EI7TXN7H.cjs +20 -0
  111. package/dist/portal-MMUYX3RA.js +11 -0
  112. package/dist/portal-api-BJLO6AGI.js +11 -0
  113. package/dist/portal-api-Q6B3X6ZV.cjs +20 -0
  114. package/dist/profil-46FV46VH.cjs +20 -0
  115. package/dist/profil-4BIXIM6D.js +11 -0
  116. package/dist/referensi-HNYOJGNX.js +11 -0
  117. package/dist/referensi-VOT5BRCL.cjs +20 -0
  118. package/dist/registry.json +606 -4
  119. package/dist/repositori-2MJ43NXM.js +11 -0
  120. package/dist/repositori-KFXVJB7B.cjs +20 -0
  121. package/dist/rpl-2ZXHNSPF.js +11 -0
  122. package/dist/rpl-YF5MV2YA.cjs +20 -0
  123. package/dist/sarpras-CQ7QKVUN.js +11 -0
  124. package/dist/sarpras-XGPHHFCG.cjs +20 -0
  125. package/dist/scss/components/_animasi.scss +280 -0
  126. package/dist/scss/components/_ikon.scss +249 -0
  127. package/dist/scss/components/_katalog.scss +662 -0
  128. package/dist/scss/components/_platform.scss +364 -0
  129. package/dist/scss/index.scss +4 -0
  130. package/dist/sdm-N6LE66PP.cjs +20 -0
  131. package/dist/sdm-QKBXH3JF.js +11 -0
  132. package/dist/siakad.cjs +1389 -2915
  133. package/dist/siakad.cjs.map +1 -1
  134. package/dist/siakad.d.cts +31 -196
  135. package/dist/siakad.d.ts +31 -196
  136. package/dist/siakad.js +446 -2194
  137. package/dist/siakad.js.map +1 -1
  138. package/dist/spmi-J37NEYIU.js +11 -0
  139. package/dist/spmi-N6EU7KNC.cjs +20 -0
  140. package/dist/tracer-G6DDXVXC.cjs +20 -0
  141. package/dist/tracer-M3FTNWBG.js +11 -0
  142. package/dist/ui-unipo.css +1650 -0
  143. package/dist/ui-unipo.min.css +1 -1
  144. package/package.json +25 -3
  145. package/src/components/animasi.tsx +186 -0
  146. package/src/components/modal.tsx +113 -0
  147. package/src/components/overlays.tsx +6 -1
  148. package/src/components/pemeliharaan.tsx +152 -0
  149. package/src/components/platform.tsx +94 -0
  150. package/src/ikon/ilustrasi.tsx +283 -0
  151. package/src/ikon/index.ts +7 -0
  152. package/src/ikon/kotak.tsx +30 -0
  153. package/src/ikon/unipo.tsx +326 -0
  154. package/src/index.ts +8 -0
  155. package/src/katalog/aturan.ts +488 -0
  156. package/src/katalog/data/id.ts +749 -0
  157. package/src/katalog/data/indeks.json +1 -0
  158. package/src/katalog/data/muat.ts +47 -0
  159. package/src/katalog/ikon.tsx +11 -0
  160. package/src/katalog/index.ts +13 -0
  161. package/src/katalog/isian.tsx +372 -0
  162. package/src/katalog/katalog.tsx +138 -0
  163. package/src/katalog/kelola.tsx +620 -0
  164. package/src/katalog/modul.tsx +336 -0
  165. package/src/katalog/tampil.tsx +147 -0
  166. package/src/katalog/tipe.ts +141 -0
  167. package/src/katalog/wizard.tsx +155 -0
  168. package/src/lib/platform.ts +91 -0
  169. package/src/siakad/index.ts +1 -0
  170. package/src/siakad/pemeliharaan.tsx +118 -0
  171. package/src/siakad/provider.tsx +2 -0
  172. package/dist/chunk-DEF5CA7C.cjs.map +0 -1
  173. package/dist/chunk-SJ4DJOMZ.js.map +0 -1
@@ -0,0 +1,11 @@
1
+ 'use client';
2
+ // src/katalog/data/modul/arsip.json
3
+ var key = "arsip";
4
+ var resources = [{ id: "/v1/arsip/bagikan", tag: "Arsip: Berbagi", title: "Berbagi", base: "/v1/arsip/bagikan", item: "/v1/arsip/bagikan/{id}", key: "id", del: "deleteArsipBagikanById", actions: [], children: [] }, { id: "/v1/arsip/berkas", tag: "Arsip: Berkas", title: "Berkas", base: "/v1/arsip/berkas", item: "/v1/arsip/berkas/{id}", key: "id", list: "getArsipBerkas", create: "postArsipBerkas", get: "getArsipBerkasById", update: "putArsipBerkasById", del: "deleteArsipBerkasById", actions: ["postArsipBerkasByIdTutup", "postArsipBerkasByIdBuka", "postArsipBerkasByIdMasukkan", "postArsipBerkasByIdKeluarkan"], children: ["/v1/arsip/berkas/{ref}/bagikan"] }, { id: "/v1/arsip/berkas/{ref}/bagikan", tag: "Arsip: Berbagi", title: "Berbagi berkas", base: "/v1/arsip/berkas/{ref}/bagikan", list: "getArsipBerkasByRefBagikan", create: "postArsipBerkasByRefBagikan", actions: [], children: [], parent: "/v1/arsip/berkas" }, { id: "/v1/arsip/disposisi", tag: "Arsip: Disposisi", title: "Kotak disposisi saya", base: "/v1/arsip/disposisi", item: "/v1/arsip/disposisi/{id}", key: "id", list: "getArsipDisposisi", get: "getArsipDisposisiById", actions: ["postArsipDisposisiByIdBaca", "postArsipDisposisiByIdProses", "postArsipDisposisiByIdSelesai", "postArsipDisposisiByIdKembalikan"], children: ["/v1/arsip/disposisi/{ref}/file"] }, { id: "/v1/arsip/disposisi/{ref}/file", tag: "Arsip: File", title: "File disposisi", base: "/v1/arsip/disposisi/{ref}/file", list: "getArsipDisposisiByRefFile", create: "postArsipDisposisiByRefFile", actions: [], children: [], parent: "/v1/arsip/disposisi" }, { id: "/v1/arsip/dokumen", tag: "Arsip: Dokumen", title: "Dokumen", base: "/v1/arsip/dokumen", item: "/v1/arsip/dokumen/{ref}", key: "ref", list: "getArsipDokumen", create: "postArsipDokumen", get: "getArsipDokumenByRef", update: "putArsipDokumenByRef", del: "deleteArsipDokumenByRef", actions: ["postArsipDokumenByRefVerifikasi"], children: ["/v1/arsip/dokumen/{ref}/bagikan", "/v1/arsip/dokumen/{ref}/file"] }, { id: "/v1/arsip/dokumen/{ref}/bagikan", tag: "Arsip: Berbagi", title: "Berbagi dokumen", base: "/v1/arsip/dokumen/{ref}/bagikan", list: "getArsipDokumenByRefBagikan", create: "postArsipDokumenByRefBagikan", actions: [], children: [], parent: "/v1/arsip/dokumen" }, { id: "/v1/arsip/dokumen/{ref}/file", tag: "Arsip: File", title: "File dokumen", base: "/v1/arsip/dokumen/{ref}/file", list: "getArsipDokumenByRefFile", create: "postArsipDokumenByRefFile", actions: [], children: [], parent: "/v1/arsip/dokumen" }, { id: "/v1/arsip/file", tag: "Arsip: File", title: "File", base: "/v1/arsip/file", item: "/v1/arsip/file/{uuid}", key: "uuid", get: "getArsipFileByUuid", del: "deleteArsipFileByUuid", actions: ["getArsipFileByUuidUnduh"], children: [] }, { id: "/v1/arsip/jenis", tag: "Arsip: Master", title: "Jenis naskah dan dokumen", base: "/v1/arsip/jenis", item: "/v1/arsip/jenis/{id}", key: "id", list: "getArsipJenis", create: "postArsipJenis", update: "putArsipJenisById", del: "deleteArsipJenisById", actions: [], children: [] }, { id: "/v1/arsip/klasifikasi", tag: "Arsip: Master", title: "Klasifikasi arsip dan JRA", base: "/v1/arsip/klasifikasi", item: "/v1/arsip/klasifikasi/{id}", key: "id", list: "getArsipKlasifikasi", create: "postArsipKlasifikasi", update: "putArsipKlasifikasiById", del: "deleteArsipKlasifikasiById", actions: [], children: [] }, { id: "/v1/arsip/laporan/agenda", tag: "Arsip: Laporan", title: "Buku agenda surat", base: "/v1/arsip/laporan/agenda", list: "getArsipLaporanAgenda", actions: [], children: [] }, { id: "/v1/arsip/laporan/daftar-arsip", tag: "Arsip: Laporan", title: "Arsip aktif/inaktif", base: "/v1/arsip/laporan/daftar-arsip", list: "getArsipLaporanDaftarArsip", actions: [], children: [] }, { id: "/v1/arsip/log", tag: "Arsip: Laporan", title: "Log audit", base: "/v1/arsip/log", list: "getArsipLog", actions: [], children: [] }, { id: "/v1/arsip/lokasi", tag: "Arsip: Master", title: "Lokasi simpan fisik", base: "/v1/arsip/lokasi", item: "/v1/arsip/lokasi/{id}", key: "id", list: "getArsipLokasi", create: "postArsipLokasi", get: "getArsipLokasiById", update: "putArsipLokasiById", del: "deleteArsipLokasiById", actions: [], children: [] }, { id: "/v1/arsip/peminjaman", tag: "Arsip: Peminjaman", title: "Peminjaman", base: "/v1/arsip/peminjaman", item: "/v1/arsip/peminjaman/{id}", key: "id", list: "getArsipPeminjaman", create: "postArsipPeminjaman", get: "getArsipPeminjamanById", actions: ["postArsipPeminjamanByIdSetujui", "postArsipPeminjamanByIdTolak", "postArsipPeminjamanByIdSerahkan", "postArsipPeminjamanByIdKembalikan", "postArsipPeminjamanByIdBatalkan"], children: ["/v1/arsip/peminjaman/{ref}/file"] }, { id: "/v1/arsip/peminjaman/{ref}/file", tag: "Arsip: File", title: "File peminjaman", base: "/v1/arsip/peminjaman/{ref}/file", list: "getArsipPeminjamanByRefFile", create: "postArsipPeminjamanByRefFile", actions: [], children: [], parent: "/v1/arsip/peminjaman" }, { id: "/v1/arsip/penomoran", tag: "Arsip: Master", title: "Format penomoran", base: "/v1/arsip/penomoran", item: "/v1/arsip/penomoran/{id}", key: "id", list: "getArsipPenomoran", create: "postArsipPenomoran", get: "getArsipPenomoranById", update: "putArsipPenomoranById", del: "deleteArsipPenomoranById", actions: [], children: [] }, { id: "/v1/arsip/penyusutan", tag: "Arsip: Penyusutan", title: "Usulan penyusutan", base: "/v1/arsip/penyusutan", item: "/v1/arsip/penyusutan/{id}", key: "id", list: "getArsipPenyusutan", create: "postArsipPenyusutan", get: "getArsipPenyusutanById", actions: ["postArsipPenyusutanByIdSetujui", "postArsipPenyusutanByIdTolak", "postArsipPenyusutanByIdLaksanakan", "postArsipPenyusutanByIdBatalkan"], children: ["/v1/arsip/penyusutan/{ref}/file"] }, { id: "/v1/arsip/penyusutan/kandidat", tag: "Arsip: Penyusutan", title: "Arsip jatuh tempo penyusutan", base: "/v1/arsip/penyusutan/kandidat", list: "getArsipPenyusutanKandidat", actions: [], children: [] }, { id: "/v1/arsip/penyusutan/{ref}/file", tag: "Arsip: File", title: "File penyusutan", base: "/v1/arsip/penyusutan/{ref}/file", list: "getArsipPenyusutanByRefFile", create: "postArsipPenyusutanByRefFile", actions: [], children: [], parent: "/v1/arsip/penyusutan" }, { id: "/v1/arsip/petugas", tag: "Arsip: Master", title: "Master", base: "/v1/arsip/petugas", item: "/v1/arsip/petugas/{id}", key: "id", update: "putArsipPetugasById", del: "deleteArsipPetugasById", actions: [], children: [] }, { id: "/v1/arsip/saya/dokumen", tag: "Arsip: Dokumen", title: "Arsip pribadi saya", base: "/v1/arsip/saya/dokumen", list: "getArsipSayaDokumen", actions: [], children: [] }, { id: "/v1/arsip/saya/notifikasi", tag: "Arsip: Saya", title: "Notifikasi", base: "/v1/arsip/saya/notifikasi", list: "getArsipSayaNotifikasi", actions: [], children: [] }, { id: "/v1/arsip/surat", tag: "Arsip: Surat", title: "Surat", base: "/v1/arsip/surat", item: "/v1/arsip/surat/{ref}", key: "ref", list: "getArsipSurat", get: "getArsipSuratByRef", update: "putArsipSuratByRef", del: "deleteArsipSuratByRef", actions: ["postArsipSuratByRefAjukan", "postArsipSuratByRefSetujui", "postArsipSuratByRefTolak", "postArsipSuratByRefNomor", "postArsipSuratByRefKirim", "postArsipSuratByRefSelesai", "postArsipSuratByRefArsipkan", "postArsipSuratByRefBatalkan"], children: ["/v1/arsip/surat/{ref}/bagikan", "/v1/arsip/surat/{ref}/disposisi", "/v1/arsip/surat/{ref}/file"] }, { id: "/v1/arsip/surat-keluar", tag: "Arsip: Surat", title: "Surat keluar", base: "/v1/arsip/surat-keluar", list: "getArsipSuratKeluar", create: "postArsipSuratKeluar", actions: [], children: [] }, { id: "/v1/arsip/surat-masuk", tag: "Arsip: Surat", title: "Surat masuk", base: "/v1/arsip/surat-masuk", list: "getArsipSuratMasuk", create: "postArsipSuratMasuk", actions: [], children: [] }, { id: "/v1/arsip/surat/{ref}/bagikan", tag: "Arsip: Berbagi", title: "Berbagi surat", base: "/v1/arsip/surat/{ref}/bagikan", list: "getArsipSuratByRefBagikan", create: "postArsipSuratByRefBagikan", actions: [], children: [], parent: "/v1/arsip/surat" }, { id: "/v1/arsip/surat/{ref}/disposisi", tag: "Arsip: Disposisi", title: "Pohon disposisi surat", base: "/v1/arsip/surat/{ref}/disposisi", list: "getArsipSuratByRefDisposisi", create: "postArsipSuratByRefDisposisi", actions: [], children: [], parent: "/v1/arsip/surat" }, { id: "/v1/arsip/surat/{ref}/file", tag: "Arsip: File", title: "File surat", base: "/v1/arsip/surat/{ref}/file", list: "getArsipSuratByRefFile", create: "postArsipSuratByRefFile", actions: [], children: [], parent: "/v1/arsip/surat" }, { id: "/v1/arsip/template", tag: "Arsip: Master", title: "Templat surat", base: "/v1/arsip/template", item: "/v1/arsip/template/{id}", key: "id", list: "getArsipTemplate", create: "postArsipTemplate", get: "getArsipTemplateById", update: "putArsipTemplateById", del: "deleteArsipTemplateById", actions: ["postArsipTemplateByIdRender"], children: [] }, { id: "/v1/arsip/unit", tag: "Arsip: Master", title: "Unit pemilik arsip", base: "/v1/arsip/unit", item: "/v1/arsip/unit/{id}", key: "id", list: "getArsipUnit", create: "postArsipUnit", get: "getArsipUnitById", update: "putArsipUnitById", del: "deleteArsipUnitById", actions: [], children: ["/v1/arsip/unit/{id}/petugas"] }, { id: "/v1/arsip/unit/{id}/petugas", tag: "Arsip: Master", title: "Petugas unit", base: "/v1/arsip/unit/{id}/petugas", list: "getArsipUnitByIdPetugas", create: "postArsipUnitByIdPetugas", actions: [], children: [], parent: "/v1/arsip/unit" }, { id: "/v1/arsip/verifikasi", tag: "Arsip: Publik", title: "Publik", base: "/v1/arsip/verifikasi", item: "/v1/arsip/verifikasi/{kode}", key: "kode", get: "getArsipVerifikasiByKode", actions: [], children: [] }];
5
+ var ops = { getArsipVerifikasiByKode: { id: "getArsipVerifikasiByKode", m: "GET", path: "/v1/arsip/verifikasi/{kode}", tag: "Arsip: Publik", sum: "Cek keaslian surat keluar", ds: "Tanpa token. Untuk QR code/tautan di surat: menampilkan nomor, tanggal, perihal (disamarkan bila rahasia), unit, penandatangan, dan SHA-256 file utama. `sah=false` bila surat dibatalkan/belum terbit.", pub: 1, pa: [{ nm: "kode", in: "path", s: { t: "string" }, rq: 1, ds: "kode_verifikasi surat" }], r: "object", it: "Objek" }, getArsipReferensi: { id: "getArsipReferensi", m: "GET", path: "/v1/arsip/referensi", tag: "Arsip: Master", sum: "Pilihan nilai (enum)", ds: "Sifat, keamanan, status surat/disposisi, instruksi disposisi, akses dokumen, penanda format nomor, jenis file yang diizinkan, dll.", sc: ["arsip:read"], r: "object", it: "Objek" }, getArsipUnit: { id: "getArsipUnit", m: "GET", path: "/v1/arsip/unit", tag: "Arsip: Master", sum: "Daftar unit pemilik arsip", ds: "Universitas, fakultas, prodi, unit kerja. `peran_saya` = peran pemilik token di unit itu (admin, pimpinan, sekretaris, arsiparis, staf, pengawas = admin/pimpinan unit induk).", sc: ["arsip:read"], pa: [{ nm: "jenis", in: "query", s: { t: "string" }, ds: "universitas | fakultas | prodi | unit" }, { nm: "induk_id", in: "query", s: { t: "string", rf: { l: "/v1/arsip/unit", k: "id", d: "/v1/arsip/unit/{id}" } }, ds: "Unit induk" }, { nm: "aktif", in: "query", s: { t: "string" }, ds: "1 | 0" }, { nm: "q", in: "query", s: { t: "string" }, ds: "Cari nama/kode" }, { nm: "saya", in: "query", s: { t: "string" }, ds: "1 = hanya unit tempat saya berperan" }], r: "list", it: "ArsipUnit" }, postArsipUnit: { id: "postArsipUnit", m: "POST", path: "/v1/arsip/unit", tag: "Arsip: Master", sum: "Tambah unit", sc: ["arsip:admin"], b: { ct: "application/json", ref: "ArsipUnitInput", s: { t: "object", ds: "Saat ubah (PUT), kirim hanya kolom yang berubah.", pr: { kode: { t: "string", max: 30, p: "^[A-Za-z0-9._\\-]+$" }, jenis: { t: "string", e: ["universitas", "fakultas", "prodi", "unit"] }, induk_id: { t: "integer", n: 1, ds: "ID arsip_unit", rf: { l: "/v1/arsip/unit", k: "id", d: "/v1/arsip/unit/{id}" } }, kode_fakultas: { t: "string", n: 1, ds: "Kode fakultas SIAKAD (m_fakultas)", rf: { l: "/v1/master/fakultas", k: "kode_fakultas", q: 0 } }, kode_prodi: { t: "string", n: 1, ds: "Kode prodi SIAKAD (m_program_studi)", rf: { l: "/v1/referensi/prodi", k: "kode_prodi", q: 0 } }, nama: { t: "string", max: 150 }, singkatan: { t: "string", max: 30 }, kode_surat: { t: "string", max: 30 }, email: { t: "string", f: "email" }, telepon: { t: "string", max: 30 }, alamat: { t: "string", max: 255 }, aktif: { t: "boolean" }, urut: { t: "integer", min: 0, mx: 65535 } }, rq: ["kode", "jenis", "nama"] }, rq: 1 }, r: "object", it: "ArsipUnit" }, postArsipUnitSinkronSiakad: { id: "postArsipUnitSinkronSiakad", m: "POST", path: "/v1/arsip/unit/sinkron-siakad", tag: "Arsip: Master", sum: "Buat unit dari data SIAKAD", ds: "Membuat unit universitas, fakultas (m_fakultas), dan prodi (m_program_studi) yang belum ada, serta mendaftarkan dekan (m_fakultas.pejabat) dan kaprodi (idd_ketua_prodi) sebagai pimpinan bila akunnya ada. Aman diulang.", sc: ["arsip:admin"], r: "object", it: "Objek" }, getArsipUnitById: { id: "getArsipUnitById", m: "GET", path: "/v1/arsip/unit/{id}", tag: "Arsip: Master", sum: "Detail unit", ds: "Termasuk unit turunan, dan daftar petugas bila Anda anggota unit.", sc: ["arsip:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/arsip/unit", k: "id", d: "/v1/arsip/unit/{id}" } }, rq: 1, ds: "ID unit" }], r: "object", it: "ArsipUnit" }, putArsipUnitById: { id: "putArsipUnitById", m: "PUT", path: "/v1/arsip/unit/{id}", tag: "Arsip: Master", sum: "Ubah unit", sc: ["arsip:admin"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/arsip/unit", k: "id", d: "/v1/arsip/unit/{id}" } }, rq: 1, ds: "ID unit" }], b: { ct: "application/json", ref: "ArsipUnitInput", s: { t: "object", ds: "Saat ubah (PUT), kirim hanya kolom yang berubah.", pr: { kode: { t: "string", max: 30, p: "^[A-Za-z0-9._\\-]+$" }, jenis: { t: "string", e: ["universitas", "fakultas", "prodi", "unit"] }, induk_id: { t: "integer", n: 1, ds: "ID arsip_unit", rf: { l: "/v1/arsip/unit", k: "id", d: "/v1/arsip/unit/{id}" } }, kode_fakultas: { t: "string", n: 1, ds: "Kode fakultas SIAKAD (m_fakultas)", rf: { l: "/v1/master/fakultas", k: "kode_fakultas", q: 0 } }, kode_prodi: { t: "string", n: 1, ds: "Kode prodi SIAKAD (m_program_studi)", rf: { l: "/v1/referensi/prodi", k: "kode_prodi", q: 0 } }, nama: { t: "string", max: 150 }, singkatan: { t: "string", max: 30 }, kode_surat: { t: "string", max: 30 }, email: { t: "string", f: "email" }, telepon: { t: "string", max: 30 }, alamat: { t: "string", max: 255 }, aktif: { t: "boolean" }, urut: { t: "integer", min: 0, mx: 65535 } }, rq: ["kode", "jenis", "nama"] }, rq: 1 }, r: "object", it: "ArsipUnit" }, deleteArsipUnitById: { id: "deleteArsipUnitById", m: "DELETE", path: "/v1/arsip/unit/{id}", tag: "Arsip: Master", sum: "Hapus unit", ds: "Ditolak bila unit masih punya arsip atau unit turunan; nonaktifkan saja.", sc: ["arsip:admin"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/arsip/unit", k: "id", d: "/v1/arsip/unit/{id}" } }, rq: 1, ds: "ID unit" }], r: "none" }, getArsipUnitByIdPetugas: { id: "getArsipUnitByIdPetugas", m: "GET", path: "/v1/arsip/unit/{id}/petugas", tag: "Arsip: Master", sum: "Petugas unit", sc: ["arsip:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/arsip/unit", k: "id", d: "/v1/arsip/unit/{id}" } }, rq: 1, ds: "ID unit" }], r: "list", it: "ArsipPetugas" }, postArsipUnitByIdPetugas: { id: "postArsipUnitByIdPetugas", m: "POST", path: "/v1/arsip/unit/{id}/petugas", tag: "Arsip: Master", sum: "Tambah petugas unit", ds: "Oleh admin unit atau admin arsip. Peran: admin (kelola unit), pimpinan (lihat semua termasuk rahasia, disposisi, tanda tangan, setujui penyusutan), sekretaris (catat surat, nomor, kirim), arsiparis (dokumen, berkas, peminjaman, penyusutan), staf (konsep surat, terima disposisi).", sc: ["arsip:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/arsip/unit", k: "id", d: "/v1/arsip/unit/{id}" } }, rq: 1, ds: "ID unit" }], b: { ct: "application/json", ref: "ArsipPetugasInput", s: { t: "object", ds: "Saat ubah (PUT), kirim hanya kolom yang berubah.", pr: { unit_id: { t: "integer", n: 1, ds: "ID arsip_unit", rf: { l: "/v1/arsip/unit", k: "id", d: "/v1/arsip/unit/{id}" } }, username: { t: "string", ds: "username SIAKAD", rf: { l: "pengguna", k: "username" } }, peran: { t: "string", e: ["admin", "pimpinan", "sekretaris", "arsiparis", "staf"] }, jabatan: { t: "string", max: 150 }, bisa_tandatangan: { t: "boolean" }, aktif: { t: "boolean" }, mulai: { t: "string", n: 1, f: "date" }, selesai: { t: "string", n: 1, f: "date" } }, rq: ["unit_id", "username", "peran"] }, rq: 1 }, r: "object", it: "ArsipPetugas" }, putArsipPetugasById: { id: "putArsipPetugasById", m: "PUT", path: "/v1/arsip/petugas/{id}", tag: "Arsip: Master", sum: "Ubah petugas", ds: "Peran, jabatan, hak tanda tangan, aktif, masa tugas (unit dan username tetap).", sc: ["arsip:write"], pa: [{ nm: "id", in: "path", s: { t: "string" }, rq: 1, ds: "ID petugas" }], b: { ct: "application/json", ref: "ArsipPetugasInput", s: { t: "object", ds: "Saat ubah (PUT), kirim hanya kolom yang berubah.", pr: { unit_id: { t: "integer", n: 1, ds: "ID arsip_unit", rf: { l: "/v1/arsip/unit", k: "id", d: "/v1/arsip/unit/{id}" } }, username: { t: "string", ds: "username SIAKAD", rf: { l: "pengguna", k: "username" } }, peran: { t: "string", e: ["admin", "pimpinan", "sekretaris", "arsiparis", "staf"] }, jabatan: { t: "string", max: 150 }, bisa_tandatangan: { t: "boolean" }, aktif: { t: "boolean" }, mulai: { t: "string", n: 1, f: "date" }, selesai: { t: "string", n: 1, f: "date" } }, rq: ["unit_id", "username", "peran"] }, rq: 1 }, r: "object", it: "ArsipPetugas" }, deleteArsipPetugasById: { id: "deleteArsipPetugasById", m: "DELETE", path: "/v1/arsip/petugas/{id}", tag: "Arsip: Master", sum: "Hapus petugas", sc: ["arsip:write"], pa: [{ nm: "id", in: "path", s: { t: "string" }, rq: 1, ds: "ID petugas" }], r: "none" }, getArsipKlasifikasi: { id: "getArsipKlasifikasi", m: "GET", path: "/v1/arsip/klasifikasi", tag: "Arsip: Master", sum: "Klasifikasi arsip dan JRA: daftar", ds: "Kode klasifikasi bertingkat beserta retensi aktif/inaktif (tahun) dan nasib akhir. Dipakai menghitung jadwal retensi surat/dokumen/berkas.", sc: ["arsip:read"], pa: [{ nm: "q", in: "query", s: { t: "string" }, ds: "Cari" }, { nm: "aktif", in: "query", s: { t: "string" }, ds: "1 | 0" }, { nm: "induk_id", in: "query", s: { t: "string", rf: { l: "/v1/arsip/klasifikasi", k: "id", d: "/v1/arsip/klasifikasi/{id}" } }, ds: "Induk" }], r: "list", it: "ArsipKlasifikasi" }, postArsipKlasifikasi: { id: "postArsipKlasifikasi", m: "POST", path: "/v1/arsip/klasifikasi", tag: "Arsip: Master", sum: "Klasifikasi arsip dan JRA: tambah", sc: ["arsip:admin"], b: { ct: "application/json", ref: "ArsipKlasifikasiInput", s: { t: "object", ds: "Saat ubah (PUT), kirim hanya kolom yang berubah.", pr: { induk_id: { t: "integer", n: 1, ds: "ID arsip_klasifikasi", rf: { l: "/v1/arsip/klasifikasi", k: "id", d: "/v1/arsip/klasifikasi/{id}" } }, kode: { t: "string", max: 30, p: "^[A-Za-z0-9._\\-]+$" }, nama: { t: "string", max: 200 }, keterangan: { t: "string", max: 5e3 }, retensi_aktif: { t: "integer", min: 0, mx: 100 }, retensi_inaktif: { t: "integer", min: 0, mx: 100 }, nasib_akhir: { t: "string", e: ["musnah", "permanen", "dinilai_kembali"] }, keterangan_retensi: { t: "string", max: 255 }, aktif: { t: "boolean" }, urut: { t: "integer", min: 0, mx: 65535 } }, rq: ["kode", "nama"] }, rq: 1 }, r: "object", it: "ArsipKlasifikasi" }, putArsipKlasifikasiById: { id: "putArsipKlasifikasiById", m: "PUT", path: "/v1/arsip/klasifikasi/{id}", tag: "Arsip: Master", sum: "Klasifikasi arsip dan JRA: ubah", sc: ["arsip:admin"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/arsip/klasifikasi", k: "id", d: "/v1/arsip/klasifikasi/{id}" } }, rq: 1, ds: "ID" }], b: { ct: "application/json", ref: "ArsipKlasifikasiInput", s: { t: "object", ds: "Saat ubah (PUT), kirim hanya kolom yang berubah.", pr: { induk_id: { t: "integer", n: 1, ds: "ID arsip_klasifikasi", rf: { l: "/v1/arsip/klasifikasi", k: "id", d: "/v1/arsip/klasifikasi/{id}" } }, kode: { t: "string", max: 30, p: "^[A-Za-z0-9._\\-]+$" }, nama: { t: "string", max: 200 }, keterangan: { t: "string", max: 5e3 }, retensi_aktif: { t: "integer", min: 0, mx: 100 }, retensi_inaktif: { t: "integer", min: 0, mx: 100 }, nasib_akhir: { t: "string", e: ["musnah", "permanen", "dinilai_kembali"] }, keterangan_retensi: { t: "string", max: 255 }, aktif: { t: "boolean" }, urut: { t: "integer", min: 0, mx: 65535 } }, rq: ["kode", "nama"] }, rq: 1 }, r: "object", it: "ArsipKlasifikasi" }, deleteArsipKlasifikasiById: { id: "deleteArsipKlasifikasiById", m: "DELETE", path: "/v1/arsip/klasifikasi/{id}", tag: "Arsip: Master", sum: "Klasifikasi arsip dan JRA: hapus", ds: "Ditolak bila masih dipakai.", sc: ["arsip:admin"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/arsip/klasifikasi", k: "id", d: "/v1/arsip/klasifikasi/{id}" } }, rq: 1, ds: "ID" }], r: "none" }, getArsipJenis: { id: "getArsipJenis", m: "GET", path: "/v1/arsip/jenis", tag: "Arsip: Master", sum: "Jenis naskah dan dokumen: daftar", ds: "kelompok=naskah untuk surat (kode dipakai di nomor surat), kelompok=dokumen untuk arsip dokumen (untuk_pemilik, masa berlaku, wajib verifikasi).", sc: ["arsip:read"], pa: [{ nm: "q", in: "query", s: { t: "string" }, ds: "Cari" }, { nm: "aktif", in: "query", s: { t: "string" }, ds: "1 | 0" }, { nm: "kelompok", in: "query", s: { t: "string" }, ds: "naskah | dokumen" }, { nm: "pemilik", in: "query", s: { t: "string" }, ds: "Hanya jenis untuk pemilik ini" }], r: "list", it: "ArsipJenis" }, postArsipJenis: { id: "postArsipJenis", m: "POST", path: "/v1/arsip/jenis", tag: "Arsip: Master", sum: "Jenis naskah dan dokumen: tambah", sc: ["arsip:admin"], b: { ct: "application/json", ref: "ArsipJenisInput", s: { t: "object", ds: "Saat ubah (PUT), kirim hanya kolom yang berubah.", pr: { kelompok: { t: "string", e: ["naskah", "dokumen"] }, kode: { t: "string", max: 30, p: "^[A-Za-z0-9._\\-]+$" }, nama: { t: "string", max: 100 }, keterangan: { t: "string", max: 5e3 }, untuk_pemilik: { t: "array", ds: "Kosong = semua pemilik", i: { t: "string", e: ["universitas", "fakultas", "prodi", "unit", "dosen", "mahasiswa"] } }, klasifikasi_id: { t: "integer", n: 1, ds: "ID arsip_klasifikasi", rf: { l: "/v1/arsip/klasifikasi", k: "id", d: "/v1/arsip/klasifikasi/{id}" } }, punya_masa_berlaku: { t: "boolean" }, wajib_verifikasi: { t: "boolean" }, aktif: { t: "boolean" }, urut: { t: "integer", min: 0, mx: 65535 } }, rq: ["kelompok", "kode", "nama"] }, rq: 1 }, r: "object", it: "ArsipJenis" }, putArsipJenisById: { id: "putArsipJenisById", m: "PUT", path: "/v1/arsip/jenis/{id}", tag: "Arsip: Master", sum: "Jenis naskah dan dokumen: ubah", sc: ["arsip:admin"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/arsip/jenis", k: "id", d: "/v1/arsip/jenis/{id}" } }, rq: 1, ds: "ID" }], b: { ct: "application/json", ref: "ArsipJenisInput", s: { t: "object", ds: "Saat ubah (PUT), kirim hanya kolom yang berubah.", pr: { kelompok: { t: "string", e: ["naskah", "dokumen"] }, kode: { t: "string", max: 30, p: "^[A-Za-z0-9._\\-]+$" }, nama: { t: "string", max: 100 }, keterangan: { t: "string", max: 5e3 }, untuk_pemilik: { t: "array", ds: "Kosong = semua pemilik", i: { t: "string", e: ["universitas", "fakultas", "prodi", "unit", "dosen", "mahasiswa"] } }, klasifikasi_id: { t: "integer", n: 1, ds: "ID arsip_klasifikasi", rf: { l: "/v1/arsip/klasifikasi", k: "id", d: "/v1/arsip/klasifikasi/{id}" } }, punya_masa_berlaku: { t: "boolean" }, wajib_verifikasi: { t: "boolean" }, aktif: { t: "boolean" }, urut: { t: "integer", min: 0, mx: 65535 } }, rq: ["kelompok", "kode", "nama"] }, rq: 1 }, r: "object", it: "ArsipJenis" }, deleteArsipJenisById: { id: "deleteArsipJenisById", m: "DELETE", path: "/v1/arsip/jenis/{id}", tag: "Arsip: Master", sum: "Jenis naskah dan dokumen: hapus", ds: "Ditolak bila masih dipakai.", sc: ["arsip:admin"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/arsip/jenis", k: "id", d: "/v1/arsip/jenis/{id}" } }, rq: 1, ds: "ID" }], r: "none" }, getArsipPenomoranPratinjau: { id: "getArsipPenomoranPratinjau", m: "GET", path: "/v1/arsip/penomoran/pratinjau", tag: "Arsip: Master", sum: "Pratinjau nomor berikutnya", ds: "Tanpa memakai nomor. Format dipilih dari pengaturan paling spesifik (unit+jenis \u2192 unit \u2192 jenis \u2192 umum \u2192 bawaan).", sc: ["arsip:read"], pa: [{ nm: "unit_id", in: "query", s: { t: "integer", rf: { l: "/v1/arsip/unit", k: "id", d: "/v1/arsip/unit/{id}" } }, rq: 1, ds: "Unit" }, { nm: "untuk", in: "query", s: { t: "string" }, ds: "surat_keluar | agenda_masuk | agenda_keluar" }, { nm: "jenis_id", in: "query", s: { t: "string", rf: { l: "/v1/arsip/jenis", k: "id", d: "/v1/arsip/jenis/{id}" } }, ds: "Jenis naskah" }, { nm: "klasifikasi_id", in: "query", s: { t: "string", rf: { l: "/v1/arsip/klasifikasi", k: "id", d: "/v1/arsip/klasifikasi/{id}" } }, ds: "Klasifikasi" }, { nm: "tanggal", in: "query", s: { t: "string" }, ds: "YYYY-MM-DD" }], r: "object", it: "Objek" }, getArsipPenomoran: { id: "getArsipPenomoran", m: "GET", path: "/v1/arsip/penomoran", tag: "Arsip: Master", sum: "Format penomoran: daftar", ds: "Format nomor surat keluar dan nomor agenda, mis. `{nomor:3}/{kode_unit}/{klasifikasi}/{bulan_romawi}/{tahun}`. Penanda lihat /referensi (token_nomor). unit_id kosong = berlaku untuk semua unit (admin arsip). Hanya milik unit tempat Anda berperan dan yang bersama.", sc: ["arsip:read"], pa: [{ nm: "unit_id", in: "query", s: { t: "string", rf: { l: "/v1/arsip/unit", k: "id", d: "/v1/arsip/unit/{id}" } }, ds: "Unit" }, { nm: "q", in: "query", s: { t: "string" }, ds: "Cari" }, { nm: "aktif", in: "query", s: { t: "string" }, ds: "1 | 0" }], r: "list", it: "ArsipPenomoran" }, postArsipPenomoran: { id: "postArsipPenomoran", m: "POST", path: "/v1/arsip/penomoran", tag: "Arsip: Master", sum: "Format penomoran: tambah", ds: "Oleh admin/sekretaris/arsiparis unit; tanpa unit_id hanya admin arsip.", sc: ["arsip:write"], b: { ct: "application/json", ref: "ArsipPenomoranInput", s: { t: "object", ds: "Saat ubah (PUT), kirim hanya kolom yang berubah.", pr: { untuk: { t: "string", e: ["surat_keluar", "agenda_masuk", "agenda_keluar"] }, unit_id: { t: "integer", n: 1, ds: "ID arsip_unit", rf: { l: "/v1/arsip/unit", k: "id", d: "/v1/arsip/unit/{id}" } }, jenis_id: { t: "integer", n: 1, ds: "ID arsip_jenis", rf: { l: "/v1/arsip/jenis", k: "id", d: "/v1/arsip/jenis/{id}" } }, format: { t: "string", max: 150 }, reset: { t: "string", e: ["tahunan", "bulanan", "tidak"] }, keterangan: { t: "string", max: 255 }, aktif: { t: "boolean" } }, rq: ["untuk", "format"] }, rq: 1 }, r: "object", it: "ArsipPenomoran" }, getArsipPenomoranById: { id: "getArsipPenomoranById", m: "GET", path: "/v1/arsip/penomoran/{id}", tag: "Arsip: Master", sum: "Format penomoran: detail", sc: ["arsip:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/arsip/penomoran", k: "id", d: "/v1/arsip/penomoran/{id}" } }, rq: 1, ds: "ID" }], r: "object", it: "ArsipPenomoran" }, putArsipPenomoranById: { id: "putArsipPenomoranById", m: "PUT", path: "/v1/arsip/penomoran/{id}", tag: "Arsip: Master", sum: "Format penomoran: ubah", sc: ["arsip:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/arsip/penomoran", k: "id", d: "/v1/arsip/penomoran/{id}" } }, rq: 1, ds: "ID" }], b: { ct: "application/json", ref: "ArsipPenomoranInput", s: { t: "object", ds: "Saat ubah (PUT), kirim hanya kolom yang berubah.", pr: { untuk: { t: "string", e: ["surat_keluar", "agenda_masuk", "agenda_keluar"] }, unit_id: { t: "integer", n: 1, ds: "ID arsip_unit", rf: { l: "/v1/arsip/unit", k: "id", d: "/v1/arsip/unit/{id}" } }, jenis_id: { t: "integer", n: 1, ds: "ID arsip_jenis", rf: { l: "/v1/arsip/jenis", k: "id", d: "/v1/arsip/jenis/{id}" } }, format: { t: "string", max: 150 }, reset: { t: "string", e: ["tahunan", "bulanan", "tidak"] }, keterangan: { t: "string", max: 255 }, aktif: { t: "boolean" } }, rq: ["untuk", "format"] }, rq: 1 }, r: "object", it: "ArsipPenomoran" }, deleteArsipPenomoranById: { id: "deleteArsipPenomoranById", m: "DELETE", path: "/v1/arsip/penomoran/{id}", tag: "Arsip: Master", sum: "Format penomoran: hapus", sc: ["arsip:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/arsip/penomoran", k: "id", d: "/v1/arsip/penomoran/{id}" } }, rq: 1, ds: "ID" }], r: "none" }, getArsipLokasi: { id: "getArsipLokasi", m: "GET", path: "/v1/arsip/lokasi", tag: "Arsip: Master", sum: "Lokasi simpan fisik: daftar", ds: "Gedung \u203A ruang \u203A lemari \u203A rak \u203A boks milik unit. Hanya milik unit tempat Anda berperan dan yang bersama.", sc: ["arsip:read"], pa: [{ nm: "unit_id", in: "query", s: { t: "string", rf: { l: "/v1/arsip/unit", k: "id", d: "/v1/arsip/unit/{id}" } }, ds: "Unit" }, { nm: "q", in: "query", s: { t: "string" }, ds: "Cari" }, { nm: "aktif", in: "query", s: { t: "string" }, ds: "1 | 0" }], r: "list", it: "ArsipLokasi" }, postArsipLokasi: { id: "postArsipLokasi", m: "POST", path: "/v1/arsip/lokasi", tag: "Arsip: Master", sum: "Lokasi simpan fisik: tambah", ds: "Oleh admin/sekretaris/arsiparis unit; tanpa unit_id hanya admin arsip.", sc: ["arsip:write"], b: { ct: "application/json", ref: "ArsipLokasiInput", s: { t: "object", ds: "Saat ubah (PUT), kirim hanya kolom yang berubah.", pr: { unit_id: { t: "integer", n: 1, ds: "ID arsip_unit", rf: { l: "/v1/arsip/unit", k: "id", d: "/v1/arsip/unit/{id}" } }, induk_id: { t: "integer", n: 1, ds: "ID arsip_lokasi", rf: { l: "/v1/arsip/lokasi", k: "id", d: "/v1/arsip/lokasi/{id}" } }, kode: { t: "string", max: 50, p: "^[A-Za-z0-9._\\-]+$" }, nama: { t: "string", max: 150 }, jenis: { t: "string", e: ["gedung", "ruang", "lemari", "rak", "boks", "folder", "lainnya"] }, keterangan: { t: "string", max: 255 }, kapasitas: { t: "integer", min: 0, mx: 1e7 }, aktif: { t: "boolean" } }, rq: ["unit_id", "kode", "nama"] }, rq: 1 }, r: "object", it: "ArsipLokasi" }, getArsipLokasiById: { id: "getArsipLokasiById", m: "GET", path: "/v1/arsip/lokasi/{id}", tag: "Arsip: Master", sum: "Lokasi simpan fisik: detail", sc: ["arsip:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/arsip/lokasi", k: "id", d: "/v1/arsip/lokasi/{id}" } }, rq: 1, ds: "ID" }], r: "object", it: "ArsipLokasi" }, putArsipLokasiById: { id: "putArsipLokasiById", m: "PUT", path: "/v1/arsip/lokasi/{id}", tag: "Arsip: Master", sum: "Lokasi simpan fisik: ubah", sc: ["arsip:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/arsip/lokasi", k: "id", d: "/v1/arsip/lokasi/{id}" } }, rq: 1, ds: "ID" }], b: { ct: "application/json", ref: "ArsipLokasiInput", s: { t: "object", ds: "Saat ubah (PUT), kirim hanya kolom yang berubah.", pr: { unit_id: { t: "integer", n: 1, ds: "ID arsip_unit", rf: { l: "/v1/arsip/unit", k: "id", d: "/v1/arsip/unit/{id}" } }, induk_id: { t: "integer", n: 1, ds: "ID arsip_lokasi", rf: { l: "/v1/arsip/lokasi", k: "id", d: "/v1/arsip/lokasi/{id}" } }, kode: { t: "string", max: 50, p: "^[A-Za-z0-9._\\-]+$" }, nama: { t: "string", max: 150 }, jenis: { t: "string", e: ["gedung", "ruang", "lemari", "rak", "boks", "folder", "lainnya"] }, keterangan: { t: "string", max: 255 }, kapasitas: { t: "integer", min: 0, mx: 1e7 }, aktif: { t: "boolean" } }, rq: ["unit_id", "kode", "nama"] }, rq: 1 }, r: "object", it: "ArsipLokasi" }, deleteArsipLokasiById: { id: "deleteArsipLokasiById", m: "DELETE", path: "/v1/arsip/lokasi/{id}", tag: "Arsip: Master", sum: "Lokasi simpan fisik: hapus", sc: ["arsip:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/arsip/lokasi", k: "id", d: "/v1/arsip/lokasi/{id}" } }, rq: 1, ds: "ID" }], r: "none" }, getArsipTemplate: { id: "getArsipTemplate", m: "GET", path: "/v1/arsip/template", tag: "Arsip: Master", sum: "Templat surat: daftar", ds: "HTML dengan penanda {{nama}}; penanda bawaan: unit, unit_singkatan, tanggal, perihal, lampiran. unit_id kosong = templat bersama. Hanya milik unit tempat Anda berperan dan yang bersama.", sc: ["arsip:read"], pa: [{ nm: "unit_id", in: "query", s: { t: "string", rf: { l: "/v1/arsip/unit", k: "id", d: "/v1/arsip/unit/{id}" } }, ds: "Unit" }, { nm: "q", in: "query", s: { t: "string" }, ds: "Cari" }, { nm: "aktif", in: "query", s: { t: "string" }, ds: "1 | 0" }], r: "list", it: "ArsipTemplate" }, postArsipTemplate: { id: "postArsipTemplate", m: "POST", path: "/v1/arsip/template", tag: "Arsip: Master", sum: "Templat surat: tambah", ds: "Oleh admin/sekretaris/arsiparis unit; tanpa unit_id hanya admin arsip.", sc: ["arsip:write"], b: { ct: "application/json", ref: "ArsipTemplateInput", s: { t: "object", ds: "Saat ubah (PUT), kirim hanya kolom yang berubah.", pr: { unit_id: { t: "integer", n: 1, ds: "ID arsip_unit", rf: { l: "/v1/arsip/unit", k: "id", d: "/v1/arsip/unit/{id}" } }, jenis_id: { t: "integer", n: 1, ds: "ID arsip_jenis", rf: { l: "/v1/arsip/jenis", k: "id", d: "/v1/arsip/jenis/{id}" } }, nama: { t: "string", max: 150 }, perihal: { t: "string", max: 255 }, isi: { t: "string", ds: "HTML; tag/atribut berbahaya dibuang server" }, keterangan: { t: "string", max: 255 }, aktif: { t: "boolean" } }, rq: ["nama", "isi"] }, rq: 1 }, r: "object", it: "ArsipTemplate" }, getArsipTemplateById: { id: "getArsipTemplateById", m: "GET", path: "/v1/arsip/template/{id}", tag: "Arsip: Master", sum: "Templat surat: detail", sc: ["arsip:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/arsip/template", k: "id", d: "/v1/arsip/template/{id}" } }, rq: 1, ds: "ID" }], r: "object", it: "ArsipTemplate" }, putArsipTemplateById: { id: "putArsipTemplateById", m: "PUT", path: "/v1/arsip/template/{id}", tag: "Arsip: Master", sum: "Templat surat: ubah", sc: ["arsip:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/arsip/template", k: "id", d: "/v1/arsip/template/{id}" } }, rq: 1, ds: "ID" }], b: { ct: "application/json", ref: "ArsipTemplateInput", s: { t: "object", ds: "Saat ubah (PUT), kirim hanya kolom yang berubah.", pr: { unit_id: { t: "integer", n: 1, ds: "ID arsip_unit", rf: { l: "/v1/arsip/unit", k: "id", d: "/v1/arsip/unit/{id}" } }, jenis_id: { t: "integer", n: 1, ds: "ID arsip_jenis", rf: { l: "/v1/arsip/jenis", k: "id", d: "/v1/arsip/jenis/{id}" } }, nama: { t: "string", max: 150 }, perihal: { t: "string", max: 255 }, isi: { t: "string", ds: "HTML; tag/atribut berbahaya dibuang server" }, keterangan: { t: "string", max: 255 }, aktif: { t: "boolean" } }, rq: ["nama", "isi"] }, rq: 1 }, r: "object", it: "ArsipTemplate" }, deleteArsipTemplateById: { id: "deleteArsipTemplateById", m: "DELETE", path: "/v1/arsip/template/{id}", tag: "Arsip: Master", sum: "Templat surat: hapus", sc: ["arsip:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/arsip/template", k: "id", d: "/v1/arsip/template/{id}" } }, rq: 1, ds: "ID" }], r: "none" }, postArsipTemplateByIdRender: { id: "postArsipTemplateByIdRender", m: "POST", path: "/v1/arsip/template/{id}/render", tag: "Arsip: Master", sum: "Isi templat dengan data", ds: "Body: `unit_id`, `data` (objek penanda \u2192 nilai; nilai di-escape).", sc: ["arsip:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/arsip/template", k: "id", d: "/v1/arsip/template/{id}" } }, rq: 1, ds: "ID templat" }], b: { ct: "application/json", ref: "Objek", s: { t: "object", ds: "Baris data dengan nama kolom huruf kecil sesuai tabel SIAKAD." }, rq: 1 }, r: "object", it: "Objek" }, getArsipSurat: { id: "getArsipSurat", m: "GET", path: "/v1/arsip/surat", tag: "Arsip: Surat", sum: "Daftar surat (masuk dan keluar)", ds: "Hanya surat yang boleh Anda lihat: arsip unit tempat Anda pengelola (rahasia hanya admin/pimpinan), surat yang Anda buat/ajukan/setujui, disposisi untuk Anda/unit Anda, surat yang ditujukan kepada Anda, dan yang dibagikan.", sc: ["arsip:read"], pa: [{ nm: "arah", in: "query", s: { t: "string" }, ds: "masuk | keluar" }, { nm: "status", in: "query", s: { t: "string" }, ds: "Dipisah koma, mis. baru,didisposisi" }, { nm: "unit_id", in: "query", s: { t: "string", rf: { l: "/v1/arsip/unit", k: "id", d: "/v1/arsip/unit/{id}" } }, ds: "Unit" }, { nm: "turunan", in: "query", s: { t: "string" }, ds: "1 = termasuk unit turunan" }, { nm: "sifat", in: "query", s: { t: "string" }, ds: "biasa,penting,segera,sangat_segera" }, { nm: "keamanan", in: "query", s: { t: "string" }, ds: "biasa,terbatas,rahasia,sangat_rahasia" }, { nm: "jenis_id", in: "query", s: { t: "string", rf: { l: "/v1/arsip/jenis", k: "id", d: "/v1/arsip/jenis/{id}" } }, ds: "Jenis naskah" }, { nm: "klasifikasi_id", in: "query", s: { t: "string", rf: { l: "/v1/arsip/klasifikasi", k: "id", d: "/v1/arsip/klasifikasi/{id}" } }, ds: "Klasifikasi" }, { nm: "berkas_id", in: "query", s: { t: "string", rf: { l: "/v1/arsip/berkas", k: "id", d: "/v1/arsip/berkas/{id}" } }, ds: "Berkas" }, { nm: "dari", in: "query", s: { t: "string" }, ds: "Tanggal awal YYYY-MM-DD" }, { nm: "sampai", in: "query", s: { t: "string" }, ds: "Tanggal akhir" }, { nm: "tahun", in: "query", s: { t: "string" }, ds: "YYYY" }, { nm: "q", in: "query", s: { t: "string" }, ds: "Cari perihal, nomor, pengirim" }, { nm: "lewat_batas", in: "query", s: { t: "string" }, ds: "1 = lewat batas waktu" }, { nm: "perlu_tindakan", in: "query", s: { t: "string" }, ds: "1 = menunggu persetujuan/disposisi saya" }, { nm: "urut", in: "query", s: { t: "string" }, ds: "terbaru | lama | agenda | batas" }, { nm: "page", in: "query", s: { t: "integer", min: 1, d: 1 }, ds: "Nomor halaman, mulai 1." }, { nm: "per_page", in: "query", s: { t: "integer", min: 1, mx: 100, d: 25 }, ds: "Jumlah data per halaman (maksimal 100)." }], r: "list", it: "ArsipSuratRingkas" }, getArsipSuratMasuk: { id: "getArsipSuratMasuk", m: "GET", path: "/v1/arsip/surat-masuk", tag: "Arsip: Surat", sum: "Daftar surat masuk", sc: ["arsip:read"], pa: [{ nm: "status", in: "query", s: { t: "string" }, ds: "Dipisah koma, mis. baru,didisposisi" }, { nm: "unit_id", in: "query", s: { t: "string", rf: { l: "/v1/arsip/unit", k: "id", d: "/v1/arsip/unit/{id}" } }, ds: "Unit" }, { nm: "turunan", in: "query", s: { t: "string" }, ds: "1 = termasuk unit turunan" }, { nm: "sifat", in: "query", s: { t: "string" }, ds: "biasa,penting,segera,sangat_segera" }, { nm: "keamanan", in: "query", s: { t: "string" }, ds: "biasa,terbatas,rahasia,sangat_rahasia" }, { nm: "jenis_id", in: "query", s: { t: "string", rf: { l: "/v1/arsip/jenis", k: "id", d: "/v1/arsip/jenis/{id}" } }, ds: "Jenis naskah" }, { nm: "klasifikasi_id", in: "query", s: { t: "string", rf: { l: "/v1/arsip/klasifikasi", k: "id", d: "/v1/arsip/klasifikasi/{id}" } }, ds: "Klasifikasi" }, { nm: "berkas_id", in: "query", s: { t: "string", rf: { l: "/v1/arsip/berkas", k: "id", d: "/v1/arsip/berkas/{id}" } }, ds: "Berkas" }, { nm: "dari", in: "query", s: { t: "string" }, ds: "Tanggal awal YYYY-MM-DD" }, { nm: "sampai", in: "query", s: { t: "string" }, ds: "Tanggal akhir" }, { nm: "tahun", in: "query", s: { t: "string" }, ds: "YYYY" }, { nm: "q", in: "query", s: { t: "string" }, ds: "Cari perihal, nomor, pengirim" }, { nm: "lewat_batas", in: "query", s: { t: "string" }, ds: "1 = lewat batas waktu" }, { nm: "perlu_tindakan", in: "query", s: { t: "string" }, ds: "1 = menunggu persetujuan/disposisi saya" }, { nm: "urut", in: "query", s: { t: "string" }, ds: "terbaru | lama | agenda | batas" }, { nm: "page", in: "query", s: { t: "integer", min: 1, d: 1 }, ds: "Nomor halaman, mulai 1." }, { nm: "per_page", in: "query", s: { t: "integer", min: 1, mx: 100, d: 25 }, ds: "Jumlah data per halaman (maksimal 100)." }], r: "list", it: "ArsipSuratRingkas" }, postArsipSuratMasuk: { id: "postArsipSuratMasuk", m: "POST", path: "/v1/arsip/surat-masuk", tag: "Arsip: Surat", sum: "Catat surat masuk", ds: "Oleh admin/pimpinan/sekretaris unit penerima. Nomor agenda dibuat otomatis; retensi dihitung dari klasifikasi (atau klasifikasi bawaan jenis). Unggah hasil pindai lewat POST /surat/{ref}/file.", sc: ["arsip:write"], b: { ct: "application/json", ref: "ArsipSuratMasukInput", s: { t: "object", pr: { jenis_id: { t: "integer", n: 1, ds: "arsip_jenis kelompok naskah", rf: { l: "/v1/arsip/jenis", k: "id", d: "/v1/arsip/jenis/{id}" } }, tanggal_surat: { t: "string", n: 1, f: "date" }, perihal: { t: "string", max: 255 }, ringkasan: { t: "string", n: 1 }, lampiran: { t: "string", n: 1, ds: "Mis. 1 (satu) berkas" }, sifat: { t: "string", e: ["biasa", "penting", "segera", "sangat_segera"] }, keamanan: { t: "string", e: ["biasa", "terbatas", "rahasia", "sangat_rahasia"] }, media: { t: "string", e: ["kertas", "elektronik", "email", "pos", "kurir", "langsung", "sistem"] }, batas_waktu: { t: "string", n: 1, f: "date" }, balasan_untuk_id: { t: "integer", n: 1, ds: "Surat yang dibalas" }, klasifikasi_id: { t: "integer", n: 1, ds: "Kosong = klasifikasi bawaan jenis", rf: { l: "/v1/arsip/klasifikasi", k: "id", d: "/v1/arsip/klasifikasi/{id}" } }, berkas_id: { t: "integer", n: 1, ds: "Berkas terbuka unit yang sama", rf: { l: "/v1/arsip/berkas", k: "id", d: "/v1/arsip/berkas/{id}" } }, lokasi_id: { t: "integer", n: 1, rf: { l: "/v1/arsip/lokasi", k: "id", d: "/v1/arsip/lokasi/{id}" } }, unit_id: { t: "integer", ds: "Unit penerima", rf: { l: "/v1/arsip/unit", k: "id", d: "/v1/arsip/unit/{id}" } }, nomor_surat: { t: "string", n: 1, ds: "Nomor dari pengirim" }, tanggal_diterima: { t: "string", n: 1, f: "date" }, pengirim_nama: { t: "string", n: 1 }, pengirim_instansi: { t: "string", n: 1 }, pengirim_alamat: { t: "string", n: 1 }, pengirim_email: { t: "string", n: 1 } }, rq: ["unit_id", "perihal"] }, rq: 1 }, r: "object", it: "ArsipSurat" }, getArsipSuratKeluar: { id: "getArsipSuratKeluar", m: "GET", path: "/v1/arsip/surat-keluar", tag: "Arsip: Surat", sum: "Daftar surat keluar", sc: ["arsip:read"], pa: [{ nm: "status", in: "query", s: { t: "string" }, ds: "Dipisah koma, mis. baru,didisposisi" }, { nm: "unit_id", in: "query", s: { t: "string", rf: { l: "/v1/arsip/unit", k: "id", d: "/v1/arsip/unit/{id}" } }, ds: "Unit" }, { nm: "turunan", in: "query", s: { t: "string" }, ds: "1 = termasuk unit turunan" }, { nm: "sifat", in: "query", s: { t: "string" }, ds: "biasa,penting,segera,sangat_segera" }, { nm: "keamanan", in: "query", s: { t: "string" }, ds: "biasa,terbatas,rahasia,sangat_rahasia" }, { nm: "jenis_id", in: "query", s: { t: "string", rf: { l: "/v1/arsip/jenis", k: "id", d: "/v1/arsip/jenis/{id}" } }, ds: "Jenis naskah" }, { nm: "klasifikasi_id", in: "query", s: { t: "string", rf: { l: "/v1/arsip/klasifikasi", k: "id", d: "/v1/arsip/klasifikasi/{id}" } }, ds: "Klasifikasi" }, { nm: "berkas_id", in: "query", s: { t: "string", rf: { l: "/v1/arsip/berkas", k: "id", d: "/v1/arsip/berkas/{id}" } }, ds: "Berkas" }, { nm: "dari", in: "query", s: { t: "string" }, ds: "Tanggal awal YYYY-MM-DD" }, { nm: "sampai", in: "query", s: { t: "string" }, ds: "Tanggal akhir" }, { nm: "tahun", in: "query", s: { t: "string" }, ds: "YYYY" }, { nm: "q", in: "query", s: { t: "string" }, ds: "Cari perihal, nomor, pengirim" }, { nm: "lewat_batas", in: "query", s: { t: "string" }, ds: "1 = lewat batas waktu" }, { nm: "perlu_tindakan", in: "query", s: { t: "string" }, ds: "1 = menunggu persetujuan/disposisi saya" }, { nm: "urut", in: "query", s: { t: "string" }, ds: "terbaru | lama | agenda | batas" }, { nm: "page", in: "query", s: { t: "integer", min: 1, d: 1 }, ds: "Nomor halaman, mulai 1." }, { nm: "per_page", in: "query", s: { t: "integer", min: 1, mx: 100, d: 25 }, ds: "Jumlah data per halaman (maksimal 100)." }], r: "list", it: "ArsipSuratRingkas" }, postArsipSuratKeluar: { id: "postArsipSuratKeluar", m: "POST", path: "/v1/arsip/surat-keluar", tag: "Arsip: Surat", sum: "Buat konsep surat keluar", ds: "Semua petugas unit (termasuk staf). `template_id` + `data_templat` mengisi `isi` dari templat. `catat_langsung=true` (admin/pimpinan/sekretaris) untuk surat yang sudah ditandatangani di kertas: langsung diberi nomor (atau `nomor_surat` manual) dan dikirim.", sc: ["arsip:write"], b: { ct: "application/json", ref: "ArsipSuratKeluarInput", s: { t: "object", pr: { jenis_id: { t: "integer", n: 1, ds: "arsip_jenis kelompok naskah", rf: { l: "/v1/arsip/jenis", k: "id", d: "/v1/arsip/jenis/{id}" } }, tanggal_surat: { t: "string", n: 1, f: "date" }, perihal: { t: "string", max: 255 }, ringkasan: { t: "string", n: 1 }, lampiran: { t: "string", n: 1, ds: "Mis. 1 (satu) berkas" }, sifat: { t: "string", e: ["biasa", "penting", "segera", "sangat_segera"] }, keamanan: { t: "string", e: ["biasa", "terbatas", "rahasia", "sangat_rahasia"] }, media: { t: "string", e: ["kertas", "elektronik", "email", "pos", "kurir", "langsung", "sistem"] }, batas_waktu: { t: "string", n: 1, f: "date" }, balasan_untuk_id: { t: "integer", n: 1, ds: "Surat yang dibalas" }, klasifikasi_id: { t: "integer", n: 1, ds: "Kosong = klasifikasi bawaan jenis", rf: { l: "/v1/arsip/klasifikasi", k: "id", d: "/v1/arsip/klasifikasi/{id}" } }, berkas_id: { t: "integer", n: 1, ds: "Berkas terbuka unit yang sama", rf: { l: "/v1/arsip/berkas", k: "id", d: "/v1/arsip/berkas/{id}" } }, lokasi_id: { t: "integer", n: 1, rf: { l: "/v1/arsip/lokasi", k: "id", d: "/v1/arsip/lokasi/{id}" } }, unit_id: { t: "integer", ds: "Unit pengirim (hanya saat buat)", rf: { l: "/v1/arsip/unit", k: "id", d: "/v1/arsip/unit/{id}" } }, isi: { t: "string", n: 1, ds: "HTML; disaring server" }, template_id: { t: "integer", n: 1, rf: { l: "/v1/arsip/template", k: "id", d: "/v1/arsip/template/{id}" } }, data_templat: { t: "object", ds: "Nilai penanda {{nama}} templat" }, tujuan: { t: "array", i: { t: "object", pr: { jenis: { t: "string", e: ["unit", "pengguna", "dosen", "mahasiswa", "eksternal"] }, unit_id: { t: "integer", n: 1, ds: "jenis unit" }, username: { t: "string", n: 1, ds: "jenis pengguna" }, nidn: { t: "string", n: 1, ds: "jenis dosen" }, nim: { t: "string", n: 1, ds: "jenis mahasiswa" }, nama: { t: "string", n: 1, ds: "Wajib untuk eksternal (atau instansi); lainnya otomatis dari SIAKAD" }, jabatan: { t: "string", n: 1 }, instansi: { t: "string", n: 1 }, alamat: { t: "string", n: 1 }, email: { t: "string", n: 1 }, tembusan: { t: "boolean" } }, rq: ["jenis"] } }, catat_langsung: { t: "boolean" }, nomor_surat: { t: "string", n: 1, ds: "Hanya dengan catat_langsung" } }, rq: ["unit_id", "perihal"] }, rq: 1 }, r: "object", it: "ArsipSurat" }, postArsipSayaKirimSurat: { id: "postArsipSayaKirimSurat", m: "POST", path: "/v1/arsip/saya/kirim-surat", tag: "Arsip: Surat", sum: "Kirim surat/permohonan ke unit", ds: "Dosen, mahasiswa, atau pegawai mengirim surat ke sebuah unit (mis. permohonan ke prodi). Tercatat sebagai surat masuk unit itu dengan pengirim = pengguna token. Lampiran diunggah pengirim lewat POST /surat/{ref}/file selama status masih baru.", sc: ["arsip:write"], b: { ct: "application/json", ref: "ArsipSuratMasukInput", s: { t: "object", pr: { jenis_id: { t: "integer", n: 1, ds: "arsip_jenis kelompok naskah", rf: { l: "/v1/arsip/jenis", k: "id", d: "/v1/arsip/jenis/{id}" } }, tanggal_surat: { t: "string", n: 1, f: "date" }, perihal: { t: "string", max: 255 }, ringkasan: { t: "string", n: 1 }, lampiran: { t: "string", n: 1, ds: "Mis. 1 (satu) berkas" }, sifat: { t: "string", e: ["biasa", "penting", "segera", "sangat_segera"] }, keamanan: { t: "string", e: ["biasa", "terbatas", "rahasia", "sangat_rahasia"] }, media: { t: "string", e: ["kertas", "elektronik", "email", "pos", "kurir", "langsung", "sistem"] }, batas_waktu: { t: "string", n: 1, f: "date" }, balasan_untuk_id: { t: "integer", n: 1, ds: "Surat yang dibalas" }, klasifikasi_id: { t: "integer", n: 1, ds: "Kosong = klasifikasi bawaan jenis", rf: { l: "/v1/arsip/klasifikasi", k: "id", d: "/v1/arsip/klasifikasi/{id}" } }, berkas_id: { t: "integer", n: 1, ds: "Berkas terbuka unit yang sama", rf: { l: "/v1/arsip/berkas", k: "id", d: "/v1/arsip/berkas/{id}" } }, lokasi_id: { t: "integer", n: 1, rf: { l: "/v1/arsip/lokasi", k: "id", d: "/v1/arsip/lokasi/{id}" } }, unit_id: { t: "integer", ds: "Unit penerima", rf: { l: "/v1/arsip/unit", k: "id", d: "/v1/arsip/unit/{id}" } }, nomor_surat: { t: "string", n: 1, ds: "Nomor dari pengirim" }, tanggal_diterima: { t: "string", n: 1, f: "date" }, pengirim_nama: { t: "string", n: 1 }, pengirim_instansi: { t: "string", n: 1 }, pengirim_alamat: { t: "string", n: 1 }, pengirim_email: { t: "string", n: 1 } }, rq: ["unit_id", "perihal"] }, rq: 1 }, r: "object", it: "ArsipSurat" }, getArsipSuratByRef: { id: "getArsipSuratByRef", m: "GET", path: "/v1/arsip/surat/{ref}", tag: "Arsip: Surat", sum: "Detail surat", ds: "Termasuk tujuan, alur persetujuan, pohon disposisi, file (dengan lampiran surat asal untuk surat internal), balasan, riwayat (bagi pengelola), dan `hak` = tindakan yang boleh Anda lakukan. Membuka surat yang ditujukan kepada Anda menandainya dibaca.", sc: ["arsip:read"], pa: [{ nm: "ref", in: "path", s: { t: "string", rf: { l: "/v1/arsip/surat", k: "ref", d: "/v1/arsip/surat/{ref}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "ArsipSurat" }, putArsipSuratByRef: { id: "putArsipSuratByRef", m: "PUT", path: "/v1/arsip/surat/{ref}", tag: "Arsip: Surat", sum: "Ubah surat", ds: "Konsep/revisi surat keluar oleh konseptor atau pengelola (termasuk `tujuan`). Surat masuk oleh pengelola. Setelah terkirim/diarsipkan hanya klasifikasi_id, berkas_id, lokasi_id, ringkasan oleh pengelola arsip.", sc: ["arsip:write"], pa: [{ nm: "ref", in: "path", s: { t: "string", rf: { l: "/v1/arsip/surat", k: "ref", d: "/v1/arsip/surat/{ref}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "ArsipSuratKeluarInput", s: { t: "object", pr: { jenis_id: { t: "integer", n: 1, ds: "arsip_jenis kelompok naskah", rf: { l: "/v1/arsip/jenis", k: "id", d: "/v1/arsip/jenis/{id}" } }, tanggal_surat: { t: "string", n: 1, f: "date" }, perihal: { t: "string", max: 255 }, ringkasan: { t: "string", n: 1 }, lampiran: { t: "string", n: 1, ds: "Mis. 1 (satu) berkas" }, sifat: { t: "string", e: ["biasa", "penting", "segera", "sangat_segera"] }, keamanan: { t: "string", e: ["biasa", "terbatas", "rahasia", "sangat_rahasia"] }, media: { t: "string", e: ["kertas", "elektronik", "email", "pos", "kurir", "langsung", "sistem"] }, batas_waktu: { t: "string", n: 1, f: "date" }, balasan_untuk_id: { t: "integer", n: 1, ds: "Surat yang dibalas" }, klasifikasi_id: { t: "integer", n: 1, ds: "Kosong = klasifikasi bawaan jenis", rf: { l: "/v1/arsip/klasifikasi", k: "id", d: "/v1/arsip/klasifikasi/{id}" } }, berkas_id: { t: "integer", n: 1, ds: "Berkas terbuka unit yang sama", rf: { l: "/v1/arsip/berkas", k: "id", d: "/v1/arsip/berkas/{id}" } }, lokasi_id: { t: "integer", n: 1, rf: { l: "/v1/arsip/lokasi", k: "id", d: "/v1/arsip/lokasi/{id}" } }, unit_id: { t: "integer", ds: "Unit pengirim (hanya saat buat)", rf: { l: "/v1/arsip/unit", k: "id", d: "/v1/arsip/unit/{id}" } }, isi: { t: "string", n: 1, ds: "HTML; disaring server" }, template_id: { t: "integer", n: 1, rf: { l: "/v1/arsip/template", k: "id", d: "/v1/arsip/template/{id}" } }, data_templat: { t: "object", ds: "Nilai penanda {{nama}} templat" }, tujuan: { t: "array", i: { t: "object", pr: { jenis: { t: "string", e: ["unit", "pengguna", "dosen", "mahasiswa", "eksternal"] }, unit_id: { t: "integer", n: 1, ds: "jenis unit" }, username: { t: "string", n: 1, ds: "jenis pengguna" }, nidn: { t: "string", n: 1, ds: "jenis dosen" }, nim: { t: "string", n: 1, ds: "jenis mahasiswa" }, nama: { t: "string", n: 1, ds: "Wajib untuk eksternal (atau instansi); lainnya otomatis dari SIAKAD" }, jabatan: { t: "string", n: 1 }, instansi: { t: "string", n: 1 }, alamat: { t: "string", n: 1 }, email: { t: "string", n: 1 }, tembusan: { t: "boolean" } }, rq: ["jenis"] } }, catat_langsung: { t: "boolean" }, nomor_surat: { t: "string", n: 1, ds: "Hanya dengan catat_langsung" } }, rq: ["unit_id", "perihal"] }, rq: 1 }, r: "object", it: "ArsipSurat" }, deleteArsipSuratByRef: { id: "deleteArsipSuratByRef", m: "DELETE", path: "/v1/arsip/surat/{ref}", tag: "Arsip: Surat", sum: "Hapus surat", ds: "Hanya konsep/revisi atau surat yang dibatalkan.", sc: ["arsip:write"], pa: [{ nm: "ref", in: "path", s: { t: "string", rf: { l: "/v1/arsip/surat", k: "ref", d: "/v1/arsip/surat/{ref}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "none" }, postArsipSuratByRefAjukan: { id: "postArsipSuratByRefAjukan", m: "POST", path: "/v1/arsip/surat/{ref}/ajukan", tag: "Arsip: Surat", sum: "Ajukan untuk paraf/tanda tangan", ds: "Body `persetujuan`: [{username, peran: paraf|tandatangan, jabatan?}] berurutan; terakhir harus tandatangan (petugas dengan bisa_tandatangan). Syarat: perihal, isi atau file, dan tujuan terisi.", sc: ["arsip:write"], pa: [{ nm: "ref", in: "path", s: { t: "string", rf: { l: "/v1/arsip/surat", k: "ref", d: "/v1/arsip/surat/{ref}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "ArsipAjukanInput", s: { t: "object", pr: { persetujuan: { t: "array", i: { t: "object", pr: { username: { t: "string" }, peran: { t: "string", e: ["paraf", "tandatangan"] }, jabatan: { t: "string", n: 1 } }, rq: ["username"] } } }, rq: ["persetujuan"] }, rq: 1 }, r: "object", it: "ArsipSurat" }, postArsipSuratByRefSetujui: { id: "postArsipSuratByRefSetujui", m: "POST", path: "/v1/arsip/surat/{ref}/setujui", tag: "Arsip: Surat", sum: "Paraf/tanda tangani", ds: "Hanya penyetuju yang sedang mendapat giliran. Tanda tangan mencatat penandatangan dan membuat kode verifikasi. Setelah semua menyetujui status menjadi disetujui.", sc: ["arsip:write"], pa: [{ nm: "ref", in: "path", s: { t: "string", rf: { l: "/v1/arsip/surat", k: "ref", d: "/v1/arsip/surat/{ref}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "ArsipCatatan", s: { t: "object", pr: { catatan: { t: "string", n: 1 } } }, rq: 1 }, r: "object", it: "ArsipSurat" }, postArsipSuratByRefTolak: { id: "postArsipSuratByRefTolak", m: "POST", path: "/v1/arsip/surat/{ref}/tolak", tag: "Arsip: Surat", sum: "Kembalikan untuk revisi", ds: "Catatan wajib. Status menjadi revisi; konseptor memperbaiki lalu mengajukan ulang.", sc: ["arsip:write"], pa: [{ nm: "ref", in: "path", s: { t: "string", rf: { l: "/v1/arsip/surat", k: "ref", d: "/v1/arsip/surat/{ref}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "ArsipCatatan", s: { t: "object", pr: { catatan: { t: "string", n: 1 } } }, rq: 1 }, r: "object", it: "ArsipSurat" }, postArsipSuratByRefNomor: { id: "postArsipSuratByRefNomor", m: "POST", path: "/v1/arsip/surat/{ref}/nomor", tag: "Arsip: Surat", sum: "Beri nomor surat", ds: "Otomatis dari format penomoran (atomik, tidak pernah ganda), atau `nomor_surat` manual. Admin/pimpinan/sekretaris unit.", sc: ["arsip:write"], pa: [{ nm: "ref", in: "path", s: { t: "string", rf: { l: "/v1/arsip/surat", k: "ref", d: "/v1/arsip/surat/{ref}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "Objek", s: { t: "object", ds: "Baris data dengan nama kolom huruf kecil sesuai tabel SIAKAD." }, rq: 1 }, r: "object", it: "ArsipSurat" }, postArsipSuratByRefKirim: { id: "postArsipSuratByRefKirim", m: "POST", path: "/v1/arsip/surat/{ref}/kirim", tag: "Arsip: Surat", sum: "Kirim surat keluar", ds: "Memberi nomor bila belum ada. Tujuan unit menerima salinan surat masuk (dengan nomor agenda) dan notifikasi; tujuan pengguna/dosen/mahasiswa menerima notifikasi dan bisa membuka surat. Tujuan eksternal ditandai terkirim (email/pos oleh frontend). Body opsional: media, tanggal_kirim.", sc: ["arsip:write"], pa: [{ nm: "ref", in: "path", s: { t: "string", rf: { l: "/v1/arsip/surat", k: "ref", d: "/v1/arsip/surat/{ref}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "Objek", s: { t: "object", ds: "Baris data dengan nama kolom huruf kecil sesuai tabel SIAKAD." }, rq: 1 }, r: "object", it: "ArsipSurat" }, postArsipSuratByRefSelesai: { id: "postArsipSuratByRefSelesai", m: "POST", path: "/v1/arsip/surat/{ref}/selesai", tag: "Arsip: Surat", sum: "Tandai surat masuk selesai", sc: ["arsip:write"], pa: [{ nm: "ref", in: "path", s: { t: "string", rf: { l: "/v1/arsip/surat", k: "ref", d: "/v1/arsip/surat/{ref}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "ArsipCatatan", s: { t: "object", pr: { catatan: { t: "string", n: 1 } } }, rq: 1 }, r: "object", it: "ArsipSurat" }, postArsipSuratByRefArsipkan: { id: "postArsipSuratByRefArsipkan", m: "POST", path: "/v1/arsip/surat/{ref}/arsipkan", tag: "Arsip: Surat", sum: "Arsipkan surat (selesai/terkirim)", sc: ["arsip:write"], pa: [{ nm: "ref", in: "path", s: { t: "string", rf: { l: "/v1/arsip/surat", k: "ref", d: "/v1/arsip/surat/{ref}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "ArsipCatatan", s: { t: "object", pr: { catatan: { t: "string", n: 1 } } }, rq: 1 }, r: "object", it: "ArsipSurat" }, postArsipSuratByRefBatalkan: { id: "postArsipSuratByRefBatalkan", m: "POST", path: "/v1/arsip/surat/{ref}/batalkan", tag: "Arsip: Surat", sum: "Batalkan surat (catatan wajib)", sc: ["arsip:write"], pa: [{ nm: "ref", in: "path", s: { t: "string", rf: { l: "/v1/arsip/surat", k: "ref", d: "/v1/arsip/surat/{ref}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "ArsipCatatan", s: { t: "object", pr: { catatan: { t: "string", n: 1 } } }, rq: 1 }, r: "object", it: "ArsipSurat" }, getArsipSuratByRefDisposisi: { id: "getArsipSuratByRefDisposisi", m: "GET", path: "/v1/arsip/surat/{ref}/disposisi", tag: "Arsip: Disposisi", sum: "Pohon disposisi surat", sc: ["arsip:read"], pa: [{ nm: "ref", in: "path", s: { t: "string", rf: { l: "/v1/arsip/surat", k: "ref", d: "/v1/arsip/surat/{ref}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "list", it: "ArsipDisposisi" }, postArsipSuratByRefDisposisi: { id: "postArsipSuratByRefDisposisi", m: "POST", path: "/v1/arsip/surat/{ref}/disposisi", tag: "Arsip: Disposisi", sum: "Disposisikan surat masuk", ds: "Oleh admin/pimpinan/sekretaris unit penerima, atau penerima disposisi (meneruskan; `induk_id` opsional). Body: tujuan [{username} | {unit_id}], instruksi [teks], catatan, sifat, batas_waktu.", sc: ["arsip:write"], pa: [{ nm: "ref", in: "path", s: { t: "string", rf: { l: "/v1/arsip/surat", k: "ref", d: "/v1/arsip/surat/{ref}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "ArsipDisposisiInput", s: { t: "object", pr: { tujuan: { t: "array", i: { t: "object", pr: { username: { t: "string", n: 1 }, unit_id: { t: "integer", n: 1 } } } }, instruksi: { t: "array", ds: "Lihat /referensi instruksi_disposisi", i: { t: "string" } }, catatan: { t: "string", n: 1 }, sifat: { t: "string", e: ["biasa", "penting", "segera", "sangat_segera"] }, batas_waktu: { t: "string", n: 1, f: "date" }, induk_id: { t: "integer", n: 1, ds: "Meneruskan disposisi ini", rf: { l: "/v1/arsip/surat", k: "id", d: "/v1/arsip/surat/{id}" } } }, rq: ["tujuan"] }, rq: 1 }, r: "list", it: "ArsipDisposisi" }, getArsipDisposisi: { id: "getArsipDisposisi", m: "GET", path: "/v1/arsip/disposisi", tag: "Arsip: Disposisi", sum: "Kotak disposisi saya", ds: "`kotak=masuk` (untuk saya dan unit saya, bawaan) atau `keluar` (dari saya). Urut: belum selesai dan batas waktu terdekat dulu.", sc: ["arsip:read"], pa: [{ nm: "kotak", in: "query", s: { t: "string" }, ds: "masuk | keluar" }, { nm: "status", in: "query", s: { t: "string" }, ds: "baru,dibaca,diproses,selesai,dikembalikan" }, { nm: "aktif", in: "query", s: { t: "string" }, ds: "1 = belum selesai" }, { nm: "lewat_batas", in: "query", s: { t: "string" }, ds: "1" }, { nm: "page", in: "query", s: { t: "integer", min: 1, d: 1 }, ds: "Nomor halaman, mulai 1." }, { nm: "per_page", in: "query", s: { t: "integer", min: 1, mx: 100, d: 25 }, ds: "Jumlah data per halaman (maksimal 100)." }], r: "list", it: "ArsipDisposisi" }, getArsipDisposisiById: { id: "getArsipDisposisiById", m: "GET", path: "/v1/arsip/disposisi/{id}", tag: "Arsip: Disposisi", sum: "Detail disposisi", sc: ["arsip:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/arsip/disposisi", k: "id", d: "/v1/arsip/disposisi/{id}" } }, rq: 1, ds: "ID disposisi" }], r: "object", it: "ArsipDisposisi" }, postArsipDisposisiByIdBaca: { id: "postArsipDisposisiByIdBaca", m: "POST", path: "/v1/arsip/disposisi/{id}/baca", tag: "Arsip: Disposisi", sum: "Tandai dibaca", ds: "Oleh penerima disposisi (atau petugas unit tujuan). Status surat diperbarui otomatis: diproses, lalu selesai saat semua disposisi selesai.", sc: ["arsip:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/arsip/disposisi", k: "id", d: "/v1/arsip/disposisi/{id}" } }, rq: 1, ds: "ID disposisi" }], b: { ct: "application/json", ref: "ArsipLaporan", s: { t: "object", pr: { laporan: { t: "string", n: 1, ds: "Laporan tindak lanjut / alasan" } } }, rq: 1 }, r: "object", it: "ArsipDisposisi" }, postArsipDisposisiByIdProses: { id: "postArsipDisposisiByIdProses", m: "POST", path: "/v1/arsip/disposisi/{id}/proses", tag: "Arsip: Disposisi", sum: "Sedang ditindaklanjuti (laporan opsional)", ds: "Oleh penerima disposisi (atau petugas unit tujuan). Status surat diperbarui otomatis: diproses, lalu selesai saat semua disposisi selesai.", sc: ["arsip:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/arsip/disposisi", k: "id", d: "/v1/arsip/disposisi/{id}" } }, rq: 1, ds: "ID disposisi" }], b: { ct: "application/json", ref: "ArsipLaporan", s: { t: "object", pr: { laporan: { t: "string", n: 1, ds: "Laporan tindak lanjut / alasan" } } }, rq: 1 }, r: "object", it: "ArsipDisposisi" }, postArsipDisposisiByIdSelesai: { id: "postArsipDisposisiByIdSelesai", m: "POST", path: "/v1/arsip/disposisi/{id}/selesai", tag: "Arsip: Disposisi", sum: "Selesai (laporan tindak lanjut)", ds: "Oleh penerima disposisi (atau petugas unit tujuan). Status surat diperbarui otomatis: diproses, lalu selesai saat semua disposisi selesai.", sc: ["arsip:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/arsip/disposisi", k: "id", d: "/v1/arsip/disposisi/{id}" } }, rq: 1, ds: "ID disposisi" }], b: { ct: "application/json", ref: "ArsipLaporan", s: { t: "object", pr: { laporan: { t: "string", n: 1, ds: "Laporan tindak lanjut / alasan" } } }, rq: 1 }, r: "object", it: "ArsipDisposisi" }, postArsipDisposisiByIdKembalikan: { id: "postArsipDisposisiByIdKembalikan", m: "POST", path: "/v1/arsip/disposisi/{id}/kembalikan", tag: "Arsip: Disposisi", sum: "Kembalikan ke pengirim (alasan wajib di laporan)", ds: "Oleh penerima disposisi (atau petugas unit tujuan). Status surat diperbarui otomatis: diproses, lalu selesai saat semua disposisi selesai.", sc: ["arsip:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/arsip/disposisi", k: "id", d: "/v1/arsip/disposisi/{id}" } }, rq: 1, ds: "ID disposisi" }], b: { ct: "application/json", ref: "ArsipLaporan", s: { t: "object", pr: { laporan: { t: "string", n: 1, ds: "Laporan tindak lanjut / alasan" } } }, rq: 1 }, r: "object", it: "ArsipDisposisi" }, getArsipDokumen: { id: "getArsipDokumen", m: "GET", path: "/v1/arsip/dokumen", tag: "Arsip: Dokumen", sum: "Daftar dokumen", ds: "Arsip unit dan arsip pribadi dosen/mahasiswa yang boleh Anda lihat. `pemilik=saya` untuk arsip pribadi Anda.", sc: ["arsip:read"], pa: [{ nm: "pemilik", in: "query", s: { t: "string" }, ds: "saya" }, { nm: "pemilik_jenis", in: "query", s: { t: "string" }, ds: "universitas,fakultas,prodi,unit,dosen,mahasiswa" }, { nm: "unit_id", in: "query", s: { t: "string", rf: { l: "/v1/arsip/unit", k: "id", d: "/v1/arsip/unit/{id}" } }, ds: "Unit" }, { nm: "turunan", in: "query", s: { t: "string" }, ds: "1" }, { nm: "nidn", in: "query", s: { t: "string", rf: { l: "/v1/dosen", k: "nidn", d: "/v1/dosen/{nidn}" } }, ds: "Dosen" }, { nm: "nim", in: "query", s: { t: "string", rf: { l: "/v1/mahasiswa", k: "nim", d: "/v1/mahasiswa/{nim}" } }, ds: "Mahasiswa" }, { nm: "kode_prodi", in: "query", s: { t: "string", rf: { l: "/v1/referensi/prodi", k: "kode_prodi", q: 0 } }, ds: "Prodi pemilik pribadi" }, { nm: "jenis_id", in: "query", s: { t: "string", rf: { l: "/v1/arsip/jenis", k: "id", d: "/v1/arsip/jenis/{id}" } }, ds: "Jenis dokumen" }, { nm: "klasifikasi_id", in: "query", s: { t: "string", rf: { l: "/v1/arsip/klasifikasi", k: "id", d: "/v1/arsip/klasifikasi/{id}" } }, ds: "Klasifikasi" }, { nm: "berkas_id", in: "query", s: { t: "string", rf: { l: "/v1/arsip/berkas", k: "id", d: "/v1/arsip/berkas/{id}" } }, ds: "Berkas" }, { nm: "akses", in: "query", s: { t: "string" }, ds: "publik,internal,terbatas,rahasia" }, { nm: "status_verifikasi", in: "query", s: { t: "string" }, ds: "tidak_perlu,diajukan,terverifikasi,ditolak" }, { nm: "status_arsip", in: "query", s: { t: "string" }, ds: "aktif,inaktif,..." }, { nm: "tahun", in: "query", s: { t: "string" }, ds: "YYYY" }, { nm: "berlaku", in: "query", s: { t: "string" }, ds: "habis | akan_habis | berlaku" }, { nm: "hari", in: "query", s: { t: "string" }, ds: "Untuk akan_habis (bawaan 90)" }, { nm: "sumber", in: "query", s: { t: "string" }, ds: "manual, pmb, lms, ..." }, { nm: "q", in: "query", s: { t: "string" }, ds: "Cari judul, nomor, kata kunci, penerbit" }, { nm: "urut", in: "query", s: { t: "string" }, ds: "terbaru | judul | berlaku" }, { nm: "page", in: "query", s: { t: "integer", min: 1, d: 1 }, ds: "Nomor halaman, mulai 1." }, { nm: "per_page", in: "query", s: { t: "integer", min: 1, mx: 100, d: 25 }, ds: "Jumlah data per halaman (maksimal 100)." }], r: "list", it: "ArsipDokumenRingkas" }, postArsipDokumen: { id: "postArsipDokumen", m: "POST", path: "/v1/arsip/dokumen", tag: "Arsip: Dokumen", sum: "Tambah dokumen", ds: 'Pemilik: tepat satu dari `unit_id`, `nidn`, `nim`, atau `pemilik: "saya"`. Arsip unit oleh pengelola unit; arsip pribadi oleh pemiliknya (status diajukan bila jenis wajib verifikasi) atau petugas yang mencakup prodinya. Integrasi aplikasi (scope arsip:admin): `sumber` + `sumber_ref` membuat kiriman ulang memperbarui dokumen yang sama (200, meta.diperbarui).', sc: ["arsip:write"], b: { ct: "application/json", ref: "ArsipDokumenInput", s: { t: "object", pr: { unit_id: { t: "integer", n: 1, ds: "Pemilik unit", rf: { l: "/v1/arsip/unit", k: "id", d: "/v1/arsip/unit/{id}" } }, nidn: { t: "string", n: 1, ds: "Pemilik dosen", rf: { l: "/v1/dosen", k: "nidn", d: "/v1/dosen/{nidn}" } }, nim: { t: "string", n: 1, ds: "Pemilik mahasiswa", rf: { l: "/v1/mahasiswa", k: "nim", d: "/v1/mahasiswa/{nim}" } }, pemilik: { t: "string", e: ["saya"], ds: "Pemilik = pengguna token (dosen/mahasiswa)" }, jenis_id: { t: "integer", n: 1, ds: "arsip_jenis kelompok dokumen", rf: { l: "/v1/arsip/jenis", k: "id", d: "/v1/arsip/jenis/{id}" } }, nomor: { t: "string", n: 1 }, judul: { t: "string", max: 255 }, deskripsi: { t: "string", n: 1 }, tanggal_dokumen: { t: "string", n: 1, f: "date" }, tahun: { t: "integer", n: 1 }, berlaku_mulai: { t: "string", n: 1, f: "date" }, berlaku_sampai: { t: "string", n: 1, f: "date" }, penerbit: { t: "string", n: 1 }, kata_kunci: { t: "array", i: { t: "string" } }, akses: { t: "string", e: ["publik", "internal", "terbatas", "rahasia"], ds: "publik: semua token; internal: semua pengguna SIAKAD; terbatas (bawaan): pengelola + pemilik; rahasia: admin/pimpinan + pemilik" }, media: { t: "string", e: ["elektronik", "kertas", "keduanya"] }, tingkat: { t: "string", e: ["asli", "salinan", "tembusan", "petikan"] }, jumlah_lembar: { t: "integer", n: 1 }, klasifikasi_id: { t: "integer", n: 1, rf: { l: "/v1/arsip/klasifikasi", k: "id", d: "/v1/arsip/klasifikasi/{id}" } }, berkas_id: { t: "integer", n: 1, rf: { l: "/v1/arsip/berkas", k: "id", d: "/v1/arsip/berkas/{id}" } }, lokasi_id: { t: "integer", n: 1, rf: { l: "/v1/arsip/lokasi", k: "id", d: "/v1/arsip/lokasi/{id}" } }, sumber: { t: "string", n: 1, ds: "Integrasi: nama aplikasi (huruf kecil)" }, sumber_ref: { t: "string", n: 1, ds: "Integrasi: ID di aplikasi sumber" } }, rq: ["judul"] }, rq: 1 }, r: "object", it: "ArsipDokumen" }, getArsipSayaDokumen: { id: "getArsipSayaDokumen", m: "GET", path: "/v1/arsip/saya/dokumen", tag: "Arsip: Dokumen", sum: "Arsip pribadi saya", ds: "Dosen: dokumen dengan NIDN Anda; mahasiswa: dokumen dengan NIM Anda.", sc: ["arsip:read"], pa: [{ nm: "pemilik_jenis", in: "query", s: { t: "string" }, ds: "universitas,fakultas,prodi,unit,dosen,mahasiswa" }, { nm: "unit_id", in: "query", s: { t: "string", rf: { l: "/v1/arsip/unit", k: "id", d: "/v1/arsip/unit/{id}" } }, ds: "Unit" }, { nm: "turunan", in: "query", s: { t: "string" }, ds: "1" }, { nm: "nidn", in: "query", s: { t: "string", rf: { l: "/v1/dosen", k: "nidn", d: "/v1/dosen/{nidn}" } }, ds: "Dosen" }, { nm: "nim", in: "query", s: { t: "string", rf: { l: "/v1/mahasiswa", k: "nim", d: "/v1/mahasiswa/{nim}" } }, ds: "Mahasiswa" }, { nm: "kode_prodi", in: "query", s: { t: "string", rf: { l: "/v1/referensi/prodi", k: "kode_prodi", q: 0 } }, ds: "Prodi pemilik pribadi" }, { nm: "jenis_id", in: "query", s: { t: "string", rf: { l: "/v1/arsip/jenis", k: "id", d: "/v1/arsip/jenis/{id}" } }, ds: "Jenis dokumen" }, { nm: "klasifikasi_id", in: "query", s: { t: "string", rf: { l: "/v1/arsip/klasifikasi", k: "id", d: "/v1/arsip/klasifikasi/{id}" } }, ds: "Klasifikasi" }, { nm: "berkas_id", in: "query", s: { t: "string", rf: { l: "/v1/arsip/berkas", k: "id", d: "/v1/arsip/berkas/{id}" } }, ds: "Berkas" }, { nm: "akses", in: "query", s: { t: "string" }, ds: "publik,internal,terbatas,rahasia" }, { nm: "status_verifikasi", in: "query", s: { t: "string" }, ds: "tidak_perlu,diajukan,terverifikasi,ditolak" }, { nm: "status_arsip", in: "query", s: { t: "string" }, ds: "aktif,inaktif,..." }, { nm: "tahun", in: "query", s: { t: "string" }, ds: "YYYY" }, { nm: "berlaku", in: "query", s: { t: "string" }, ds: "habis | akan_habis | berlaku" }, { nm: "hari", in: "query", s: { t: "string" }, ds: "Untuk akan_habis (bawaan 90)" }, { nm: "sumber", in: "query", s: { t: "string" }, ds: "manual, pmb, lms, ..." }, { nm: "q", in: "query", s: { t: "string" }, ds: "Cari judul, nomor, kata kunci, penerbit" }, { nm: "urut", in: "query", s: { t: "string" }, ds: "terbaru | judul | berlaku" }, { nm: "page", in: "query", s: { t: "integer", min: 1, d: 1 }, ds: "Nomor halaman, mulai 1." }, { nm: "per_page", in: "query", s: { t: "integer", min: 1, mx: 100, d: 25 }, ds: "Jumlah data per halaman (maksimal 100)." }], r: "list", it: "ArsipDokumenRingkas" }, getArsipDokumenByRef: { id: "getArsipDokumenByRef", m: "GET", path: "/v1/arsip/dokumen/{ref}", tag: "Arsip: Dokumen", sum: "Detail dokumen", ds: "Termasuk data pemilik dari SIAKAD, file, riwayat (bagi pengelola), dan `hak`.", sc: ["arsip:read"], pa: [{ nm: "ref", in: "path", s: { t: "string", rf: { l: "/v1/arsip/dokumen", k: "ref", d: "/v1/arsip/dokumen/{ref}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "ArsipDokumen" }, putArsipDokumenByRef: { id: "putArsipDokumenByRef", m: "PUT", path: "/v1/arsip/dokumen/{ref}", tag: "Arsip: Dokumen", sum: "Ubah dokumen", ds: "Pemilik tidak bisa mengubah dokumen yang sudah terverifikasi; perubahan oleh pemilik pada dokumen ditolak/diajukan mengajukan ulang verifikasi.", sc: ["arsip:write"], pa: [{ nm: "ref", in: "path", s: { t: "string", rf: { l: "/v1/arsip/dokumen", k: "ref", d: "/v1/arsip/dokumen/{ref}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "ArsipDokumenInput", s: { t: "object", pr: { unit_id: { t: "integer", n: 1, ds: "Pemilik unit", rf: { l: "/v1/arsip/unit", k: "id", d: "/v1/arsip/unit/{id}" } }, nidn: { t: "string", n: 1, ds: "Pemilik dosen", rf: { l: "/v1/dosen", k: "nidn", d: "/v1/dosen/{nidn}" } }, nim: { t: "string", n: 1, ds: "Pemilik mahasiswa", rf: { l: "/v1/mahasiswa", k: "nim", d: "/v1/mahasiswa/{nim}" } }, pemilik: { t: "string", e: ["saya"], ds: "Pemilik = pengguna token (dosen/mahasiswa)" }, jenis_id: { t: "integer", n: 1, ds: "arsip_jenis kelompok dokumen", rf: { l: "/v1/arsip/jenis", k: "id", d: "/v1/arsip/jenis/{id}" } }, nomor: { t: "string", n: 1 }, judul: { t: "string", max: 255 }, deskripsi: { t: "string", n: 1 }, tanggal_dokumen: { t: "string", n: 1, f: "date" }, tahun: { t: "integer", n: 1 }, berlaku_mulai: { t: "string", n: 1, f: "date" }, berlaku_sampai: { t: "string", n: 1, f: "date" }, penerbit: { t: "string", n: 1 }, kata_kunci: { t: "array", i: { t: "string" } }, akses: { t: "string", e: ["publik", "internal", "terbatas", "rahasia"], ds: "publik: semua token; internal: semua pengguna SIAKAD; terbatas (bawaan): pengelola + pemilik; rahasia: admin/pimpinan + pemilik" }, media: { t: "string", e: ["elektronik", "kertas", "keduanya"] }, tingkat: { t: "string", e: ["asli", "salinan", "tembusan", "petikan"] }, jumlah_lembar: { t: "integer", n: 1 }, klasifikasi_id: { t: "integer", n: 1, rf: { l: "/v1/arsip/klasifikasi", k: "id", d: "/v1/arsip/klasifikasi/{id}" } }, berkas_id: { t: "integer", n: 1, rf: { l: "/v1/arsip/berkas", k: "id", d: "/v1/arsip/berkas/{id}" } }, lokasi_id: { t: "integer", n: 1, rf: { l: "/v1/arsip/lokasi", k: "id", d: "/v1/arsip/lokasi/{id}" } }, sumber: { t: "string", n: 1, ds: "Integrasi: nama aplikasi (huruf kecil)" }, sumber_ref: { t: "string", n: 1, ds: "Integrasi: ID di aplikasi sumber" } }, rq: ["judul"] }, rq: 1 }, r: "object", it: "ArsipDokumen" }, deleteArsipDokumenByRef: { id: "deleteArsipDokumenByRef", m: "DELETE", path: "/v1/arsip/dokumen/{ref}", tag: "Arsip: Dokumen", sum: "Hapus dokumen (soft delete)", sc: ["arsip:write"], pa: [{ nm: "ref", in: "path", s: { t: "string", rf: { l: "/v1/arsip/dokumen", k: "ref", d: "/v1/arsip/dokumen/{ref}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "none" }, postArsipDokumenByRefVerifikasi: { id: "postArsipDokumenByRefVerifikasi", m: "POST", path: "/v1/arsip/dokumen/{ref}/verifikasi", tag: "Arsip: Dokumen", sum: "Verifikasi arsip pribadi", ds: "Body: keputusan terima|tolak, catatan (wajib bila tolak). Oleh petugas (admin/pimpinan/sekretaris/arsiparis) unit universitas, fakultas, atau prodi pemilik. Pemilik mendapat notifikasi.", sc: ["arsip:write"], pa: [{ nm: "ref", in: "path", s: { t: "string", rf: { l: "/v1/arsip/dokumen", k: "ref", d: "/v1/arsip/dokumen/{ref}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "ArsipVerifikasiInput", s: { t: "object", pr: { keputusan: { t: "string", e: ["terima", "tolak"] }, catatan: { t: "string", n: 1 } }, rq: ["keputusan"] }, rq: 1 }, r: "object", it: "ArsipDokumen" }, getArsipSuratByRefFile: { id: "getArsipSuratByRefFile", m: "GET", path: "/v1/arsip/surat/{ref}/file", tag: "Arsip: File", sum: "File surat", ds: "`versi=semua` untuk menyertakan versi lama.", sc: ["arsip:read"], pa: [{ nm: "ref", in: "path", s: { t: "string", rf: { l: "/v1/arsip/surat", k: "ref", d: "/v1/arsip/surat/{ref}" } }, rq: 1, ds: "ID angka atau UUID" }, { nm: "versi", in: "query", s: { t: "string" }, ds: "semua" }], r: "list", it: "ArsipFile" }, postArsipSuratByRefFile: { id: "postArsipSuratByRefFile", m: "POST", path: "/v1/arsip/surat/{ref}/file", tag: "Arsip: File", sum: "Unggah file surat", ds: "multipart/form-data field `berkas`, atau JSON `berkas_base64` + `nama_file`. Opsional: peran (utama|lampiran|bukti), keterangan, menggantikan (id file lama \u2192 versi baru). Jenis file dicek dari isinya.", sc: ["arsip:write"], pa: [{ nm: "ref", in: "path", s: { t: "string", rf: { l: "/v1/arsip/surat", k: "ref", d: "/v1/arsip/surat/{ref}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "multipart/form-data", ref: "ArsipFileUpload", s: { t: "object", pr: { berkas: { t: "string", f: "binary" }, peran: { t: "string", e: ["utama", "lampiran", "bukti"] }, keterangan: { t: "string" }, menggantikan: { t: "string", ds: "ID file yang diganti (versi baru)" }, berkas_base64: { t: "string", ds: "Alternatif JSON" }, nama_file: { t: "string", ds: "Wajib bersama berkas_base64" } } }, rq: 1 }, r: "object", it: "ArsipFile" }, getArsipDokumenByRefFile: { id: "getArsipDokumenByRefFile", m: "GET", path: "/v1/arsip/dokumen/{ref}/file", tag: "Arsip: File", sum: "File dokumen", ds: "`versi=semua` untuk menyertakan versi lama.", sc: ["arsip:read"], pa: [{ nm: "ref", in: "path", s: { t: "string", rf: { l: "/v1/arsip/dokumen", k: "ref", d: "/v1/arsip/dokumen/{ref}" } }, rq: 1, ds: "ID angka atau UUID" }, { nm: "versi", in: "query", s: { t: "string" }, ds: "semua" }], r: "list", it: "ArsipFile" }, postArsipDokumenByRefFile: { id: "postArsipDokumenByRefFile", m: "POST", path: "/v1/arsip/dokumen/{ref}/file", tag: "Arsip: File", sum: "Unggah file dokumen", ds: "multipart/form-data field `berkas`, atau JSON `berkas_base64` + `nama_file`. Opsional: peran (utama|lampiran|bukti), keterangan, menggantikan (id file lama \u2192 versi baru). Jenis file dicek dari isinya.", sc: ["arsip:write"], pa: [{ nm: "ref", in: "path", s: { t: "string", rf: { l: "/v1/arsip/dokumen", k: "ref", d: "/v1/arsip/dokumen/{ref}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "multipart/form-data", ref: "ArsipFileUpload", s: { t: "object", pr: { berkas: { t: "string", f: "binary" }, peran: { t: "string", e: ["utama", "lampiran", "bukti"] }, keterangan: { t: "string" }, menggantikan: { t: "string", ds: "ID file yang diganti (versi baru)" }, berkas_base64: { t: "string", ds: "Alternatif JSON" }, nama_file: { t: "string", ds: "Wajib bersama berkas_base64" } } }, rq: 1 }, r: "object", it: "ArsipFile" }, getArsipDisposisiByRefFile: { id: "getArsipDisposisiByRefFile", m: "GET", path: "/v1/arsip/disposisi/{ref}/file", tag: "Arsip: File", sum: "File disposisi (bukti tindak lanjut)", ds: "`versi=semua` untuk menyertakan versi lama.", sc: ["arsip:read"], pa: [{ nm: "ref", in: "path", s: { t: "string", rf: { l: "/v1/arsip/disposisi", k: "ref", d: "/v1/arsip/disposisi/{ref}" } }, rq: 1, ds: "ID angka atau UUID" }, { nm: "versi", in: "query", s: { t: "string" }, ds: "semua" }], r: "list", it: "ArsipFile" }, postArsipDisposisiByRefFile: { id: "postArsipDisposisiByRefFile", m: "POST", path: "/v1/arsip/disposisi/{ref}/file", tag: "Arsip: File", sum: "Unggah file disposisi (bukti tindak lanjut)", ds: "multipart/form-data field `berkas`, atau JSON `berkas_base64` + `nama_file`. Opsional: peran (utama|lampiran|bukti), keterangan, menggantikan (id file lama \u2192 versi baru). Jenis file dicek dari isinya.", sc: ["arsip:write"], pa: [{ nm: "ref", in: "path", s: { t: "string", rf: { l: "/v1/arsip/disposisi", k: "ref", d: "/v1/arsip/disposisi/{ref}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "multipart/form-data", ref: "ArsipFileUpload", s: { t: "object", pr: { berkas: { t: "string", f: "binary" }, peran: { t: "string", e: ["utama", "lampiran", "bukti"] }, keterangan: { t: "string" }, menggantikan: { t: "string", ds: "ID file yang diganti (versi baru)" }, berkas_base64: { t: "string", ds: "Alternatif JSON" }, nama_file: { t: "string", ds: "Wajib bersama berkas_base64" } } }, rq: 1 }, r: "object", it: "ArsipFile" }, getArsipPeminjamanByRefFile: { id: "getArsipPeminjamanByRefFile", m: "GET", path: "/v1/arsip/peminjaman/{ref}/file", tag: "Arsip: File", sum: "File peminjaman", ds: "`versi=semua` untuk menyertakan versi lama.", sc: ["arsip:read"], pa: [{ nm: "ref", in: "path", s: { t: "string", rf: { l: "/v1/arsip/peminjaman", k: "ref", d: "/v1/arsip/peminjaman/{ref}" } }, rq: 1, ds: "ID angka atau UUID" }, { nm: "versi", in: "query", s: { t: "string" }, ds: "semua" }], r: "list", it: "ArsipFile" }, postArsipPeminjamanByRefFile: { id: "postArsipPeminjamanByRefFile", m: "POST", path: "/v1/arsip/peminjaman/{ref}/file", tag: "Arsip: File", sum: "Unggah file peminjaman", ds: "multipart/form-data field `berkas`, atau JSON `berkas_base64` + `nama_file`. Opsional: peran (utama|lampiran|bukti), keterangan, menggantikan (id file lama \u2192 versi baru). Jenis file dicek dari isinya.", sc: ["arsip:write"], pa: [{ nm: "ref", in: "path", s: { t: "string", rf: { l: "/v1/arsip/peminjaman", k: "ref", d: "/v1/arsip/peminjaman/{ref}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "multipart/form-data", ref: "ArsipFileUpload", s: { t: "object", pr: { berkas: { t: "string", f: "binary" }, peran: { t: "string", e: ["utama", "lampiran", "bukti"] }, keterangan: { t: "string" }, menggantikan: { t: "string", ds: "ID file yang diganti (versi baru)" }, berkas_base64: { t: "string", ds: "Alternatif JSON" }, nama_file: { t: "string", ds: "Wajib bersama berkas_base64" } } }, rq: 1 }, r: "object", it: "ArsipFile" }, getArsipPenyusutanByRefFile: { id: "getArsipPenyusutanByRefFile", m: "GET", path: "/v1/arsip/penyusutan/{ref}/file", tag: "Arsip: File", sum: "File penyusutan (berita acara)", ds: "`versi=semua` untuk menyertakan versi lama.", sc: ["arsip:read"], pa: [{ nm: "ref", in: "path", s: { t: "string", rf: { l: "/v1/arsip/penyusutan", k: "ref", d: "/v1/arsip/penyusutan/{ref}" } }, rq: 1, ds: "ID angka atau UUID" }, { nm: "versi", in: "query", s: { t: "string" }, ds: "semua" }], r: "list", it: "ArsipFile" }, postArsipPenyusutanByRefFile: { id: "postArsipPenyusutanByRefFile", m: "POST", path: "/v1/arsip/penyusutan/{ref}/file", tag: "Arsip: File", sum: "Unggah file penyusutan (berita acara)", ds: "multipart/form-data field `berkas`, atau JSON `berkas_base64` + `nama_file`. Opsional: peran (utama|lampiran|bukti), keterangan, menggantikan (id file lama \u2192 versi baru). Jenis file dicek dari isinya.", sc: ["arsip:write"], pa: [{ nm: "ref", in: "path", s: { t: "string", rf: { l: "/v1/arsip/penyusutan", k: "ref", d: "/v1/arsip/penyusutan/{ref}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "multipart/form-data", ref: "ArsipFileUpload", s: { t: "object", pr: { berkas: { t: "string", f: "binary" }, peran: { t: "string", e: ["utama", "lampiran", "bukti"] }, keterangan: { t: "string" }, menggantikan: { t: "string", ds: "ID file yang diganti (versi baru)" }, berkas_base64: { t: "string", ds: "Alternatif JSON" }, nama_file: { t: "string", ds: "Wajib bersama berkas_base64" } } }, rq: 1 }, r: "object", it: "ArsipFile" }, getArsipFileByUuid: { id: "getArsipFileByUuid", m: "GET", path: "/v1/arsip/file/{uuid}", tag: "Arsip: File", sum: "Metadata file", ds: "Termasuk versi lain.", sc: ["arsip:read"], pa: [{ nm: "uuid", in: "path", s: { t: "string" }, rq: 1, ds: "ID file" }], r: "object", it: "ArsipFile" }, deleteArsipFileByUuid: { id: "deleteArsipFileByUuid", m: "DELETE", path: "/v1/arsip/file/{uuid}", tag: "Arsip: File", sum: "Hapus file", ds: "Bila yang dihapus versi terbaru, versi sebelumnya menjadi terkini.", sc: ["arsip:write"], pa: [{ nm: "uuid", in: "path", s: { t: "string" }, rq: 1, ds: "ID file" }], r: "none" }, getArsipFileByUuidUnduh: { id: "getArsipFileByUuidUnduh", m: "GET", path: "/v1/arsip/file/{uuid}/unduh", tag: "Arsip: File", sum: "Unduh file", ds: 'Respons biner (bukan JSON). `inline=1` untuk menampilkan PDF/gambar di browser. Header X-Checksum-Sha256 berisi sidik file. Setiap unduhan dicatat. Berbagi dengan hak "lihat" tidak bisa mengunduh.', sc: ["arsip:read"], pa: [{ nm: "uuid", in: "path", s: { t: "string" }, rq: 1, ds: "ID file" }, { nm: "inline", in: "query", s: { t: "string" }, ds: "1" }], r: "object" }, getArsipBerkas: { id: "getArsipBerkas", m: "GET", path: "/v1/arsip/berkas", tag: "Arsip: Berkas", sum: "Daftar berkas (folder arsip)", sc: ["arsip:read"], pa: [{ nm: "unit_id", in: "query", s: { t: "string", rf: { l: "/v1/arsip/unit", k: "id", d: "/v1/arsip/unit/{id}" } }, ds: "Unit" }, { nm: "klasifikasi_id", in: "query", s: { t: "string", rf: { l: "/v1/arsip/klasifikasi", k: "id", d: "/v1/arsip/klasifikasi/{id}" } }, ds: "Klasifikasi" }, { nm: "status", in: "query", s: { t: "string" }, ds: "terbuka | ditutup" }, { nm: "status_arsip", in: "query", s: { t: "string" }, ds: "aktif | inaktif | ..." }, { nm: "tahun", in: "query", s: { t: "string" }, ds: "YYYY" }, { nm: "q", in: "query", s: { t: "string" }, ds: "Cari" }, { nm: "page", in: "query", s: { t: "integer", min: 1, d: 1 }, ds: "Nomor halaman, mulai 1." }, { nm: "per_page", in: "query", s: { t: "integer", min: 1, mx: 100, d: 25 }, ds: "Jumlah data per halaman (maksimal 100)." }], r: "list", it: "ArsipBerkas" }, postArsipBerkas: { id: "postArsipBerkas", m: "POST", path: "/v1/arsip/berkas", tag: "Arsip: Berkas", sum: "Buat berkas", ds: "Admin/pimpinan/sekretaris/arsiparis unit.", sc: ["arsip:write"], b: { ct: "application/json", ref: "ArsipBerkasInput", s: { t: "object", pr: { unit_id: { t: "integer", ds: "Hanya saat buat", rf: { l: "/v1/arsip/unit", k: "id", d: "/v1/arsip/unit/{id}" } }, nomor_berkas: { t: "string" }, judul: { t: "string" }, uraian: { t: "string", n: 1 }, tahun_awal: { t: "integer", n: 1 }, tahun_akhir: { t: "integer", n: 1 }, klasifikasi_id: { t: "integer", n: 1, rf: { l: "/v1/arsip/klasifikasi", k: "id", d: "/v1/arsip/klasifikasi/{id}" } }, lokasi_id: { t: "integer", n: 1, rf: { l: "/v1/arsip/lokasi", k: "id", d: "/v1/arsip/lokasi/{id}" } } }, rq: ["unit_id", "nomor_berkas", "judul"] }, rq: 1 }, r: "object", it: "ArsipBerkas" }, getArsipBerkasById: { id: "getArsipBerkasById", m: "GET", path: "/v1/arsip/berkas/{id}", tag: "Arsip: Berkas", sum: "Detail berkas beserta isinya", sc: ["arsip:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/arsip/berkas", k: "id", d: "/v1/arsip/berkas/{id}" } }, rq: 1, ds: "ID berkas" }], r: "object", it: "ArsipBerkas" }, putArsipBerkasById: { id: "putArsipBerkasById", m: "PUT", path: "/v1/arsip/berkas/{id}", tag: "Arsip: Berkas", sum: "Ubah berkas", sc: ["arsip:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/arsip/berkas", k: "id", d: "/v1/arsip/berkas/{id}" } }, rq: 1, ds: "ID berkas" }], b: { ct: "application/json", ref: "ArsipBerkasInput", s: { t: "object", pr: { unit_id: { t: "integer", ds: "Hanya saat buat", rf: { l: "/v1/arsip/unit", k: "id", d: "/v1/arsip/unit/{id}" } }, nomor_berkas: { t: "string" }, judul: { t: "string" }, uraian: { t: "string", n: 1 }, tahun_awal: { t: "integer", n: 1 }, tahun_akhir: { t: "integer", n: 1 }, klasifikasi_id: { t: "integer", n: 1, rf: { l: "/v1/arsip/klasifikasi", k: "id", d: "/v1/arsip/klasifikasi/{id}" } }, lokasi_id: { t: "integer", n: 1, rf: { l: "/v1/arsip/lokasi", k: "id", d: "/v1/arsip/lokasi/{id}" } } }, rq: ["unit_id", "nomor_berkas", "judul"] }, rq: 1 }, r: "object", it: "ArsipBerkas" }, deleteArsipBerkasById: { id: "deleteArsipBerkasById", m: "DELETE", path: "/v1/arsip/berkas/{id}", tag: "Arsip: Berkas", sum: "Hapus berkas kosong", sc: ["arsip:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/arsip/berkas", k: "id", d: "/v1/arsip/berkas/{id}" } }, rq: 1, ds: "ID berkas" }], r: "none" }, postArsipBerkasByIdTutup: { id: "postArsipBerkasByIdTutup", m: "POST", path: "/v1/arsip/berkas/{id}/tutup", tag: "Arsip: Berkas", sum: "Tutup berkas", ds: "Menghitung jadwal retensi dari tanggal penutupan (body `tanggal` opsional) dan menerapkannya ke isi berkas.", sc: ["arsip:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/arsip/berkas", k: "id", d: "/v1/arsip/berkas/{id}" } }, rq: 1, ds: "ID berkas" }], b: { ct: "application/json", ref: "Objek", s: { t: "object", ds: "Baris data dengan nama kolom huruf kecil sesuai tabel SIAKAD." }, rq: 1 }, r: "object", it: "ArsipBerkas" }, postArsipBerkasByIdBuka: { id: "postArsipBerkasByIdBuka", m: "POST", path: "/v1/arsip/berkas/{id}/buka", tag: "Arsip: Berkas", sum: "Buka kembali berkas", sc: ["arsip:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/arsip/berkas", k: "id", d: "/v1/arsip/berkas/{id}" } }, rq: 1, ds: "ID berkas" }], r: "object", it: "ArsipBerkas" }, postArsipBerkasByIdMasukkan: { id: "postArsipBerkasByIdMasukkan", m: "POST", path: "/v1/arsip/berkas/{id}/masukkan", tag: "Arsip: Berkas", sum: "Masukkan surat/dokumen ke berkas", ds: "Body: surat_id [..], dokumen_id [..]. Hanya arsip unit yang sama.", sc: ["arsip:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/arsip/berkas", k: "id", d: "/v1/arsip/berkas/{id}" } }, rq: 1, ds: "ID berkas" }], b: { ct: "application/json", ref: "ArsipIsiBerkas", s: { t: "object", pr: { surat_id: { t: "array", i: { t: "integer" } }, dokumen_id: { t: "array", i: { t: "integer" } } } }, rq: 1 }, r: "object", it: "ArsipBerkas" }, postArsipBerkasByIdKeluarkan: { id: "postArsipBerkasByIdKeluarkan", m: "POST", path: "/v1/arsip/berkas/{id}/keluarkan", tag: "Arsip: Berkas", sum: "Keluarkan surat/dokumen dari berkas", sc: ["arsip:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/arsip/berkas", k: "id", d: "/v1/arsip/berkas/{id}" } }, rq: 1, ds: "ID berkas" }], b: { ct: "application/json", ref: "ArsipIsiBerkas", s: { t: "object", pr: { surat_id: { t: "array", i: { t: "integer" } }, dokumen_id: { t: "array", i: { t: "integer" } } } }, rq: 1 }, r: "object", it: "ArsipBerkas" }, getArsipSuratByRefBagikan: { id: "getArsipSuratByRefBagikan", m: "GET", path: "/v1/arsip/surat/{ref}/bagikan", tag: "Arsip: Berbagi", sum: "Daftar berbagi surat", sc: ["arsip:read"], pa: [{ nm: "ref", in: "path", s: { t: "string", rf: { l: "/v1/arsip/surat", k: "ref", d: "/v1/arsip/surat/{ref}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "list", it: "ArsipBagikan" }, postArsipSuratByRefBagikan: { id: "postArsipSuratByRefBagikan", m: "POST", path: "/v1/arsip/surat/{ref}/bagikan", tag: "Arsip: Berbagi", sum: "Bagikan surat", ds: "Ke pengguna (username) atau unit (unit_id), hak lihat|unduh, berlaku_sampai opsional. Oleh pengelola arsip atau pemilik arsip pribadi.", sc: ["arsip:write"], pa: [{ nm: "ref", in: "path", s: { t: "string", rf: { l: "/v1/arsip/surat", k: "ref", d: "/v1/arsip/surat/{ref}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "ArsipBagikanInput", s: { t: "object", pr: { username: { t: "string", n: 1, rf: { l: "pengguna", k: "username" } }, unit_id: { t: "integer", n: 1, rf: { l: "/v1/arsip/unit", k: "id", d: "/v1/arsip/unit/{id}" } }, hak: { t: "string", e: ["lihat", "unduh"] }, berlaku_sampai: { t: "string", n: 1, ds: "YYYY-MM-DD HH:MM" }, catatan: { t: "string", n: 1 } } }, rq: 1 }, r: "object", it: "ArsipBagikan" }, getArsipDokumenByRefBagikan: { id: "getArsipDokumenByRefBagikan", m: "GET", path: "/v1/arsip/dokumen/{ref}/bagikan", tag: "Arsip: Berbagi", sum: "Daftar berbagi dokumen", sc: ["arsip:read"], pa: [{ nm: "ref", in: "path", s: { t: "string", rf: { l: "/v1/arsip/dokumen", k: "ref", d: "/v1/arsip/dokumen/{ref}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "list", it: "ArsipBagikan" }, postArsipDokumenByRefBagikan: { id: "postArsipDokumenByRefBagikan", m: "POST", path: "/v1/arsip/dokumen/{ref}/bagikan", tag: "Arsip: Berbagi", sum: "Bagikan dokumen", ds: "Ke pengguna (username) atau unit (unit_id), hak lihat|unduh, berlaku_sampai opsional. Oleh pengelola arsip atau pemilik arsip pribadi.", sc: ["arsip:write"], pa: [{ nm: "ref", in: "path", s: { t: "string", rf: { l: "/v1/arsip/dokumen", k: "ref", d: "/v1/arsip/dokumen/{ref}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "ArsipBagikanInput", s: { t: "object", pr: { username: { t: "string", n: 1, rf: { l: "pengguna", k: "username" } }, unit_id: { t: "integer", n: 1, rf: { l: "/v1/arsip/unit", k: "id", d: "/v1/arsip/unit/{id}" } }, hak: { t: "string", e: ["lihat", "unduh"] }, berlaku_sampai: { t: "string", n: 1, ds: "YYYY-MM-DD HH:MM" }, catatan: { t: "string", n: 1 } } }, rq: 1 }, r: "object", it: "ArsipBagikan" }, getArsipBerkasByRefBagikan: { id: "getArsipBerkasByRefBagikan", m: "GET", path: "/v1/arsip/berkas/{ref}/bagikan", tag: "Arsip: Berbagi", sum: "Daftar berbagi berkas", sc: ["arsip:read"], pa: [{ nm: "ref", in: "path", s: { t: "string", rf: { l: "/v1/arsip/berkas", k: "ref", d: "/v1/arsip/berkas/{ref}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "list", it: "ArsipBagikan" }, postArsipBerkasByRefBagikan: { id: "postArsipBerkasByRefBagikan", m: "POST", path: "/v1/arsip/berkas/{ref}/bagikan", tag: "Arsip: Berbagi", sum: "Bagikan berkas", ds: "Ke pengguna (username) atau unit (unit_id), hak lihat|unduh, berlaku_sampai opsional. Oleh pengelola arsip atau pemilik arsip pribadi.", sc: ["arsip:write"], pa: [{ nm: "ref", in: "path", s: { t: "string", rf: { l: "/v1/arsip/berkas", k: "ref", d: "/v1/arsip/berkas/{ref}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "ArsipBagikanInput", s: { t: "object", pr: { username: { t: "string", n: 1, rf: { l: "pengguna", k: "username" } }, unit_id: { t: "integer", n: 1, rf: { l: "/v1/arsip/unit", k: "id", d: "/v1/arsip/unit/{id}" } }, hak: { t: "string", e: ["lihat", "unduh"] }, berlaku_sampai: { t: "string", n: 1, ds: "YYYY-MM-DD HH:MM" }, catatan: { t: "string", n: 1 } } }, rq: 1 }, r: "object", it: "ArsipBagikan" }, deleteArsipBagikanById: { id: "deleteArsipBagikanById", m: "DELETE", path: "/v1/arsip/bagikan/{id}", tag: "Arsip: Berbagi", sum: "Cabut berbagi", sc: ["arsip:write"], pa: [{ nm: "id", in: "path", s: { t: "string" }, rq: 1, ds: "ID berbagi" }], r: "none" }, getArsipPeminjaman: { id: "getArsipPeminjaman", m: "GET", path: "/v1/arsip/peminjaman", tag: "Arsip: Peminjaman", sum: "Daftar peminjaman", ds: "Milik Anda sebagai peminjam dan yang perlu Anda proses sebagai pengelola.", sc: ["arsip:read"], pa: [{ nm: "status", in: "query", s: { t: "string" }, ds: "diajukan | disetujui | dipinjam | dikembalikan | ditolak | dibatalkan" }, { nm: "peran", in: "query", s: { t: "string" }, ds: "peminjam" }, { nm: "unit_id", in: "query", s: { t: "string", rf: { l: "/v1/arsip/unit", k: "id", d: "/v1/arsip/unit/{id}" } }, ds: "Unit" }, { nm: "terlambat", in: "query", s: { t: "string" }, ds: "1" }, { nm: "page", in: "query", s: { t: "integer", min: 1, d: 1 }, ds: "Nomor halaman, mulai 1." }, { nm: "per_page", in: "query", s: { t: "integer", min: 1, mx: 100, d: 25 }, ds: "Jumlah data per halaman (maksimal 100)." }], r: "list", it: "ArsipPeminjaman" }, postArsipPeminjaman: { id: "postArsipPeminjaman", m: "POST", path: "/v1/arsip/peminjaman", tag: "Arsip: Peminjaman", sum: "Ajukan peminjaman", ds: "Body: entitas (surat|dokumen|berkas), entitas_id, jenis (fisik|digital), keperluan, tanggal_pinjam, rencana_kembali. Arsip harus terlihat oleh peminjam. Peminjaman digital yang disetujui langsung memberi akses unduh sampai tanggal kembali.", sc: ["arsip:write"], b: { ct: "application/json", ref: "ArsipPeminjamanInput", s: { t: "object", pr: { entitas: { t: "string", e: ["surat", "dokumen", "berkas"] }, entitas_id: { t: "integer" }, jenis: { t: "string", e: ["fisik", "digital"] }, keperluan: { t: "string" }, tanggal_pinjam: { t: "string", n: 1, f: "date" }, rencana_kembali: { t: "string", n: 1, f: "date" } }, rq: ["entitas", "entitas_id", "keperluan", "rencana_kembali"] }, rq: 1 }, r: "object", it: "ArsipPeminjaman" }, getArsipPeminjamanById: { id: "getArsipPeminjamanById", m: "GET", path: "/v1/arsip/peminjaman/{id}", tag: "Arsip: Peminjaman", sum: "Detail peminjaman", sc: ["arsip:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/arsip/peminjaman", k: "id", d: "/v1/arsip/peminjaman/{id}" } }, rq: 1, ds: "ID peminjaman" }], r: "object", it: "ArsipPeminjaman" }, postArsipPeminjamanByIdSetujui: { id: "postArsipPeminjamanByIdSetujui", m: "POST", path: "/v1/arsip/peminjaman/{id}/setujui", tag: "Arsip: Peminjaman", sum: "Setujui", ds: "Oleh arsiparis/admin/pimpinan unit pengelola; batalkan juga oleh peminjam.", sc: ["arsip:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/arsip/peminjaman", k: "id", d: "/v1/arsip/peminjaman/{id}" } }, rq: 1, ds: "ID peminjaman" }], b: { ct: "application/json", ref: "ArsipCatatan", s: { t: "object", pr: { catatan: { t: "string", n: 1 } } }, rq: 1 }, r: "object", it: "ArsipPeminjaman" }, postArsipPeminjamanByIdTolak: { id: "postArsipPeminjamanByIdTolak", m: "POST", path: "/v1/arsip/peminjaman/{id}/tolak", tag: "Arsip: Peminjaman", sum: "Tolak (catatan wajib)", ds: "Oleh arsiparis/admin/pimpinan unit pengelola; batalkan juga oleh peminjam.", sc: ["arsip:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/arsip/peminjaman", k: "id", d: "/v1/arsip/peminjaman/{id}" } }, rq: 1, ds: "ID peminjaman" }], b: { ct: "application/json", ref: "ArsipCatatan", s: { t: "object", pr: { catatan: { t: "string", n: 1 } } }, rq: 1 }, r: "object", it: "ArsipPeminjaman" }, postArsipPeminjamanByIdSerahkan: { id: "postArsipPeminjamanByIdSerahkan", m: "POST", path: "/v1/arsip/peminjaman/{id}/serahkan", tag: "Arsip: Peminjaman", sum: "Serahkan arsip fisik", ds: "Oleh arsiparis/admin/pimpinan unit pengelola; batalkan juga oleh peminjam.", sc: ["arsip:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/arsip/peminjaman", k: "id", d: "/v1/arsip/peminjaman/{id}" } }, rq: 1, ds: "ID peminjaman" }], b: { ct: "application/json", ref: "ArsipCatatan", s: { t: "object", pr: { catatan: { t: "string", n: 1 } } }, rq: 1 }, r: "object", it: "ArsipPeminjaman" }, postArsipPeminjamanByIdKembalikan: { id: "postArsipPeminjamanByIdKembalikan", m: "POST", path: "/v1/arsip/peminjaman/{id}/kembalikan", tag: "Arsip: Peminjaman", sum: "Catat pengembalian (catatan = kondisi)", ds: "Oleh arsiparis/admin/pimpinan unit pengelola; batalkan juga oleh peminjam.", sc: ["arsip:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/arsip/peminjaman", k: "id", d: "/v1/arsip/peminjaman/{id}" } }, rq: 1, ds: "ID peminjaman" }], b: { ct: "application/json", ref: "ArsipCatatan", s: { t: "object", pr: { catatan: { t: "string", n: 1 } } }, rq: 1 }, r: "object", it: "ArsipPeminjaman" }, postArsipPeminjamanByIdBatalkan: { id: "postArsipPeminjamanByIdBatalkan", m: "POST", path: "/v1/arsip/peminjaman/{id}/batalkan", tag: "Arsip: Peminjaman", sum: "Batalkan", ds: "Oleh arsiparis/admin/pimpinan unit pengelola; batalkan juga oleh peminjam.", sc: ["arsip:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/arsip/peminjaman", k: "id", d: "/v1/arsip/peminjaman/{id}" } }, rq: 1, ds: "ID peminjaman" }], b: { ct: "application/json", ref: "ArsipCatatan", s: { t: "object", pr: { catatan: { t: "string", n: 1 } } }, rq: 1 }, r: "object", it: "ArsipPeminjaman" }, getArsipPenyusutanKandidat: { id: "getArsipPenyusutanKandidat", m: "GET", path: "/v1/arsip/penyusutan/kandidat", tag: "Arsip: Penyusutan", sum: "Arsip jatuh tempo penyusutan", ds: "pemindahan: aktif yang retensi aktifnya lewat; pemusnahan: inaktif lewat dengan nasib musnah; penyerahan: inaktif lewat dengan nasib permanen. Berkas tertutup dihitung sebagai satu kesatuan.", sc: ["arsip:read"], pa: [{ nm: "unit_id", in: "query", s: { t: "integer", rf: { l: "/v1/arsip/unit", k: "id", d: "/v1/arsip/unit/{id}" } }, rq: 1, ds: "Unit" }, { nm: "jenis", in: "query", s: { t: "string" }, rq: 1, ds: "pemindahan | pemusnahan | penyerahan" }], r: "list", it: "Objek" }, getArsipPenyusutan: { id: "getArsipPenyusutan", m: "GET", path: "/v1/arsip/penyusutan", tag: "Arsip: Penyusutan", sum: "Daftar usulan penyusutan", sc: ["arsip:read"], pa: [{ nm: "unit_id", in: "query", s: { t: "string", rf: { l: "/v1/arsip/unit", k: "id", d: "/v1/arsip/unit/{id}" } }, ds: "Unit" }, { nm: "jenis", in: "query", s: { t: "string" }, ds: "Jenis" }, { nm: "status", in: "query", s: { t: "string" }, ds: "Status" }, { nm: "page", in: "query", s: { t: "integer", min: 1, d: 1 }, ds: "Nomor halaman, mulai 1." }, { nm: "per_page", in: "query", s: { t: "integer", min: 1, mx: 100, d: 25 }, ds: "Jumlah data per halaman (maksimal 100)." }], r: "list", it: "ArsipPenyusutan" }, postArsipPenyusutan: { id: "postArsipPenyusutan", m: "POST", path: "/v1/arsip/penyusutan", tag: "Arsip: Penyusutan", sum: "Usulkan penyusutan", ds: "Body: unit_id, jenis, judul, keterangan, item [{entitas, entitas_id, catatan}] dari daftar kandidat. Oleh arsiparis/pimpinan/admin unit.", sc: ["arsip:write"], b: { ct: "application/json", ref: "ArsipPenyusutanInput", s: { t: "object", pr: { unit_id: { t: "integer", rf: { l: "/v1/arsip/unit", k: "id", d: "/v1/arsip/unit/{id}" } }, jenis: { t: "string", e: ["pemindahan", "pemusnahan", "penyerahan"] }, judul: { t: "string", n: 1 }, keterangan: { t: "string", n: 1 }, item: { t: "array", i: { t: "object", pr: { entitas: { t: "string", e: ["surat", "dokumen", "berkas"] }, entitas_id: { t: "integer" }, catatan: { t: "string", n: 1 } } } } }, rq: ["unit_id", "jenis", "item"] }, rq: 1 }, r: "object", it: "ArsipPenyusutan" }, getArsipPenyusutanById: { id: "getArsipPenyusutanById", m: "GET", path: "/v1/arsip/penyusutan/{id}", tag: "Arsip: Penyusutan", sum: "Detail penyusutan", sc: ["arsip:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/arsip/penyusutan", k: "id", d: "/v1/arsip/penyusutan/{id}" } }, rq: 1, ds: "ID" }], r: "object", it: "ArsipPenyusutan" }, postArsipPenyusutanByIdSetujui: { id: "postArsipPenyusutanByIdSetujui", m: "POST", path: "/v1/arsip/penyusutan/{id}/setujui", tag: "Arsip: Penyusutan", sum: "Setujui usulan", ds: "Pimpinan/admin unit, bukan pengusul.", sc: ["arsip:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/arsip/penyusutan", k: "id", d: "/v1/arsip/penyusutan/{id}" } }, rq: 1, ds: "ID" }], b: { ct: "application/json", ref: "Objek", s: { t: "object", ds: "Baris data dengan nama kolom huruf kecil sesuai tabel SIAKAD." }, rq: 1 }, r: "object", it: "ArsipPenyusutan" }, postArsipPenyusutanByIdTolak: { id: "postArsipPenyusutanByIdTolak", m: "POST", path: "/v1/arsip/penyusutan/{id}/tolak", tag: "Arsip: Penyusutan", sum: "Tolak usulan", ds: "Catatan wajib.", sc: ["arsip:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/arsip/penyusutan", k: "id", d: "/v1/arsip/penyusutan/{id}" } }, rq: 1, ds: "ID" }], b: { ct: "application/json", ref: "Objek", s: { t: "object", ds: "Baris data dengan nama kolom huruf kecil sesuai tabel SIAKAD." }, rq: 1 }, r: "object", it: "ArsipPenyusutan" }, postArsipPenyusutanByIdLaksanakan: { id: "postArsipPenyusutanByIdLaksanakan", m: "POST", path: "/v1/arsip/penyusutan/{id}/laksanakan", tag: "Arsip: Penyusutan", sum: "Laksanakan penyusutan", ds: "nomor_berita_acara wajib untuk pemusnahan/penyerahan; unggah berita acara di POST /penyusutan/{id}/file. Pemindahan \u2192 status inaktif; pemusnahan \u2192 dimusnahkan dan ISI FILE DIHAPUS PERMANEN (metadata + SHA-256 tetap); penyerahan \u2192 diserahkan.", sc: ["arsip:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/arsip/penyusutan", k: "id", d: "/v1/arsip/penyusutan/{id}" } }, rq: 1, ds: "ID" }], b: { ct: "application/json", ref: "Objek", s: { t: "object", ds: "Baris data dengan nama kolom huruf kecil sesuai tabel SIAKAD." }, rq: 1 }, r: "object", it: "ArsipPenyusutan" }, postArsipPenyusutanByIdBatalkan: { id: "postArsipPenyusutanByIdBatalkan", m: "POST", path: "/v1/arsip/penyusutan/{id}/batalkan", tag: "Arsip: Penyusutan", sum: "Batalkan usulan", sc: ["arsip:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/arsip/penyusutan", k: "id", d: "/v1/arsip/penyusutan/{id}" } }, rq: 1, ds: "ID" }], b: { ct: "application/json", ref: "Objek", s: { t: "object", ds: "Baris data dengan nama kolom huruf kecil sesuai tabel SIAKAD." }, rq: 1 }, r: "object", it: "ArsipPenyusutan" }, getArsipSaya: { id: "getArsipSaya", m: "GET", path: "/v1/arsip/saya", tag: "Arsip: Saya", sum: "Ringkasan saya", ds: "Peran di unit, NIDN/NIM, dan jumlah tugas: disposisi aktif/lewat batas, menunggu persetujuan, konsep, notifikasi belum dibaca, dokumen pribadi.", sc: ["arsip:read"], r: "object", it: "Objek" }, getArsipSayaNotifikasi: { id: "getArsipSayaNotifikasi", m: "GET", path: "/v1/arsip/saya/notifikasi", tag: "Arsip: Saya", sum: "Notifikasi", sc: ["arsip:read"], pa: [{ nm: "belum_dibaca", in: "query", s: { t: "string" }, ds: "1" }, { nm: "page", in: "query", s: { t: "integer", min: 1, d: 1 }, ds: "Nomor halaman, mulai 1." }, { nm: "per_page", in: "query", s: { t: "integer", min: 1, mx: 100, d: 25 }, ds: "Jumlah data per halaman (maksimal 100)." }], r: "list", it: "Objek" }, postArsipSayaNotifikasiBaca: { id: "postArsipSayaNotifikasiBaca", m: "POST", path: "/v1/arsip/saya/notifikasi/baca", tag: "Arsip: Saya", sum: "Tandai notifikasi dibaca", ds: "Body `id`: [..]; kosong = semua.", sc: ["arsip:read"], b: { ct: "application/json", ref: "Objek", s: { t: "object", ds: "Baris data dengan nama kolom huruf kecil sesuai tabel SIAKAD." }, rq: 1 }, r: "object", it: "Objek" }, getArsipLaporanRingkasan: { id: "getArsipLaporanRingkasan", m: "GET", path: "/v1/arsip/laporan/ringkasan", tag: "Arsip: Laporan", sum: "Dasbor arsip", ds: "Surat masuk/keluar per bulan, per status, per klasifikasi, kinerja disposisi (rata-rata jam selesai), dokumen kedaluwarsa, retensi jatuh tempo, peminjaman aktif. Tanpa unit_id = semua unit yang Anda kelola.", sc: ["arsip:read"], pa: [{ nm: "unit_id", in: "query", s: { t: "string", rf: { l: "/v1/arsip/unit", k: "id", d: "/v1/arsip/unit/{id}" } }, ds: "Unit" }, { nm: "tahun", in: "query", s: { t: "string" }, ds: "YYYY" }, { nm: "turunan", in: "query", s: { t: "string" }, ds: "1" }], r: "object", it: "Objek" }, getArsipLaporanAgenda: { id: "getArsipLaporanAgenda", m: "GET", path: "/v1/arsip/laporan/agenda", tag: "Arsip: Laporan", sum: "Buku agenda surat", ds: "Untuk dicetak. Perihal surat rahasia disamarkan bagi selain admin/pimpinan.", sc: ["arsip:read"], pa: [{ nm: "unit_id", in: "query", s: { t: "integer", rf: { l: "/v1/arsip/unit", k: "id", d: "/v1/arsip/unit/{id}" } }, rq: 1, ds: "Unit" }, { nm: "arah", in: "query", s: { t: "string" }, ds: "masuk | keluar" }, { nm: "dari", in: "query", s: { t: "string" }, ds: "YYYY-MM-DD" }, { nm: "sampai", in: "query", s: { t: "string" }, ds: "YYYY-MM-DD" }], r: "list", it: "Objek" }, getArsipLaporanDaftarArsip: { id: "getArsipLaporanDaftarArsip", m: "GET", path: "/v1/arsip/laporan/daftar-arsip", tag: "Arsip: Laporan", sum: "Daftar arsip aktif/inaktif (DAA/DAI)", ds: "Berkas dan arsip lepas per klasifikasi dengan kurun waktu, jumlah, lokasi, dan jadwal retensi.", sc: ["arsip:read"], pa: [{ nm: "unit_id", in: "query", s: { t: "integer", rf: { l: "/v1/arsip/unit", k: "id", d: "/v1/arsip/unit/{id}" } }, rq: 1, ds: "Unit" }, { nm: "status_arsip", in: "query", s: { t: "string" }, ds: "aktif | inaktif | permanen | dimusnahkan | diserahkan" }], r: "list", it: "Objek" }, getArsipLaporanPengingat: { id: "getArsipLaporanPengingat", m: "GET", path: "/v1/arsip/laporan/pengingat", tag: "Arsip: Laporan", sum: "Pengingat", ds: "Disposisi lewat batas, surat mendekati batas waktu, dokumen akan kedaluwarsa, peminjaman terlambat, retensi jatuh tempo.", sc: ["arsip:read"], pa: [{ nm: "hari", in: "query", s: { t: "string" }, ds: "Rentang ke depan (bawaan 30)" }], r: "object", it: "Objek" }, getArsipCari: { id: "getArsipCari", m: "GET", path: "/v1/arsip/cari", tag: "Arsip: Laporan", sum: "Pencarian gabungan", ds: "Surat, dokumen, dan berkas yang boleh Anda lihat.", sc: ["arsip:read"], pa: [{ nm: "q", in: "query", s: { t: "string" }, rq: 1, ds: "Min. 3 karakter" }, { nm: "per_jenis", in: "query", s: { t: "string" }, ds: "Maks. 50" }], r: "object", it: "Objek" }, getArsipLog: { id: "getArsipLog", m: "GET", path: "/v1/arsip/log", tag: "Arsip: Laporan", sum: "Log audit", ds: "Semua perubahan dan unduhan. Admin arsip.", sc: ["arsip:admin"], pa: [{ nm: "entitas", in: "query", s: { t: "string" }, ds: "surat | dokumen | berkas | unit | ..." }, { nm: "entitas_id", in: "query", s: { t: "string" }, ds: "ID" }, { nm: "aksi", in: "query", s: { t: "string" }, ds: "Aksi" }, { nm: "oleh", in: "query", s: { t: "string" }, ds: "Username" }, { nm: "dari", in: "query", s: { t: "string" }, ds: "YYYY-MM-DD" }, { nm: "sampai", in: "query", s: { t: "string" }, ds: "YYYY-MM-DD" }, { nm: "page", in: "query", s: { t: "integer", min: 1, d: 1 }, ds: "Nomor halaman, mulai 1." }, { nm: "per_page", in: "query", s: { t: "integer", min: 1, mx: 100, d: 25 }, ds: "Jumlah data per halaman (maksimal 100)." }], r: "list", it: "Objek" } };
6
+ var mandiri = ["getArsipReferensi", "postArsipUnitSinkronSiakad", "getArsipPenomoranPratinjau", "postArsipSayaKirimSurat", "getArsipSaya", "postArsipSayaNotifikasiBaca", "getArsipLaporanRingkasan", "getArsipLaporanPengingat", "getArsipCari"];
7
+ var skema = { Objek: { t: "object", ds: "Baris data dengan nama kolom huruf kecil sesuai tabel SIAKAD." }, ArsipUnit: { t: "object", pr: { id: { t: "integer" }, induk_id: { t: "integer", n: 1 }, kode: { t: "string" }, jenis: { t: "string", e: ["universitas", "fakultas", "prodi", "unit"] }, kode_fakultas: { t: "string", n: 1 }, kode_prodi: { t: "string", n: 1 }, nama: { t: "string" }, singkatan: { t: "string", n: 1 }, kode_surat: { t: "string", n: 1, ds: "Dipakai {kode_unit} di nomor surat" }, aktif: { t: "integer" }, peran_saya: { t: "string", n: 1, ds: "admin | pimpinan | sekretaris | arsiparis | staf | pengawas | null" } } }, ArsipPetugas: { t: "object", pr: { id: { t: "integer" }, unit_id: { t: "integer" }, username: { t: "string" }, nama: { t: "string", n: 1 }, level: { t: "string", n: 1 }, peran: { t: "string", e: ["admin", "pimpinan", "sekretaris", "arsiparis", "staf"] }, jabatan: { t: "string", n: 1 }, bisa_tandatangan: { t: "integer" }, aktif: { t: "integer" }, mulai: { t: "string", n: 1, f: "date" }, selesai: { t: "string", n: 1, f: "date" } } }, ArsipKlasifikasi: { t: "object", pr: { id: { t: "integer" }, induk_id: { t: "integer", n: 1 }, kode: { t: "string" }, nama: { t: "string" }, retensi_aktif: { t: "integer", n: 1, ds: "tahun" }, retensi_inaktif: { t: "integer", n: 1, ds: "tahun" }, nasib_akhir: { t: "string", e: ["musnah", "permanen", "dinilai_kembali"] }, keterangan_retensi: { t: "string", n: 1 } } }, ArsipJenis: { t: "object", pr: { id: { t: "integer" }, kelompok: { t: "string", e: ["naskah", "dokumen"] }, kode: { t: "string" }, nama: { t: "string" }, untuk_pemilik: { t: "array", i: { t: "string" } }, klasifikasi_id: { t: "integer", n: 1 }, punya_masa_berlaku: { t: "integer" }, wajib_verifikasi: { t: "integer" } } }, ArsipPenomoran: { t: "object", pr: { id: { t: "integer" }, untuk: { t: "string", e: ["surat_keluar", "agenda_masuk", "agenda_keluar"] }, unit_id: { t: "integer", n: 1 }, jenis_id: { t: "integer", n: 1 }, format: { t: "string" }, reset: { t: "string", e: ["tahunan", "bulanan", "tidak"] } } }, ArsipLokasi: { t: "object", pr: { id: { t: "integer" }, unit_id: { t: "integer" }, induk_id: { t: "integer", n: 1 }, kode: { t: "string" }, nama: { t: "string" }, jenis: { t: "string", e: ["gedung", "ruang", "lemari", "rak", "boks", "folder", "lainnya"] } } }, ArsipTemplate: { t: "object", pr: { id: { t: "integer" }, unit_id: { t: "integer", n: 1 }, jenis_id: { t: "integer", n: 1 }, nama: { t: "string" }, perihal: { t: "string", n: 1 }, isi: { t: "string" } } }, ArsipSuratRingkas: { t: "object", pr: { id: { t: "integer" }, uuid: { t: "string" }, arah: { t: "string", e: ["masuk", "keluar"] }, unit_id: { t: "integer" }, unit_nama: { t: "string" }, nomor_surat: { t: "string", n: 1 }, nomor_agenda: { t: "string", n: 1 }, tanggal_surat: { t: "string", n: 1, f: "date" }, tanggal_diterima: { t: "string", n: 1, f: "date" }, tanggal_kirim: { t: "string", n: 1, f: "date" }, perihal: { t: "string" }, pengirim_nama: { t: "string", n: 1 }, pengirim_instansi: { t: "string", n: 1 }, tujuan_ringkas: { t: "string", n: 1 }, sifat: { t: "string", e: ["biasa", "penting", "segera", "sangat_segera"] }, keamanan: { t: "string", e: ["biasa", "terbatas", "rahasia", "sangat_rahasia"] }, status: { t: "string", e: ["draf", "review", "revisi", "disetujui", "terkirim", "diarsipkan", "dibatalkan", "baru", "didisposisi", "diproses", "selesai", "diarsipkan", "dibatalkan"] }, batas_waktu: { t: "string", n: 1, f: "date" }, jumlah_file: { t: "integer" } } }, ArsipSurat: { t: "object", pr: { jenis_id: { t: "integer", n: 1, ds: "arsip_jenis kelompok naskah" }, tanggal_surat: { t: "string", n: 1, f: "date" }, perihal: { t: "string", max: 255 }, ringkasan: { t: "string", n: 1 }, lampiran: { t: "string", n: 1, ds: "Mis. 1 (satu) berkas" }, sifat: { t: "string", e: ["biasa", "penting", "segera", "sangat_segera"] }, keamanan: { t: "string", e: ["biasa", "terbatas", "rahasia", "sangat_rahasia"] }, media: { t: "string", e: ["kertas", "elektronik", "email", "pos", "kurir", "langsung", "sistem"] }, batas_waktu: { t: "string", n: 1, f: "date" }, balasan_untuk_id: { t: "integer", n: 1, ds: "Surat yang dibalas" }, klasifikasi_id: { t: "integer", n: 1, ds: "Kosong = klasifikasi bawaan jenis" }, berkas_id: { t: "integer", n: 1, ds: "Berkas terbuka unit yang sama" }, lokasi_id: { t: "integer", n: 1 }, aktif_sampai: { t: "string", n: 1, f: "date" }, inaktif_sampai: { t: "string", n: 1, f: "date" }, nasib_akhir: { t: "string", e: ["musnah", "permanen", "dinilai_kembali"] }, status_arsip: { t: "string", e: ["aktif", "inaktif", "permanen", "dimusnahkan", "diserahkan"] }, id: { t: "integer" }, uuid: { t: "string" }, arah: { t: "string", e: ["masuk", "keluar"] }, unit_id: { t: "integer" }, unit: { t: "object" }, status: { t: "string" }, nomor_surat: { t: "string", n: 1 }, nomor_agenda: { t: "string", n: 1 }, isi: { t: "string", n: 1, ds: "HTML konsep surat keluar" }, penandatangan_nama: { t: "string", n: 1 }, penandatangan_jabatan: { t: "string", n: 1 }, ditandatangani_pada: { t: "string", n: 1 }, kode_verifikasi: { t: "string", n: 1 }, verifikasi_url: { t: "string", n: 1 }, tujuan: { t: "array", i: { t: "object", pr: { jenis: { t: "string", e: ["unit", "pengguna", "dosen", "mahasiswa", "eksternal"] }, unit_id: { t: "integer", n: 1, ds: "jenis unit" }, username: { t: "string", n: 1, ds: "jenis pengguna" }, nidn: { t: "string", n: 1, ds: "jenis dosen" }, nim: { t: "string", n: 1, ds: "jenis mahasiswa" }, nama: { t: "string", n: 1, ds: "Wajib untuk eksternal (atau instansi); lainnya otomatis dari SIAKAD" }, jabatan: { t: "string", n: 1 }, instansi: { t: "string", n: 1 }, alamat: { t: "string", n: 1 }, email: { t: "string", n: 1 }, tembusan: { t: "boolean" } }, rq: ["jenis"] } }, persetujuan: { t: "array", i: { t: "object" } }, disposisi: { t: "array", i: { t: "object", pr: { id: { t: "integer" }, surat_id: { t: "integer" }, induk_id: { t: "integer", n: 1 }, dari_username: { t: "string" }, dari_nama: { t: "string", n: 1 }, dari_jabatan: { t: "string", n: 1 }, ke_jenis: { t: "string", e: ["pengguna", "unit"] }, ke_username: { t: "string", n: 1 }, ke_unit_id: { t: "integer", n: 1 }, ke_nama: { t: "string", n: 1 }, instruksi: { t: "array", i: { t: "object" } }, catatan: { t: "string", n: 1 }, sifat: { t: "string", e: ["biasa", "penting", "segera", "sangat_segera"] }, batas_waktu: { t: "string", n: 1, f: "date" }, status: { t: "string", e: ["baru", "dibaca", "diproses", "selesai", "dikembalikan"] }, lewat_batas: { t: "boolean" }, laporan: { t: "string", n: 1 }, terusan: { t: "array", i: { t: "object" } }, file: { t: "array", i: { t: "object" } } } } }, file: { t: "array", i: { t: "object", pr: { id: { t: "string", f: "uuid" }, peran: { t: "string", e: ["utama", "lampiran", "bukti"] }, nama: { t: "string" }, mime: { t: "string" }, ukuran: { t: "integer" }, sha256: { t: "string" }, versi: { t: "integer" }, terkini: { t: "boolean" }, keterangan: { t: "string", n: 1 }, diunggah_oleh: { t: "string", n: 1 }, diunggah_pada: { t: "string" }, dimusnahkan_pada: { t: "string", n: 1 }, unduh: { t: "string", ds: "Path unduh (GET, dengan token)" } } } }, hak: { t: "object", ds: "Tindakan yang boleh dilakukan: ubah, ajukan, setujui, beri_nomor, kirim, disposisi, selesai, arsipkan, batalkan, hapus, unggah_file" }, riwayat: { t: "array", ds: "Hanya untuk pengelola", i: { t: "object" } } } }, ArsipDisposisi: { t: "object", pr: { id: { t: "integer" }, surat_id: { t: "integer" }, induk_id: { t: "integer", n: 1 }, dari_username: { t: "string" }, dari_nama: { t: "string", n: 1 }, dari_jabatan: { t: "string", n: 1 }, ke_jenis: { t: "string", e: ["pengguna", "unit"] }, ke_username: { t: "string", n: 1 }, ke_unit_id: { t: "integer", n: 1 }, ke_nama: { t: "string", n: 1 }, instruksi: { t: "array", i: { t: "string" } }, catatan: { t: "string", n: 1 }, sifat: { t: "string", e: ["biasa", "penting", "segera", "sangat_segera"] }, batas_waktu: { t: "string", n: 1, f: "date" }, status: { t: "string", e: ["baru", "dibaca", "diproses", "selesai", "dikembalikan"] }, lewat_batas: { t: "boolean" }, laporan: { t: "string", n: 1 }, terusan: { t: "array", i: { t: "object" } }, file: { t: "array", i: { t: "object", pr: { id: { t: "string", f: "uuid" }, peran: { t: "string", e: ["utama", "lampiran", "bukti"] }, nama: { t: "string" }, mime: { t: "string" }, ukuran: { t: "integer" }, sha256: { t: "string" }, versi: { t: "integer" }, terkini: { t: "boolean" }, keterangan: { t: "string", n: 1 }, diunggah_oleh: { t: "string", n: 1 }, diunggah_pada: { t: "string" }, dimusnahkan_pada: { t: "string", n: 1 }, unduh: { t: "string", ds: "Path unduh (GET, dengan token)" } } } } } }, ArsipDokumenRingkas: { t: "object", pr: { id: { t: "integer" }, uuid: { t: "string" }, pemilik_jenis: { t: "string", e: ["universitas", "fakultas", "prodi", "unit", "dosen", "mahasiswa"] }, unit_id: { t: "integer", n: 1 }, unit_nama: { t: "string", n: 1 }, nidn: { t: "string", n: 1 }, nim: { t: "string", n: 1 }, pemilik_nama: { t: "string", n: 1 }, jenis_nama: { t: "string", n: 1 }, nomor: { t: "string", n: 1 }, judul: { t: "string" }, tanggal_dokumen: { t: "string", n: 1, f: "date" }, berlaku_sampai: { t: "string", n: 1, f: "date" }, akses: { t: "string", e: ["publik", "internal", "terbatas", "rahasia"] }, status_verifikasi: { t: "string", e: ["tidak_perlu", "diajukan", "terverifikasi", "ditolak"] }, jumlah_file: { t: "integer" } } }, ArsipDokumen: { t: "object", pr: { klasifikasi_id: { t: "integer", n: 1 }, berkas_id: { t: "integer", n: 1 }, lokasi_id: { t: "integer", n: 1 }, aktif_sampai: { t: "string", n: 1, f: "date" }, inaktif_sampai: { t: "string", n: 1, f: "date" }, nasib_akhir: { t: "string", e: ["musnah", "permanen", "dinilai_kembali"] }, status_arsip: { t: "string", e: ["aktif", "inaktif", "permanen", "dimusnahkan", "diserahkan"] }, id: { t: "integer" }, uuid: { t: "string" }, pemilik_jenis: { t: "string", e: ["universitas", "fakultas", "prodi", "unit", "dosen", "mahasiswa"] }, unit: { t: "object", n: 1 }, pemilik: { t: "object", n: 1, ds: "Data dosen/mahasiswa dari SIAKAD" }, jenis: { t: "object", n: 1 }, nomor: { t: "string", n: 1 }, judul: { t: "string" }, deskripsi: { t: "string", n: 1 }, tanggal_dokumen: { t: "string", n: 1, f: "date" }, berlaku_mulai: { t: "string", n: 1, f: "date" }, berlaku_sampai: { t: "string", n: 1, f: "date" }, penerbit: { t: "string", n: 1 }, kata_kunci: { t: "array", i: { t: "string" } }, akses: { t: "string", e: ["publik", "internal", "terbatas", "rahasia"] }, status_verifikasi: { t: "string", e: ["tidak_perlu", "diajukan", "terverifikasi", "ditolak"] }, catatan_verifikasi: { t: "string", n: 1 }, sumber: { t: "string" }, sumber_ref: { t: "string", n: 1 }, file: { t: "array", i: { t: "object", pr: { id: { t: "string", f: "uuid" }, peran: { t: "string", e: ["utama", "lampiran", "bukti"] }, nama: { t: "string" }, mime: { t: "string" }, ukuran: { t: "integer" }, sha256: { t: "string" }, versi: { t: "integer" }, terkini: { t: "boolean" }, keterangan: { t: "string", n: 1 }, diunggah_oleh: { t: "string", n: 1 }, diunggah_pada: { t: "string" }, dimusnahkan_pada: { t: "string", n: 1 }, unduh: { t: "string", ds: "Path unduh (GET, dengan token)" } } } }, hak: { t: "object" } } }, ArsipFile: { t: "object", pr: { id: { t: "string", f: "uuid" }, peran: { t: "string", e: ["utama", "lampiran", "bukti"] }, nama: { t: "string" }, mime: { t: "string" }, ukuran: { t: "integer" }, sha256: { t: "string" }, versi: { t: "integer" }, terkini: { t: "boolean" }, keterangan: { t: "string", n: 1 }, diunggah_oleh: { t: "string", n: 1 }, diunggah_pada: { t: "string" }, dimusnahkan_pada: { t: "string", n: 1 }, unduh: { t: "string", ds: "Path unduh (GET, dengan token)" } } }, ArsipBerkas: { t: "object", pr: { klasifikasi_id: { t: "integer", n: 1 }, berkas_id: { t: "integer", n: 1 }, lokasi_id: { t: "integer", n: 1 }, aktif_sampai: { t: "string", n: 1, f: "date" }, inaktif_sampai: { t: "string", n: 1, f: "date" }, nasib_akhir: { t: "string", e: ["musnah", "permanen", "dinilai_kembali"] }, status_arsip: { t: "string", e: ["aktif", "inaktif", "permanen", "dimusnahkan", "diserahkan"] }, id: { t: "integer" }, unit_id: { t: "integer" }, nomor_berkas: { t: "string" }, judul: { t: "string" }, uraian: { t: "string", n: 1 }, tahun_awal: { t: "integer", n: 1 }, tahun_akhir: { t: "integer", n: 1 }, status: { t: "string", e: ["terbuka", "ditutup"] }, ditutup_pada: { t: "string", n: 1, f: "date" }, surat: { t: "array", i: { t: "object" } }, dokumen: { t: "array", i: { t: "object" } } } }, ArsipBagikan: { t: "object", pr: { id: { t: "integer" }, entitas: { t: "string" }, entitas_id: { t: "integer" }, ke_jenis: { t: "string", e: ["pengguna", "unit"] }, username: { t: "string", n: 1 }, unit_id: { t: "integer", n: 1 }, hak: { t: "string", e: ["lihat", "unduh"] }, berlaku_sampai: { t: "string", n: 1 }, dibagikan_oleh: { t: "string", n: 1 } } }, ArsipPeminjaman: { t: "object", pr: { id: { t: "integer" }, nomor: { t: "string" }, entitas: { t: "string" }, entitas_id: { t: "integer" }, judul_arsip: { t: "string", n: 1 }, peminjam_username: { t: "string" }, jenis: { t: "string", e: ["fisik", "digital"] }, keperluan: { t: "string" }, tanggal_pinjam: { t: "string", n: 1, f: "date" }, rencana_kembali: { t: "string", n: 1, f: "date" }, status: { t: "string" }, terlambat: { t: "boolean" } } }, ArsipPenyusutan: { t: "object", pr: { id: { t: "integer" }, unit_id: { t: "integer" }, nomor: { t: "string" }, jenis: { t: "string", e: ["pemindahan", "pemusnahan", "penyerahan"] }, judul: { t: "string" }, status: { t: "string" }, nomor_berita_acara: { t: "string", n: 1 }, item: { t: "array", i: { t: "object" } } } } };
8
+ var arsip_default = { key, resources, ops, mandiri, skema };
9
+
10
+ export { arsip_default as default, key, mandiri, ops, resources, skema };
11
+ //# sourceMappingURL=arsip-LDRV7FYX.js.map
@@ -0,0 +1,11 @@
1
+ 'use client';
2
+ // src/katalog/data/modul/cbt.json
3
+ var key = "cbt";
4
+ var resources = [{ id: "/v1/cbt/kerjakan", tag: "CBT: Peserta ujian", title: "Peserta ujian", base: "/v1/cbt/kerjakan", item: "/v1/cbt/kerjakan/{id}", key: "id", get: "getCbtKerjakanById", actions: ["postCbtKerjakanByIdMulai", "postCbtKerjakanByIdJawab", "postCbtKerjakanByIdLog", "postCbtKerjakanByIdSelesai"], children: [] }, { id: "/v1/cbt/latihan", tag: "CBT: Ujian percobaan", title: "Ujian latihan", base: "/v1/cbt/latihan", list: "getCbtLatihan", actions: [], children: [] }, { id: "/v1/cbt/peserta", tag: "CBT: Peserta", title: "Peserta", base: "/v1/cbt/peserta", item: "/v1/cbt/peserta/{id}", key: "id", list: "getCbtPeserta", create: "postCbtPeserta", get: "getCbtPesertaById", update: "putCbtPesertaById", del: "deleteCbtPesertaById", actions: ["postCbtPesertaByIdResetPerangkat", "postCbtPesertaByIdTambahWaktu", "postCbtPesertaByIdDiskualifikasi", "postCbtPesertaByIdBukaKembali"], children: [] }, { id: "/v1/cbt/saya", tag: "CBT: Peserta ujian", title: "Ujian saya", base: "/v1/cbt/saya", list: "getCbtSaya", actions: [], children: [] }, { id: "/v1/cbt/sesi", tag: "CBT: Sesi dan pengawasan", title: "Sesi", base: "/v1/cbt/sesi", item: "/v1/cbt/sesi/{id}", key: "id", list: "getCbtSesi", create: "postCbtSesi", get: "getCbtSesiById", update: "putCbtSesiById", del: "deleteCbtSesiById", actions: ["getCbtSesiByIdPantau", "postCbtSesiByIdBuka", "postCbtSesiByIdGantiToken", "postCbtSesiByIdTutup"], children: [] }, { id: "/v1/cbt/soal", tag: "CBT: Soal", title: "Soal", base: "/v1/cbt/soal", item: "/v1/cbt/soal/{id}", key: "id", list: "getCbtSoal", create: "postCbtSoal", get: "getCbtSoalById", update: "putCbtSoalById", del: "deleteCbtSoalById", actions: [], children: [] }, { id: "/v1/cbt/ujian", tag: "CBT: Ujian", title: "Ujian", base: "/v1/cbt/ujian", item: "/v1/cbt/ujian/{id}", key: "id", list: "getCbtUjian", create: "postCbtUjian", get: "getCbtUjianById", update: "putCbtUjianById", del: "deleteCbtUjianById", actions: ["getCbtUjianByIdNilaiSiakad", "postCbtUjianByIdNilaiSiakad", "getCbtUjianByIdPeringkat", "getCbtUjianByIdHasil", "postCbtUjianByIdImporBankSoal", "postCbtUjianByIdIsiPeserta", "postCbtUjianByIdSiapkan", "postCbtUjianByIdKembaliDraf", "postCbtUjianByIdSelesaikan", "postCbtUjianByIdArsipkan"], children: ["/v1/cbt/ujian/{id}/koreksi", "/v1/cbt/ujian/{id}/nilai-siakad/riwayat"] }, { id: "/v1/cbt/ujian/{id}/koreksi", tag: "CBT: Koreksi dan hasil", title: "Jawaban esai untuk dikoreksi", base: "/v1/cbt/ujian/{id}/koreksi", list: "getCbtUjianByIdKoreksi", actions: [], children: [], parent: "/v1/cbt/ujian" }, { id: "/v1/cbt/ujian/{id}/nilai-siakad/riwayat", tag: "CBT: Nilai ke SIAKAD", title: "Riwayat pengiriman nilai", base: "/v1/cbt/ujian/{id}/nilai-siakad/riwayat", list: "getCbtUjianByIdNilaiSiakadRiwayat", actions: [], children: [], parent: "/v1/cbt/ujian" }];
5
+ var ops = { getCbtUjianByIdNilaiSiakad: { id: "getCbtUjianByIdNilaiSiakad", m: "GET", path: "/v1/cbt/ujian/{id}/nilai-siakad", tag: "CBT: Nilai ke SIAKAD", sum: "Pratinjau kirim nilai ke SIAKAD", ds: "Rencana penulisan nilai ujian ke t_mahasiswa_nilai: per peserta aksi tambah/ubah/sama/dilewati/ditolak beserta alasannya\n(belum selesai, esai belum dikoreksi, tidak ada KRS disetujui, syarat presensi UAS). `jenis_nilai` bawaan dari jenis ujian\n(uts = UTS, uas = UAS, kuis = Harian); `batas_input_nilai` menunjukkan apakah input nilai sedang dibuka per kelas (ADMIN bebas).", sc: ["cbt:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/cbt/ujian", k: "id", d: "/v1/cbt/ujian/{id}" } }, rq: 1, ds: "ID ujian" }, { nm: "jenis_nilai", in: "query", s: { t: "string" }, ds: "Harian, Tugas, UTS, UAS, UP, SP" }, { nm: "nilai_ke", in: "query", s: { t: "string" }, ds: "Untuk Harian/Tugas (bawaan 1)" }], r: "object", it: "Objek" }, postCbtUjianByIdNilaiSiakad: { id: "postCbtUjianByIdNilaiSiakad", m: "POST", path: "/v1/cbt/ujian/{id}/nilai-siakad", tag: "CBT: Nilai ke SIAKAD", sum: "Kirim nilai ke SIAKAD", ds: "Menulis baris tambah/ubah dari pratinjau ke t_mahasiswa_nilai (kolom sama seperti import nilai angka) dan m_log. Nilai akhir KHS dihitung SIAKAD seperti biasa. Body opsional: jenis_nilai, nilai_ke. 409 bila batas input nilai tutup atau tidak ada yang perlu dikirim.", sc: ["cbt:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/cbt/ujian", k: "id", d: "/v1/cbt/ujian/{id}" } }, rq: 1, ds: "ID ujian" }], b: { ct: "application/json", ref: "Objek", s: { t: "object", ds: "Baris data dengan nama kolom huruf kecil sesuai tabel SIAKAD." }, rq: 1 }, r: "object", it: "Objek" }, getCbtUjianByIdNilaiSiakadRiwayat: { id: "getCbtUjianByIdNilaiSiakadRiwayat", m: "GET", path: "/v1/cbt/ujian/{id}/nilai-siakad/riwayat", tag: "CBT: Nilai ke SIAKAD", sum: "Riwayat pengiriman nilai", sc: ["cbt:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/cbt/ujian", k: "id", d: "/v1/cbt/ujian/{id}" } }, rq: 1, ds: "ID ujian" }], r: "list", it: "Objek" }, postCbtUjianByIdNilaiSiakadByKirimBatal: { id: "postCbtUjianByIdNilaiSiakadByKirimBatal", m: "POST", path: "/v1/cbt/ujian/{id}/nilai-siakad/{kirim}/batal", tag: "CBT: Nilai ke SIAKAD", sum: "Batalkan pengiriman nilai", ds: "Mengembalikan nilai lama (baris yang ditambahkan dihapus). Baris yang sudah diubah lagi di SIAKAD tidak ditimpa kecuali body `paksa: true`.", sc: ["cbt:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/cbt/ujian", k: "id", d: "/v1/cbt/ujian/{id}" } }, rq: 1, ds: "ID ujian" }, { nm: "kirim", in: "path", s: { t: "string" }, rq: 1, ds: "ID pengiriman" }], b: { ct: "application/json", ref: "Objek", s: { t: "object", ds: "Baris data dengan nama kolom huruf kecil sesuai tabel SIAKAD." }, rq: 1 }, r: "object", it: "Objek" }, getCbtLatihan: { id: "getCbtLatihan", m: "GET", path: "/v1/cbt/latihan", tag: "CBT: Ujian percobaan", sum: "Daftar ujian latihan", ds: "Ujian ber-latihan=1 yang siap dan punya sesi dibuka, beserta status dan nilai terakhir pengguna. Dibatasi prodi pengguna bila ujian berprodi.", sc: ["cbt:read"], r: "list", it: "Objek" }, postCbtLatihanByIdMulai: { id: "postCbtLatihanByIdMulai", m: "POST", path: "/v1/cbt/latihan/{id}/mulai", tag: "CBT: Ujian percobaan", sum: "Mulai / ulangi ujian latihan", ds: "Mendaftarkan pengguna ke sesi latihan tanpa token pengawas, atau mengulang bila sudah selesai (jawaban lama dihapus). Hasilnya lembar ujian dan peserta_id untuk endpoint /cbt/kerjakan/{peserta_id}. Kirim header `X-Perangkat` (ID acak yang disimpan aplikasi ujian di perangkat); bersama User-Agent dipakai untuk kunci perangkat.", sc: ["cbt:write"], pa: [{ nm: "id", in: "path", s: { t: "string" }, rq: 1, ds: "ID ujian" }], r: "object", it: "Objek" }, getCbtUjianByIdPeringkat: { id: "getCbtUjianByIdPeringkat", m: "GET", path: "/v1/cbt/ujian/{id}/peringkat", tag: "CBT: Koreksi dan hasil", sum: "Peringkat peserta", ds: "Pengelola: peringkat semua peserta selesai (nilai sama = peringkat sama), peringkat dalam prodi, persentil, durasi. Peserta: posisinya sendiri bila ujian menampilkan hasil atau ujian latihan.", sc: ["cbt:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/cbt/ujian", k: "id", d: "/v1/cbt/ujian/{id}" } }, rq: 1, ds: "ID ujian" }], r: "object", it: "Objek" }, getCbtSaya: { id: "getCbtSaya", m: "GET", path: "/v1/cbt/saya", tag: "CBT: Peserta ujian", sum: "Ujian saya", ds: "Ujian (siap/selesai) tempat pengguna terdaftar sebagai peserta, dengan sesi, status, dan `bisa_mulai`.", sc: ["cbt:read"], r: "list", it: "Objek" }, postCbtKerjakanByIdMulai: { id: "postCbtKerjakanByIdMulai", m: "POST", path: "/v1/cbt/kerjakan/{id}/mulai", tag: "CBT: Peserta ujian", sum: "Mulai ujian", ds: "Body: token (dari pengawas). Bila sudah mengerjakan, melanjutkan (sambung ulang) dari perangkat yang sama. Soal dan opsi diacak per peserta; batas waktu dihitung server (durasi + tambahan, tidak melewati akhir sesi). Mengembalikan lembar soal tanpa kunci. Kirim header `X-Perangkat` (ID acak yang disimpan aplikasi ujian di perangkat); bersama User-Agent dipakai untuk kunci perangkat.", sc: ["cbt:write"], pa: [{ nm: "id", in: "path", s: { t: "string" }, rq: 1, ds: "ID peserta (dari /cbt/saya)" }], r: "object", it: "Objek" }, getCbtKerjakanById: { id: "getCbtKerjakanById", m: "GET", path: "/v1/cbt/kerjakan/{id}", tag: "CBT: Peserta ujian", sum: "Lembar ujian", ds: "Soal, jawaban tersimpan, tanda ragu, sisa_detik. Bila waktu habis, ujian otomatis diakhiri dan dinilai; hasil tampil bila ujian `tampil_hasil`. Kirim header `X-Perangkat` (ID acak yang disimpan aplikasi ujian di perangkat); bersama User-Agent dipakai untuk kunci perangkat.", sc: ["cbt:read"], pa: [{ nm: "id", in: "path", s: { t: "string" }, rq: 1, ds: "ID peserta" }], r: "object", it: "Objek" }, postCbtKerjakanByIdJawab: { id: "postCbtKerjakanByIdJawab", m: "POST", path: "/v1/cbt/kerjakan/{id}/jawab", tag: "CBT: Peserta ujian", sum: "Simpan jawaban", ds: "Body: soal_id, jawaban (bentuk sesuai jenis soal; null = kosongkan), ragu; atau `jawaban_banyak`: [{soal_id, jawaban, ragu}] untuk sinkron setelah koneksi putus. Ditolak setelah waktu habis (kelonggaran 30 detik). Kirim header `X-Perangkat` (ID acak yang disimpan aplikasi ujian di perangkat); bersama User-Agent dipakai untuk kunci perangkat.", sc: ["cbt:write"], pa: [{ nm: "id", in: "path", s: { t: "string" }, rq: 1, ds: "ID peserta" }], r: "object", it: "Objek" }, postCbtKerjakanByIdLog: { id: "postCbtKerjakanByIdLog", m: "POST", path: "/v1/cbt/kerjakan/{id}/log", tag: "CBT: Peserta ujian", sum: "Catat kejadian", ds: "Body: jenis (keluar_layar, pindah_tab, salin_tempel, layar_penuh, koneksi_putus, lainnya), detail. Keluar layar, pindah tab, dan salin-tempel menambah hitungan pelanggaran yang terlihat pengawas.", sc: ["cbt:write"], pa: [{ nm: "id", in: "path", s: { t: "string" }, rq: 1, ds: "ID peserta" }], r: "object", it: "Objek" }, postCbtKerjakanByIdSelesai: { id: "postCbtKerjakanByIdSelesai", m: "POST", path: "/v1/cbt/kerjakan/{id}/selesai", tag: "CBT: Peserta ujian", sum: "Selesai ujian", ds: "Mengakhiri dan menilai otomatis (esai menunggu koreksi). Kirim header `X-Perangkat` (ID acak yang disimpan aplikasi ujian di perangkat); bersama User-Agent dipakai untuk kunci perangkat.", sc: ["cbt:write"], pa: [{ nm: "id", in: "path", s: { t: "string" }, rq: 1, ds: "ID peserta" }], r: "object", it: "Objek" }, getCbtSesiByIdPantau: { id: "getCbtSesiByIdPantau", m: "GET", path: "/v1/cbt/sesi/{id}/pantau", tag: "CBT: Sesi dan pengawasan", sum: "Pantau sesi", ds: "Untuk pengawas sesi atau pengelola: token, ringkasan status, dan tiap peserta (progres terjawab, sisa waktu, pelanggaran, kejadian terakhir, perangkat terkunci). Tindakan lewat aksi peserta: reset-perangkat, tambah-waktu, diskualifikasi.", sc: ["cbt:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/cbt/sesi", k: "id", d: "/v1/cbt/sesi/{id}" } }, rq: 1, ds: "ID sesi" }], r: "object", it: "Objek" }, getCbtUjianByIdKoreksi: { id: "getCbtUjianByIdKoreksi", m: "GET", path: "/v1/cbt/ujian/{id}/koreksi", tag: "CBT: Koreksi dan hasil", sum: "Jawaban esai untuk dikoreksi", ds: "Jawaban esai peserta yang sudah selesai dan belum dikoreksi (`semua=1` termasuk yang sudah). Pengelola.", sc: ["cbt:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/cbt/ujian", k: "id", d: "/v1/cbt/ujian/{id}" } }, rq: 1, ds: "ID ujian" }, { nm: "semua", in: "query", s: { t: "string" }, ds: "1 = termasuk yang sudah dikoreksi" }], r: "list", it: "Objek" }, postCbtJawabanByIdKoreksi: { id: "postCbtJawabanByIdKoreksi", m: "POST", path: "/v1/cbt/jawaban/{id}/koreksi", tag: "CBT: Koreksi dan hasil", sum: "Beri skor jawaban", ds: "Body: skor (0 sampai poin soal). Nilai dan kelulusan peserta dihitung ulang; skor koreksi manual tidak ditimpa penilaian otomatis. Pengelola.", sc: ["cbt:write"], pa: [{ nm: "id", in: "path", s: { t: "string" }, rq: 1, ds: "ID jawaban" }], r: "object", it: "Objek" }, getCbtUjianByIdHasil: { id: "getCbtUjianByIdHasil", m: "GET", path: "/v1/cbt/ujian/{id}/hasil", tag: "CBT: Koreksi dan hasil", sum: "Hasil dan analisis butir", ds: "Statistik nilai (rata, median, simpangan baku, distribusi, lulus), daftar peserta, dan analisis butir: indeks kesukaran, daya beda kelompok atas/bawah 27%, sebaran pilihan. Pengelola.", sc: ["cbt:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/cbt/ujian", k: "id", d: "/v1/cbt/ujian/{id}" } }, rq: 1, ds: "ID ujian" }], r: "object", it: "Objek" }, postCbtUjianByIdImporBankSoal: { id: "postCbtUjianByIdImporBankSoal", m: "POST", path: "/v1/cbt/ujian/{id}/impor-bank-soal", tag: "CBT: Soal", sum: "Impor dari bank soal LMS", ds: "Body: `ids` [lms_bank_soal.id] atau saringan kode_mk/kode_prodi/jenis/tingkat/tag dengan `jumlah` (acak). Soal disalin (bank soal tidak berubah); yang sudah pernah diimpor dilewati. Pengelola.", sc: ["cbt:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/cbt/ujian", k: "id", d: "/v1/cbt/ujian/{id}" } }, rq: 1, ds: "ID ujian" }], r: "object", it: "Objek" }, postCbtUjianByIdIsiPeserta: { id: "postCbtUjianByIdIsiPeserta", m: "POST", path: "/v1/cbt/ujian/{id}/isi-peserta", tag: "CBT: Peserta", sum: "Isi peserta", ds: "Body: sesi_id, sumber `krs` (mahasiswa yang mengambil kode_mk ujian di tahun_id ujian, disaring kelas/prodi ujian bila diisi; t_mahasiswa_krs hanya dibaca) atau `daftar` dengan username [..]. Yang sudah terdaftar dilewati. Pengelola.", sc: ["cbt:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/cbt/ujian", k: "id", d: "/v1/cbt/ujian/{id}" } }, rq: 1, ds: "ID ujian" }], r: "object", it: "Objek" }, getCbtUjian: { id: "getCbtUjian", m: "GET", path: "/v1/cbt/ujian", tag: "CBT: Ujian", sum: "Ujian: daftar", ds: "Ujian berbasis komputer. Soal hanya bisa diubah selama belum ada peserta yang mulai. Aksi `siapkan` memeriksa soal dan sesi sebelum ujian bisa dikerjakan. Pengawas melihat ujian yang sesinya ia awasi. Hanya pengelola modul.", sc: ["cbt:read"], pa: [{ nm: "page", in: "query", s: { t: "integer", min: 1, d: 1 }, ds: "Nomor halaman, mulai 1." }, { nm: "per_page", in: "query", s: { t: "integer", min: 1, mx: 100, d: 25 }, ds: "Jumlah data per halaman (maksimal 100)." }, { nm: "jenis", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "tahun_id", in: "query", s: { t: "string", rf: { l: "/v1/referensi/tahun-akademik", k: "tahun_id", q: 0 } }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "kode_prodi", in: "query", s: { t: "string", rf: { l: "/v1/referensi/prodi", k: "kode_prodi", q: 0 } }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "acak_soal", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "acak_opsi", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "tampil_hasil", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "kunci_perangkat", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "latihan", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "status", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "kode_mk", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "q", in: "query", s: { t: "string" }, ds: "Cari di kode, nama, kode_mk" }, { nm: "dari", in: "query", s: { t: "string" }, ds: "Tanggal awal (YYYY-MM-DD)" }, { nm: "sampai", in: "query", s: { t: "string" }, ds: "Tanggal akhir (YYYY-MM-DD)" }, { nm: "urut", in: "query", s: { t: "string" }, ds: 'Nama kolom, awali "-" untuk menurun' }], r: "list", it: "CbtUjian" }, postCbtUjian: { id: "postCbtUjian", m: "POST", path: "/v1/cbt/ujian", tag: "CBT: Ujian", sum: "Ujian: tambah", ds: "Pengelola modul.", sc: ["cbt:write"], oleh: "pengelola", b: { ct: "application/json", ref: "CbtUjianInput", s: { t: "object", pr: { kode: { t: "string", max: 40, p: "^[A-Za-z0-9._\\-/]+$", ds: "(unik)" }, nama: { t: "string", max: 200 }, jenis: { t: "string", e: ["uts", "uas", "kuis", "pmb", "komprehensif", "bahasa", "sertifikasi", "lainnya"], d: "uas" }, tahun_id: { t: "string", ds: "m_tahun.tahun_id", rf: { l: "/v1/referensi/tahun-akademik", k: "tahun_id", q: 0 } }, kode_prodi: { t: "string", ds: "m_program_studi.kode_prodi", rf: { l: "/v1/referensi/prodi", k: "kode_prodi", q: 0 } }, kode_mk: { t: "string", max: 20 }, kelas: { t: "string", max: 10 }, durasi_menit: { t: "integer", min: 1, mx: 1440, d: "90" }, jumlah_soal: { t: "integer", min: 1, mx: 1e3 }, acak_soal: { t: "boolean", d: "1" }, acak_opsi: { t: "boolean", d: "1" }, nilai_lulus: { t: "number" }, tampil_hasil: { t: "boolean", d: "0" }, kunci_perangkat: { t: "boolean", d: "1" }, latihan: { t: "boolean", d: "0" }, petunjuk: { t: "string" } }, rq: ["kode", "nama"] }, rq: 1 }, r: "object", it: "CbtUjian" }, getCbtUjianById: { id: "getCbtUjianById", m: "GET", path: "/v1/cbt/ujian/{id}", tag: "CBT: Ujian", sum: "Ujian: detail", ds: "Ujian berbasis komputer. Soal hanya bisa diubah selama belum ada peserta yang mulai. Aksi `siapkan` memeriksa soal dan sesi sebelum ujian bisa dikerjakan. Pengawas melihat ujian yang sesinya ia awasi. Hanya pengelola modul.", sc: ["cbt:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/cbt/ujian", k: "id", d: "/v1/cbt/ujian/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "CbtUjian" }, putCbtUjianById: { id: "putCbtUjianById", m: "PUT", path: "/v1/cbt/ujian/{id}", tag: "CBT: Ujian", sum: "Ujian: ubah", ds: "Pengelola modul. Kolom yang tidak dikirim tidak berubah.", sc: ["cbt:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/cbt/ujian", k: "id", d: "/v1/cbt/ujian/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "CbtUjianInput", s: { t: "object", pr: { kode: { t: "string", max: 40, p: "^[A-Za-z0-9._\\-/]+$", ds: "(unik)" }, nama: { t: "string", max: 200 }, jenis: { t: "string", e: ["uts", "uas", "kuis", "pmb", "komprehensif", "bahasa", "sertifikasi", "lainnya"], d: "uas" }, tahun_id: { t: "string", ds: "m_tahun.tahun_id", rf: { l: "/v1/referensi/tahun-akademik", k: "tahun_id", q: 0 } }, kode_prodi: { t: "string", ds: "m_program_studi.kode_prodi", rf: { l: "/v1/referensi/prodi", k: "kode_prodi", q: 0 } }, kode_mk: { t: "string", max: 20 }, kelas: { t: "string", max: 10 }, durasi_menit: { t: "integer", min: 1, mx: 1440, d: "90" }, jumlah_soal: { t: "integer", min: 1, mx: 1e3 }, acak_soal: { t: "boolean", d: "1" }, acak_opsi: { t: "boolean", d: "1" }, nilai_lulus: { t: "number" }, tampil_hasil: { t: "boolean", d: "0" }, kunci_perangkat: { t: "boolean", d: "1" }, latihan: { t: "boolean", d: "0" }, petunjuk: { t: "string" } }, rq: ["kode", "nama"] }, rq: 1 }, r: "object", it: "CbtUjian" }, deleteCbtUjianById: { id: "deleteCbtUjianById", m: "DELETE", path: "/v1/cbt/ujian/{id}", tag: "CBT: Ujian", sum: "Ujian: hapus", ds: "Pengelola modul.", sc: ["cbt:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/cbt/ujian", k: "id", d: "/v1/cbt/ujian/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "none" }, postCbtUjianByIdSiapkan: { id: "postCbtUjianByIdSiapkan", m: "POST", path: "/v1/cbt/ujian/{id}/siapkan", tag: "CBT: Ujian", sum: "Ujian: Siapkan ujian", ds: "Memeriksa ujian punya soal (cukup untuk jumlah_soal) dan minimal satu sesi. Pengelola modul. Status harus draf, menjadi siap.", sc: ["cbt:write"], tr: { dari: ["draf"], ke: "siap" }, oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/cbt/ujian", k: "id", d: "/v1/cbt/ujian/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "CbtUjian" }, postCbtUjianByIdKembaliDraf: { id: "postCbtUjianByIdKembaliDraf", m: "POST", path: "/v1/cbt/ujian/{id}/kembali-draf", tag: "CBT: Ujian", sum: "Ujian: Kembalikan ke draf", ds: "Pengelola modul. Status harus siap, menjadi draf.", sc: ["cbt:write"], tr: { dari: ["siap"], ke: "draf" }, oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/cbt/ujian", k: "id", d: "/v1/cbt/ujian/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "CbtUjian" }, postCbtUjianByIdSelesaikan: { id: "postCbtUjianByIdSelesaikan", m: "POST", path: "/v1/cbt/ujian/{id}/selesaikan", tag: "CBT: Ujian", sum: "Ujian: Selesaikan ujian", ds: "Mengakhiri semua peserta yang masih mengerjakan (dinilai) dan menandai yang belum mulai sebagai tidak hadir. Pengelola modul. Status harus siap, menjadi selesai.", sc: ["cbt:write"], tr: { dari: ["siap"], ke: "selesai" }, oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/cbt/ujian", k: "id", d: "/v1/cbt/ujian/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "CbtUjian" }, postCbtUjianByIdArsipkan: { id: "postCbtUjianByIdArsipkan", m: "POST", path: "/v1/cbt/ujian/{id}/arsipkan", tag: "CBT: Ujian", sum: "Ujian: Arsipkan", ds: "Pengelola modul. Status harus draf/selesai, menjadi diarsip.", sc: ["cbt:write"], tr: { dari: ["draf", "selesai"], ke: "diarsip" }, oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/cbt/ujian", k: "id", d: "/v1/cbt/ujian/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "CbtUjian" }, getCbtSoal: { id: "getCbtSoal", m: "GET", path: "/v1/cbt/soal", tag: "CBT: Soal", sum: "Soal: daftar", ds: 'Format sama dengan bank soal LMS: `opsi` [{id, teks}] dan `kunci` "a" / ["a","c"] / true / ["jawaban"] / {"kiri-id": "kanan-id"} (menjodohkan: opsi {kiri: [...], kanan: [...]}). Esai tanpa kunci dan dikoreksi manual. Kunci hanya terlihat oleh pengelola. Soal terkunci setelah ada peserta yang mulai. Hanya pengelola modul.', sc: ["cbt:read"], pa: [{ nm: "page", in: "query", s: { t: "integer", min: 1, d: 1 }, ds: "Nomor halaman, mulai 1." }, { nm: "per_page", in: "query", s: { t: "integer", min: 1, mx: 100, d: 25 }, ds: "Jumlah data per halaman (maksimal 100)." }, { nm: "ujian_id", in: "query", s: { t: "string", rf: { l: "/v1/cbt/ujian", k: "id", d: "/v1/cbt/ujian/{id}" } }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "jenis", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "tingkat", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "q", in: "query", s: { t: "string" }, ds: "Cari di pertanyaan" }, { nm: "dari", in: "query", s: { t: "string" }, ds: "Tanggal awal (YYYY-MM-DD)" }, { nm: "sampai", in: "query", s: { t: "string" }, ds: "Tanggal akhir (YYYY-MM-DD)" }, { nm: "urut", in: "query", s: { t: "string" }, ds: 'Nama kolom, awali "-" untuk menurun' }], r: "list", it: "CbtSoal" }, postCbtSoal: { id: "postCbtSoal", m: "POST", path: "/v1/cbt/soal", tag: "CBT: Soal", sum: "Soal: tambah", ds: "Pengelola modul.", sc: ["cbt:write"], oleh: "pengelola", b: { ct: "application/json", ref: "CbtSoalInput", s: { t: "object", pr: { ujian_id: { t: "integer", ds: "ID di cbt_ujian", rf: { l: "/v1/cbt/ujian", k: "id", d: "/v1/cbt/ujian/{id}" } }, jenis: { t: "string", e: ["pilihan_ganda", "pilihan_ganda_banyak", "benar_salah", "isian_singkat", "esai", "menjodohkan"], d: "pilihan_ganda" }, pertanyaan: { t: "string" }, opsi: { ds: "Nilai JSON apa pun" }, kunci: { ds: "Nilai JSON apa pun" }, poin: { t: "number", d: "1" }, tingkat: { t: "string", e: ["mudah", "sedang", "sulit"] }, urut: { t: "integer", min: 0, mx: 65535, d: "0" } }, rq: ["ujian_id", "pertanyaan"] }, rq: 1 }, r: "object", it: "CbtSoal" }, getCbtSoalById: { id: "getCbtSoalById", m: "GET", path: "/v1/cbt/soal/{id}", tag: "CBT: Soal", sum: "Soal: detail", ds: 'Format sama dengan bank soal LMS: `opsi` [{id, teks}] dan `kunci` "a" / ["a","c"] / true / ["jawaban"] / {"kiri-id": "kanan-id"} (menjodohkan: opsi {kiri: [...], kanan: [...]}). Esai tanpa kunci dan dikoreksi manual. Kunci hanya terlihat oleh pengelola. Soal terkunci setelah ada peserta yang mulai. Hanya pengelola modul.', sc: ["cbt:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/cbt/soal", k: "id", d: "/v1/cbt/soal/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "CbtSoal" }, putCbtSoalById: { id: "putCbtSoalById", m: "PUT", path: "/v1/cbt/soal/{id}", tag: "CBT: Soal", sum: "Soal: ubah", ds: "Pengelola modul. Kolom yang tidak dikirim tidak berubah.", sc: ["cbt:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/cbt/soal", k: "id", d: "/v1/cbt/soal/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "CbtSoalInput", s: { t: "object", pr: { ujian_id: { t: "integer", ds: "ID di cbt_ujian", rf: { l: "/v1/cbt/ujian", k: "id", d: "/v1/cbt/ujian/{id}" } }, jenis: { t: "string", e: ["pilihan_ganda", "pilihan_ganda_banyak", "benar_salah", "isian_singkat", "esai", "menjodohkan"], d: "pilihan_ganda" }, pertanyaan: { t: "string" }, opsi: { ds: "Nilai JSON apa pun" }, kunci: { ds: "Nilai JSON apa pun" }, poin: { t: "number", d: "1" }, tingkat: { t: "string", e: ["mudah", "sedang", "sulit"] }, urut: { t: "integer", min: 0, mx: 65535, d: "0" } }, rq: ["ujian_id", "pertanyaan"] }, rq: 1 }, r: "object", it: "CbtSoal" }, deleteCbtSoalById: { id: "deleteCbtSoalById", m: "DELETE", path: "/v1/cbt/soal/{id}", tag: "CBT: Soal", sum: "Soal: hapus", ds: "Pengelola modul.", sc: ["cbt:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/cbt/soal", k: "id", d: "/v1/cbt/soal/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "none" }, getCbtSesi: { id: "getCbtSesi", m: "GET", path: "/v1/cbt/sesi", tag: "CBT: Sesi dan pengawasan", sum: "Sesi: daftar", ds: "Sesi per ruang/waktu. Pengawas (username) melihat sesinya, membuka sesi (token dibuat otomatis, dibagikan ke peserta di ruang), mengganti token, menangani peserta, dan menutup sesi dengan berita acara. Pengelola melihat semua; pengguna lain hanya miliknya sendiri (pengawas).", sc: ["cbt:read"], pa: [{ nm: "page", in: "query", s: { t: "integer", min: 1, d: 1 }, ds: "Nomor halaman, mulai 1." }, { nm: "per_page", in: "query", s: { t: "integer", min: 1, mx: 100, d: 25 }, ds: "Jumlah data per halaman (maksimal 100)." }, { nm: "ujian_id", in: "query", s: { t: "string", rf: { l: "/v1/cbt/ujian", k: "id", d: "/v1/cbt/ujian/{id}" } }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "ruang_id", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "pengawas", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "status", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "q", in: "query", s: { t: "string" }, ds: "Cari di nama" }, { nm: "dari", in: "query", s: { t: "string" }, ds: "Tanggal awal (YYYY-MM-DD)" }, { nm: "sampai", in: "query", s: { t: "string" }, ds: "Tanggal akhir (YYYY-MM-DD)" }, { nm: "urut", in: "query", s: { t: "string" }, ds: 'Nama kolom, awali "-" untuk menurun' }], r: "list", it: "CbtSesi" }, postCbtSesi: { id: "postCbtSesi", m: "POST", path: "/v1/cbt/sesi", tag: "CBT: Sesi dan pengawasan", sum: "Sesi: tambah", ds: "Pengelola modul.", sc: ["cbt:write"], oleh: "pengelola", b: { ct: "application/json", ref: "CbtSesiInput", s: { t: "object", pr: { ujian_id: { t: "integer", ds: "ID di cbt_ujian", rf: { l: "/v1/cbt/ujian", k: "id", d: "/v1/cbt/ujian/{id}" } }, nama: { t: "string", max: 100 }, ruang_id: { t: "integer", ds: "ID di sarpras_ruang", rf: { l: "/v1/sarpras/ruang", k: "id", d: "/v1/sarpras/ruang/{id}" } }, mulai: { t: "string", f: "date-time" }, selesai: { t: "string", f: "date-time" }, pengawas: { t: "string", ds: "user.username", rf: { l: "pengguna", k: "username" } } }, rq: ["ujian_id", "nama", "mulai", "selesai"] }, rq: 1 }, r: "object", it: "CbtSesi" }, getCbtSesiById: { id: "getCbtSesiById", m: "GET", path: "/v1/cbt/sesi/{id}", tag: "CBT: Sesi dan pengawasan", sum: "Sesi: detail", ds: "Sesi per ruang/waktu. Pengawas (username) melihat sesinya, membuka sesi (token dibuat otomatis, dibagikan ke peserta di ruang), mengganti token, menangani peserta, dan menutup sesi dengan berita acara. Pengelola melihat semua; pengguna lain hanya miliknya sendiri (pengawas).", sc: ["cbt:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/cbt/sesi", k: "id", d: "/v1/cbt/sesi/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "CbtSesi" }, putCbtSesiById: { id: "putCbtSesiById", m: "PUT", path: "/v1/cbt/sesi/{id}", tag: "CBT: Sesi dan pengawasan", sum: "Sesi: ubah", ds: "Pengelola modul. Kolom yang tidak dikirim tidak berubah.", sc: ["cbt:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/cbt/sesi", k: "id", d: "/v1/cbt/sesi/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "CbtSesiInput", s: { t: "object", pr: { ujian_id: { t: "integer", ds: "ID di cbt_ujian", rf: { l: "/v1/cbt/ujian", k: "id", d: "/v1/cbt/ujian/{id}" } }, nama: { t: "string", max: 100 }, ruang_id: { t: "integer", ds: "ID di sarpras_ruang", rf: { l: "/v1/sarpras/ruang", k: "id", d: "/v1/sarpras/ruang/{id}" } }, mulai: { t: "string", f: "date-time" }, selesai: { t: "string", f: "date-time" }, pengawas: { t: "string", ds: "user.username", rf: { l: "pengguna", k: "username" } } }, rq: ["ujian_id", "nama", "mulai", "selesai"] }, rq: 1 }, r: "object", it: "CbtSesi" }, deleteCbtSesiById: { id: "deleteCbtSesiById", m: "DELETE", path: "/v1/cbt/sesi/{id}", tag: "CBT: Sesi dan pengawasan", sum: "Sesi: hapus", ds: "Pengelola modul.", sc: ["cbt:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/cbt/sesi", k: "id", d: "/v1/cbt/sesi/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "none" }, postCbtSesiByIdBuka: { id: "postCbtSesiByIdBuka", m: "POST", path: "/v1/cbt/sesi/{id}/buka", tag: "CBT: Sesi dan pengawasan", sum: "Sesi: Buka sesi", ds: "Membuat token 6 karakter. Peserta bisa mulai 15 menit sebelum jadwal sampai jadwal selesai. Pemilik data atau pengelola. Status harus terjadwal, menjadi dibuka.", sc: ["cbt:write"], tr: { dari: ["terjadwal"], ke: "dibuka" }, oleh: "pemilik_atau_pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/cbt/sesi", k: "id", d: "/v1/cbt/sesi/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "CbtSesi" }, postCbtSesiByIdGantiToken: { id: "postCbtSesiByIdGantiToken", m: "POST", path: "/v1/cbt/sesi/{id}/ganti-token", tag: "CBT: Sesi dan pengawasan", sum: "Sesi: Ganti token", ds: "Token lama tidak berlaku lagi; peserta yang sudah mulai tidak terpengaruh. Pemilik data atau pengelola. Status harus dibuka.", sc: ["cbt:write"], tr: { dari: ["dibuka"] }, oleh: "pemilik_atau_pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/cbt/sesi", k: "id", d: "/v1/cbt/sesi/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "CbtSesi" }, postCbtSesiByIdTutup: { id: "postCbtSesiByIdTutup", m: "POST", path: "/v1/cbt/sesi/{id}/tutup", tag: "CBT: Sesi dan pengawasan", sum: "Sesi: Tutup sesi", ds: "Mengakhiri peserta yang masih mengerjakan (jawaban dinilai), menandai yang belum mulai sebagai tidak hadir, dan menyimpan berita acara. Pemilik data atau pengelola. Status harus dibuka, menjadi ditutup.", sc: ["cbt:write"], tr: { dari: ["dibuka"], ke: "ditutup" }, oleh: "pemilik_atau_pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/cbt/sesi", k: "id", d: "/v1/cbt/sesi/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "CbtSesiTutupInput", s: { t: "object", pr: { berita_acara: { t: "string" } } }, rq: 1 }, r: "object", it: "CbtSesi" }, getCbtPeserta: { id: "getCbtPeserta", m: "GET", path: "/v1/cbt/peserta", tag: "CBT: Peserta", sum: "Peserta: daftar", ds: "Peserta per ujian (satu baris per username: NIM, nomor PMB, atau username lain). Isi massal dari KRS lewat /cbt/ujian/{id}/isi-peserta. Peserta melihat barisnya sendiri; nilai hanya terlihat bila ujian `tampil_hasil`. Pengawas sesi melihat dan menangani peserta di sesinya. Pengelola melihat semua; pengguna lain hanya miliknya sendiri (username).", sc: ["cbt:read"], pa: [{ nm: "page", in: "query", s: { t: "integer", min: 1, d: 1 }, ds: "Nomor halaman, mulai 1." }, { nm: "per_page", in: "query", s: { t: "integer", min: 1, mx: 100, d: 25 }, ds: "Jumlah data per halaman (maksimal 100)." }, { nm: "ujian_id", in: "query", s: { t: "string", rf: { l: "/v1/cbt/ujian", k: "id", d: "/v1/cbt/ujian/{id}" } }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "sesi_id", in: "query", s: { t: "string", rf: { l: "/v1/cbt/sesi", k: "id", d: "/v1/cbt/sesi/{id}" } }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "status", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "lulus", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "perlu_koreksi", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "username", in: "query", s: { t: "string", rf: { l: "pengguna", k: "username" } }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "q", in: "query", s: { t: "string" }, ds: "Cari di username, nama, nomor_peserta" }, { nm: "dari", in: "query", s: { t: "string" }, ds: "Tanggal awal (YYYY-MM-DD)" }, { nm: "sampai", in: "query", s: { t: "string" }, ds: "Tanggal akhir (YYYY-MM-DD)" }, { nm: "urut", in: "query", s: { t: "string" }, ds: 'Nama kolom, awali "-" untuk menurun' }], r: "list", it: "CbtPeserta" }, postCbtPeserta: { id: "postCbtPeserta", m: "POST", path: "/v1/cbt/peserta", tag: "CBT: Peserta", sum: "Peserta: tambah", ds: "Pengelola modul.", sc: ["cbt:write"], oleh: "pengelola", b: { ct: "application/json", ref: "CbtPesertaInput", s: { t: "object", pr: { ujian_id: { t: "integer", ds: "ID di cbt_ujian", rf: { l: "/v1/cbt/ujian", k: "id", d: "/v1/cbt/ujian/{id}" } }, sesi_id: { t: "integer", ds: "ID di cbt_sesi", rf: { l: "/v1/cbt/sesi", k: "id", d: "/v1/cbt/sesi/{id}" } }, username: { t: "string", max: 60, p: "^[A-Za-z0-9._\\-/]+$", rf: { l: "pengguna", k: "username" } }, nama: { t: "string", max: 150 }, nomor_peserta: { t: "string", max: 30, p: "^[A-Za-z0-9._\\-/]+$" }, catatan: { t: "string", max: 255 } }, rq: ["ujian_id", "sesi_id", "username"] }, rq: 1 }, r: "object", it: "CbtPeserta" }, getCbtPesertaById: { id: "getCbtPesertaById", m: "GET", path: "/v1/cbt/peserta/{id}", tag: "CBT: Peserta", sum: "Peserta: detail", ds: "Peserta per ujian (satu baris per username: NIM, nomor PMB, atau username lain). Isi massal dari KRS lewat /cbt/ujian/{id}/isi-peserta. Peserta melihat barisnya sendiri; nilai hanya terlihat bila ujian `tampil_hasil`. Pengawas sesi melihat dan menangani peserta di sesinya. Pengelola melihat semua; pengguna lain hanya miliknya sendiri (username).", sc: ["cbt:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/cbt/peserta", k: "id", d: "/v1/cbt/peserta/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "CbtPeserta" }, putCbtPesertaById: { id: "putCbtPesertaById", m: "PUT", path: "/v1/cbt/peserta/{id}", tag: "CBT: Peserta", sum: "Peserta: ubah", ds: "Pengelola modul. Kolom yang tidak dikirim tidak berubah.", sc: ["cbt:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/cbt/peserta", k: "id", d: "/v1/cbt/peserta/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "CbtPesertaInput", s: { t: "object", pr: { ujian_id: { t: "integer", ds: "ID di cbt_ujian", rf: { l: "/v1/cbt/ujian", k: "id", d: "/v1/cbt/ujian/{id}" } }, sesi_id: { t: "integer", ds: "ID di cbt_sesi", rf: { l: "/v1/cbt/sesi", k: "id", d: "/v1/cbt/sesi/{id}" } }, username: { t: "string", max: 60, p: "^[A-Za-z0-9._\\-/]+$", rf: { l: "pengguna", k: "username" } }, nama: { t: "string", max: 150 }, nomor_peserta: { t: "string", max: 30, p: "^[A-Za-z0-9._\\-/]+$" }, catatan: { t: "string", max: 255 } }, rq: ["ujian_id", "sesi_id", "username"] }, rq: 1 }, r: "object", it: "CbtPeserta" }, deleteCbtPesertaById: { id: "deleteCbtPesertaById", m: "DELETE", path: "/v1/cbt/peserta/{id}", tag: "CBT: Peserta", sum: "Peserta: hapus", ds: "Pengelola modul.", sc: ["cbt:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/cbt/peserta", k: "id", d: "/v1/cbt/peserta/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "none" }, postCbtPesertaByIdResetPerangkat: { id: "postCbtPesertaByIdResetPerangkat", m: "POST", path: "/v1/cbt/peserta/{id}/reset-perangkat", tag: "CBT: Peserta", sum: "Peserta: Reset perangkat", ds: "Melepas kunci perangkat agar peserta bisa melanjutkan dari perangkat lain (jawaban tetap tersimpan). Pengelola modul. Status harus terdaftar/mengerjakan.", sc: ["cbt:write"], tr: { dari: ["terdaftar", "mengerjakan"] }, oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/cbt/peserta", k: "id", d: "/v1/cbt/peserta/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "CbtPeserta" }, postCbtPesertaByIdTambahWaktu: { id: "postCbtPesertaByIdTambahWaktu", m: "POST", path: "/v1/cbt/peserta/{id}/tambah-waktu", tag: "CBT: Peserta", sum: "Peserta: Tambah waktu", ds: "Menambah waktu (menit) untuk peserta ini, mis. karena gangguan teknis. Batas waktu tetap tidak melewati akhir sesi kecuali `lewati_sesi` oleh pengelola. Pengelola modul. Status harus terdaftar/mengerjakan.", sc: ["cbt:write"], tr: { dari: ["terdaftar", "mengerjakan"] }, oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/cbt/peserta", k: "id", d: "/v1/cbt/peserta/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "CbtPesertaTambahWaktuInput", s: { t: "object", pr: { menit: { t: "integer", min: 1, mx: 240 }, alasan: { t: "string", max: 255 }, lewati_sesi: { t: "boolean" } }, rq: ["menit", "alasan"] }, rq: 1 }, r: "object", it: "CbtPeserta" }, postCbtPesertaByIdDiskualifikasi: { id: "postCbtPesertaByIdDiskualifikasi", m: "POST", path: "/v1/cbt/peserta/{id}/diskualifikasi", tag: "CBT: Peserta", sum: "Peserta: Diskualifikasi", ds: "Pengelola modul. Status harus terdaftar/mengerjakan, menjadi diskualifikasi.", sc: ["cbt:write"], tr: { dari: ["terdaftar", "mengerjakan"], ke: "diskualifikasi" }, oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/cbt/peserta", k: "id", d: "/v1/cbt/peserta/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "CbtPesertaDiskualifikasiInput", s: { t: "object", pr: { alasan: { t: "string", max: 255 } }, rq: ["alasan"] }, rq: 1 }, r: "object", it: "CbtPeserta" }, postCbtPesertaByIdBukaKembali: { id: "postCbtPesertaByIdBukaKembali", m: "POST", path: "/v1/cbt/peserta/{id}/buka-kembali", tag: "CBT: Peserta", sum: "Peserta: Izinkan mengulang", ds: "Pengelola mengizinkan peserta tidak hadir/diskualifikasi mengerjakan lagi (mis. ujian susulan di sesi lain). Jawaban lama dihapus. Pengelola modul. Status harus tidak_hadir/diskualifikasi, menjadi terdaftar.", sc: ["cbt:write"], tr: { dari: ["tidak_hadir", "diskualifikasi"], ke: "terdaftar" }, oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/cbt/peserta", k: "id", d: "/v1/cbt/peserta/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "CbtPesertaBukaKembaliInput", s: { t: "object", pr: { sesi_id: { t: "integer", ds: "ID di cbt_sesi", rf: { l: "/v1/cbt/sesi", k: "id", d: "/v1/cbt/sesi/{id}" } } } }, rq: 1 }, r: "object", it: "CbtPeserta" } };
6
+ var mandiri = ["postCbtUjianByIdNilaiSiakadByKirimBatal", "postCbtLatihanByIdMulai", "postCbtJawabanByIdKoreksi"];
7
+ var skema = { Objek: { t: "object", ds: "Baris data dengan nama kolom huruf kecil sesuai tabel SIAKAD." }, CbtUjian: { t: "object", ds: "Ujian (tabel cbt_ujian)", pr: { id: { t: "integer" }, kode: { t: "string", max: 40, p: "^[A-Za-z0-9._\\-/]+$", ds: "(unik)" }, nama: { t: "string", max: 200 }, jenis: { t: "string", e: ["uts", "uas", "kuis", "pmb", "komprehensif", "bahasa", "sertifikasi", "lainnya"], d: "uas" }, tahun_id: { t: "string", ds: "m_tahun.tahun_id" }, kode_prodi: { t: "string", ds: "m_program_studi.kode_prodi" }, kode_mk: { t: "string", max: 20 }, kelas: { t: "string", max: 10 }, durasi_menit: { t: "integer", min: 1, mx: 1440, d: "90" }, jumlah_soal: { t: "integer", min: 1, mx: 1e3 }, acak_soal: { t: "boolean", d: "1" }, acak_opsi: { t: "boolean", d: "1" }, nilai_lulus: { t: "number" }, tampil_hasil: { t: "boolean", d: "0" }, kunci_perangkat: { t: "boolean", d: "1" }, latihan: { t: "boolean", d: "0" }, petunjuk: { t: "string" }, status: { t: "string", e: ["draf", "siap", "selesai", "diarsip"], ds: "(hanya baca)", ro: 1 }, created_at: { t: "string", n: 1, f: "date-time" }, updated_at: { t: "string", n: 1, f: "date-time" } } }, CbtSoal: { t: "object", ds: "Soal (tabel cbt_soal)", pr: { id: { t: "integer" }, ujian_id: { t: "integer", ds: "ID di cbt_ujian" }, bank_soal_id: { t: "integer", min: 0, mx: 2147483647, ds: "(hanya baca)", ro: 1 }, jenis: { t: "string", e: ["pilihan_ganda", "pilihan_ganda_banyak", "benar_salah", "isian_singkat", "esai", "menjodohkan"], d: "pilihan_ganda" }, pertanyaan: { t: "string" }, opsi: { ds: "Nilai JSON apa pun" }, kunci: { ds: "Nilai JSON apa pun" }, poin: { t: "number", d: "1" }, tingkat: { t: "string", e: ["mudah", "sedang", "sulit"] }, urut: { t: "integer", min: 0, mx: 65535, d: "0" }, created_at: { t: "string", n: 1, f: "date-time" }, updated_at: { t: "string", n: 1, f: "date-time" } } }, CbtSesi: { t: "object", ds: "Sesi (tabel cbt_sesi)", pr: { id: { t: "integer" }, ujian_id: { t: "integer", ds: "ID di cbt_ujian" }, nama: { t: "string", max: 100 }, ruang_id: { t: "integer", ds: "ID di sarpras_ruang" }, mulai: { t: "string", f: "date-time" }, selesai: { t: "string", f: "date-time" }, pengawas: { t: "string", ds: "user.username" }, token: { t: "string", max: 10, p: "^[A-Za-z0-9._\\-/]+$", ds: "(hanya baca)", ro: 1 }, status: { t: "string", e: ["terjadwal", "dibuka", "ditutup"], ds: "(hanya baca)", ro: 1 }, berita_acara: { t: "string", ds: "(hanya baca)", ro: 1 }, created_at: { t: "string", n: 1, f: "date-time" }, updated_at: { t: "string", n: 1, f: "date-time" } } }, CbtPeserta: { t: "object", ds: "Peserta (tabel cbt_peserta)", pr: { id: { t: "integer" }, ujian_id: { t: "integer", ds: "ID di cbt_ujian" }, sesi_id: { t: "integer", ds: "ID di cbt_sesi" }, username: { t: "string", max: 60, p: "^[A-Za-z0-9._\\-/]+$" }, nama: { t: "string", max: 150 }, nomor_peserta: { t: "string", max: 30, p: "^[A-Za-z0-9._\\-/]+$" }, status: { t: "string", e: ["terdaftar", "mengerjakan", "selesai", "diskualifikasi", "tidak_hadir"], ds: "(hanya baca)", ro: 1 }, mulai_pada: { t: "string", f: "date-time", ds: "(hanya baca)", ro: 1 }, batas_waktu: { t: "string", f: "date-time", ds: "(hanya baca)", ro: 1 }, selesai_pada: { t: "string", f: "date-time", ds: "(hanya baca)", ro: 1 }, tambahan_menit: { t: "integer", min: 0, mx: 600, ds: "(hanya baca)", ro: 1 }, ip: { t: "string", max: 45, ds: "(hanya baca)", ro: 1 }, skor: { t: "number", ds: "(hanya baca)", ro: 1 }, skor_maks: { t: "number", ds: "(hanya baca)", ro: 1 }, nilai: { t: "number", ds: "(hanya baca)", ro: 1 }, lulus: { t: "boolean", ds: "(hanya baca)", ro: 1 }, perlu_koreksi: { t: "boolean", ds: "(hanya baca)", ro: 1 }, pelanggaran: { t: "integer", min: 0, mx: 2147483647, ds: "(hanya baca)", ro: 1 }, catatan: { t: "string", max: 255 }, created_at: { t: "string", n: 1, f: "date-time" }, updated_at: { t: "string", n: 1, f: "date-time" } } } };
8
+ var cbt_default = { key, resources, ops, mandiri, skema };
9
+
10
+ export { cbt_default as default, key, mandiri, ops, resources, skema };
11
+ //# sourceMappingURL=cbt-4N6COVIN.js.map