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/repositori.json
3
+ var key = "repositori";
4
+ var resources = [{ id: "/v1/repositori/karya", tag: "Repositori: Karya", title: "Karya ilmiah", base: "/v1/repositori/karya", item: "/v1/repositori/karya/{id}", key: "id", list: "getRepositoriKarya", create: "postRepositoriKarya", get: "getRepositoriKaryaById", update: "putRepositoriKaryaById", del: "deleteRepositoriKaryaById", actions: ["postRepositoriKaryaByIdAjukan", "postRepositoriKaryaByIdTerbitkan", "postRepositoriKaryaByIdMintaRevisi", "postRepositoriKaryaByIdTolak", "postRepositoriKaryaByIdTarik"], children: ["/v1/repositori/karya/{id}/berkas"] }, { id: "/v1/repositori/karya/{id}/berkas", tag: "Repositori: Karya", title: "Karya ilmiah", base: "/v1/repositori/karya/{id}/berkas", item: "/v1/repositori/karya/{id}/berkas/{uuid}", key: "uuid", list: "getRepositoriKaryaByIdBerkas", create: "postRepositoriKaryaByIdBerkas", get: "getRepositoriKaryaByIdBerkasByUuid", del: "deleteRepositoriKaryaByIdBerkasByUuid", actions: [], children: [], parent: "/v1/repositori/karya" }, { id: "/v1/repositori/koleksi", tag: "Repositori: Koleksi", title: "Koleksi", base: "/v1/repositori/koleksi", item: "/v1/repositori/koleksi/{id}", key: "id", list: "getRepositoriKoleksi", create: "postRepositoriKoleksi", get: "getRepositoriKoleksiById", update: "putRepositoriKoleksiById", del: "deleteRepositoriKoleksiById", actions: [], children: [] }];
5
+ var ops = { getRepositoriOai: { id: "getRepositoriOai", m: "GET", path: "/v1/repositori/oai", tag: "Repositori: OAI-PMH", sum: "OAI-PMH 2.0", ds: "Titik panen metadata (oai_dc) untuk Garuda, Google Scholar, BASE, OpenAIRE. Verb: Identify, ListMetadataFormats, ListSets (jenis:<jenis>, koleksi:<kode>), ListIdentifiers, ListRecords, GetRecord. 100 rekaman per halaman dengan resumptionToken. Hanya karya yang diterbitkan.", pub: 1, pa: [{ nm: "verb", in: "query", s: { t: "string" }, ds: "Verb OAI-PMH" }, { nm: "metadataPrefix", in: "query", s: { t: "string" }, ds: "oai_dc" }, { nm: "identifier", in: "query", s: { t: "string" }, ds: "oai:<host>:<uuid>" }, { nm: "from", in: "query", s: { t: "string" }, ds: "YYYY-MM-DD" }, { nm: "until", in: "query", s: { t: "string" }, ds: "YYYY-MM-DD" }, { nm: "set", in: "query", s: { t: "string" }, ds: "jenis:skripsi / koleksi:<kode>" }, { nm: "resumptionToken", in: "query", s: { t: "string" }, ds: "Token halaman berikutnya" }], r: "object" }, getRepositoriStatistik: { id: "getRepositoriStatistik", m: "GET", path: "/v1/repositori/statistik", tag: "Repositori: Karya", sum: "Statistik repositori", ds: "Jumlah karya terbit per jenis, tahun, dan prodi (publik).", pub: 1, r: "object", it: "Objek" }, postRepositoriImporTa: { id: "postRepositoriImporTa", m: "POST", path: "/v1/repositori/impor-ta", tag: "Repositori: Karya", sum: "Impor dari tugas akhir lama", ds: "Membuat draf karya dari t_mahasiswa_ta yang lulus dan belum ada di repositori (judul, abstraksi, pembimbing, tanggal ujian). Tabel lama hanya dibaca. Body opsional: kode_prodi, tahun_id, batas (bawaan 500). Mahasiswa lalu mengunggah teks lengkap dan mengajukan. Hanya pengelola.", sc: ["repositori:write"], r: "object", it: "Objek" }, getRepositoriKoleksi: { id: "getRepositoriKoleksi", m: "GET", path: "/v1/repositori/koleksi", tag: "Repositori: Koleksi", sum: "Koleksi: daftar", ds: "Semua pemilik token ber-scope repositori:read.", pub: 1, 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: "unit_id", in: "query", s: { t: "string" }, 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: "aktif", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "q", in: "query", s: { t: "string" }, ds: "Cari di kode, 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: "RepositoriKoleksi" }, postRepositoriKoleksi: { id: "postRepositoriKoleksi", m: "POST", path: "/v1/repositori/koleksi", tag: "Repositori: Koleksi", sum: "Koleksi: tambah", ds: "Hanya admin modul.", sc: ["repositori:write"], b: { ct: "application/json", ref: "RepositoriKoleksiInput", s: { t: "object", pr: { kode: { t: "string", max: 40, p: "^[A-Za-z0-9._\\-/]+$", ds: "(unik)" }, nama: { t: "string", max: 200 }, deskripsi: { t: "string" }, unit_id: { t: "integer", ds: "ID di induk_unit", rf: { l: "/v1/induk/unit", k: "id", d: "/v1/induk/unit/{id}" } }, kode_prodi: { t: "string", ds: "m_program_studi.kode_prodi", rf: { l: "/v1/referensi/prodi", k: "kode_prodi", q: 0 } }, aktif: { t: "boolean", d: "1" } }, rq: ["kode", "nama"] }, rq: 1 }, r: "object", it: "RepositoriKoleksi" }, getRepositoriKoleksiById: { id: "getRepositoriKoleksiById", m: "GET", path: "/v1/repositori/koleksi/{id}", tag: "Repositori: Koleksi", sum: "Koleksi: detail", ds: "Semua pemilik token ber-scope repositori:read.", pub: 1, pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/repositori/koleksi", k: "id", d: "/v1/repositori/koleksi/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "RepositoriKoleksi" }, putRepositoriKoleksiById: { id: "putRepositoriKoleksiById", m: "PUT", path: "/v1/repositori/koleksi/{id}", tag: "Repositori: Koleksi", sum: "Koleksi: ubah", ds: "Hanya admin modul. Kolom yang tidak dikirim tidak berubah.", sc: ["repositori:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/repositori/koleksi", k: "id", d: "/v1/repositori/koleksi/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "RepositoriKoleksiInput", s: { t: "object", pr: { kode: { t: "string", max: 40, p: "^[A-Za-z0-9._\\-/]+$", ds: "(unik)" }, nama: { t: "string", max: 200 }, deskripsi: { t: "string" }, unit_id: { t: "integer", ds: "ID di induk_unit", rf: { l: "/v1/induk/unit", k: "id", d: "/v1/induk/unit/{id}" } }, kode_prodi: { t: "string", ds: "m_program_studi.kode_prodi", rf: { l: "/v1/referensi/prodi", k: "kode_prodi", q: 0 } }, aktif: { t: "boolean", d: "1" } }, rq: ["kode", "nama"] }, rq: 1 }, r: "object", it: "RepositoriKoleksi" }, deleteRepositoriKoleksiById: { id: "deleteRepositoriKoleksiById", m: "DELETE", path: "/v1/repositori/koleksi/{id}", tag: "Repositori: Koleksi", sum: "Koleksi: hapus", ds: "Hanya admin modul.", sc: ["repositori:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/repositori/koleksi", k: "id", d: "/v1/repositori/koleksi/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "none" }, getRepositoriKarya: { id: "getRepositoriKarya", m: "GET", path: "/v1/repositori/karya", tag: "Repositori: Karya", sum: "Karya ilmiah: daftar", ds: "Metadata karya yang diterbitkan terbuka untuk umum (juga tanpa token). Teks lengkap dilampirkan lewat /berkas dan bisa diunduh sesuai `akses` (publik, login, tertutup) dan `embargo_sampai`. Mahasiswa/dosen menyetor karyanya sendiri (penulis_username otomatis), lalu `ajukan`; pustakawan memeriksa (cek plagiasi) dan `terbitkan`, `minta-revisi`, atau `tolak`. Semua pemilik token ber-scope repositori:read (selain pengelola hanya melihat status diterbitkan atau miliknya sendiri).", pub: 1, 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: "koleksi_id", in: "query", s: { t: "string", rf: { l: "/v1/repositori/koleksi", k: "id", d: "/v1/repositori/koleksi/{id}" } }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "jenis", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "penulis_username", in: "query", s: { t: "string", rf: { l: "pengguna", k: "username" } }, 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: "akses", 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: "diperiksa_oleh", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "tahun", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "q", in: "query", s: { t: "string" }, ds: "Cari di judul, kata_kunci, penulis_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: "RepositoriKarya" }, postRepositoriKarya: { id: "postRepositoriKarya", m: "POST", path: "/v1/repositori/karya", tag: "Repositori: Karya", sum: "Karya ilmiah: tambah", ds: "Pengelola, atau pengguna untuk datanya sendiri (penulis_username diisi otomatis); pemilik hanya bisa mengubah/menghapus bila status draf/revisi.", sc: ["repositori:write"], b: { ct: "application/json", ref: "RepositoriKaryaInput", s: { t: "object", pr: { koleksi_id: { t: "integer", ds: "ID di repo_koleksi", rf: { l: "/v1/repositori/koleksi", k: "id", d: "/v1/repositori/koleksi/{id}" } }, jenis: { t: "string", e: ["skripsi", "tesis", "disertasi", "tugas_akhir", "laporan_kp", "laporan_pkl", "artikel", "prosiding", "buku", "laporan_penelitian", "laporan_pkm", "modul_ajar", "lainnya"] }, judul: { t: "string", max: 500 }, judul_en: { t: "string", max: 500 }, abstrak: { t: "string" }, abstrak_en: { t: "string" }, kata_kunci: { t: "string", max: 500 }, penulis_username: { t: "string", ds: "user.username", rf: { l: "pengguna", k: "username" } }, penulis_nama: { t: "string", max: 200 }, penulis_lain: { t: "object" }, pembimbing: { t: "object" }, kode_prodi: { t: "string", ds: "m_program_studi.kode_prodi", rf: { l: "/v1/referensi/prodi", k: "kode_prodi", q: 0 } }, tahun: { t: "integer", min: 1950, mx: 2100 }, tanggal: { t: "string", f: "date" }, bahasa: { t: "string", max: 10, p: "^[A-Za-z0-9._\\-/]+$", d: "id" }, halaman: { t: "integer", min: 0, mx: 1e5 }, penerbit: { t: "string", max: 200 }, doi: { t: "string", max: 150 }, isbn_issn: { t: "string", max: 30, p: "^[A-Za-z0-9._\\-/]+$" }, url: { t: "string", f: "uri" }, lisensi: { t: "string", max: 50 }, akses: { t: "string", e: ["publik", "login", "tertutup"], d: "publik" }, embargo_sampai: { t: "string", f: "date" }, skor_plagiasi: { t: "number", ds: "(hanya pengelola)" }, alat_plagiasi: { t: "string", max: 50, ds: "(hanya pengelola)" }, ta_id: { t: "integer", min: 0, mx: 2147483647, ds: "(hanya pengelola)" }, lppm_luaran_id: { t: "integer", min: 0, mx: 9223372036854776e3, ds: "(hanya pengelola)", rf: { l: "/v1/lppm/luaran", k: "id", d: "/v1/lppm/luaran/{id}" } } }, rq: ["jenis", "judul", "penulis_username", "tahun"] }, rq: 1 }, r: "object", it: "RepositoriKarya" }, getRepositoriKaryaById: { id: "getRepositoriKaryaById", m: "GET", path: "/v1/repositori/karya/{id}", tag: "Repositori: Karya", sum: "Karya ilmiah: detail", ds: "Metadata karya yang diterbitkan terbuka untuk umum (juga tanpa token). Teks lengkap dilampirkan lewat /berkas dan bisa diunduh sesuai `akses` (publik, login, tertutup) dan `embargo_sampai`. Mahasiswa/dosen menyetor karyanya sendiri (penulis_username otomatis), lalu `ajukan`; pustakawan memeriksa (cek plagiasi) dan `terbitkan`, `minta-revisi`, atau `tolak`. Semua pemilik token ber-scope repositori:read (selain pengelola hanya melihat status diterbitkan atau miliknya sendiri).", pub: 1, pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/repositori/karya", k: "id", d: "/v1/repositori/karya/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "RepositoriKarya" }, putRepositoriKaryaById: { id: "putRepositoriKaryaById", m: "PUT", path: "/v1/repositori/karya/{id}", tag: "Repositori: Karya", sum: "Karya ilmiah: ubah", ds: "Pengelola, atau pengguna untuk datanya sendiri (penulis_username diisi otomatis); pemilik hanya bisa mengubah/menghapus bila status draf/revisi. Kolom yang tidak dikirim tidak berubah.", sc: ["repositori:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/repositori/karya", k: "id", d: "/v1/repositori/karya/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "RepositoriKaryaInput", s: { t: "object", pr: { koleksi_id: { t: "integer", ds: "ID di repo_koleksi", rf: { l: "/v1/repositori/koleksi", k: "id", d: "/v1/repositori/koleksi/{id}" } }, jenis: { t: "string", e: ["skripsi", "tesis", "disertasi", "tugas_akhir", "laporan_kp", "laporan_pkl", "artikel", "prosiding", "buku", "laporan_penelitian", "laporan_pkm", "modul_ajar", "lainnya"] }, judul: { t: "string", max: 500 }, judul_en: { t: "string", max: 500 }, abstrak: { t: "string" }, abstrak_en: { t: "string" }, kata_kunci: { t: "string", max: 500 }, penulis_username: { t: "string", ds: "user.username", rf: { l: "pengguna", k: "username" } }, penulis_nama: { t: "string", max: 200 }, penulis_lain: { t: "object" }, pembimbing: { t: "object" }, kode_prodi: { t: "string", ds: "m_program_studi.kode_prodi", rf: { l: "/v1/referensi/prodi", k: "kode_prodi", q: 0 } }, tahun: { t: "integer", min: 1950, mx: 2100 }, tanggal: { t: "string", f: "date" }, bahasa: { t: "string", max: 10, p: "^[A-Za-z0-9._\\-/]+$", d: "id" }, halaman: { t: "integer", min: 0, mx: 1e5 }, penerbit: { t: "string", max: 200 }, doi: { t: "string", max: 150 }, isbn_issn: { t: "string", max: 30, p: "^[A-Za-z0-9._\\-/]+$" }, url: { t: "string", f: "uri" }, lisensi: { t: "string", max: 50 }, akses: { t: "string", e: ["publik", "login", "tertutup"], d: "publik" }, embargo_sampai: { t: "string", f: "date" }, skor_plagiasi: { t: "number", ds: "(hanya pengelola)" }, alat_plagiasi: { t: "string", max: 50, ds: "(hanya pengelola)" }, ta_id: { t: "integer", min: 0, mx: 2147483647, ds: "(hanya pengelola)" }, lppm_luaran_id: { t: "integer", min: 0, mx: 9223372036854776e3, ds: "(hanya pengelola)", rf: { l: "/v1/lppm/luaran", k: "id", d: "/v1/lppm/luaran/{id}" } } }, rq: ["jenis", "judul", "penulis_username", "tahun"] }, rq: 1 }, r: "object", it: "RepositoriKarya" }, deleteRepositoriKaryaById: { id: "deleteRepositoriKaryaById", m: "DELETE", path: "/v1/repositori/karya/{id}", tag: "Repositori: Karya", sum: "Karya ilmiah: hapus", ds: "Pengelola, atau pengguna untuk datanya sendiri (penulis_username diisi otomatis); pemilik hanya bisa mengubah/menghapus bila status draf/revisi.", sc: ["repositori:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/repositori/karya", k: "id", d: "/v1/repositori/karya/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "none" }, getRepositoriKaryaByIdBerkas: { id: "getRepositoriKaryaByIdBerkas", m: "GET", path: "/v1/repositori/karya/{id}/berkas", tag: "Repositori: Karya", sum: "Karya ilmiah: daftar lampiran", ds: "Siapa pun yang boleh melihat barisnya.", pub: 1, pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/repositori/karya", k: "id", d: "/v1/repositori/karya/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "list", it: "PusatBerkas" }, postRepositoriKaryaByIdBerkas: { id: "postRepositoriKaryaByIdBerkas", m: "POST", path: "/v1/repositori/karya/{id}/berkas", tag: "Repositori: Karya", sum: "Karya ilmiah: unggah lampiran", ds: 'Multipart field "berkas" (atau JSON berkas_base64 + nama_file), opsional jenis dan keterangan. PDF, gambar, dokumen Office/ODF, CSV, TXT, ZIP; maksimal PUSAT_DATA_MAKS_MB (bawaan 20 MB). Pengelola, atau pengguna untuk datanya sendiri (penulis_username diisi otomatis); pemilik hanya bisa mengubah/menghapus bila status draf/revisi.', sc: ["repositori:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/repositori/karya", k: "id", d: "/v1/repositori/karya/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "multipart/form-data", ref: "PusatBerkasInput", s: { t: "object", pr: { berkas: { t: "string", f: "binary" }, jenis: { t: "string", ds: "Mis. lampiran, bukti, laporan" }, keterangan: { t: "string" }, berkas_base64: { t: "string", ds: "Alternatif JSON" }, nama_file: { t: "string" } } }, rq: 1 }, r: "object", it: "PusatBerkas" }, getRepositoriKaryaByIdBerkasByUuid: { id: "getRepositoriKaryaByIdBerkasByUuid", m: "GET", path: "/v1/repositori/karya/{id}/berkas/{uuid}", tag: "Repositori: Karya", sum: "Karya ilmiah: unduh lampiran", pub: 1, pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/repositori/karya", k: "id", d: "/v1/repositori/karya/{id}" } }, rq: 1, ds: "ID angka atau UUID" }, { nm: "uuid", in: "path", s: { t: "string" }, rq: 1, ds: "UUID berkas" }], r: "object" }, deleteRepositoriKaryaByIdBerkasByUuid: { id: "deleteRepositoriKaryaByIdBerkasByUuid", m: "DELETE", path: "/v1/repositori/karya/{id}/berkas/{uuid}", tag: "Repositori: Karya", sum: "Karya ilmiah: hapus lampiran", ds: "Pengelola, atau pengguna untuk datanya sendiri (penulis_username diisi otomatis); pemilik hanya bisa mengubah/menghapus bila status draf/revisi.", sc: ["repositori:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/repositori/karya", k: "id", d: "/v1/repositori/karya/{id}" } }, rq: 1, ds: "ID angka atau UUID" }, { nm: "uuid", in: "path", s: { t: "string" }, rq: 1, ds: "UUID berkas" }], r: "none" }, postRepositoriKaryaByIdAjukan: { id: "postRepositoriKaryaByIdAjukan", m: "POST", path: "/v1/repositori/karya/{id}/ajukan", tag: "Repositori: Karya", sum: "Karya ilmiah: Ajukan untuk diperiksa", ds: "Pemilik data atau pengelola. Status harus draf/revisi, menjadi diajukan.", sc: ["repositori:write"], tr: { dari: ["draf", "revisi"], ke: "diajukan" }, oleh: "pemilik_atau_pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/repositori/karya", k: "id", d: "/v1/repositori/karya/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "RepositoriKarya" }, postRepositoriKaryaByIdTerbitkan: { id: "postRepositoriKaryaByIdTerbitkan", m: "POST", path: "/v1/repositori/karya/{id}/terbitkan", tag: "Repositori: Karya", sum: "Karya ilmiah: Terbitkan", ds: "Pengelola modul. Status harus diajukan/ditarik, menjadi diterbitkan.", sc: ["repositori:write"], tr: { dari: ["diajukan", "ditarik"], ke: "diterbitkan" }, oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/repositori/karya", k: "id", d: "/v1/repositori/karya/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "RepositoriKaryaTerbitkanInput", s: { t: "object", pr: { skor_plagiasi: { t: "number" }, alat_plagiasi: { t: "string", max: 50 }, catatan: { t: "string" } } }, rq: 1 }, r: "object", it: "RepositoriKarya" }, postRepositoriKaryaByIdMintaRevisi: { id: "postRepositoriKaryaByIdMintaRevisi", m: "POST", path: "/v1/repositori/karya/{id}/minta-revisi", tag: "Repositori: Karya", sum: "Karya ilmiah: Minta revisi", ds: "Pengelola modul. Status harus diajukan, menjadi revisi.", sc: ["repositori:write"], tr: { dari: ["diajukan"], ke: "revisi" }, oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/repositori/karya", k: "id", d: "/v1/repositori/karya/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "RepositoriKaryaMintaRevisiInput", s: { t: "object", pr: { catatan: { t: "string" }, skor_plagiasi: { t: "number" }, alat_plagiasi: { t: "string", max: 50 } }, rq: ["catatan"] }, rq: 1 }, r: "object", it: "RepositoriKarya" }, postRepositoriKaryaByIdTolak: { id: "postRepositoriKaryaByIdTolak", m: "POST", path: "/v1/repositori/karya/{id}/tolak", tag: "Repositori: Karya", sum: "Karya ilmiah: Tolak", ds: "Pengelola modul. Status harus diajukan, menjadi ditolak.", sc: ["repositori:write"], tr: { dari: ["diajukan"], ke: "ditolak" }, oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/repositori/karya", k: "id", d: "/v1/repositori/karya/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "RepositoriKaryaTolakInput", s: { t: "object", pr: { alasan: { t: "string" } }, rq: ["alasan"] }, rq: 1 }, r: "object", it: "RepositoriKarya" }, postRepositoriKaryaByIdTarik: { id: "postRepositoriKaryaByIdTarik", m: "POST", path: "/v1/repositori/karya/{id}/tarik", tag: "Repositori: Karya", sum: "Karya ilmiah: Tarik dari publikasi", ds: "Admin modul. Status harus diterbitkan, menjadi ditarik.", sc: ["repositori:write"], tr: { dari: ["diterbitkan"], ke: "ditarik" }, oleh: "admin", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/repositori/karya", k: "id", d: "/v1/repositori/karya/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "RepositoriKaryaTarikInput", s: { t: "object", pr: { alasan: { t: "string" } }, rq: ["alasan"] }, rq: 1 }, r: "object", it: "RepositoriKarya" } };
6
+ var mandiri = ["getRepositoriOai", "getRepositoriStatistik", "postRepositoriImporTa"];
7
+ var skema = { Objek: { t: "object", ds: "Baris data dengan nama kolom huruf kecil sesuai tabel SIAKAD." }, RepositoriKoleksi: { t: "object", ds: "Koleksi (tabel repo_koleksi)", pr: { id: { t: "integer" }, kode: { t: "string", max: 40, p: "^[A-Za-z0-9._\\-/]+$", ds: "(unik)" }, nama: { t: "string", max: 200 }, deskripsi: { t: "string" }, unit_id: { t: "integer", ds: "ID di induk_unit" }, kode_prodi: { t: "string", ds: "m_program_studi.kode_prodi" }, aktif: { t: "boolean", d: "1" }, created_at: { t: "string", n: 1, f: "date-time" }, updated_at: { t: "string", n: 1, f: "date-time" } } }, RepositoriKarya: { t: "object", ds: "Karya ilmiah (tabel repo_karya)", pr: { id: { t: "integer" }, koleksi_id: { t: "integer", ds: "ID di repo_koleksi" }, jenis: { t: "string", e: ["skripsi", "tesis", "disertasi", "tugas_akhir", "laporan_kp", "laporan_pkl", "artikel", "prosiding", "buku", "laporan_penelitian", "laporan_pkm", "modul_ajar", "lainnya"] }, judul: { t: "string", max: 500 }, judul_en: { t: "string", max: 500 }, abstrak: { t: "string" }, abstrak_en: { t: "string" }, kata_kunci: { t: "string", max: 500 }, penulis_username: { t: "string", ds: "user.username" }, penulis_nama: { t: "string", max: 200 }, penulis_lain: { t: "object" }, pembimbing: { t: "object" }, kode_prodi: { t: "string", ds: "m_program_studi.kode_prodi" }, tahun: { t: "integer", min: 1950, mx: 2100 }, tanggal: { t: "string", f: "date" }, bahasa: { t: "string", max: 10, p: "^[A-Za-z0-9._\\-/]+$", d: "id" }, halaman: { t: "integer", min: 0, mx: 1e5 }, penerbit: { t: "string", max: 200 }, doi: { t: "string", max: 150 }, isbn_issn: { t: "string", max: 30, p: "^[A-Za-z0-9._\\-/]+$" }, url: { t: "string", f: "uri" }, lisensi: { t: "string", max: 50 }, akses: { t: "string", e: ["publik", "login", "tertutup"], d: "publik" }, embargo_sampai: { t: "string", f: "date" }, skor_plagiasi: { t: "number", ds: "(hanya pengelola)" }, alat_plagiasi: { t: "string", max: 50, ds: "(hanya pengelola)" }, ta_id: { t: "integer", min: 0, mx: 2147483647, ds: "(hanya pengelola)" }, lppm_luaran_id: { t: "integer", min: 0, mx: 9223372036854776e3, ds: "(hanya pengelola)" }, status: { t: "string", e: ["draf", "diajukan", "revisi", "diterbitkan", "ditolak", "ditarik"], ds: "(hanya baca)", ro: 1 }, catatan: { t: "string", ds: "(hanya baca)", ro: 1 }, diterbitkan_pada: { t: "string", f: "date-time", ds: "(hanya baca)", ro: 1 }, diperiksa_oleh: { t: "string", ds: "user.username (hanya baca)", ro: 1 }, created_at: { t: "string", n: 1, f: "date-time" }, updated_at: { t: "string", n: 1, f: "date-time" } } }, PusatBerkas: { t: "object", pr: { uuid: { t: "string" }, jenis: { t: "string" }, nama: { t: "string" }, mime: { t: "string" }, ukuran: { t: "integer" }, sha256: { t: "string" }, keterangan: { t: "string", n: 1 }, diunggah_oleh: { t: "string" }, created_at: { t: "string", f: "date-time" } } } };
8
+ var repositori_default = { key, resources, ops, mandiri, skema };
9
+
10
+ export { repositori_default as default, key, mandiri, ops, resources, skema };
11
+ //# sourceMappingURL=repositori-2MJ43NXM.js.map
@@ -0,0 +1,20 @@
1
+ 'use client';
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ // src/katalog/data/modul/repositori.json
7
+ var key = "repositori";
8
+ var resources = [{ id: "/v1/repositori/karya", tag: "Repositori: Karya", title: "Karya ilmiah", base: "/v1/repositori/karya", item: "/v1/repositori/karya/{id}", key: "id", list: "getRepositoriKarya", create: "postRepositoriKarya", get: "getRepositoriKaryaById", update: "putRepositoriKaryaById", del: "deleteRepositoriKaryaById", actions: ["postRepositoriKaryaByIdAjukan", "postRepositoriKaryaByIdTerbitkan", "postRepositoriKaryaByIdMintaRevisi", "postRepositoriKaryaByIdTolak", "postRepositoriKaryaByIdTarik"], children: ["/v1/repositori/karya/{id}/berkas"] }, { id: "/v1/repositori/karya/{id}/berkas", tag: "Repositori: Karya", title: "Karya ilmiah", base: "/v1/repositori/karya/{id}/berkas", item: "/v1/repositori/karya/{id}/berkas/{uuid}", key: "uuid", list: "getRepositoriKaryaByIdBerkas", create: "postRepositoriKaryaByIdBerkas", get: "getRepositoriKaryaByIdBerkasByUuid", del: "deleteRepositoriKaryaByIdBerkasByUuid", actions: [], children: [], parent: "/v1/repositori/karya" }, { id: "/v1/repositori/koleksi", tag: "Repositori: Koleksi", title: "Koleksi", base: "/v1/repositori/koleksi", item: "/v1/repositori/koleksi/{id}", key: "id", list: "getRepositoriKoleksi", create: "postRepositoriKoleksi", get: "getRepositoriKoleksiById", update: "putRepositoriKoleksiById", del: "deleteRepositoriKoleksiById", actions: [], children: [] }];
9
+ var ops = { getRepositoriOai: { id: "getRepositoriOai", m: "GET", path: "/v1/repositori/oai", tag: "Repositori: OAI-PMH", sum: "OAI-PMH 2.0", ds: "Titik panen metadata (oai_dc) untuk Garuda, Google Scholar, BASE, OpenAIRE. Verb: Identify, ListMetadataFormats, ListSets (jenis:<jenis>, koleksi:<kode>), ListIdentifiers, ListRecords, GetRecord. 100 rekaman per halaman dengan resumptionToken. Hanya karya yang diterbitkan.", pub: 1, pa: [{ nm: "verb", in: "query", s: { t: "string" }, ds: "Verb OAI-PMH" }, { nm: "metadataPrefix", in: "query", s: { t: "string" }, ds: "oai_dc" }, { nm: "identifier", in: "query", s: { t: "string" }, ds: "oai:<host>:<uuid>" }, { nm: "from", in: "query", s: { t: "string" }, ds: "YYYY-MM-DD" }, { nm: "until", in: "query", s: { t: "string" }, ds: "YYYY-MM-DD" }, { nm: "set", in: "query", s: { t: "string" }, ds: "jenis:skripsi / koleksi:<kode>" }, { nm: "resumptionToken", in: "query", s: { t: "string" }, ds: "Token halaman berikutnya" }], r: "object" }, getRepositoriStatistik: { id: "getRepositoriStatistik", m: "GET", path: "/v1/repositori/statistik", tag: "Repositori: Karya", sum: "Statistik repositori", ds: "Jumlah karya terbit per jenis, tahun, dan prodi (publik).", pub: 1, r: "object", it: "Objek" }, postRepositoriImporTa: { id: "postRepositoriImporTa", m: "POST", path: "/v1/repositori/impor-ta", tag: "Repositori: Karya", sum: "Impor dari tugas akhir lama", ds: "Membuat draf karya dari t_mahasiswa_ta yang lulus dan belum ada di repositori (judul, abstraksi, pembimbing, tanggal ujian). Tabel lama hanya dibaca. Body opsional: kode_prodi, tahun_id, batas (bawaan 500). Mahasiswa lalu mengunggah teks lengkap dan mengajukan. Hanya pengelola.", sc: ["repositori:write"], r: "object", it: "Objek" }, getRepositoriKoleksi: { id: "getRepositoriKoleksi", m: "GET", path: "/v1/repositori/koleksi", tag: "Repositori: Koleksi", sum: "Koleksi: daftar", ds: "Semua pemilik token ber-scope repositori:read.", pub: 1, 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: "unit_id", in: "query", s: { t: "string" }, 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: "aktif", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "q", in: "query", s: { t: "string" }, ds: "Cari di kode, 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: "RepositoriKoleksi" }, postRepositoriKoleksi: { id: "postRepositoriKoleksi", m: "POST", path: "/v1/repositori/koleksi", tag: "Repositori: Koleksi", sum: "Koleksi: tambah", ds: "Hanya admin modul.", sc: ["repositori:write"], b: { ct: "application/json", ref: "RepositoriKoleksiInput", s: { t: "object", pr: { kode: { t: "string", max: 40, p: "^[A-Za-z0-9._\\-/]+$", ds: "(unik)" }, nama: { t: "string", max: 200 }, deskripsi: { t: "string" }, unit_id: { t: "integer", ds: "ID di induk_unit", rf: { l: "/v1/induk/unit", k: "id", d: "/v1/induk/unit/{id}" } }, kode_prodi: { t: "string", ds: "m_program_studi.kode_prodi", rf: { l: "/v1/referensi/prodi", k: "kode_prodi", q: 0 } }, aktif: { t: "boolean", d: "1" } }, rq: ["kode", "nama"] }, rq: 1 }, r: "object", it: "RepositoriKoleksi" }, getRepositoriKoleksiById: { id: "getRepositoriKoleksiById", m: "GET", path: "/v1/repositori/koleksi/{id}", tag: "Repositori: Koleksi", sum: "Koleksi: detail", ds: "Semua pemilik token ber-scope repositori:read.", pub: 1, pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/repositori/koleksi", k: "id", d: "/v1/repositori/koleksi/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "RepositoriKoleksi" }, putRepositoriKoleksiById: { id: "putRepositoriKoleksiById", m: "PUT", path: "/v1/repositori/koleksi/{id}", tag: "Repositori: Koleksi", sum: "Koleksi: ubah", ds: "Hanya admin modul. Kolom yang tidak dikirim tidak berubah.", sc: ["repositori:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/repositori/koleksi", k: "id", d: "/v1/repositori/koleksi/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "RepositoriKoleksiInput", s: { t: "object", pr: { kode: { t: "string", max: 40, p: "^[A-Za-z0-9._\\-/]+$", ds: "(unik)" }, nama: { t: "string", max: 200 }, deskripsi: { t: "string" }, unit_id: { t: "integer", ds: "ID di induk_unit", rf: { l: "/v1/induk/unit", k: "id", d: "/v1/induk/unit/{id}" } }, kode_prodi: { t: "string", ds: "m_program_studi.kode_prodi", rf: { l: "/v1/referensi/prodi", k: "kode_prodi", q: 0 } }, aktif: { t: "boolean", d: "1" } }, rq: ["kode", "nama"] }, rq: 1 }, r: "object", it: "RepositoriKoleksi" }, deleteRepositoriKoleksiById: { id: "deleteRepositoriKoleksiById", m: "DELETE", path: "/v1/repositori/koleksi/{id}", tag: "Repositori: Koleksi", sum: "Koleksi: hapus", ds: "Hanya admin modul.", sc: ["repositori:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/repositori/koleksi", k: "id", d: "/v1/repositori/koleksi/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "none" }, getRepositoriKarya: { id: "getRepositoriKarya", m: "GET", path: "/v1/repositori/karya", tag: "Repositori: Karya", sum: "Karya ilmiah: daftar", ds: "Metadata karya yang diterbitkan terbuka untuk umum (juga tanpa token). Teks lengkap dilampirkan lewat /berkas dan bisa diunduh sesuai `akses` (publik, login, tertutup) dan `embargo_sampai`. Mahasiswa/dosen menyetor karyanya sendiri (penulis_username otomatis), lalu `ajukan`; pustakawan memeriksa (cek plagiasi) dan `terbitkan`, `minta-revisi`, atau `tolak`. Semua pemilik token ber-scope repositori:read (selain pengelola hanya melihat status diterbitkan atau miliknya sendiri).", pub: 1, 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: "koleksi_id", in: "query", s: { t: "string", rf: { l: "/v1/repositori/koleksi", k: "id", d: "/v1/repositori/koleksi/{id}" } }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "jenis", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "penulis_username", in: "query", s: { t: "string", rf: { l: "pengguna", k: "username" } }, 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: "akses", 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: "diperiksa_oleh", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "tahun", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "q", in: "query", s: { t: "string" }, ds: "Cari di judul, kata_kunci, penulis_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: "RepositoriKarya" }, postRepositoriKarya: { id: "postRepositoriKarya", m: "POST", path: "/v1/repositori/karya", tag: "Repositori: Karya", sum: "Karya ilmiah: tambah", ds: "Pengelola, atau pengguna untuk datanya sendiri (penulis_username diisi otomatis); pemilik hanya bisa mengubah/menghapus bila status draf/revisi.", sc: ["repositori:write"], b: { ct: "application/json", ref: "RepositoriKaryaInput", s: { t: "object", pr: { koleksi_id: { t: "integer", ds: "ID di repo_koleksi", rf: { l: "/v1/repositori/koleksi", k: "id", d: "/v1/repositori/koleksi/{id}" } }, jenis: { t: "string", e: ["skripsi", "tesis", "disertasi", "tugas_akhir", "laporan_kp", "laporan_pkl", "artikel", "prosiding", "buku", "laporan_penelitian", "laporan_pkm", "modul_ajar", "lainnya"] }, judul: { t: "string", max: 500 }, judul_en: { t: "string", max: 500 }, abstrak: { t: "string" }, abstrak_en: { t: "string" }, kata_kunci: { t: "string", max: 500 }, penulis_username: { t: "string", ds: "user.username", rf: { l: "pengguna", k: "username" } }, penulis_nama: { t: "string", max: 200 }, penulis_lain: { t: "object" }, pembimbing: { t: "object" }, kode_prodi: { t: "string", ds: "m_program_studi.kode_prodi", rf: { l: "/v1/referensi/prodi", k: "kode_prodi", q: 0 } }, tahun: { t: "integer", min: 1950, mx: 2100 }, tanggal: { t: "string", f: "date" }, bahasa: { t: "string", max: 10, p: "^[A-Za-z0-9._\\-/]+$", d: "id" }, halaman: { t: "integer", min: 0, mx: 1e5 }, penerbit: { t: "string", max: 200 }, doi: { t: "string", max: 150 }, isbn_issn: { t: "string", max: 30, p: "^[A-Za-z0-9._\\-/]+$" }, url: { t: "string", f: "uri" }, lisensi: { t: "string", max: 50 }, akses: { t: "string", e: ["publik", "login", "tertutup"], d: "publik" }, embargo_sampai: { t: "string", f: "date" }, skor_plagiasi: { t: "number", ds: "(hanya pengelola)" }, alat_plagiasi: { t: "string", max: 50, ds: "(hanya pengelola)" }, ta_id: { t: "integer", min: 0, mx: 2147483647, ds: "(hanya pengelola)" }, lppm_luaran_id: { t: "integer", min: 0, mx: 9223372036854776e3, ds: "(hanya pengelola)", rf: { l: "/v1/lppm/luaran", k: "id", d: "/v1/lppm/luaran/{id}" } } }, rq: ["jenis", "judul", "penulis_username", "tahun"] }, rq: 1 }, r: "object", it: "RepositoriKarya" }, getRepositoriKaryaById: { id: "getRepositoriKaryaById", m: "GET", path: "/v1/repositori/karya/{id}", tag: "Repositori: Karya", sum: "Karya ilmiah: detail", ds: "Metadata karya yang diterbitkan terbuka untuk umum (juga tanpa token). Teks lengkap dilampirkan lewat /berkas dan bisa diunduh sesuai `akses` (publik, login, tertutup) dan `embargo_sampai`. Mahasiswa/dosen menyetor karyanya sendiri (penulis_username otomatis), lalu `ajukan`; pustakawan memeriksa (cek plagiasi) dan `terbitkan`, `minta-revisi`, atau `tolak`. Semua pemilik token ber-scope repositori:read (selain pengelola hanya melihat status diterbitkan atau miliknya sendiri).", pub: 1, pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/repositori/karya", k: "id", d: "/v1/repositori/karya/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "RepositoriKarya" }, putRepositoriKaryaById: { id: "putRepositoriKaryaById", m: "PUT", path: "/v1/repositori/karya/{id}", tag: "Repositori: Karya", sum: "Karya ilmiah: ubah", ds: "Pengelola, atau pengguna untuk datanya sendiri (penulis_username diisi otomatis); pemilik hanya bisa mengubah/menghapus bila status draf/revisi. Kolom yang tidak dikirim tidak berubah.", sc: ["repositori:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/repositori/karya", k: "id", d: "/v1/repositori/karya/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "RepositoriKaryaInput", s: { t: "object", pr: { koleksi_id: { t: "integer", ds: "ID di repo_koleksi", rf: { l: "/v1/repositori/koleksi", k: "id", d: "/v1/repositori/koleksi/{id}" } }, jenis: { t: "string", e: ["skripsi", "tesis", "disertasi", "tugas_akhir", "laporan_kp", "laporan_pkl", "artikel", "prosiding", "buku", "laporan_penelitian", "laporan_pkm", "modul_ajar", "lainnya"] }, judul: { t: "string", max: 500 }, judul_en: { t: "string", max: 500 }, abstrak: { t: "string" }, abstrak_en: { t: "string" }, kata_kunci: { t: "string", max: 500 }, penulis_username: { t: "string", ds: "user.username", rf: { l: "pengguna", k: "username" } }, penulis_nama: { t: "string", max: 200 }, penulis_lain: { t: "object" }, pembimbing: { t: "object" }, kode_prodi: { t: "string", ds: "m_program_studi.kode_prodi", rf: { l: "/v1/referensi/prodi", k: "kode_prodi", q: 0 } }, tahun: { t: "integer", min: 1950, mx: 2100 }, tanggal: { t: "string", f: "date" }, bahasa: { t: "string", max: 10, p: "^[A-Za-z0-9._\\-/]+$", d: "id" }, halaman: { t: "integer", min: 0, mx: 1e5 }, penerbit: { t: "string", max: 200 }, doi: { t: "string", max: 150 }, isbn_issn: { t: "string", max: 30, p: "^[A-Za-z0-9._\\-/]+$" }, url: { t: "string", f: "uri" }, lisensi: { t: "string", max: 50 }, akses: { t: "string", e: ["publik", "login", "tertutup"], d: "publik" }, embargo_sampai: { t: "string", f: "date" }, skor_plagiasi: { t: "number", ds: "(hanya pengelola)" }, alat_plagiasi: { t: "string", max: 50, ds: "(hanya pengelola)" }, ta_id: { t: "integer", min: 0, mx: 2147483647, ds: "(hanya pengelola)" }, lppm_luaran_id: { t: "integer", min: 0, mx: 9223372036854776e3, ds: "(hanya pengelola)", rf: { l: "/v1/lppm/luaran", k: "id", d: "/v1/lppm/luaran/{id}" } } }, rq: ["jenis", "judul", "penulis_username", "tahun"] }, rq: 1 }, r: "object", it: "RepositoriKarya" }, deleteRepositoriKaryaById: { id: "deleteRepositoriKaryaById", m: "DELETE", path: "/v1/repositori/karya/{id}", tag: "Repositori: Karya", sum: "Karya ilmiah: hapus", ds: "Pengelola, atau pengguna untuk datanya sendiri (penulis_username diisi otomatis); pemilik hanya bisa mengubah/menghapus bila status draf/revisi.", sc: ["repositori:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/repositori/karya", k: "id", d: "/v1/repositori/karya/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "none" }, getRepositoriKaryaByIdBerkas: { id: "getRepositoriKaryaByIdBerkas", m: "GET", path: "/v1/repositori/karya/{id}/berkas", tag: "Repositori: Karya", sum: "Karya ilmiah: daftar lampiran", ds: "Siapa pun yang boleh melihat barisnya.", pub: 1, pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/repositori/karya", k: "id", d: "/v1/repositori/karya/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "list", it: "PusatBerkas" }, postRepositoriKaryaByIdBerkas: { id: "postRepositoriKaryaByIdBerkas", m: "POST", path: "/v1/repositori/karya/{id}/berkas", tag: "Repositori: Karya", sum: "Karya ilmiah: unggah lampiran", ds: 'Multipart field "berkas" (atau JSON berkas_base64 + nama_file), opsional jenis dan keterangan. PDF, gambar, dokumen Office/ODF, CSV, TXT, ZIP; maksimal PUSAT_DATA_MAKS_MB (bawaan 20 MB). Pengelola, atau pengguna untuk datanya sendiri (penulis_username diisi otomatis); pemilik hanya bisa mengubah/menghapus bila status draf/revisi.', sc: ["repositori:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/repositori/karya", k: "id", d: "/v1/repositori/karya/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "multipart/form-data", ref: "PusatBerkasInput", s: { t: "object", pr: { berkas: { t: "string", f: "binary" }, jenis: { t: "string", ds: "Mis. lampiran, bukti, laporan" }, keterangan: { t: "string" }, berkas_base64: { t: "string", ds: "Alternatif JSON" }, nama_file: { t: "string" } } }, rq: 1 }, r: "object", it: "PusatBerkas" }, getRepositoriKaryaByIdBerkasByUuid: { id: "getRepositoriKaryaByIdBerkasByUuid", m: "GET", path: "/v1/repositori/karya/{id}/berkas/{uuid}", tag: "Repositori: Karya", sum: "Karya ilmiah: unduh lampiran", pub: 1, pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/repositori/karya", k: "id", d: "/v1/repositori/karya/{id}" } }, rq: 1, ds: "ID angka atau UUID" }, { nm: "uuid", in: "path", s: { t: "string" }, rq: 1, ds: "UUID berkas" }], r: "object" }, deleteRepositoriKaryaByIdBerkasByUuid: { id: "deleteRepositoriKaryaByIdBerkasByUuid", m: "DELETE", path: "/v1/repositori/karya/{id}/berkas/{uuid}", tag: "Repositori: Karya", sum: "Karya ilmiah: hapus lampiran", ds: "Pengelola, atau pengguna untuk datanya sendiri (penulis_username diisi otomatis); pemilik hanya bisa mengubah/menghapus bila status draf/revisi.", sc: ["repositori:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/repositori/karya", k: "id", d: "/v1/repositori/karya/{id}" } }, rq: 1, ds: "ID angka atau UUID" }, { nm: "uuid", in: "path", s: { t: "string" }, rq: 1, ds: "UUID berkas" }], r: "none" }, postRepositoriKaryaByIdAjukan: { id: "postRepositoriKaryaByIdAjukan", m: "POST", path: "/v1/repositori/karya/{id}/ajukan", tag: "Repositori: Karya", sum: "Karya ilmiah: Ajukan untuk diperiksa", ds: "Pemilik data atau pengelola. Status harus draf/revisi, menjadi diajukan.", sc: ["repositori:write"], tr: { dari: ["draf", "revisi"], ke: "diajukan" }, oleh: "pemilik_atau_pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/repositori/karya", k: "id", d: "/v1/repositori/karya/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "RepositoriKarya" }, postRepositoriKaryaByIdTerbitkan: { id: "postRepositoriKaryaByIdTerbitkan", m: "POST", path: "/v1/repositori/karya/{id}/terbitkan", tag: "Repositori: Karya", sum: "Karya ilmiah: Terbitkan", ds: "Pengelola modul. Status harus diajukan/ditarik, menjadi diterbitkan.", sc: ["repositori:write"], tr: { dari: ["diajukan", "ditarik"], ke: "diterbitkan" }, oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/repositori/karya", k: "id", d: "/v1/repositori/karya/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "RepositoriKaryaTerbitkanInput", s: { t: "object", pr: { skor_plagiasi: { t: "number" }, alat_plagiasi: { t: "string", max: 50 }, catatan: { t: "string" } } }, rq: 1 }, r: "object", it: "RepositoriKarya" }, postRepositoriKaryaByIdMintaRevisi: { id: "postRepositoriKaryaByIdMintaRevisi", m: "POST", path: "/v1/repositori/karya/{id}/minta-revisi", tag: "Repositori: Karya", sum: "Karya ilmiah: Minta revisi", ds: "Pengelola modul. Status harus diajukan, menjadi revisi.", sc: ["repositori:write"], tr: { dari: ["diajukan"], ke: "revisi" }, oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/repositori/karya", k: "id", d: "/v1/repositori/karya/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "RepositoriKaryaMintaRevisiInput", s: { t: "object", pr: { catatan: { t: "string" }, skor_plagiasi: { t: "number" }, alat_plagiasi: { t: "string", max: 50 } }, rq: ["catatan"] }, rq: 1 }, r: "object", it: "RepositoriKarya" }, postRepositoriKaryaByIdTolak: { id: "postRepositoriKaryaByIdTolak", m: "POST", path: "/v1/repositori/karya/{id}/tolak", tag: "Repositori: Karya", sum: "Karya ilmiah: Tolak", ds: "Pengelola modul. Status harus diajukan, menjadi ditolak.", sc: ["repositori:write"], tr: { dari: ["diajukan"], ke: "ditolak" }, oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/repositori/karya", k: "id", d: "/v1/repositori/karya/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "RepositoriKaryaTolakInput", s: { t: "object", pr: { alasan: { t: "string" } }, rq: ["alasan"] }, rq: 1 }, r: "object", it: "RepositoriKarya" }, postRepositoriKaryaByIdTarik: { id: "postRepositoriKaryaByIdTarik", m: "POST", path: "/v1/repositori/karya/{id}/tarik", tag: "Repositori: Karya", sum: "Karya ilmiah: Tarik dari publikasi", ds: "Admin modul. Status harus diterbitkan, menjadi ditarik.", sc: ["repositori:write"], tr: { dari: ["diterbitkan"], ke: "ditarik" }, oleh: "admin", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/repositori/karya", k: "id", d: "/v1/repositori/karya/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "RepositoriKaryaTarikInput", s: { t: "object", pr: { alasan: { t: "string" } }, rq: ["alasan"] }, rq: 1 }, r: "object", it: "RepositoriKarya" } };
10
+ var mandiri = ["getRepositoriOai", "getRepositoriStatistik", "postRepositoriImporTa"];
11
+ var skema = { Objek: { t: "object", ds: "Baris data dengan nama kolom huruf kecil sesuai tabel SIAKAD." }, RepositoriKoleksi: { t: "object", ds: "Koleksi (tabel repo_koleksi)", pr: { id: { t: "integer" }, kode: { t: "string", max: 40, p: "^[A-Za-z0-9._\\-/]+$", ds: "(unik)" }, nama: { t: "string", max: 200 }, deskripsi: { t: "string" }, unit_id: { t: "integer", ds: "ID di induk_unit" }, kode_prodi: { t: "string", ds: "m_program_studi.kode_prodi" }, aktif: { t: "boolean", d: "1" }, created_at: { t: "string", n: 1, f: "date-time" }, updated_at: { t: "string", n: 1, f: "date-time" } } }, RepositoriKarya: { t: "object", ds: "Karya ilmiah (tabel repo_karya)", pr: { id: { t: "integer" }, koleksi_id: { t: "integer", ds: "ID di repo_koleksi" }, jenis: { t: "string", e: ["skripsi", "tesis", "disertasi", "tugas_akhir", "laporan_kp", "laporan_pkl", "artikel", "prosiding", "buku", "laporan_penelitian", "laporan_pkm", "modul_ajar", "lainnya"] }, judul: { t: "string", max: 500 }, judul_en: { t: "string", max: 500 }, abstrak: { t: "string" }, abstrak_en: { t: "string" }, kata_kunci: { t: "string", max: 500 }, penulis_username: { t: "string", ds: "user.username" }, penulis_nama: { t: "string", max: 200 }, penulis_lain: { t: "object" }, pembimbing: { t: "object" }, kode_prodi: { t: "string", ds: "m_program_studi.kode_prodi" }, tahun: { t: "integer", min: 1950, mx: 2100 }, tanggal: { t: "string", f: "date" }, bahasa: { t: "string", max: 10, p: "^[A-Za-z0-9._\\-/]+$", d: "id" }, halaman: { t: "integer", min: 0, mx: 1e5 }, penerbit: { t: "string", max: 200 }, doi: { t: "string", max: 150 }, isbn_issn: { t: "string", max: 30, p: "^[A-Za-z0-9._\\-/]+$" }, url: { t: "string", f: "uri" }, lisensi: { t: "string", max: 50 }, akses: { t: "string", e: ["publik", "login", "tertutup"], d: "publik" }, embargo_sampai: { t: "string", f: "date" }, skor_plagiasi: { t: "number", ds: "(hanya pengelola)" }, alat_plagiasi: { t: "string", max: 50, ds: "(hanya pengelola)" }, ta_id: { t: "integer", min: 0, mx: 2147483647, ds: "(hanya pengelola)" }, lppm_luaran_id: { t: "integer", min: 0, mx: 9223372036854776e3, ds: "(hanya pengelola)" }, status: { t: "string", e: ["draf", "diajukan", "revisi", "diterbitkan", "ditolak", "ditarik"], ds: "(hanya baca)", ro: 1 }, catatan: { t: "string", ds: "(hanya baca)", ro: 1 }, diterbitkan_pada: { t: "string", f: "date-time", ds: "(hanya baca)", ro: 1 }, diperiksa_oleh: { t: "string", ds: "user.username (hanya baca)", ro: 1 }, created_at: { t: "string", n: 1, f: "date-time" }, updated_at: { t: "string", n: 1, f: "date-time" } } }, PusatBerkas: { t: "object", pr: { uuid: { t: "string" }, jenis: { t: "string" }, nama: { t: "string" }, mime: { t: "string" }, ukuran: { t: "integer" }, sha256: { t: "string" }, keterangan: { t: "string", n: 1 }, diunggah_oleh: { t: "string" }, created_at: { t: "string", f: "date-time" } } } };
12
+ var repositori_default = { key, resources, ops, mandiri, skema };
13
+
14
+ exports.default = repositori_default;
15
+ exports.key = key;
16
+ exports.mandiri = mandiri;
17
+ exports.ops = ops;
18
+ exports.resources = resources;
19
+ exports.skema = skema;
20
+ //# sourceMappingURL=repositori-KFXVJB7B.cjs.map
@@ -0,0 +1,11 @@
1
+ 'use client';
2
+ // src/katalog/data/modul/rpl.json
3
+ var key = "rpl";
4
+ var resources = [{ id: "/v1/rpl/asesor", tag: "RPL: Master", title: "Asesor RPL", base: "/v1/rpl/asesor", item: "/v1/rpl/asesor/{id}", key: "id", list: "getRplAsesor", create: "postRplAsesor", get: "getRplAsesorById", update: "putRplAsesorById", del: "deleteRplAsesorById", actions: [], children: [] }, { id: "/v1/rpl/asesor/saya", tag: "RPL: Asesmen", title: "Tugas asesor saya", base: "/v1/rpl/asesor/saya", list: "getRplAsesorSaya", actions: [], children: [] }, { id: "/v1/rpl/dokumen", tag: "RPL: Pengajuan", title: "Dokumen bukti RPL", base: "/v1/rpl/dokumen", item: "/v1/rpl/dokumen/{id}", key: "id", list: "getRplDokumen", create: "postRplDokumen", get: "getRplDokumenById", update: "putRplDokumenById", del: "deleteRplDokumenById", actions: ["postRplDokumenByIdValid", "postRplDokumenByIdTidakValid"], children: ["/v1/rpl/dokumen/{id}/berkas"] }, { id: "/v1/rpl/dokumen/{id}/berkas", tag: "RPL: Pengajuan", title: "Dokumen bukti RPL", base: "/v1/rpl/dokumen/{id}/berkas", item: "/v1/rpl/dokumen/{id}/berkas/{uuid}", key: "uuid", list: "getRplDokumenByIdBerkas", create: "postRplDokumenByIdBerkas", get: "getRplDokumenByIdBerkasByUuid", del: "deleteRplDokumenByIdBerkasByUuid", actions: [], children: [], parent: "/v1/rpl/dokumen" }, { id: "/v1/rpl/klaim", tag: "RPL: Asesmen", title: "Mata kuliah yang diklaim", base: "/v1/rpl/klaim", item: "/v1/rpl/klaim/{id}", key: "id", list: "getRplKlaim", create: "postRplKlaim", get: "getRplKlaimById", update: "putRplKlaimById", del: "deleteRplKlaimById", actions: [], children: [] }, { id: "/v1/rpl/komponen", tag: "RPL: Master", title: "Komposisi penilaian RPL", base: "/v1/rpl/komponen", item: "/v1/rpl/komponen/{id}", key: "id", list: "getRplKomponen", create: "postRplKomponen", get: "getRplKomponenById", update: "putRplKomponenById", del: "deleteRplKomponenById", actions: [], children: [] }, { id: "/v1/rpl/konversi", tag: "RPL: Pengajuan", title: "Pengajuan", base: "/v1/rpl/konversi", item: "/v1/rpl/konversi/{nim}", key: "nim", get: "getRplKonversiByNim", actions: ["postRplKonversiByNim"], children: [] }, { id: "/v1/rpl/nilai", tag: "RPL: Asesmen", title: "Nilai asesor", base: "/v1/rpl/nilai", item: "/v1/rpl/nilai/{id}", key: "id", list: "getRplNilai", create: "postRplNilai", get: "getRplNilaiById", update: "putRplNilaiById", del: "deleteRplNilaiById", actions: [], children: [] }, { id: "/v1/rpl/pengajuan", tag: "RPL: Pengajuan", title: "Pengajuan RPL", base: "/v1/rpl/pengajuan", item: "/v1/rpl/pengajuan/{id}", key: "id", list: "getRplPengajuan", create: "postRplPengajuan", get: "getRplPengajuanById", update: "putRplPengajuanById", del: "deleteRplPengajuanById", actions: ["getRplPengajuanByIdRekap", "postRplPengajuanByIdNilai", "postRplPengajuanByIdTetapkan", "postRplPengajuanByIdIntegrasi", "postRplPengajuanByIdAjukan", "postRplPengajuanByIdMulaiAsesmen", "postRplPengajuanByIdKembalikan", "postRplPengajuanByIdTolak", "postRplPengajuanByIdBatal"], children: [] }, { id: "/v1/rpl/pengalaman", tag: "RPL: Pengajuan", title: "Pengalaman pemohon RPL", base: "/v1/rpl/pengalaman", item: "/v1/rpl/pengalaman/{id}", key: "id", list: "getRplPengalaman", create: "postRplPengalaman", get: "getRplPengalamanById", update: "putRplPengalamanById", del: "deleteRplPengalamanById", actions: [], children: ["/v1/rpl/pengalaman/{id}/berkas"] }, { id: "/v1/rpl/pengalaman/{id}/berkas", tag: "RPL: Pengajuan", title: "Pengalaman pemohon RPL", base: "/v1/rpl/pengalaman/{id}/berkas", item: "/v1/rpl/pengalaman/{id}/berkas/{uuid}", key: "uuid", list: "getRplPengalamanByIdBerkas", create: "postRplPengalamanByIdBerkas", get: "getRplPengalamanByIdBerkasByUuid", del: "deleteRplPengalamanByIdBerkasByUuid", actions: [], children: [], parent: "/v1/rpl/pengalaman" }, { id: "/v1/rpl/penugasan", tag: "RPL: Asesmen", title: "Penugasan asesor", base: "/v1/rpl/penugasan", item: "/v1/rpl/penugasan/{id}", key: "id", list: "getRplPenugasan", create: "postRplPenugasan", get: "getRplPenugasanById", update: "putRplPenugasanById", del: "deleteRplPenugasanById", actions: [], children: [] }, { id: "/v1/rpl/saya/pengajuan/{id}/mata-kuliah", tag: "RPL: Pemohon", title: "Mata kuliah yang bisa diklaim", base: "/v1/rpl/saya/pengajuan/{id}/mata-kuliah", list: "getRplSayaPengajuanByIdMataKuliah", actions: [], children: [] }, { id: "/v1/rpl/skema", tag: "RPL: Master", title: "Skema RPL", base: "/v1/rpl/skema", item: "/v1/rpl/skema/{id}", key: "id", list: "getRplSkema", create: "postRplSkema", get: "getRplSkemaById", update: "putRplSkemaById", del: "deleteRplSkemaById", actions: [], children: [] }];
5
+ var ops = { getRplSaya: { id: "getRplSaya", m: "GET", path: "/v1/rpl/saya", tag: "RPL: Pemohon", sum: "RPL saya", ds: "Token klien ber-scope pmb:pendaftar + header X-Pmb-Akun-Token (pemohon yang masuk di aplikasi PMB). Pendaftaran PMB pemohon, skema RPL yang tersedia untuk prodi pilihannya, dan pengajuan RPL beserta pengalaman, klaim, dan dokumen.", sc: ["pmb:pendaftar"], r: "object", it: "Objek" }, postRplSayaPengajuan: { id: "postRplSayaPengajuan", m: "POST", path: "/v1/rpl/saya/pengajuan", tag: "RPL: Pemohon", sum: "Buat/ubah pengajuan RPL", ds: 'Token klien ber-scope pmb:pendaftar + header X-Pmb-Akun-Token (pemohon yang masuk di aplikasi PMB). Body {"pendaftaran": "<uuid pendaftaran PMB>", "skema_id", "asal_pt", "asal_prodi", "ringkasan", "hp"}. Satu pengajuan aktif per pendaftaran dan prodi; selama draf boleh diubah.', sc: ["pmb:pendaftar"], r: "object", it: "Objek" }, getRplSayaPengajuanByIdMataKuliah: { id: "getRplSayaPengajuanByIdMataKuliah", m: "GET", path: "/v1/rpl/saya/pengajuan/{id}/mata-kuliah", tag: "RPL: Pemohon", sum: "Mata kuliah yang bisa diklaim", ds: "Token klien ber-scope pmb:pendaftar + header X-Pmb-Akun-Token (pemohon yang masuk di aplikasi PMB). Mata kuliah kurikulum aktif terbaru prodi skema.", sc: ["pmb:pendaftar"], pa: [{ nm: "id", in: "path", s: { t: "string" }, rq: 1, ds: "ID pengajuan" }], r: "list", it: "Objek" }, postRplSayaPengajuanByIdPengalaman: { id: "postRplSayaPengajuanByIdPengalaman", m: "POST", path: "/v1/rpl/saya/pengajuan/{id}/pengalaman", tag: "RPL: Pemohon", sum: "Tambah/ubah pengalaman", ds: 'Token klien ber-scope pmb:pendaftar + header X-Pmb-Akun-Token (pemohon yang masuk di aplikasi PMB). Body {"id"? (ubah), "jenis", "judul", "instansi", "mulai", "selesai", "durasi_jam", "uraian"}.', sc: ["pmb:pendaftar"], pa: [{ nm: "id", in: "path", s: { t: "string" }, rq: 1, ds: "ID pengajuan" }], r: "object", it: "Objek" }, postRplSayaPengajuanByIdKlaim: { id: "postRplSayaPengajuanByIdKlaim", m: "POST", path: "/v1/rpl/saya/pengajuan/{id}/klaim", tag: "RPL: Pemohon", sum: "Tambah/ubah klaim mata kuliah", ds: 'Token klien ber-scope pmb:pendaftar + header X-Pmb-Akun-Token (pemohon yang masuk di aplikasi PMB). Body {"id"? (ubah), "id_mk", "kode_mk_asal", "nama_mk_asal", "sks_asal", "nilai_asal", "asesmen_mandiri", "bukti"}.', sc: ["pmb:pendaftar"], pa: [{ nm: "id", in: "path", s: { t: "string" }, rq: 1, ds: "ID pengajuan" }], r: "object", it: "Objek" }, postRplSayaPengajuanByIdDokumen: { id: "postRplSayaPengajuanByIdDokumen", m: "POST", path: "/v1/rpl/saya/pengajuan/{id}/dokumen", tag: "RPL: Pemohon", sum: "Unggah dokumen bukti", ds: "Token klien ber-scope pmb:pendaftar + header X-Pmb-Akun-Token (pemohon yang masuk di aplikasi PMB). Multipart: berkas (file), jenis (cv, ijazah, transkrip, sertifikat, surat_keterangan_kerja, portofolio, silabus, lainnya), judul, pengalaman_id?. Atau JSON berkas_base64 + nama_file.", sc: ["pmb:pendaftar"], pa: [{ nm: "id", in: "path", s: { t: "string" }, rq: 1, ds: "ID pengajuan" }], r: "object", it: "Objek" }, postRplSayaPengajuanByIdByJenisByAnakHapus: { id: "postRplSayaPengajuanByIdByJenisByAnakHapus", m: "POST", path: "/v1/rpl/saya/pengajuan/{id}/{jenis}/{anak}/hapus", tag: "RPL: Pemohon", sum: "Hapus pengalaman/klaim/dokumen", ds: "Token klien ber-scope pmb:pendaftar + header X-Pmb-Akun-Token (pemohon yang masuk di aplikasi PMB). jenis = pengalaman, klaim, atau dokumen. Hanya selama draf.", sc: ["pmb:pendaftar"], pa: [{ nm: "id", in: "path", s: { t: "string" }, rq: 1, ds: "ID pengajuan" }, { nm: "jenis", in: "path", s: { t: "string" }, rq: 1, ds: "pengalaman | klaim | dokumen" }, { nm: "anak", in: "path", s: { t: "string" }, rq: 1, ds: "ID baris" }], r: "object", it: "Objek" }, postRplSayaPengajuanByIdAjukan: { id: "postRplSayaPengajuanByIdAjukan", m: "POST", path: "/v1/rpl/saya/pengajuan/{id}/ajukan", tag: "RPL: Pemohon", sum: "Ajukan RPL", ds: "Token klien ber-scope pmb:pendaftar + header X-Pmb-Akun-Token (pemohon yang masuk di aplikasi PMB). Perlu minimal satu klaim, satu pengalaman, dan satu dokumen. Setelah diajukan pemohon tidak bisa mengubah kecuali dikembalikan panitia.", sc: ["pmb:pendaftar"], pa: [{ nm: "id", in: "path", s: { t: "string" }, rq: 1, ds: "ID pengajuan" }], r: "object", it: "Objek" }, getRplAsesorSaya: { id: "getRplAsesorSaya", m: "GET", path: "/v1/rpl/asesor/saya", tag: "RPL: Asesmen", sum: "Tugas asesor saya", ds: "Pengajuan yang ditugaskan ke pengguna token sebagai asesor.", sc: ["rpl:read"], r: "list", it: "Objek" }, getRplPengajuanByIdRekap: { id: "getRplPengajuanByIdRekap", m: "GET", path: "/v1/rpl/pengajuan/{id}/rekap", tag: "RPL: Asesmen", sum: "Rekap nilai", ds: "Nilai per klaim: per asesor (rata-rata berbobot komponen) dan rata-rata antarasesor, serta pratinjau hasil (huruf dari m_nilai prodi, diakui bila >= nilai_lulus skema, dibatasi sks_maks).", sc: ["rpl:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/rpl/pengajuan", k: "id", d: "/v1/rpl/pengajuan/{id}" } }, rq: 1, ds: "ID pengajuan (angka atau UUID)" }], r: "object", it: "Objek" }, postRplPengajuanByIdNilai: { id: "postRplPengajuanByIdNilai", m: "POST", path: "/v1/rpl/pengajuan/{id}/nilai", tag: "RPL: Asesmen", sum: "Isi nilai massal", ds: 'Body {"asesor_id"? (pengelola), "nilai": [{"klaim_id", "komponen_id", "nilai", "catatan"?}]}. Asesor mengisi nilainya sendiri; nilai yang sudah ada ditimpa. Hanya saat status asesmen.', sc: ["rpl:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/rpl/pengajuan", k: "id", d: "/v1/rpl/pengajuan/{id}" } }, rq: 1, ds: "ID pengajuan (angka atau UUID)" }], r: "object", it: "Objek" }, postRplPengajuanByIdTetapkan: { id: "postRplPengajuanByIdTetapkan", m: "POST", path: "/v1/rpl/pengajuan/{id}/tetapkan", tag: "RPL: Asesmen", sum: "Tetapkan hasil RPL", ds: 'Body {"nomor_sk", "tanggal_sk", "klaim": [{"id", "nilai_akhir"?, "status"? diakui|tidak_diakui, "catatan"?}], "pratinjau"?: true}. Nilai akhir = rata-rata asesor kecuali diisi; huruf dari m_nilai; SKS diakui dibatasi sks_maks skema. Status pengajuan jadi ditetapkan.', sc: ["rpl:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/rpl/pengajuan", k: "id", d: "/v1/rpl/pengajuan/{id}" } }, rq: 1, ds: "ID pengajuan (angka atau UUID)" }], r: "object", it: "Objek" }, postRplPengajuanByIdIntegrasi: { id: "postRplPengajuanByIdIntegrasi", m: "POST", path: "/v1/rpl/pengajuan/{id}/integrasi", tag: "RPL: Asesmen", sum: "Masukkan hasil ke KRS SIAKAD", ds: 'Body {"kelas" (m_kelas.kode_kelas prodi), "nim"?}. Untuk pemohon yang sudah daftar ulang (NIM dari PMB bila tidak diisi). Mata kuliah diakui ditulis sebagai nilai konversi dengan langkah menu KRS Input Pindahan (t_mahasiswa_krs tahun 00000 pindahan Y, m_log); SKS diakui mahasiswa dinaikkan bila kurang. Mahasiswa harus berstatus masuk P.', sc: ["rpl:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/rpl/pengajuan", k: "id", d: "/v1/rpl/pengajuan/{id}" } }, rq: 1, ds: "ID pengajuan (angka atau UUID)" }], r: "object", it: "Objek" }, getRplKonversiByNim: { id: "getRplKonversiByNim", m: "GET", path: "/v1/rpl/konversi/{nim}", tag: "RPL: Pengajuan", sum: "Nilai konversi mahasiswa", ds: "Nilai konversi pindahan/RPL di KRS (pindahan Y), SKS diakui, dan SKS terisi.", sc: ["rpl:read"], pa: [{ nm: "nim", in: "path", s: { t: "string", rf: { l: "/v1/mahasiswa", k: "nim", d: "/v1/mahasiswa/{nim}" } }, rq: 1, ds: "NIM" }], r: "object", it: "Objek" }, postRplKonversiByNim: { id: "postRplKonversiByNim", m: "POST", path: "/v1/rpl/konversi/{nim}", tag: "RPL: Pengajuan", sum: "Simpan nilai konversi (pindahan)", ds: 'Body {"kelas", "data": [{"kode_mk", "nilai" (huruf), "kode_mk_asal", "nama_mk_asal", "sks_asal"}], "naikkan_sks_diakui"?: false}. Langkah menu KRS Input Pindahan untuk mahasiswa pindahan (status masuk P): mata kuliah kurikulum semester masuk (atau sebelumnya), bobot dari m_nilai, total SKS <= SKS diakui, m_log. Yang sudah ada diperbarui nilainya.', sc: ["rpl:write"], pa: [{ nm: "nim", in: "path", s: { t: "string", rf: { l: "/v1/mahasiswa", k: "nim", d: "/v1/mahasiswa/{nim}" } }, rq: 1, ds: "NIM" }], r: "object", it: "Objek" }, getRplSkema: { id: "getRplSkema", m: "GET", path: "/v1/rpl/skema", tag: "RPL: Master", sum: "Skema RPL: daftar", ds: "Skema RPL per prodi: transfer_kredit (A1, dari pendidikan formal/perguruan tinggi lain) atau perolehan_kredit (A2, dari pengalaman kerja/pelatihan/nonformal). sks_maks = batas SKS yang diakui, nilai_lulus = nilai akhir minimal (0-100) agar mata kuliah diakui. Semua pemilik token ber-scope rpl:read.", sc: ["rpl: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: "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: "tipe", 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: "aktif", 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: "RplSkema" }, postRplSkema: { id: "postRplSkema", m: "POST", path: "/v1/rpl/skema", tag: "RPL: Master", sum: "Skema RPL: tambah", ds: "Pengelola modul.", sc: ["rpl:write"], oleh: "pengelola", b: { ct: "application/json", ref: "RplSkemaInput", s: { t: "object", pr: { kode_prodi: { t: "string", ds: "m_program_studi.kode_prodi", rf: { l: "/v1/referensi/prodi", k: "kode_prodi", q: 0 } }, tipe: { t: "string", e: ["transfer_kredit", "perolehan_kredit"], d: "perolehan_kredit" }, nama: { t: "string", max: 150 }, keterangan: { t: "string" }, sks_maks: { t: "integer", min: 0, mx: 200 }, nilai_lulus: { t: "number", d: "56" }, tahun_id: { t: "string", ds: "m_tahun.tahun_id", rf: { l: "/v1/referensi/tahun-akademik", k: "tahun_id", q: 0 } }, aktif: { t: "boolean", d: "1" } }, rq: ["kode_prodi", "nama"] }, rq: 1 }, r: "object", it: "RplSkema" }, getRplSkemaById: { id: "getRplSkemaById", m: "GET", path: "/v1/rpl/skema/{id}", tag: "RPL: Master", sum: "Skema RPL: detail", ds: "Skema RPL per prodi: transfer_kredit (A1, dari pendidikan formal/perguruan tinggi lain) atau perolehan_kredit (A2, dari pengalaman kerja/pelatihan/nonformal). sks_maks = batas SKS yang diakui, nilai_lulus = nilai akhir minimal (0-100) agar mata kuliah diakui. Semua pemilik token ber-scope rpl:read.", sc: ["rpl:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/rpl/skema", k: "id", d: "/v1/rpl/skema/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "RplSkema" }, putRplSkemaById: { id: "putRplSkemaById", m: "PUT", path: "/v1/rpl/skema/{id}", tag: "RPL: Master", sum: "Skema RPL: ubah", ds: "Pengelola modul. Kolom yang tidak dikirim tidak berubah.", sc: ["rpl:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/rpl/skema", k: "id", d: "/v1/rpl/skema/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "RplSkemaInput", s: { t: "object", pr: { kode_prodi: { t: "string", ds: "m_program_studi.kode_prodi", rf: { l: "/v1/referensi/prodi", k: "kode_prodi", q: 0 } }, tipe: { t: "string", e: ["transfer_kredit", "perolehan_kredit"], d: "perolehan_kredit" }, nama: { t: "string", max: 150 }, keterangan: { t: "string" }, sks_maks: { t: "integer", min: 0, mx: 200 }, nilai_lulus: { t: "number", d: "56" }, tahun_id: { t: "string", ds: "m_tahun.tahun_id", rf: { l: "/v1/referensi/tahun-akademik", k: "tahun_id", q: 0 } }, aktif: { t: "boolean", d: "1" } }, rq: ["kode_prodi", "nama"] }, rq: 1 }, r: "object", it: "RplSkema" }, deleteRplSkemaById: { id: "deleteRplSkemaById", m: "DELETE", path: "/v1/rpl/skema/{id}", tag: "RPL: Master", sum: "Skema RPL: hapus", ds: "Pengelola modul.", sc: ["rpl:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/rpl/skema", k: "id", d: "/v1/rpl/skema/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "none" }, getRplKomponen: { id: "getRplKomponen", m: "GET", path: "/v1/rpl/komponen", tag: "RPL: Master", sum: "Komposisi penilaian RPL: daftar", ds: "Komponen penilaian per skema (portofolio, wawancara, uji praktik, ujian tulis, ...) dengan bobot persen. Bila jumlah bobot bukan 100, nilai akhir tetap dihitung proporsional terhadap total bobot komponen yang dinilai. Semua pemilik token ber-scope rpl:read.", sc: ["rpl: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: "skema_id", in: "query", s: { t: "string", rf: { l: "/v1/rpl/skema", k: "id", d: "/v1/rpl/skema/{id}" } }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { 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: "RplKomponen" }, postRplKomponen: { id: "postRplKomponen", m: "POST", path: "/v1/rpl/komponen", tag: "RPL: Master", sum: "Komposisi penilaian RPL: tambah", ds: "Pengelola modul.", sc: ["rpl:write"], oleh: "pengelola", b: { ct: "application/json", ref: "RplKomponenInput", s: { t: "object", pr: { skema_id: { t: "integer", ds: "ID di rpl_skema", rf: { l: "/v1/rpl/skema", k: "id", d: "/v1/rpl/skema/{id}" } }, nama: { t: "string", max: 100 }, bobot: { t: "number" }, urutan: { t: "integer", min: 0, mx: 100, d: "0" } }, rq: ["skema_id", "nama", "bobot"] }, rq: 1 }, r: "object", it: "RplKomponen" }, getRplKomponenById: { id: "getRplKomponenById", m: "GET", path: "/v1/rpl/komponen/{id}", tag: "RPL: Master", sum: "Komposisi penilaian RPL: detail", ds: "Komponen penilaian per skema (portofolio, wawancara, uji praktik, ujian tulis, ...) dengan bobot persen. Bila jumlah bobot bukan 100, nilai akhir tetap dihitung proporsional terhadap total bobot komponen yang dinilai. Semua pemilik token ber-scope rpl:read.", sc: ["rpl:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/rpl/komponen", k: "id", d: "/v1/rpl/komponen/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "RplKomponen" }, putRplKomponenById: { id: "putRplKomponenById", m: "PUT", path: "/v1/rpl/komponen/{id}", tag: "RPL: Master", sum: "Komposisi penilaian RPL: ubah", ds: "Pengelola modul. Kolom yang tidak dikirim tidak berubah.", sc: ["rpl:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/rpl/komponen", k: "id", d: "/v1/rpl/komponen/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "RplKomponenInput", s: { t: "object", pr: { skema_id: { t: "integer", ds: "ID di rpl_skema", rf: { l: "/v1/rpl/skema", k: "id", d: "/v1/rpl/skema/{id}" } }, nama: { t: "string", max: 100 }, bobot: { t: "number" }, urutan: { t: "integer", min: 0, mx: 100, d: "0" } }, rq: ["skema_id", "nama", "bobot"] }, rq: 1 }, r: "object", it: "RplKomponen" }, deleteRplKomponenById: { id: "deleteRplKomponenById", m: "DELETE", path: "/v1/rpl/komponen/{id}", tag: "RPL: Master", sum: "Komposisi penilaian RPL: hapus", ds: "Pengelola modul.", sc: ["rpl:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/rpl/komponen", k: "id", d: "/v1/rpl/komponen/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "none" }, getRplAsesor: { id: "getRplAsesor", m: "GET", path: "/v1/rpl/asesor", tag: "RPL: Master", sum: "Asesor RPL: daftar", ds: "Dosen (NIDN; akun SIAKAD-nya otomatis dipakai) atau asesor luar (isi username akun SIAKAD bila asesor perlu masuk untuk menilai). Prodi kosong = lintas prodi. Hanya pengelola modul.", sc: ["rpl: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: "nidn", in: "query", s: { t: "string", rf: { l: "/v1/dosen", k: "nidn", d: "/v1/dosen/{nidn}" } }, 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: "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: "aktif", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "q", in: "query", s: { t: "string" }, ds: "Cari di nama, nidn, username, bidang" }, { 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: "RplAsesor" }, postRplAsesor: { id: "postRplAsesor", m: "POST", path: "/v1/rpl/asesor", tag: "RPL: Master", sum: "Asesor RPL: tambah", ds: "Pengelola modul.", sc: ["rpl:write"], oleh: "pengelola", b: { ct: "application/json", ref: "RplAsesorInput", s: { t: "object", pr: { nidn: { t: "string", ds: "m_dosen.NIDN", rf: { l: "/v1/dosen", k: "nidn", d: "/v1/dosen/{nidn}" } }, username: { t: "string", ds: "user.username", rf: { l: "pengguna", k: "username" } }, nama: { t: "string", max: 150 }, kode_prodi: { t: "string", ds: "m_program_studi.kode_prodi", rf: { l: "/v1/referensi/prodi", k: "kode_prodi", q: 0 } }, bidang: { t: "string", max: 150 }, nomor_sertifikat: { t: "string", max: 100 }, instansi: { t: "string", max: 150 }, aktif: { t: "boolean", d: "1" } } }, rq: 1 }, r: "object", it: "RplAsesor" }, getRplAsesorById: { id: "getRplAsesorById", m: "GET", path: "/v1/rpl/asesor/{id}", tag: "RPL: Master", sum: "Asesor RPL: detail", ds: "Dosen (NIDN; akun SIAKAD-nya otomatis dipakai) atau asesor luar (isi username akun SIAKAD bila asesor perlu masuk untuk menilai). Prodi kosong = lintas prodi. Hanya pengelola modul.", sc: ["rpl:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/rpl/asesor", k: "id", d: "/v1/rpl/asesor/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "RplAsesor" }, putRplAsesorById: { id: "putRplAsesorById", m: "PUT", path: "/v1/rpl/asesor/{id}", tag: "RPL: Master", sum: "Asesor RPL: ubah", ds: "Pengelola modul. Kolom yang tidak dikirim tidak berubah.", sc: ["rpl:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/rpl/asesor", k: "id", d: "/v1/rpl/asesor/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "RplAsesorInput", s: { t: "object", pr: { nidn: { t: "string", ds: "m_dosen.NIDN", rf: { l: "/v1/dosen", k: "nidn", d: "/v1/dosen/{nidn}" } }, username: { t: "string", ds: "user.username", rf: { l: "pengguna", k: "username" } }, nama: { t: "string", max: 150 }, kode_prodi: { t: "string", ds: "m_program_studi.kode_prodi", rf: { l: "/v1/referensi/prodi", k: "kode_prodi", q: 0 } }, bidang: { t: "string", max: 150 }, nomor_sertifikat: { t: "string", max: 100 }, instansi: { t: "string", max: 150 }, aktif: { t: "boolean", d: "1" } } }, rq: 1 }, r: "object", it: "RplAsesor" }, deleteRplAsesorById: { id: "deleteRplAsesorById", m: "DELETE", path: "/v1/rpl/asesor/{id}", tag: "RPL: Master", sum: "Asesor RPL: hapus", ds: "Pengelola modul.", sc: ["rpl:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/rpl/asesor", k: "id", d: "/v1/rpl/asesor/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "none" }, getRplPengajuan: { id: "getRplPengajuan", m: "GET", path: "/v1/rpl/pengajuan", tag: "RPL: Pengajuan", sum: "Pengajuan RPL: daftar", ds: "Pengajuan RPL calon mahasiswa (dibuat pemohon lewat /v1/rpl/saya atau oleh panitia). Alur: draf -> diajukan -> asesmen (asesor ditugaskan) -> ditetapkan (POST /rpl/pengajuan/{id}/tetapkan) atau ditolak. Setelah daftar ulang, nilai mata kuliah yang diakui ditulis ke KRS SIAKAD dengan POST /rpl/pengajuan/{id}/integrasi. Detail memuat pengalaman, dokumen, klaim, asesor, dan rekap nilai. Hanya pengelola modul.", sc: ["rpl: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: "skema_id", in: "query", s: { t: "string", rf: { l: "/v1/rpl/skema", k: "id", d: "/v1/rpl/skema/{id}" } }, 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: "nim", in: "query", s: { t: "string", rf: { l: "/v1/mahasiswa", k: "nim", d: "/v1/mahasiswa/{nim}" } }, 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, email, no_pmb, nim" }, { 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: "RplPengajuan" }, postRplPengajuan: { id: "postRplPengajuan", m: "POST", path: "/v1/rpl/pengajuan", tag: "RPL: Pengajuan", sum: "Pengajuan RPL: tambah", ds: "Pengelola modul.", sc: ["rpl:write"], oleh: "pengelola", b: { ct: "application/json", ref: "RplPengajuanInput", s: { t: "object", pr: { skema_id: { t: "integer", ds: "ID di rpl_skema", rf: { l: "/v1/rpl/skema", k: "id", d: "/v1/rpl/skema/{id}" } }, pmb_pendaftaran_id: { t: "integer", min: 1, mx: 2147483647 }, nama: { t: "string", max: 150 }, email: { t: "string", f: "email" }, hp: { t: "string" }, asal_pt: { t: "string", max: 150 }, asal_prodi: { t: "string", max: 150 }, ringkasan: { t: "string" }, catatan: { t: "string", ds: "(hanya pengelola)" } }, rq: ["skema_id", "nama"] }, rq: 1 }, r: "object", it: "RplPengajuan" }, getRplPengajuanById: { id: "getRplPengajuanById", m: "GET", path: "/v1/rpl/pengajuan/{id}", tag: "RPL: Pengajuan", sum: "Pengajuan RPL: detail", ds: "Pengajuan RPL calon mahasiswa (dibuat pemohon lewat /v1/rpl/saya atau oleh panitia). Alur: draf -> diajukan -> asesmen (asesor ditugaskan) -> ditetapkan (POST /rpl/pengajuan/{id}/tetapkan) atau ditolak. Setelah daftar ulang, nilai mata kuliah yang diakui ditulis ke KRS SIAKAD dengan POST /rpl/pengajuan/{id}/integrasi. Detail memuat pengalaman, dokumen, klaim, asesor, dan rekap nilai. Hanya pengelola modul.", sc: ["rpl:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/rpl/pengajuan", k: "id", d: "/v1/rpl/pengajuan/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "RplPengajuan" }, putRplPengajuanById: { id: "putRplPengajuanById", m: "PUT", path: "/v1/rpl/pengajuan/{id}", tag: "RPL: Pengajuan", sum: "Pengajuan RPL: ubah", ds: "Pengelola modul. Kolom yang tidak dikirim tidak berubah.", sc: ["rpl:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/rpl/pengajuan", k: "id", d: "/v1/rpl/pengajuan/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "RplPengajuanInput", s: { t: "object", pr: { skema_id: { t: "integer", ds: "ID di rpl_skema", rf: { l: "/v1/rpl/skema", k: "id", d: "/v1/rpl/skema/{id}" } }, pmb_pendaftaran_id: { t: "integer", min: 1, mx: 2147483647 }, nama: { t: "string", max: 150 }, email: { t: "string", f: "email" }, hp: { t: "string" }, asal_pt: { t: "string", max: 150 }, asal_prodi: { t: "string", max: 150 }, ringkasan: { t: "string" }, catatan: { t: "string", ds: "(hanya pengelola)" } }, rq: ["skema_id", "nama"] }, rq: 1 }, r: "object", it: "RplPengajuan" }, deleteRplPengajuanById: { id: "deleteRplPengajuanById", m: "DELETE", path: "/v1/rpl/pengajuan/{id}", tag: "RPL: Pengajuan", sum: "Pengajuan RPL: hapus", ds: "Pengelola modul.", sc: ["rpl:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/rpl/pengajuan", k: "id", d: "/v1/rpl/pengajuan/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "none" }, postRplPengajuanByIdAjukan: { id: "postRplPengajuanByIdAjukan", m: "POST", path: "/v1/rpl/pengajuan/{id}/ajukan", tag: "RPL: Pengajuan", sum: "Pengajuan RPL: Ajukan untuk asesmen (atas nama pemohon)", ds: "Pengelola modul. Status harus draf, menjadi diajukan.", sc: ["rpl:write"], tr: { dari: ["draf"], ke: "diajukan" }, oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/rpl/pengajuan", k: "id", d: "/v1/rpl/pengajuan/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "RplPengajuan" }, postRplPengajuanByIdMulaiAsesmen: { id: "postRplPengajuanByIdMulaiAsesmen", m: "POST", path: "/v1/rpl/pengajuan/{id}/mulai-asesmen", tag: "RPL: Pengajuan", sum: "Pengajuan RPL: Mulai asesmen", ds: "Perlu minimal satu asesor ditugaskan (/rpl/penugasan) dan satu mata kuliah diklaim. Pengelola modul. Status harus diajukan, menjadi asesmen.", sc: ["rpl:write"], tr: { dari: ["diajukan"], ke: "asesmen" }, oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/rpl/pengajuan", k: "id", d: "/v1/rpl/pengajuan/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "RplPengajuanMulaiAsesmenInput", s: { t: "object", pr: { catatan: { t: "string", max: 1e3 } } }, rq: 1 }, r: "object", it: "RplPengajuan" }, postRplPengajuanByIdKembalikan: { id: "postRplPengajuanByIdKembalikan", m: "POST", path: "/v1/rpl/pengajuan/{id}/kembalikan", tag: "RPL: Pengajuan", sum: "Pengajuan RPL: Kembalikan ke pemohon", ds: "Pengelola modul. Status harus diajukan/asesmen, menjadi draf.", sc: ["rpl:write"], tr: { dari: ["diajukan", "asesmen"], ke: "draf" }, oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/rpl/pengajuan", k: "id", d: "/v1/rpl/pengajuan/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "RplPengajuanKembalikanInput", s: { t: "object", pr: { catatan: { t: "string", max: 1e3 } }, rq: ["catatan"] }, rq: 1 }, r: "object", it: "RplPengajuan" }, postRplPengajuanByIdTolak: { id: "postRplPengajuanByIdTolak", m: "POST", path: "/v1/rpl/pengajuan/{id}/tolak", tag: "RPL: Pengajuan", sum: "Pengajuan RPL: Tolak pengajuan", ds: "Pengelola modul. Status harus diajukan/asesmen, menjadi ditolak.", sc: ["rpl:write"], tr: { dari: ["diajukan", "asesmen"], ke: "ditolak" }, oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/rpl/pengajuan", k: "id", d: "/v1/rpl/pengajuan/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "RplPengajuanTolakInput", s: { t: "object", pr: { catatan: { t: "string", max: 1e3 } }, rq: ["catatan"] }, rq: 1 }, r: "object", it: "RplPengajuan" }, postRplPengajuanByIdBatal: { id: "postRplPengajuanByIdBatal", m: "POST", path: "/v1/rpl/pengajuan/{id}/batal", tag: "RPL: Pengajuan", sum: "Pengajuan RPL: Batalkan", ds: "Pengelola modul. Status harus draf/diajukan/asesmen, menjadi batal.", sc: ["rpl:write"], tr: { dari: ["draf", "diajukan", "asesmen"], ke: "batal" }, oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/rpl/pengajuan", k: "id", d: "/v1/rpl/pengajuan/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "RplPengajuanBatalInput", s: { t: "object", pr: { catatan: { t: "string", max: 1e3 } } }, rq: 1 }, r: "object", it: "RplPengajuan" }, getRplPengalaman: { id: "getRplPengalaman", m: "GET", path: "/v1/rpl/pengalaman", tag: "RPL: Pengajuan", sum: "Pengalaman pemohon RPL: daftar", ds: "Riwayat kerja, pelatihan, sertifikasi, pendidikan formal/nonformal, organisasi, dan karya pemohon. Lampiran bukti lewat /berkas atau /rpl/dokumen. Hanya pengelola modul.", sc: ["rpl: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: "pengajuan_id", in: "query", s: { t: "string", rf: { l: "/v1/rpl/pengajuan", k: "id", d: "/v1/rpl/pengajuan/{id}" } }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "jenis", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "q", in: "query", s: { t: "string" }, ds: "Cari di judul, instansi" }, { 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: "RplPengalaman" }, postRplPengalaman: { id: "postRplPengalaman", m: "POST", path: "/v1/rpl/pengalaman", tag: "RPL: Pengajuan", sum: "Pengalaman pemohon RPL: tambah", ds: "Pengelola modul.", sc: ["rpl:write"], oleh: "pengelola", b: { ct: "application/json", ref: "RplPengalamanInput", s: { t: "object", pr: { pengajuan_id: { t: "integer", ds: "ID di rpl_pengajuan", rf: { l: "/v1/rpl/pengajuan", k: "id", d: "/v1/rpl/pengajuan/{id}" } }, jenis: { t: "string", e: ["kerja", "pelatihan", "sertifikasi", "pendidikan_formal", "pendidikan_nonformal", "organisasi", "karya", "lainnya"] }, judul: { t: "string", max: 200 }, instansi: { t: "string", max: 200 }, mulai: { t: "string", f: "date" }, selesai: { t: "string", f: "date" }, durasi_jam: { t: "integer", min: 0, mx: 6e4 }, uraian: { t: "string" } }, rq: ["pengajuan_id", "jenis", "judul"] }, rq: 1 }, r: "object", it: "RplPengalaman" }, getRplPengalamanById: { id: "getRplPengalamanById", m: "GET", path: "/v1/rpl/pengalaman/{id}", tag: "RPL: Pengajuan", sum: "Pengalaman pemohon RPL: detail", ds: "Riwayat kerja, pelatihan, sertifikasi, pendidikan formal/nonformal, organisasi, dan karya pemohon. Lampiran bukti lewat /berkas atau /rpl/dokumen. Hanya pengelola modul.", sc: ["rpl:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/rpl/pengalaman", k: "id", d: "/v1/rpl/pengalaman/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "RplPengalaman" }, putRplPengalamanById: { id: "putRplPengalamanById", m: "PUT", path: "/v1/rpl/pengalaman/{id}", tag: "RPL: Pengajuan", sum: "Pengalaman pemohon RPL: ubah", ds: "Pengelola modul. Kolom yang tidak dikirim tidak berubah.", sc: ["rpl:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/rpl/pengalaman", k: "id", d: "/v1/rpl/pengalaman/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "RplPengalamanInput", s: { t: "object", pr: { pengajuan_id: { t: "integer", ds: "ID di rpl_pengajuan", rf: { l: "/v1/rpl/pengajuan", k: "id", d: "/v1/rpl/pengajuan/{id}" } }, jenis: { t: "string", e: ["kerja", "pelatihan", "sertifikasi", "pendidikan_formal", "pendidikan_nonformal", "organisasi", "karya", "lainnya"] }, judul: { t: "string", max: 200 }, instansi: { t: "string", max: 200 }, mulai: { t: "string", f: "date" }, selesai: { t: "string", f: "date" }, durasi_jam: { t: "integer", min: 0, mx: 6e4 }, uraian: { t: "string" } }, rq: ["pengajuan_id", "jenis", "judul"] }, rq: 1 }, r: "object", it: "RplPengalaman" }, deleteRplPengalamanById: { id: "deleteRplPengalamanById", m: "DELETE", path: "/v1/rpl/pengalaman/{id}", tag: "RPL: Pengajuan", sum: "Pengalaman pemohon RPL: hapus", ds: "Pengelola modul.", sc: ["rpl:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/rpl/pengalaman", k: "id", d: "/v1/rpl/pengalaman/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "none" }, getRplPengalamanByIdBerkas: { id: "getRplPengalamanByIdBerkas", m: "GET", path: "/v1/rpl/pengalaman/{id}/berkas", tag: "RPL: Pengajuan", sum: "Pengalaman pemohon RPL: daftar lampiran", ds: "Siapa pun yang boleh melihat barisnya.", sc: ["rpl:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/rpl/pengalaman", k: "id", d: "/v1/rpl/pengalaman/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "list", it: "PusatBerkas" }, postRplPengalamanByIdBerkas: { id: "postRplPengalamanByIdBerkas", m: "POST", path: "/v1/rpl/pengalaman/{id}/berkas", tag: "RPL: Pengajuan", sum: "Pengalaman pemohon RPL: unggah lampiran", ds: 'Multipart field "berkas" (atau JSON berkas_base64 + nama_file), opsional jenis dan keterangan. PDF, gambar, dokumen Office/ODF, CSV, TXT, ZIP; maksimal PUSAT_DATA_MAKS_MB (bawaan 20 MB). Pengelola modul.', sc: ["rpl:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/rpl/pengalaman", k: "id", d: "/v1/rpl/pengalaman/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "multipart/form-data", ref: "PusatBerkasInput", s: { t: "object", pr: { berkas: { t: "string", f: "binary" }, jenis: { t: "string", ds: "Mis. lampiran, bukti, laporan" }, keterangan: { t: "string" }, berkas_base64: { t: "string", ds: "Alternatif JSON" }, nama_file: { t: "string" } } }, rq: 1 }, r: "object", it: "PusatBerkas" }, getRplPengalamanByIdBerkasByUuid: { id: "getRplPengalamanByIdBerkasByUuid", m: "GET", path: "/v1/rpl/pengalaman/{id}/berkas/{uuid}", tag: "RPL: Pengajuan", sum: "Pengalaman pemohon RPL: unduh lampiran", sc: ["rpl:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/rpl/pengalaman", k: "id", d: "/v1/rpl/pengalaman/{id}" } }, rq: 1, ds: "ID angka atau UUID" }, { nm: "uuid", in: "path", s: { t: "string" }, rq: 1, ds: "UUID berkas" }], r: "object" }, deleteRplPengalamanByIdBerkasByUuid: { id: "deleteRplPengalamanByIdBerkasByUuid", m: "DELETE", path: "/v1/rpl/pengalaman/{id}/berkas/{uuid}", tag: "RPL: Pengajuan", sum: "Pengalaman pemohon RPL: hapus lampiran", ds: "Pengelola modul.", sc: ["rpl:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/rpl/pengalaman", k: "id", d: "/v1/rpl/pengalaman/{id}" } }, rq: 1, ds: "ID angka atau UUID" }, { nm: "uuid", in: "path", s: { t: "string" }, rq: 1, ds: "UUID berkas" }], r: "none" }, getRplDokumen: { id: "getRplDokumen", m: "GET", path: "/v1/rpl/dokumen", tag: "RPL: Pengajuan", sum: "Dokumen bukti RPL: daftar", ds: "Dokumen bukti (CV, ijazah, transkrip, sertifikat, surat keterangan kerja, portofolio, silabus). File diunggah ke /rpl/dokumen/{id}/berkas. Pengelola memvalidasi (aksi valid/tidak-valid). Hanya pengelola modul.", sc: ["rpl: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: "pengajuan_id", in: "query", s: { t: "string", rf: { l: "/v1/rpl/pengajuan", k: "id", d: "/v1/rpl/pengajuan/{id}" } }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "pengalaman_id", in: "query", s: { t: "string", rf: { l: "/v1/rpl/pengalaman", k: "id", d: "/v1/rpl/pengalaman/{id}" } }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "jenis", 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 judul" }, { 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: "RplDokumen" }, postRplDokumen: { id: "postRplDokumen", m: "POST", path: "/v1/rpl/dokumen", tag: "RPL: Pengajuan", sum: "Dokumen bukti RPL: tambah", ds: "Pengelola modul.", sc: ["rpl:write"], oleh: "pengelola", b: { ct: "application/json", ref: "RplDokumenInput", s: { t: "object", pr: { pengajuan_id: { t: "integer", ds: "ID di rpl_pengajuan", rf: { l: "/v1/rpl/pengajuan", k: "id", d: "/v1/rpl/pengajuan/{id}" } }, pengalaman_id: { t: "integer", ds: "ID di rpl_pengalaman", rf: { l: "/v1/rpl/pengalaman", k: "id", d: "/v1/rpl/pengalaman/{id}" } }, jenis: { t: "string", e: ["cv", "ijazah", "transkrip", "sertifikat", "surat_keterangan_kerja", "portofolio", "silabus", "lainnya"] }, judul: { t: "string", max: 200 }, catatan: { t: "string", ds: "(hanya pengelola)" } }, rq: ["pengajuan_id", "jenis", "judul"] }, rq: 1 }, r: "object", it: "RplDokumen" }, getRplDokumenById: { id: "getRplDokumenById", m: "GET", path: "/v1/rpl/dokumen/{id}", tag: "RPL: Pengajuan", sum: "Dokumen bukti RPL: detail", ds: "Dokumen bukti (CV, ijazah, transkrip, sertifikat, surat keterangan kerja, portofolio, silabus). File diunggah ke /rpl/dokumen/{id}/berkas. Pengelola memvalidasi (aksi valid/tidak-valid). Hanya pengelola modul.", sc: ["rpl:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/rpl/dokumen", k: "id", d: "/v1/rpl/dokumen/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "RplDokumen" }, putRplDokumenById: { id: "putRplDokumenById", m: "PUT", path: "/v1/rpl/dokumen/{id}", tag: "RPL: Pengajuan", sum: "Dokumen bukti RPL: ubah", ds: "Pengelola modul. Kolom yang tidak dikirim tidak berubah.", sc: ["rpl:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/rpl/dokumen", k: "id", d: "/v1/rpl/dokumen/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "RplDokumenInput", s: { t: "object", pr: { pengajuan_id: { t: "integer", ds: "ID di rpl_pengajuan", rf: { l: "/v1/rpl/pengajuan", k: "id", d: "/v1/rpl/pengajuan/{id}" } }, pengalaman_id: { t: "integer", ds: "ID di rpl_pengalaman", rf: { l: "/v1/rpl/pengalaman", k: "id", d: "/v1/rpl/pengalaman/{id}" } }, jenis: { t: "string", e: ["cv", "ijazah", "transkrip", "sertifikat", "surat_keterangan_kerja", "portofolio", "silabus", "lainnya"] }, judul: { t: "string", max: 200 }, catatan: { t: "string", ds: "(hanya pengelola)" } }, rq: ["pengajuan_id", "jenis", "judul"] }, rq: 1 }, r: "object", it: "RplDokumen" }, deleteRplDokumenById: { id: "deleteRplDokumenById", m: "DELETE", path: "/v1/rpl/dokumen/{id}", tag: "RPL: Pengajuan", sum: "Dokumen bukti RPL: hapus", ds: "Pengelola modul.", sc: ["rpl:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/rpl/dokumen", k: "id", d: "/v1/rpl/dokumen/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "none" }, getRplDokumenByIdBerkas: { id: "getRplDokumenByIdBerkas", m: "GET", path: "/v1/rpl/dokumen/{id}/berkas", tag: "RPL: Pengajuan", sum: "Dokumen bukti RPL: daftar lampiran", ds: "Siapa pun yang boleh melihat barisnya.", sc: ["rpl:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/rpl/dokumen", k: "id", d: "/v1/rpl/dokumen/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "list", it: "PusatBerkas" }, postRplDokumenByIdBerkas: { id: "postRplDokumenByIdBerkas", m: "POST", path: "/v1/rpl/dokumen/{id}/berkas", tag: "RPL: Pengajuan", sum: "Dokumen bukti RPL: unggah lampiran", ds: 'Multipart field "berkas" (atau JSON berkas_base64 + nama_file), opsional jenis dan keterangan. PDF, gambar, dokumen Office/ODF, CSV, TXT, ZIP; maksimal PUSAT_DATA_MAKS_MB (bawaan 20 MB). Pengelola modul.', sc: ["rpl:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/rpl/dokumen", k: "id", d: "/v1/rpl/dokumen/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "multipart/form-data", ref: "PusatBerkasInput", s: { t: "object", pr: { berkas: { t: "string", f: "binary" }, jenis: { t: "string", ds: "Mis. lampiran, bukti, laporan" }, keterangan: { t: "string" }, berkas_base64: { t: "string", ds: "Alternatif JSON" }, nama_file: { t: "string" } } }, rq: 1 }, r: "object", it: "PusatBerkas" }, getRplDokumenByIdBerkasByUuid: { id: "getRplDokumenByIdBerkasByUuid", m: "GET", path: "/v1/rpl/dokumen/{id}/berkas/{uuid}", tag: "RPL: Pengajuan", sum: "Dokumen bukti RPL: unduh lampiran", sc: ["rpl:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/rpl/dokumen", k: "id", d: "/v1/rpl/dokumen/{id}" } }, rq: 1, ds: "ID angka atau UUID" }, { nm: "uuid", in: "path", s: { t: "string" }, rq: 1, ds: "UUID berkas" }], r: "object" }, deleteRplDokumenByIdBerkasByUuid: { id: "deleteRplDokumenByIdBerkasByUuid", m: "DELETE", path: "/v1/rpl/dokumen/{id}/berkas/{uuid}", tag: "RPL: Pengajuan", sum: "Dokumen bukti RPL: hapus lampiran", ds: "Pengelola modul.", sc: ["rpl:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/rpl/dokumen", k: "id", d: "/v1/rpl/dokumen/{id}" } }, rq: 1, ds: "ID angka atau UUID" }, { nm: "uuid", in: "path", s: { t: "string" }, rq: 1, ds: "UUID berkas" }], r: "none" }, postRplDokumenByIdValid: { id: "postRplDokumenByIdValid", m: "POST", path: "/v1/rpl/dokumen/{id}/valid", tag: "RPL: Pengajuan", sum: "Dokumen bukti RPL: Nyatakan valid", ds: "Pengelola modul. Status harus diajukan/tidak_valid, menjadi valid.", sc: ["rpl:write"], tr: { dari: ["diajukan", "tidak_valid"], ke: "valid" }, oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/rpl/dokumen", k: "id", d: "/v1/rpl/dokumen/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "RplDokumenValidInput", s: { t: "object", pr: { catatan: { t: "string", max: 1e3 } } }, rq: 1 }, r: "object", it: "RplDokumen" }, postRplDokumenByIdTidakValid: { id: "postRplDokumenByIdTidakValid", m: "POST", path: "/v1/rpl/dokumen/{id}/tidak-valid", tag: "RPL: Pengajuan", sum: "Dokumen bukti RPL: Nyatakan tidak valid", ds: "Pengelola modul. Status harus diajukan/valid, menjadi tidak_valid.", sc: ["rpl:write"], tr: { dari: ["diajukan", "valid"], ke: "tidak_valid" }, oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/rpl/dokumen", k: "id", d: "/v1/rpl/dokumen/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "RplDokumenTidakValidInput", s: { t: "object", pr: { catatan: { t: "string", max: 1e3 } }, rq: ["catatan"] }, rq: 1 }, r: "object", it: "RplDokumen" }, getRplKlaim: { id: "getRplKlaim", m: "GET", path: "/v1/rpl/klaim", tag: "RPL: Asesmen", sum: "Mata kuliah yang diklaim: daftar", ds: "Mata kuliah prodi tujuan (m_mata_kuliah.id) yang diklaim pemohon, dengan padanan mata kuliah asal (transfer kredit) atau asesmen mandiri dan uraian bukti (perolehan kredit). nilai_akhir, nilai_huruf, dan status diisi oleh POST /rpl/pengajuan/{id}/hitung dan /tetapkan. Hanya pengelola modul.", sc: ["rpl: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: "pengajuan_id", in: "query", s: { t: "string", rf: { l: "/v1/rpl/pengajuan", k: "id", d: "/v1/rpl/pengajuan/{id}" } }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "asesmen_mandiri", 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 kode_mk, nama_mk, nama_mk_asal" }, { 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: "RplKlaim" }, postRplKlaim: { id: "postRplKlaim", m: "POST", path: "/v1/rpl/klaim", tag: "RPL: Asesmen", sum: "Mata kuliah yang diklaim: tambah", ds: "Pengelola modul.", sc: ["rpl:write"], oleh: "pengelola", b: { ct: "application/json", ref: "RplKlaimInput", s: { t: "object", pr: { pengajuan_id: { t: "integer", ds: "ID di rpl_pengajuan", rf: { l: "/v1/rpl/pengajuan", k: "id", d: "/v1/rpl/pengajuan/{id}" } }, id_mk: { t: "integer", min: 1, mx: 2147483647 }, kode_mk_asal: { t: "string", max: 30, p: "^[A-Za-z0-9._\\-/]+$" }, nama_mk_asal: { t: "string", max: 200 }, sks_asal: { t: "integer", min: 0, mx: 30 }, nilai_asal: { t: "string", max: 5, p: "^[A-Za-z0-9._\\-/]+$" }, asesmen_mandiri: { t: "string", e: ["sangat_baik", "baik", "cukup", "tidak_pernah"] }, bukti: { t: "string" }, catatan: { t: "string", ds: "(hanya pengelola)" } }, rq: ["pengajuan_id", "id_mk"] }, rq: 1 }, r: "object", it: "RplKlaim" }, getRplKlaimById: { id: "getRplKlaimById", m: "GET", path: "/v1/rpl/klaim/{id}", tag: "RPL: Asesmen", sum: "Mata kuliah yang diklaim: detail", ds: "Mata kuliah prodi tujuan (m_mata_kuliah.id) yang diklaim pemohon, dengan padanan mata kuliah asal (transfer kredit) atau asesmen mandiri dan uraian bukti (perolehan kredit). nilai_akhir, nilai_huruf, dan status diisi oleh POST /rpl/pengajuan/{id}/hitung dan /tetapkan. Hanya pengelola modul.", sc: ["rpl:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/rpl/klaim", k: "id", d: "/v1/rpl/klaim/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "RplKlaim" }, putRplKlaimById: { id: "putRplKlaimById", m: "PUT", path: "/v1/rpl/klaim/{id}", tag: "RPL: Asesmen", sum: "Mata kuliah yang diklaim: ubah", ds: "Pengelola modul. Kolom yang tidak dikirim tidak berubah.", sc: ["rpl:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/rpl/klaim", k: "id", d: "/v1/rpl/klaim/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "RplKlaimInput", s: { t: "object", pr: { pengajuan_id: { t: "integer", ds: "ID di rpl_pengajuan", rf: { l: "/v1/rpl/pengajuan", k: "id", d: "/v1/rpl/pengajuan/{id}" } }, id_mk: { t: "integer", min: 1, mx: 2147483647 }, kode_mk_asal: { t: "string", max: 30, p: "^[A-Za-z0-9._\\-/]+$" }, nama_mk_asal: { t: "string", max: 200 }, sks_asal: { t: "integer", min: 0, mx: 30 }, nilai_asal: { t: "string", max: 5, p: "^[A-Za-z0-9._\\-/]+$" }, asesmen_mandiri: { t: "string", e: ["sangat_baik", "baik", "cukup", "tidak_pernah"] }, bukti: { t: "string" }, catatan: { t: "string", ds: "(hanya pengelola)" } }, rq: ["pengajuan_id", "id_mk"] }, rq: 1 }, r: "object", it: "RplKlaim" }, deleteRplKlaimById: { id: "deleteRplKlaimById", m: "DELETE", path: "/v1/rpl/klaim/{id}", tag: "RPL: Asesmen", sum: "Mata kuliah yang diklaim: hapus", ds: "Pengelola modul.", sc: ["rpl:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/rpl/klaim", k: "id", d: "/v1/rpl/klaim/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "none" }, getRplPenugasan: { id: "getRplPenugasan", m: "GET", path: "/v1/rpl/penugasan", tag: "RPL: Asesmen", sum: "Penugasan asesor: daftar", ds: "Asesor yang menilai satu pengajuan (ketua/anggota). Asesor diberi kabar di SIAKAD. Hanya pengelola modul.", sc: ["rpl: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: "pengajuan_id", in: "query", s: { t: "string", rf: { l: "/v1/rpl/pengajuan", k: "id", d: "/v1/rpl/pengajuan/{id}" } }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "asesor_id", in: "query", s: { t: "string", rf: { l: "/v1/rpl/asesor", k: "id", d: "/v1/rpl/asesor/{id}" } }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "peran", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { 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: "RplPenugasan" }, postRplPenugasan: { id: "postRplPenugasan", m: "POST", path: "/v1/rpl/penugasan", tag: "RPL: Asesmen", sum: "Penugasan asesor: tambah", ds: "Pengelola modul.", sc: ["rpl:write"], oleh: "pengelola", b: { ct: "application/json", ref: "RplPenugasanInput", s: { t: "object", pr: { pengajuan_id: { t: "integer", ds: "ID di rpl_pengajuan", rf: { l: "/v1/rpl/pengajuan", k: "id", d: "/v1/rpl/pengajuan/{id}" } }, asesor_id: { t: "integer", ds: "ID di rpl_asesor", rf: { l: "/v1/rpl/asesor", k: "id", d: "/v1/rpl/asesor/{id}" } }, peran: { t: "string", e: ["ketua", "anggota"], d: "anggota" } }, rq: ["pengajuan_id", "asesor_id"] }, rq: 1 }, r: "object", it: "RplPenugasan" }, getRplPenugasanById: { id: "getRplPenugasanById", m: "GET", path: "/v1/rpl/penugasan/{id}", tag: "RPL: Asesmen", sum: "Penugasan asesor: detail", ds: "Asesor yang menilai satu pengajuan (ketua/anggota). Asesor diberi kabar di SIAKAD. Hanya pengelola modul.", sc: ["rpl:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/rpl/penugasan", k: "id", d: "/v1/rpl/penugasan/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "RplPenugasan" }, putRplPenugasanById: { id: "putRplPenugasanById", m: "PUT", path: "/v1/rpl/penugasan/{id}", tag: "RPL: Asesmen", sum: "Penugasan asesor: ubah", ds: "Pengelola modul. Kolom yang tidak dikirim tidak berubah.", sc: ["rpl:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/rpl/penugasan", k: "id", d: "/v1/rpl/penugasan/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "RplPenugasanInput", s: { t: "object", pr: { pengajuan_id: { t: "integer", ds: "ID di rpl_pengajuan", rf: { l: "/v1/rpl/pengajuan", k: "id", d: "/v1/rpl/pengajuan/{id}" } }, asesor_id: { t: "integer", ds: "ID di rpl_asesor", rf: { l: "/v1/rpl/asesor", k: "id", d: "/v1/rpl/asesor/{id}" } }, peran: { t: "string", e: ["ketua", "anggota"], d: "anggota" } }, rq: ["pengajuan_id", "asesor_id"] }, rq: 1 }, r: "object", it: "RplPenugasan" }, deleteRplPenugasanById: { id: "deleteRplPenugasanById", m: "DELETE", path: "/v1/rpl/penugasan/{id}", tag: "RPL: Asesmen", sum: "Penugasan asesor: hapus", ds: "Pengelola modul.", sc: ["rpl:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/rpl/penugasan", k: "id", d: "/v1/rpl/penugasan/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "none" }, getRplNilai: { id: "getRplNilai", m: "GET", path: "/v1/rpl/nilai", tag: "RPL: Asesmen", sum: "Nilai asesor: daftar", ds: "Nilai 0-100 per mata kuliah klaim, asesor, dan komponen penilaian. Asesor hanya mengisi nilainya sendiri (asesor_id otomatis) selama pengajuan berstatus asesmen. Isi banyak sekaligus: POST /rpl/pengajuan/{id}/nilai. Hanya pengelola modul.", sc: ["rpl: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: "klaim_id", in: "query", s: { t: "string", rf: { l: "/v1/rpl/klaim", k: "id", d: "/v1/rpl/klaim/{id}" } }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "asesor_id", in: "query", s: { t: "string", rf: { l: "/v1/rpl/asesor", k: "id", d: "/v1/rpl/asesor/{id}" } }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "komponen_id", in: "query", s: { t: "string", rf: { l: "/v1/rpl/komponen", k: "id", d: "/v1/rpl/komponen/{id}" } }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { 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: "RplNilai" }, postRplNilai: { id: "postRplNilai", m: "POST", path: "/v1/rpl/nilai", tag: "RPL: Asesmen", sum: "Nilai asesor: tambah", ds: "Pengelola modul.", sc: ["rpl:write"], oleh: "pengelola", b: { ct: "application/json", ref: "RplNilaiInput", s: { t: "object", pr: { klaim_id: { t: "integer", ds: "ID di rpl_klaim", rf: { l: "/v1/rpl/klaim", k: "id", d: "/v1/rpl/klaim/{id}" } }, asesor_id: { t: "integer", ds: "ID di rpl_asesor", rf: { l: "/v1/rpl/asesor", k: "id", d: "/v1/rpl/asesor/{id}" } }, komponen_id: { t: "integer", ds: "ID di rpl_komponen", rf: { l: "/v1/rpl/komponen", k: "id", d: "/v1/rpl/komponen/{id}" } }, nilai: { t: "number" }, catatan: { t: "string" } }, rq: ["klaim_id", "komponen_id", "nilai"] }, rq: 1 }, r: "object", it: "RplNilai" }, getRplNilaiById: { id: "getRplNilaiById", m: "GET", path: "/v1/rpl/nilai/{id}", tag: "RPL: Asesmen", sum: "Nilai asesor: detail", ds: "Nilai 0-100 per mata kuliah klaim, asesor, dan komponen penilaian. Asesor hanya mengisi nilainya sendiri (asesor_id otomatis) selama pengajuan berstatus asesmen. Isi banyak sekaligus: POST /rpl/pengajuan/{id}/nilai. Hanya pengelola modul.", sc: ["rpl:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/rpl/nilai", k: "id", d: "/v1/rpl/nilai/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "RplNilai" }, putRplNilaiById: { id: "putRplNilaiById", m: "PUT", path: "/v1/rpl/nilai/{id}", tag: "RPL: Asesmen", sum: "Nilai asesor: ubah", ds: "Pengelola modul. Kolom yang tidak dikirim tidak berubah.", sc: ["rpl:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/rpl/nilai", k: "id", d: "/v1/rpl/nilai/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "RplNilaiInput", s: { t: "object", pr: { klaim_id: { t: "integer", ds: "ID di rpl_klaim", rf: { l: "/v1/rpl/klaim", k: "id", d: "/v1/rpl/klaim/{id}" } }, asesor_id: { t: "integer", ds: "ID di rpl_asesor", rf: { l: "/v1/rpl/asesor", k: "id", d: "/v1/rpl/asesor/{id}" } }, komponen_id: { t: "integer", ds: "ID di rpl_komponen", rf: { l: "/v1/rpl/komponen", k: "id", d: "/v1/rpl/komponen/{id}" } }, nilai: { t: "number" }, catatan: { t: "string" } }, rq: ["klaim_id", "komponen_id", "nilai"] }, rq: 1 }, r: "object", it: "RplNilai" }, deleteRplNilaiById: { id: "deleteRplNilaiById", m: "DELETE", path: "/v1/rpl/nilai/{id}", tag: "RPL: Asesmen", sum: "Nilai asesor: hapus", ds: "Pengelola modul.", sc: ["rpl:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/rpl/nilai", k: "id", d: "/v1/rpl/nilai/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "none" } };
6
+ var mandiri = ["getRplSaya", "postRplSayaPengajuan", "postRplSayaPengajuanByIdPengalaman", "postRplSayaPengajuanByIdKlaim", "postRplSayaPengajuanByIdDokumen", "postRplSayaPengajuanByIdByJenisByAnakHapus", "postRplSayaPengajuanByIdAjukan"];
7
+ var skema = { Objek: { t: "object", ds: "Baris data dengan nama kolom huruf kecil sesuai tabel SIAKAD." }, RplSkema: { t: "object", ds: "Skema RPL (tabel rpl_skema)", pr: { id: { t: "integer" }, kode_prodi: { t: "string", ds: "m_program_studi.kode_prodi" }, tipe: { t: "string", e: ["transfer_kredit", "perolehan_kredit"], d: "perolehan_kredit" }, nama: { t: "string", max: 150 }, keterangan: { t: "string" }, sks_maks: { t: "integer", min: 0, mx: 200 }, nilai_lulus: { t: "number", d: "56" }, tahun_id: { t: "string", ds: "m_tahun.tahun_id" }, aktif: { t: "boolean", d: "1" }, created_at: { t: "string", n: 1, f: "date-time" }, updated_at: { t: "string", n: 1, f: "date-time" } } }, RplKomponen: { t: "object", ds: "Komposisi penilaian RPL (tabel rpl_komponen)", pr: { id: { t: "integer" }, skema_id: { t: "integer", ds: "ID di rpl_skema" }, nama: { t: "string", max: 100 }, bobot: { t: "number" }, urutan: { t: "integer", min: 0, mx: 100, d: "0" }, created_at: { t: "string", n: 1, f: "date-time" }, updated_at: { t: "string", n: 1, f: "date-time" } } }, RplAsesor: { t: "object", ds: "Asesor RPL (tabel rpl_asesor)", pr: { id: { t: "integer" }, nidn: { t: "string", ds: "m_dosen.NIDN" }, username: { t: "string", ds: "user.username" }, nama: { t: "string", max: 150 }, kode_prodi: { t: "string", ds: "m_program_studi.kode_prodi" }, bidang: { t: "string", max: 150 }, nomor_sertifikat: { t: "string", max: 100 }, instansi: { t: "string", max: 150 }, aktif: { t: "boolean", d: "1" }, created_at: { t: "string", n: 1, f: "date-time" }, updated_at: { t: "string", n: 1, f: "date-time" } } }, RplPengajuan: { t: "object", ds: "Pengajuan RPL (tabel rpl_pengajuan)", pr: { id: { t: "integer" }, skema_id: { t: "integer", ds: "ID di rpl_skema" }, kode_prodi: { t: "string", ds: "m_program_studi.kode_prodi (hanya baca)", ro: 1 }, pmb_pendaftaran_id: { t: "integer", min: 1, mx: 2147483647 }, no_pmb: { t: "string", max: 10, p: "^[A-Za-z0-9._\\-/]+$", ds: "(hanya baca)", ro: 1 }, nim: { t: "string", ds: "m_mahasiswa.NIM (hanya baca)", ro: 1 }, nama: { t: "string", max: 150 }, email: { t: "string", f: "email" }, hp: { t: "string" }, asal_pt: { t: "string", max: 150 }, asal_prodi: { t: "string", max: 150 }, ringkasan: { t: "string" }, status: { t: "string", e: ["draf", "diajukan", "asesmen", "ditetapkan", "ditolak", "batal"], ds: "(hanya baca)", ro: 1 }, sks_diakui: { t: "integer", min: 0, mx: 300, ds: "(hanya baca)", ro: 1 }, nomor_sk: { t: "string", max: 100, ds: "(hanya baca)", ro: 1 }, tanggal_sk: { t: "string", f: "date", ds: "(hanya baca)", ro: 1 }, diintegrasi_at: { t: "string", f: "date-time", ds: "(hanya baca)", ro: 1 }, catatan: { t: "string", ds: "(hanya pengelola)" }, diputus_oleh: { t: "string", max: 60, ds: "(hanya baca)", ro: 1 }, diputus_at: { t: "string", f: "date-time", ds: "(hanya baca)", ro: 1 }, created_at: { t: "string", n: 1, f: "date-time" }, updated_at: { t: "string", n: 1, f: "date-time" } } }, RplPengalaman: { t: "object", ds: "Pengalaman pemohon RPL (tabel rpl_pengalaman)", pr: { id: { t: "integer" }, pengajuan_id: { t: "integer", ds: "ID di rpl_pengajuan" }, jenis: { t: "string", e: ["kerja", "pelatihan", "sertifikasi", "pendidikan_formal", "pendidikan_nonformal", "organisasi", "karya", "lainnya"] }, judul: { t: "string", max: 200 }, instansi: { t: "string", max: 200 }, mulai: { t: "string", f: "date" }, selesai: { t: "string", f: "date" }, durasi_jam: { t: "integer", min: 0, mx: 6e4 }, uraian: { t: "string" }, created_at: { t: "string", n: 1, f: "date-time" }, updated_at: { t: "string", n: 1, f: "date-time" } } }, PusatBerkas: { t: "object", pr: { uuid: { t: "string" }, jenis: { t: "string" }, nama: { t: "string" }, mime: { t: "string" }, ukuran: { t: "integer" }, sha256: { t: "string" }, keterangan: { t: "string", n: 1 }, diunggah_oleh: { t: "string" }, created_at: { t: "string", f: "date-time" } } }, RplDokumen: { t: "object", ds: "Dokumen bukti RPL (tabel rpl_dokumen)", pr: { id: { t: "integer" }, pengajuan_id: { t: "integer", ds: "ID di rpl_pengajuan" }, pengalaman_id: { t: "integer", ds: "ID di rpl_pengalaman" }, jenis: { t: "string", e: ["cv", "ijazah", "transkrip", "sertifikat", "surat_keterangan_kerja", "portofolio", "silabus", "lainnya"] }, judul: { t: "string", max: 200 }, status: { t: "string", e: ["diajukan", "valid", "tidak_valid"], ds: "(hanya baca)", ro: 1 }, catatan: { t: "string", ds: "(hanya pengelola)" }, created_at: { t: "string", n: 1, f: "date-time" }, updated_at: { t: "string", n: 1, f: "date-time" } } }, RplKlaim: { t: "object", ds: "Mata kuliah yang diklaim (tabel rpl_klaim)", pr: { id: { t: "integer" }, pengajuan_id: { t: "integer", ds: "ID di rpl_pengajuan" }, id_mk: { t: "integer", min: 1, mx: 2147483647 }, kode_mk: { t: "string", max: 20, p: "^[A-Za-z0-9._\\-/]+$", ds: "(hanya baca)", ro: 1 }, nama_mk: { t: "string", max: 200, ds: "(hanya baca)", ro: 1 }, sks: { t: "integer", min: 0, mx: 30, ds: "(hanya baca)", ro: 1 }, kode_mk_asal: { t: "string", max: 30, p: "^[A-Za-z0-9._\\-/]+$" }, nama_mk_asal: { t: "string", max: 200 }, sks_asal: { t: "integer", min: 0, mx: 30 }, nilai_asal: { t: "string", max: 5, p: "^[A-Za-z0-9._\\-/]+$" }, asesmen_mandiri: { t: "string", e: ["sangat_baik", "baik", "cukup", "tidak_pernah"] }, bukti: { t: "string" }, nilai_akhir: { t: "number", ds: "(hanya baca)", ro: 1 }, nilai_huruf: { t: "string", max: 5, ds: "(hanya baca)", ro: 1 }, status: { t: "string", e: ["diklaim", "diakui", "tidak_diakui"], ds: "(hanya baca)", ro: 1 }, catatan: { t: "string", ds: "(hanya pengelola)" }, created_at: { t: "string", n: 1, f: "date-time" }, updated_at: { t: "string", n: 1, f: "date-time" } } }, RplPenugasan: { t: "object", ds: "Penugasan asesor (tabel rpl_penugasan)", pr: { id: { t: "integer" }, pengajuan_id: { t: "integer", ds: "ID di rpl_pengajuan" }, asesor_id: { t: "integer", ds: "ID di rpl_asesor" }, peran: { t: "string", e: ["ketua", "anggota"], d: "anggota" }, created_at: { t: "string", n: 1, f: "date-time" }, updated_at: { t: "string", n: 1, f: "date-time" } } }, RplNilai: { t: "object", ds: "Nilai asesor (tabel rpl_nilai)", pr: { id: { t: "integer" }, klaim_id: { t: "integer", ds: "ID di rpl_klaim" }, asesor_id: { t: "integer", ds: "ID di rpl_asesor" }, komponen_id: { t: "integer", ds: "ID di rpl_komponen" }, nilai: { t: "number" }, catatan: { t: "string" }, created_at: { t: "string", n: 1, f: "date-time" }, updated_at: { t: "string", n: 1, f: "date-time" } } } };
8
+ var rpl_default = { key, resources, ops, mandiri, skema };
9
+
10
+ export { rpl_default as default, key, mandiri, ops, resources, skema };
11
+ //# sourceMappingURL=rpl-2ZXHNSPF.js.map