unipo-ui 1.2.0 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cli/index.mjs +53 -4
- package/dist/EditorBlok-CarZErBW.d.cts +155 -0
- package/dist/EditorBlok-CarZErBW.d.ts +155 -0
- package/dist/admisi-LKPO7LCR.js +11 -0
- package/dist/admisi-U6YYQGBB.cjs +20 -0
- package/dist/akademik-3DFVHKUD.cjs +20 -0
- package/dist/akademik-IXTTJMVD.js +11 -0
- package/dist/akses-AUPQD6YN.cjs +20 -0
- package/dist/akses-V5XIMBWT.js +11 -0
- package/dist/arsip-23P44PGP.cjs +20 -0
- package/dist/arsip-NZFZOTY7.js +11 -0
- package/dist/cbt-4N6COVIN.js +11 -0
- package/dist/cbt-GMQSR7TP.cjs +20 -0
- package/dist/chunk-3O5ELKBH.cjs +18 -0
- package/dist/chunk-3O5ELKBH.cjs.map +1 -0
- package/dist/chunk-BCHB7R6D.cjs +614 -0
- package/dist/chunk-BCHB7R6D.cjs.map +1 -0
- package/dist/chunk-BRARGLUX.js +462 -0
- package/dist/chunk-BRARGLUX.js.map +1 -0
- package/dist/chunk-CIVK5JDV.cjs +150 -0
- package/dist/chunk-CIVK5JDV.cjs.map +1 -0
- package/dist/{chunk-SJ4DJOMZ.js → chunk-DHQFANBE.js} +178 -1557
- package/dist/chunk-DHQFANBE.js.map +1 -0
- package/dist/chunk-JSUHAYQ4.js +15 -0
- package/dist/chunk-JSUHAYQ4.js.map +1 -0
- package/dist/chunk-LTADAXBH.cjs +510 -0
- package/dist/chunk-LTADAXBH.cjs.map +1 -0
- package/dist/chunk-NCRYPHOJ.cjs +2276 -0
- package/dist/chunk-NCRYPHOJ.cjs.map +1 -0
- package/dist/chunk-PC4G2C4M.js +1007 -0
- package/dist/chunk-PC4G2C4M.js.map +1 -0
- package/dist/chunk-PYMN25WD.js +2176 -0
- package/dist/chunk-PYMN25WD.js.map +1 -0
- package/dist/chunk-PYYLKWNZ.js +537 -0
- package/dist/chunk-PYYLKWNZ.js.map +1 -0
- package/dist/chunk-QHVQ6R55.cjs +1059 -0
- package/dist/chunk-QHVQ6R55.cjs.map +1 -0
- package/dist/chunk-TITKMSUS.cjs +2186 -0
- package/dist/chunk-TITKMSUS.cjs.map +1 -0
- package/dist/chunk-UA6AUXMY.js +122 -0
- package/dist/chunk-UA6AUXMY.js.map +1 -0
- package/dist/crm-C4XGSG6O.js +11 -0
- package/dist/crm-LTVCDNMK.cjs +20 -0
- package/dist/dasbor-OJLMSFTF.cjs +20 -0
- package/dist/dasbor-Y3UPFYFE.js +11 -0
- package/dist/editor.cjs +2050 -0
- package/dist/editor.cjs.map +1 -0
- package/dist/editor.d.cts +202 -0
- package/dist/editor.d.ts +202 -0
- package/dist/editor.js +1986 -0
- package/dist/editor.js.map +1 -0
- package/dist/edom-3GZUUB7H.cjs +20 -0
- package/dist/edom-K4Y2NV4K.js +11 -0
- package/dist/fakultas-DJRUVJBV.js +11 -0
- package/dist/fakultas-VVAQOPUX.cjs +20 -0
- package/dist/filter-D54KALbB.d.cts +436 -0
- package/dist/filter-D54KALbB.d.ts +436 -0
- package/dist/helpdesk-LV65LM5V.js +11 -0
- package/dist/helpdesk-S7GAHYXG.cjs +20 -0
- package/dist/humas-7BMMJ3WF.js +11 -0
- package/dist/humas-H56JFUW6.cjs +20 -0
- package/dist/ikon.cjs +125 -0
- package/dist/ikon.cjs.map +1 -0
- package/dist/ikon.d.cts +140 -0
- package/dist/ikon.d.ts +140 -0
- package/dist/ikon.js +6 -0
- package/dist/ikon.js.map +1 -0
- package/dist/iku-CJG75NAT.cjs +20 -0
- package/dist/iku-XFGUJ6CX.js +11 -0
- package/dist/index.cjs +601 -313
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +192 -2
- package/dist/index.d.ts +192 -2
- package/dist/index.js +128 -4
- package/dist/index.js.map +1 -1
- package/dist/induk-BGTGKRLL.js +11 -0
- package/dist/induk-DLYDMZAM.cjs +20 -0
- package/dist/integrasi-4VXNGA3V.cjs +20 -0
- package/dist/integrasi-IP3WWDO7.js +11 -0
- package/dist/kalender-NZH7F2LO.js +11 -0
- package/dist/kalender-SD7EUASC.cjs +20 -0
- package/dist/karier-BDPZONV6.cjs +20 -0
- package/dist/karier-VHUJKKD6.js +11 -0
- package/dist/katalog.cjs +1806 -0
- package/dist/katalog.cjs.map +1 -0
- package/dist/katalog.d.cts +650 -0
- package/dist/katalog.d.ts +650 -0
- package/dist/katalog.js +1721 -0
- package/dist/katalog.js.map +1 -0
- package/dist/kelulusan-3QCPPC3D.js +11 -0
- package/dist/kelulusan-X7DYJN6T.cjs +20 -0
- package/dist/kemahasiswaan-JNCMH3HR.js +11 -0
- package/dist/kemahasiswaan-MQYXEVKE.cjs +20 -0
- package/dist/kerjasama-KYHEBSLX.cjs +20 -0
- package/dist/kerjasama-QSZ5X4OB.js +11 -0
- package/dist/keu-6H5WH6A4.js +11 -0
- package/dist/keu-MIJRVMGW.cjs +20 -0
- package/dist/kurikulum-SRO7TJYI.cjs +20 -0
- package/dist/kurikulum-XT7PZJOK.js +11 -0
- package/dist/layanan-H25JKJKC.js +11 -0
- package/dist/layanan-XR75P7YX.cjs +20 -0
- package/dist/lms-2ZCH273D.cjs +20 -0
- package/dist/lms-MFXFO2AZ.js +11 -0
- package/dist/lppm-B7ECUONV.js +11 -0
- package/dist/lppm-QEQKZXCY.cjs +20 -0
- package/dist/master-GKTTAKLF.cjs +20 -0
- package/dist/master-ZG4SPPDU.js +11 -0
- package/dist/mbkm-737Q4WFQ.js +11 -0
- package/dist/mbkm-GMNFIFDS.cjs +20 -0
- package/dist/notifikasi-FMA26M4I.js +11 -0
- package/dist/notifikasi-QDCYIX7G.cjs +20 -0
- package/dist/pddikti-RJVYY2J4.cjs +20 -0
- package/dist/pddikti-VF2PXDKA.js +11 -0
- package/dist/{content-DaJPx5LX.d.cts → pemeliharaan-D5S-1lqW.d.ts} +38 -434
- package/dist/{content-DaJPx5LX.d.ts → pemeliharaan-Dr0HSxvZ.d.cts} +38 -434
- package/dist/perpustakaan-5RL33XG2.js +11 -0
- package/dist/perpustakaan-JXZW43MJ.cjs +20 -0
- package/dist/pilih-BEes_D3n.d.cts +205 -0
- package/dist/pilih-CEKqXMUS.d.ts +205 -0
- package/dist/pmb-EGTWW2ZH.cjs +20 -0
- package/dist/pmb-G7EAFJ3R.js +11 -0
- package/dist/portal-5LCG6IP3.cjs +20 -0
- package/dist/portal-NYR3OIU4.js +11 -0
- package/dist/portal-api-BJLO6AGI.js +11 -0
- package/dist/portal-api-Q6B3X6ZV.cjs +20 -0
- package/dist/profil-FA2WXZR5.js +11 -0
- package/dist/profil-J4DRC6LS.cjs +20 -0
- package/dist/referensi-HNYOJGNX.js +11 -0
- package/dist/referensi-VOT5BRCL.cjs +20 -0
- package/dist/registry.json +996 -4
- package/dist/repositori-4GHBDDQA.js +11 -0
- package/dist/repositori-JRDIIPDJ.cjs +20 -0
- package/dist/rpl-4RGI6RNL.js +11 -0
- package/dist/rpl-NBVCZHQF.cjs +20 -0
- package/dist/sarpras-TAF4M2NQ.js +11 -0
- package/dist/sarpras-TXNUAX4Y.cjs +20 -0
- package/dist/scss/components/_animasi.scss +280 -0
- package/dist/scss/components/_editor.scss +1093 -0
- package/dist/scss/components/_ikon.scss +339 -0
- package/dist/scss/components/_katalog.scss +662 -0
- package/dist/scss/components/_konten-blok.scss +413 -0
- package/dist/scss/components/_pilih-berkas.scss +156 -0
- package/dist/scss/components/_platform.scss +364 -0
- package/dist/scss/index.scss +7 -0
- package/dist/sdm-5YKAAV3T.js +11 -0
- package/dist/sdm-IN64PE3T.cjs +20 -0
- package/dist/siakad.cjs +1487 -3078
- package/dist/siakad.cjs.map +1 -1
- package/dist/siakad.d.cts +84 -196
- package/dist/siakad.d.ts +84 -196
- package/dist/siakad.js +473 -2307
- package/dist/siakad.js.map +1 -1
- package/dist/spmi-AXZ5B3EJ.cjs +20 -0
- package/dist/spmi-LMUM2XER.js +11 -0
- package/dist/tracer-UBUAIJEK.js +11 -0
- package/dist/tracer-WWVIA55Q.cjs +20 -0
- package/dist/ui-unipo.css +3505 -0
- package/dist/ui-unipo.min.css +1 -1
- package/package.json +35 -3
- package/src/components/animasi.tsx +186 -0
- package/src/components/modal.tsx +113 -0
- package/src/components/overlays.tsx +6 -1
- package/src/components/pemeliharaan.tsx +152 -0
- package/src/components/platform.tsx +94 -0
- package/src/editor/EditorBerita.tsx +297 -0
- package/src/editor/EditorBlok.tsx +367 -0
- package/src/editor/Kanvas.tsx +322 -0
- package/src/editor/Penyisip.tsx +185 -0
- package/src/editor/TeksSebaris.tsx +190 -0
- package/src/editor/blok/Media.tsx +132 -0
- package/src/editor/blok/Tata.tsx +115 -0
- package/src/editor/blok/Teks.tsx +182 -0
- package/src/editor/blok/index.tsx +212 -0
- package/src/editor/blok/props.ts +24 -0
- package/src/editor/index.ts +10 -0
- package/src/editor/konteks.tsx +58 -0
- package/src/editor/render.ts +232 -0
- package/src/editor/tipe.ts +225 -0
- package/src/ikon/ilustrasi.tsx +283 -0
- package/src/ikon/index.ts +7 -0
- package/src/ikon/kotak.tsx +30 -0
- package/src/ikon/unipo.tsx +326 -0
- package/src/index.ts +8 -0
- package/src/katalog/aturan.ts +515 -0
- package/src/katalog/data/id.ts +749 -0
- package/src/katalog/data/indeks.json +1 -0
- package/src/katalog/data/muat.ts +47 -0
- package/src/katalog/ikon.tsx +11 -0
- package/src/katalog/index.ts +13 -0
- package/src/katalog/isian.tsx +408 -0
- package/src/katalog/katalog.tsx +138 -0
- package/src/katalog/kelola.tsx +690 -0
- package/src/katalog/modul.tsx +336 -0
- package/src/katalog/tampil.tsx +147 -0
- package/src/katalog/tipe.ts +141 -0
- package/src/katalog/wizard.tsx +155 -0
- package/src/lib/platform.ts +91 -0
- package/src/siakad/index.ts +3 -0
- package/src/siakad/media-editor.ts +67 -0
- package/src/siakad/pemeliharaan.tsx +118 -0
- package/src/siakad/pilih-berkas.tsx +292 -0
- package/src/siakad/provider.tsx +2 -0
- package/dist/chunk-DEF5CA7C.cjs +0 -3648
- package/dist/chunk-DEF5CA7C.cjs.map +0 -1
- package/dist/chunk-SJ4DJOMZ.js.map +0 -1
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
5
|
+
|
|
6
|
+
// src/katalog/data/modul/admisi.json
|
|
7
|
+
var key = "admisi";
|
|
8
|
+
var resources = [{ id: "/v1/admisi/chat", tag: "Admisi: Chat dan laporan", title: "Percakapan", base: "/v1/admisi/chat", item: "/v1/admisi/chat/{akun}", key: "akun", list: "getAdmisiChat", get: "getAdmisiChatByAkun", actions: ["postAdmisiChatByAkun"], children: [] }, { id: "/v1/admisi/format-nim", tag: "Admisi: Penerimaan", title: "Format NIM", base: "/v1/admisi/format-nim", item: "/v1/admisi/format-nim/{id}", key: "id", list: "getAdmisiFormatNim", create: "postAdmisiFormatNim", get: "getAdmisiFormatNimById", update: "putAdmisiFormatNimById", del: "deleteAdmisiFormatNimById", actions: [], children: [] }, { id: "/v1/admisi/kip", tag: "Admisi: KIP Kuliah dan UKT", title: "KIP Kuliah", base: "/v1/admisi/kip", item: "/v1/admisi/kip/{id}", key: "id", list: "getAdmisiKip", create: "postAdmisiKip", get: "getAdmisiKipById", update: "putAdmisiKipById", del: "deleteAdmisiKipById", actions: ["postAdmisiKipByIdVerifikasi", "postAdmisiKipByIdUsulkan", "postAdmisiKipByIdTetapkan", "postAdmisiKipByIdTolak", "postAdmisiKipByIdCabut"], children: ["/v1/admisi/kip/{id}/berkas"] }, { id: "/v1/admisi/kip/{id}/berkas", tag: "Admisi: KIP Kuliah dan UKT", title: "KIP Kuliah", base: "/v1/admisi/kip/{id}/berkas", item: "/v1/admisi/kip/{id}/berkas/{uuid}", key: "uuid", list: "getAdmisiKipByIdBerkas", create: "postAdmisiKipByIdBerkas", get: "getAdmisiKipByIdBerkasByUuid", del: "deleteAdmisiKipByIdBerkasByUuid", actions: [], children: [], parent: "/v1/admisi/kip" }, { id: "/v1/admisi/loa", tag: "Admisi: Penerimaan", title: "Letter of Acceptance", base: "/v1/admisi/loa", item: "/v1/admisi/loa/{id}", key: "id", list: "getAdmisiLoa", get: "getAdmisiLoaById", update: "putAdmisiLoaById", actions: ["postAdmisiLoaByIdBatal"], children: [] }, { id: "/v1/admisi/loa/verifikasi", tag: "Admisi: Penerimaan", title: "Penerimaan", base: "/v1/admisi/loa/verifikasi", item: "/v1/admisi/loa/verifikasi/{kode}", key: "kode", get: "getAdmisiLoaVerifikasiByKode", actions: [], children: [] }, { id: "/v1/admisi/ods", tag: "Admisi: Penerimaan", title: "Penerimaan", base: "/v1/admisi/ods", item: "/v1/admisi/ods/{id}", key: "id", get: "getAdmisiOdsById", actions: ["postAdmisiOdsByIdProses"], children: [] }, { id: "/v1/admisi/petugas-sesi", tag: "Admisi: Seleksi", title: "Petugas sesi tes", base: "/v1/admisi/petugas-sesi", item: "/v1/admisi/petugas-sesi/{id}", key: "id", list: "getAdmisiPetugasSesi", create: "postAdmisiPetugasSesi", get: "getAdmisiPetugasSesiById", update: "putAdmisiPetugasSesiById", del: "deleteAdmisiPetugasSesiById", actions: [], children: [] }, { id: "/v1/admisi/petugas/saya", tag: "Admisi: Seleksi", title: "Tugas sesi tes saya", base: "/v1/admisi/petugas/saya", list: "getAdmisiPetugasSaya", actions: [], children: [] }, { id: "/v1/admisi/prodi-syarat", tag: "Admisi: Program studi", title: "Persyaratan penerimaan prodi", base: "/v1/admisi/prodi-syarat", item: "/v1/admisi/prodi-syarat/{id}", key: "id", list: "getAdmisiProdiSyarat", create: "postAdmisiProdiSyarat", get: "getAdmisiProdiSyaratById", update: "putAdmisiProdiSyaratById", del: "deleteAdmisiProdiSyaratById", actions: [], children: [] }, { id: "/v1/admisi/saya/pendaftaran", tag: "Admisi: Pendaftar", title: "Pendaftar", base: "/v1/admisi/saya/pendaftaran", item: "/v1/admisi/saya/pendaftaran/{id}", key: "id", get: "getAdmisiSayaPendaftaranById", actions: ["postAdmisiSayaPendaftaranByIdKip", "postAdmisiSayaPendaftaranByIdUkt"], children: [] }, { id: "/v1/admisi/ukt", tag: "Admisi: KIP Kuliah dan UKT", title: "UKT pendaftar", base: "/v1/admisi/ukt", item: "/v1/admisi/ukt/{id}", key: "id", list: "getAdmisiUkt", create: "postAdmisiUkt", get: "getAdmisiUktById", update: "putAdmisiUktById", del: "deleteAdmisiUktById", actions: ["postAdmisiUktByIdTerapkan", "postAdmisiUktByIdTetapkan", "postAdmisiUktByIdBanding"], children: ["/v1/admisi/ukt/{id}/berkas"] }, { id: "/v1/admisi/ukt-aturan", tag: "Admisi: KIP Kuliah dan UKT", title: "Aturan usulan kelompok UKT", base: "/v1/admisi/ukt-aturan", item: "/v1/admisi/ukt-aturan/{id}", key: "id", list: "getAdmisiUktAturan", create: "postAdmisiUktAturan", get: "getAdmisiUktAturanById", update: "putAdmisiUktAturanById", del: "deleteAdmisiUktAturanById", actions: [], children: [] }, { id: "/v1/admisi/ukt/{id}/berkas", tag: "Admisi: KIP Kuliah dan UKT", title: "UKT pendaftar", base: "/v1/admisi/ukt/{id}/berkas", item: "/v1/admisi/ukt/{id}/berkas/{uuid}", key: "uuid", list: "getAdmisiUktByIdBerkas", create: "postAdmisiUktByIdBerkas", get: "getAdmisiUktByIdBerkasByUuid", del: "deleteAdmisiUktByIdBerkasByUuid", actions: [], children: [], parent: "/v1/admisi/ukt" }];
|
|
9
|
+
var ops = { getAdmisiFeed: { id: "getAdmisiFeed", m: "GET", path: "/v1/admisi/feed", tag: "Admisi: Penerimaan", sum: "Feed PMB (publik)", ds: "JSON untuk kanal promosi/pencarian kampus (mis. Maukuliah) dan portal: gelombang yang terbit dan belum tutup, jalur, prodi + kuota, biaya, jadwal, persyaratan prodi.", pub: 1, r: "object", it: "Objek" }, getAdmisiLoaVerifikasiByKode: { id: "getAdmisiLoaVerifikasiByKode", m: "GET", path: "/v1/admisi/loa/verifikasi/{kode}", tag: "Admisi: Penerimaan", sum: "Verifikasi LoA (publik)", ds: "Untuk QR di surat penerimaan. Nama disamarkan.", pub: 1, pa: [{ nm: "kode", in: "path", s: { t: "string" }, rq: 1, ds: "Kode verifikasi" }], r: "object", it: "Objek" }, getAdmisiRekomendasi: { id: "getAdmisiRekomendasi", m: "GET", path: "/v1/admisi/rekomendasi", tag: "Admisi: Seleksi", sum: "Rekomendasi kelulusan", ds: "Per gelombang: pendaftar diurutkan menurut nilai USM (lalu rata-rata rapor dan prestasi), lalu ditempatkan ke pilihan pertama yang memenuhi nilai minimal prodi dan kuotanya masih ada. Hasil: lulus (prodi + pilihan ke-), cadangan, tidak_lulus, belum_dinilai, dibanding status lulus saat ini. Hanya rekomendasi; kelulusan tetap lewat nilai di /v1/pmb/admin/pendaftaran/{id}/nilai.", sc: ["admisi:read"], pa: [{ nm: "gelombang_id", in: "query", s: { t: "string" }, ds: "ID gelombang (wajib)" }], r: "object", it: "Objek" }, getAdmisiPetugasSaya: { id: "getAdmisiPetugasSaya", m: "GET", path: "/v1/admisi/petugas/saya", tag: "Admisi: Seleksi", sum: "Tugas sesi tes saya", ds: "Sesi tes PMB yang ditugaskan ke pengguna token sebagai pengawas/penguji/pewawancara/operator.", sc: ["admisi:read"], r: "list", it: "Objek" }, getAdmisiNimUsulan: { id: "getAdmisiNimUsulan", m: "GET", path: "/v1/admisi/nim/usulan", tag: "Admisi: Penerimaan", sum: "Usulan NIM berikutnya", ds: "NIM berikutnya untuk prodi dan periode masuk (pola /admisi/format-nim, atau ditebak dari NIM angkatan terakhir prodi). Tidak menyimpan apa pun.", sc: ["admisi:read"], pa: [{ nm: "prodi", in: "query", s: { t: "string", rf: { l: "/v1/referensi/prodi", k: "kode_prodi", q: 0 } }, ds: "Kode prodi (wajib)" }, { nm: "tahun_id", in: "query", s: { t: "string", rf: { l: "/v1/referensi/tahun-akademik", k: "tahun_id", q: 0 } }, ds: "Periode masuk, bawaan tahun aktif" }, { nm: "jumlah", in: "query", s: { t: "string" }, ds: "Jumlah NIM (1-200)" }], r: "object", it: "Objek" }, postAdmisiNimGenerate: { id: "postAdmisiNimGenerate", m: "POST", path: "/v1/admisi/nim/generate", tag: "Admisi: Penerimaan", sum: "Daftar ulang dengan NIM otomatis", ds: 'Body {"pendaftaran": ["<uuid>", ...], "tahun_id"?, "pratinjau"?: true}. Per pendaftar: pilihan pertama yang lulus, NIM berikutnya, lalu langkah Daftar Ulang PMB (m_mahasiswa, status, ortu, akun MAHASISWA; kuota dicek). Gagal per pendaftar dilaporkan tanpa menghentikan yang lain.', sc: ["admisi:write"], r: "object", it: "Objek" }, postAdmisiLoaTerbitkan: { id: "postAdmisiLoaTerbitkan", m: "POST", path: "/v1/admisi/loa/terbitkan", tag: "Admisi: Penerimaan", sum: "Terbitkan LoA", ds: 'Body {"pendaftaran": "<uuid>", "nomor"?, "batas_daftar_ulang"?}. Untuk pendaftar yang lulus seleksi: nomor (bawaan LOA/<prodi>/<tahun>/<no PMB>), salinan data surat, kode verifikasi, notifikasi ke pendaftar.', sc: ["admisi:write"], r: "object", it: "Objek" }, getAdmisiOdsById: { id: "getAdmisiOdsById", m: "GET", path: "/v1/admisi/ods/{id}", tag: "Admisi: Penerimaan", sum: "Layanan satu hari: status", ds: "Daftar periksa pendaftar dari formulir, bayar, verifikasi, nilai, lulus, LoA, sampai daftar ulang, dengan langkah berikutnya, berkas, dan tagihan.", sc: ["admisi:read"], pa: [{ nm: "id", in: "path", s: { t: "string" }, rq: 1, ds: "UUID pendaftaran PMB" }], r: "object", it: "Objek" }, postAdmisiOdsByIdProses: { id: "postAdmisiOdsByIdProses", m: "POST", path: "/v1/admisi/ods/{id}/proses", tag: "Admisi: Penerimaan", sum: "Layanan satu hari: proses", ds: 'Body {"verifikasi": true, "nilai": 80, "loa": true, "daftar_ulang": true, "nim"?, "tahun_id"?}: langkah dijalankan berurutan dengan service PMB online (verifikasi, nilai seleksi -> lulus menurut nilai minimal, LoA, daftar ulang dengan NIM otomatis bila nim tidak diisi). Pembayaran tetap lewat kasir/tagihan PMB.', sc: ["admisi:write"], pa: [{ nm: "id", in: "path", s: { t: "string" }, rq: 1, ds: "UUID pendaftaran PMB" }], r: "object", it: "Objek" }, postAdmisiUktByIdTerapkan: { id: "postAdmisiUktByIdTerapkan", m: "POST", path: "/v1/admisi/ukt/{id}/terapkan", tag: "Admisi: KIP Kuliah dan UKT", sum: "Terapkan UKT ke mahasiswa", ds: "Untuk UKT berstatus ditetapkan dan pendaftar yang sudah ber-NIM: penetapan UKT mahasiswa (/v1/keuangan/ukt/mahasiswa) per jenis biaya kelompok; penetapan aktif lama jenis biaya sama dibatalkan.", sc: ["admisi:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/admisi/ukt", k: "id", d: "/v1/admisi/ukt/{id}" } }, rq: 1, ds: "ID adm_ukt" }], r: "object", it: "Objek" }, getAdmisiLaporan: { id: "getAdmisiLaporan", m: "GET", path: "/v1/admisi/laporan", tag: "Admisi: Chat dan laporan", sum: "Laporan PMB", ds: "Rekap per gelombang (pendaftaran, diajukan, terverifikasi, bayar, dinilai, lulus, daftar ulang), per jalur, per prodi, sumber informasi, asal sekolah, asal wilayah, tagihan per jenis/status, KIP, UKT.", sc: ["admisi:read"], pa: [{ nm: "gelombang_id", in: "query", s: { t: "string" }, ds: "ID gelombang" }], r: "object", it: "Objek" }, getAdmisiChat: { id: "getAdmisiChat", m: "GET", path: "/v1/admisi/chat", tag: "Admisi: Chat dan laporan", sum: "Daftar percakapan", ds: "Percakapan quick chat per akun pendaftar, pesan terakhir, jumlah belum dibaca. belum_dibalas=1 untuk yang pesan terakhirnya dari pendaftar.", sc: ["admisi:read"], pa: [{ nm: "belum_dibalas", in: "query", s: { t: "string" }, ds: "1 = hanya yang menunggu balasan" }, { nm: "page", in: "query", s: { t: "integer", min: 1, d: 1 }, ds: "Nomor halaman, mulai 1." }, { nm: "per_page", in: "query", s: { t: "integer", min: 1, mx: 100, d: 25 }, ds: "Jumlah data per halaman (maksimal 100)." }], r: "list", it: "Objek" }, getAdmisiChatByAkun: { id: "getAdmisiChatByAkun", m: "GET", path: "/v1/admisi/chat/{akun}", tag: "Admisi: Chat dan laporan", sum: "Isi percakapan", ds: "Pesan dengan satu akun pendaftar (pesan pendaftar ditandai dibaca) dan pendaftarannya.", sc: ["admisi:read"], pa: [{ nm: "akun", in: "path", s: { t: "string", rf: { l: "/v1/admisi/chat", k: "akun", d: "/v1/admisi/chat/{akun}" } }, rq: 1, ds: "pmb_akun.id" }, { nm: "sebelum", in: "query", s: { t: "string" }, ds: "ID pesan untuk halaman sebelumnya" }, { nm: "limit", in: "query", s: { t: "string" }, ds: "1-200" }], r: "object", it: "Objek" }, postAdmisiChatByAkun: { id: "postAdmisiChatByAkun", m: "POST", path: "/v1/admisi/chat/{akun}", tag: "Admisi: Chat dan laporan", sum: "Balas pendaftar", ds: 'Body {"isi"}. Pendaftar mendapat notifikasi di aplikasi PMB.', sc: ["admisi:write"], pa: [{ nm: "akun", in: "path", s: { t: "string", rf: { l: "/v1/admisi/chat", k: "akun", d: "/v1/admisi/chat/{akun}" } }, rq: 1, ds: "pmb_akun.id" }], r: "object", it: "Objek" }, getAdmisiSayaChat: { id: "getAdmisiSayaChat", m: "GET", path: "/v1/admisi/saya/chat", tag: "Admisi: Pendaftar", sum: "Chat saya", ds: "Token klien ber-scope pmb:pendaftar + header X-Pmb-Akun-Token. Riwayat percakapan dengan panitia (balasan panitia ditandai dibaca).", sc: ["pmb:pendaftar"], pa: [{ nm: "sebelum", in: "query", s: { t: "string" }, ds: "ID pesan" }, { nm: "limit", in: "query", s: { t: "string" }, ds: "1-200" }], r: "object", it: "Objek" }, postAdmisiSayaChat: { id: "postAdmisiSayaChat", m: "POST", path: "/v1/admisi/saya/chat", tag: "Admisi: Pendaftar", sum: "Kirim pesan ke panitia", ds: 'Token klien ber-scope pmb:pendaftar + header X-Pmb-Akun-Token. Body {"isi", "pendaftaran"? (uuid)}. Maks. 10 pesan per menit.', sc: ["pmb:pendaftar"], r: "object", it: "Objek" }, getAdmisiSayaPendaftaranById: { id: "getAdmisiSayaPendaftaranById", m: "GET", path: "/v1/admisi/saya/pendaftaran/{id}", tag: "Admisi: Pendaftar", sum: "LoA, KIP, dan UKT saya", ds: "Token klien ber-scope pmb:pendaftar + header X-Pmb-Akun-Token. LoA (data surat + kode verifikasi) bila sudah terbit, pengajuan KIP Kuliah, data UKT.", sc: ["pmb:pendaftar"], pa: [{ nm: "id", in: "path", s: { t: "string" }, rq: 1, ds: "UUID pendaftaran PMB" }], r: "object", it: "Objek" }, postAdmisiSayaPendaftaranByIdKip: { id: "postAdmisiSayaPendaftaranByIdKip", m: "POST", path: "/v1/admisi/saya/pendaftaran/{id}/kip", tag: "Admisi: Pendaftar", sum: "Ajukan KIP Kuliah", ds: 'Token klien ber-scope pmb:pendaftar + header X-Pmb-Akun-Token. Body {"nik", "nisn", "no_pendaftaran_kip", "nomor_kip", "punya_kks_pkh", "penghasilan_ortu", "jumlah_tanggungan", "skema"}. Bisa diubah selama status diajukan. Berkas pendukung diunggah sebagai berkas pendaftaran PMB.', sc: ["pmb:pendaftar"], pa: [{ nm: "id", in: "path", s: { t: "string" }, rq: 1, ds: "UUID pendaftaran PMB" }], r: "object", it: "Objek" }, postAdmisiSayaPendaftaranByIdUkt: { id: "postAdmisiSayaPendaftaranByIdUkt", m: "POST", path: "/v1/admisi/saya/pendaftaran/{id}/ukt", tag: "Admisi: Pendaftar", sum: "Isi data ekonomi UKT", ds: 'Token klien ber-scope pmb:pendaftar + header X-Pmb-Akun-Token. Body {"penghasilan_ayah", "penghasilan_ibu", "penghasilan_wali", "jumlah_tanggungan", "pekerjaan_ayah", "pekerjaan_ibu", "daya_listrik", "kepemilikan_rumah"}. Per kapita dan usulan kelompok dihitung otomatis; bisa diubah selama status diajukan.', sc: ["pmb:pendaftar"], pa: [{ nm: "id", in: "path", s: { t: "string" }, rq: 1, ds: "UUID pendaftaran PMB" }], r: "object", it: "Objek" }, getAdmisiProdiSyarat: { id: "getAdmisiProdiSyarat", m: "GET", path: "/v1/admisi/prodi-syarat", tag: "Admisi: Program studi", sum: "Persyaratan penerimaan prodi: daftar", ds: "Persyaratan per prodi (dan jalur): jurusan SMA/SMK yang diterima, nilai rapor minimal, tes kesehatan/buta warna, uraian lain. Bisa dibaca tanpa token untuk landing PMB. Kuota dan nilai minimal seleksi tetap di /v1/pmb/admin/gelombang/{id}/prodi, profil prodi di /v1/pmb/admin/prodi-info. Semua pemilik token ber-scope admisi:read (selain pengelola hanya melihat aktif 1).", 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: "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: "tes_kesehatan", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "tes_buta_warna", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "aktif", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "jalur_masuk", 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: "AdmisiProdiSyarat" }, postAdmisiProdiSyarat: { id: "postAdmisiProdiSyarat", m: "POST", path: "/v1/admisi/prodi-syarat", tag: "Admisi: Program studi", sum: "Persyaratan penerimaan prodi: tambah", ds: "Pengelola modul.", sc: ["admisi:write"], oleh: "pengelola", b: { ct: "application/json", ref: "AdmisiProdiSyaratInput", s: { t: "object", pr: { kode_prodi: { t: "string", ds: "m_program_studi.kode_prodi", rf: { l: "/v1/referensi/prodi", k: "kode_prodi", q: 0 } }, jalur_masuk: { t: "string", max: 2, p: "^[A-Za-z0-9._\\-/]+$" }, judul: { t: "string", max: 150 }, uraian: { t: "string" }, jurusan_sma: { ds: "Nilai JSON apa pun" }, nilai_rapor_min: { t: "number" }, tes_kesehatan: { t: "boolean", d: "0" }, tes_buta_warna: { t: "boolean", d: "0" }, urutan: { t: "integer", min: 0, mx: 1e3, d: "0" }, aktif: { t: "boolean", d: "1" } }, rq: ["kode_prodi", "judul"] }, rq: 1 }, r: "object", it: "AdmisiProdiSyarat" }, getAdmisiProdiSyaratById: { id: "getAdmisiProdiSyaratById", m: "GET", path: "/v1/admisi/prodi-syarat/{id}", tag: "Admisi: Program studi", sum: "Persyaratan penerimaan prodi: detail", ds: "Persyaratan per prodi (dan jalur): jurusan SMA/SMK yang diterima, nilai rapor minimal, tes kesehatan/buta warna, uraian lain. Bisa dibaca tanpa token untuk landing PMB. Kuota dan nilai minimal seleksi tetap di /v1/pmb/admin/gelombang/{id}/prodi, profil prodi di /v1/pmb/admin/prodi-info. Semua pemilik token ber-scope admisi:read (selain pengelola hanya melihat aktif 1).", pub: 1, pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/admisi/prodi-syarat", k: "id", d: "/v1/admisi/prodi-syarat/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "AdmisiProdiSyarat" }, putAdmisiProdiSyaratById: { id: "putAdmisiProdiSyaratById", m: "PUT", path: "/v1/admisi/prodi-syarat/{id}", tag: "Admisi: Program studi", sum: "Persyaratan penerimaan prodi: ubah", ds: "Pengelola modul. Kolom yang tidak dikirim tidak berubah.", sc: ["admisi:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/admisi/prodi-syarat", k: "id", d: "/v1/admisi/prodi-syarat/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "AdmisiProdiSyaratInput", s: { t: "object", pr: { kode_prodi: { t: "string", ds: "m_program_studi.kode_prodi", rf: { l: "/v1/referensi/prodi", k: "kode_prodi", q: 0 } }, jalur_masuk: { t: "string", max: 2, p: "^[A-Za-z0-9._\\-/]+$" }, judul: { t: "string", max: 150 }, uraian: { t: "string" }, jurusan_sma: { ds: "Nilai JSON apa pun" }, nilai_rapor_min: { t: "number" }, tes_kesehatan: { t: "boolean", d: "0" }, tes_buta_warna: { t: "boolean", d: "0" }, urutan: { t: "integer", min: 0, mx: 1e3, d: "0" }, aktif: { t: "boolean", d: "1" } }, rq: ["kode_prodi", "judul"] }, rq: 1 }, r: "object", it: "AdmisiProdiSyarat" }, deleteAdmisiProdiSyaratById: { id: "deleteAdmisiProdiSyaratById", m: "DELETE", path: "/v1/admisi/prodi-syarat/{id}", tag: "Admisi: Program studi", sum: "Persyaratan penerimaan prodi: hapus", ds: "Pengelola modul.", sc: ["admisi:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/admisi/prodi-syarat", k: "id", d: "/v1/admisi/prodi-syarat/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "none" }, getAdmisiPetugasSesi: { id: "getAdmisiPetugasSesi", m: "GET", path: "/v1/admisi/petugas-sesi", tag: "Admisi: Seleksi", sum: "Petugas sesi tes: daftar", ds: "Pengawas, penguji, pewawancara, dan operator per sesi tes PMB (/v1/pmb/admin/sesi-tes). Peserta dan nomor kursi tetap di sesi tes. Petugas melihat jadwal tugasnya di GET /admisi/petugas/saya. Hanya pengelola modul.", sc: ["admisi: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: "username", in: "query", s: { t: "string", rf: { l: "pengguna", k: "username" } }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "peran", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "sesi_id", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "q", in: "query", s: { t: "string" }, ds: "Cari di nama, username" }, { 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: "AdmisiPetugasSesi" }, postAdmisiPetugasSesi: { id: "postAdmisiPetugasSesi", m: "POST", path: "/v1/admisi/petugas-sesi", tag: "Admisi: Seleksi", sum: "Petugas sesi tes: tambah", ds: "Pengelola modul.", sc: ["admisi:write"], oleh: "pengelola", b: { ct: "application/json", ref: "AdmisiPetugasSesiInput", s: { t: "object", pr: { sesi_id: { t: "integer", min: 1, mx: 2147483647 }, username: { t: "string", ds: "user.username", rf: { l: "pengguna", k: "username" } }, nama: { t: "string", max: 150 }, peran: { t: "string", e: ["pengawas", "penguji", "pewawancara", "operator"], d: "pengawas" }, catatan: { t: "string", max: 255 } }, rq: ["sesi_id", "username"] }, rq: 1 }, r: "object", it: "AdmisiPetugasSesi" }, getAdmisiPetugasSesiById: { id: "getAdmisiPetugasSesiById", m: "GET", path: "/v1/admisi/petugas-sesi/{id}", tag: "Admisi: Seleksi", sum: "Petugas sesi tes: detail", ds: "Pengawas, penguji, pewawancara, dan operator per sesi tes PMB (/v1/pmb/admin/sesi-tes). Peserta dan nomor kursi tetap di sesi tes. Petugas melihat jadwal tugasnya di GET /admisi/petugas/saya. Hanya pengelola modul.", sc: ["admisi:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/admisi/petugas-sesi", k: "id", d: "/v1/admisi/petugas-sesi/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "AdmisiPetugasSesi" }, putAdmisiPetugasSesiById: { id: "putAdmisiPetugasSesiById", m: "PUT", path: "/v1/admisi/petugas-sesi/{id}", tag: "Admisi: Seleksi", sum: "Petugas sesi tes: ubah", ds: "Pengelola modul. Kolom yang tidak dikirim tidak berubah.", sc: ["admisi:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/admisi/petugas-sesi", k: "id", d: "/v1/admisi/petugas-sesi/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "AdmisiPetugasSesiInput", s: { t: "object", pr: { sesi_id: { t: "integer", min: 1, mx: 2147483647 }, username: { t: "string", ds: "user.username", rf: { l: "pengguna", k: "username" } }, nama: { t: "string", max: 150 }, peran: { t: "string", e: ["pengawas", "penguji", "pewawancara", "operator"], d: "pengawas" }, catatan: { t: "string", max: 255 } }, rq: ["sesi_id", "username"] }, rq: 1 }, r: "object", it: "AdmisiPetugasSesi" }, deleteAdmisiPetugasSesiById: { id: "deleteAdmisiPetugasSesiById", m: "DELETE", path: "/v1/admisi/petugas-sesi/{id}", tag: "Admisi: Seleksi", sum: "Petugas sesi tes: hapus", ds: "Pengelola modul.", sc: ["admisi:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/admisi/petugas-sesi", k: "id", d: "/v1/admisi/petugas-sesi/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "none" }, getAdmisiLoa: { id: "getAdmisiLoa", m: "GET", path: "/v1/admisi/loa", tag: "Admisi: Penerimaan", sum: "Letter of Acceptance: daftar", ds: "Surat penerimaan untuk pendaftar yang lulus seleksi. Terbitkan dengan POST /admisi/loa/terbitkan (nomor, data surat, kode verifikasi); detail berisi data cetak. Verifikasi publik: GET /admisi/loa/verifikasi/{kode}. Hanya pengelola modul.", sc: ["admisi: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: "status", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "q", in: "query", s: { t: "string" }, ds: "Cari di nomor, no_pmb" }, { 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: "AdmisiLoa" }, getAdmisiLoaById: { id: "getAdmisiLoaById", m: "GET", path: "/v1/admisi/loa/{id}", tag: "Admisi: Penerimaan", sum: "Letter of Acceptance: detail", ds: "Surat penerimaan untuk pendaftar yang lulus seleksi. Terbitkan dengan POST /admisi/loa/terbitkan (nomor, data surat, kode verifikasi); detail berisi data cetak. Verifikasi publik: GET /admisi/loa/verifikasi/{kode}. Hanya pengelola modul.", sc: ["admisi:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/admisi/loa", k: "id", d: "/v1/admisi/loa/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "AdmisiLoa" }, putAdmisiLoaById: { id: "putAdmisiLoaById", m: "PUT", path: "/v1/admisi/loa/{id}", tag: "Admisi: Penerimaan", sum: "Letter of Acceptance: ubah", ds: "Pengelola modul. Kolom yang tidak dikirim tidak berubah.", sc: ["admisi:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/admisi/loa", k: "id", d: "/v1/admisi/loa/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "AdmisiLoaInput", s: { t: "object", pr: { batas_daftar_ulang: { t: "string", f: "date" } } }, rq: 1 }, r: "object", it: "AdmisiLoa" }, postAdmisiLoaByIdBatal: { id: "postAdmisiLoaByIdBatal", m: "POST", path: "/v1/admisi/loa/{id}/batal", tag: "Admisi: Penerimaan", sum: "Letter of Acceptance: Batalkan LoA", ds: "Pengelola modul. Status harus terbit, menjadi batal.", sc: ["admisi:write"], tr: { dari: ["terbit"], ke: "batal" }, oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/admisi/loa", k: "id", d: "/v1/admisi/loa/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "AdmisiLoaBatalInput", s: { t: "object", pr: { alasan: { t: "string", max: 255 } }, rq: ["alasan"] }, rq: 1 }, r: "object", it: "AdmisiLoa" }, getAdmisiKip: { id: "getAdmisiKip", m: "GET", path: "/v1/admisi/kip", tag: "Admisi: KIP Kuliah dan UKT", sum: "KIP Kuliah: daftar", ds: "Pengajuan dan penerima KIP Kuliah (calon mahasiswa dari PMB atau mahasiswa). Alur: diajukan -> diverifikasi -> diusulkan (ke SIM KIP Kuliah) -> ditetapkan (nomor SK) / ditolak; penerima bisa dicabut. Pendaftar mengisi lewat POST /admisi/saya/pendaftaran/{uuid}/kip. Berkas (KIP/KKS/SKTM, foto rumah) lewat /berkas. Pengelola melihat semua; pengguna lain hanya miliknya sendiri (nim).", sc: ["admisi: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: "nim", in: "query", s: { t: "string", rf: { l: "/v1/mahasiswa", k: "nim", d: "/v1/mahasiswa/{nim}" } }, 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: "punya_kks_pkh", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "skema", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "angkatan", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "status", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "q", in: "query", s: { t: "string" }, ds: "Cari di nama, nim, no_pmb, no_pendaftaran_kip, nik" }, { 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: "AdmisiKip" }, postAdmisiKip: { id: "postAdmisiKip", m: "POST", path: "/v1/admisi/kip", tag: "Admisi: KIP Kuliah dan UKT", sum: "KIP Kuliah: tambah", ds: "Pengelola modul.", sc: ["admisi:write"], oleh: "pengelola", b: { ct: "application/json", ref: "AdmisiKipInput", s: { t: "object", pr: { pmb_pendaftaran_id: { t: "integer", min: 1, mx: 2147483647 }, nim: { t: "string", ds: "m_mahasiswa.NIM", rf: { l: "/v1/mahasiswa", k: "nim", d: "/v1/mahasiswa/{nim}" } }, kode_prodi: { t: "string", ds: "m_program_studi.kode_prodi", rf: { l: "/v1/referensi/prodi", k: "kode_prodi", q: 0 } }, nama: { t: "string", max: 150 }, nik: { t: "string", max: 20, p: "^[A-Za-z0-9._\\-/]+$" }, nisn: { t: "string", max: 20, p: "^[A-Za-z0-9._\\-/]+$" }, no_pendaftaran_kip: { t: "string", max: 50, p: "^[A-Za-z0-9._\\-/]+$", ds: "(unik)" }, nomor_kip: { t: "string", max: 50, p: "^[A-Za-z0-9._\\-/]+$" }, punya_kks_pkh: { t: "boolean", d: "0" }, penghasilan_ortu: { t: "number" }, jumlah_tanggungan: { t: "integer", min: 0, mx: 30 }, skema: { t: "string", e: ["kip_kuliah", "kip_kuliah_merdeka", "afirmasi", "lainnya"], d: "kip_kuliah" }, angkatan: { t: "string", ds: "m_tahun.tahun_id", rf: { l: "/v1/referensi/tahun-akademik", k: "tahun_id", q: 0 } }, catatan: { t: "string", ds: "(hanya pengelola)" } }, rq: ["nama"] }, rq: 1 }, r: "object", it: "AdmisiKip" }, getAdmisiKipById: { id: "getAdmisiKipById", m: "GET", path: "/v1/admisi/kip/{id}", tag: "Admisi: KIP Kuliah dan UKT", sum: "KIP Kuliah: detail", ds: "Pengajuan dan penerima KIP Kuliah (calon mahasiswa dari PMB atau mahasiswa). Alur: diajukan -> diverifikasi -> diusulkan (ke SIM KIP Kuliah) -> ditetapkan (nomor SK) / ditolak; penerima bisa dicabut. Pendaftar mengisi lewat POST /admisi/saya/pendaftaran/{uuid}/kip. Berkas (KIP/KKS/SKTM, foto rumah) lewat /berkas. Pengelola melihat semua; pengguna lain hanya miliknya sendiri (nim).", sc: ["admisi:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/admisi/kip", k: "id", d: "/v1/admisi/kip/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "AdmisiKip" }, putAdmisiKipById: { id: "putAdmisiKipById", m: "PUT", path: "/v1/admisi/kip/{id}", tag: "Admisi: KIP Kuliah dan UKT", sum: "KIP Kuliah: ubah", ds: "Pengelola modul. Kolom yang tidak dikirim tidak berubah.", sc: ["admisi:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/admisi/kip", k: "id", d: "/v1/admisi/kip/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "AdmisiKipInput", s: { t: "object", pr: { pmb_pendaftaran_id: { t: "integer", min: 1, mx: 2147483647 }, nim: { t: "string", ds: "m_mahasiswa.NIM", rf: { l: "/v1/mahasiswa", k: "nim", d: "/v1/mahasiswa/{nim}" } }, kode_prodi: { t: "string", ds: "m_program_studi.kode_prodi", rf: { l: "/v1/referensi/prodi", k: "kode_prodi", q: 0 } }, nama: { t: "string", max: 150 }, nik: { t: "string", max: 20, p: "^[A-Za-z0-9._\\-/]+$" }, nisn: { t: "string", max: 20, p: "^[A-Za-z0-9._\\-/]+$" }, no_pendaftaran_kip: { t: "string", max: 50, p: "^[A-Za-z0-9._\\-/]+$", ds: "(unik)" }, nomor_kip: { t: "string", max: 50, p: "^[A-Za-z0-9._\\-/]+$" }, punya_kks_pkh: { t: "boolean", d: "0" }, penghasilan_ortu: { t: "number" }, jumlah_tanggungan: { t: "integer", min: 0, mx: 30 }, skema: { t: "string", e: ["kip_kuliah", "kip_kuliah_merdeka", "afirmasi", "lainnya"], d: "kip_kuliah" }, angkatan: { t: "string", ds: "m_tahun.tahun_id", rf: { l: "/v1/referensi/tahun-akademik", k: "tahun_id", q: 0 } }, catatan: { t: "string", ds: "(hanya pengelola)" } }, rq: ["nama"] }, rq: 1 }, r: "object", it: "AdmisiKip" }, deleteAdmisiKipById: { id: "deleteAdmisiKipById", m: "DELETE", path: "/v1/admisi/kip/{id}", tag: "Admisi: KIP Kuliah dan UKT", sum: "KIP Kuliah: hapus", ds: "Pengelola modul.", sc: ["admisi:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/admisi/kip", k: "id", d: "/v1/admisi/kip/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "none" }, getAdmisiKipByIdBerkas: { id: "getAdmisiKipByIdBerkas", m: "GET", path: "/v1/admisi/kip/{id}/berkas", tag: "Admisi: KIP Kuliah dan UKT", sum: "KIP Kuliah: daftar lampiran", ds: "Siapa pun yang boleh melihat barisnya.", sc: ["admisi:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/admisi/kip", k: "id", d: "/v1/admisi/kip/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "list", it: "PusatBerkas" }, postAdmisiKipByIdBerkas: { id: "postAdmisiKipByIdBerkas", m: "POST", path: "/v1/admisi/kip/{id}/berkas", tag: "Admisi: KIP Kuliah dan UKT", sum: "KIP Kuliah: 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: ["admisi:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/admisi/kip", k: "id", d: "/v1/admisi/kip/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "multipart/form-data", ref: "PusatBerkasInput", s: { t: "object", pr: { berkas_id: { t: "string", f: "uuid", ds: "Alternatif file: UUID berkas dari /v1/berkas (mis. hasil unggah bertahap)" }, 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" }, getAdmisiKipByIdBerkasByUuid: { id: "getAdmisiKipByIdBerkasByUuid", m: "GET", path: "/v1/admisi/kip/{id}/berkas/{uuid}", tag: "Admisi: KIP Kuliah dan UKT", sum: "KIP Kuliah: unduh lampiran", sc: ["admisi:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/admisi/kip", k: "id", d: "/v1/admisi/kip/{id}" } }, rq: 1, ds: "ID angka atau UUID" }, { nm: "uuid", in: "path", s: { t: "string" }, rq: 1, ds: "UUID berkas" }], r: "object" }, deleteAdmisiKipByIdBerkasByUuid: { id: "deleteAdmisiKipByIdBerkasByUuid", m: "DELETE", path: "/v1/admisi/kip/{id}/berkas/{uuid}", tag: "Admisi: KIP Kuliah dan UKT", sum: "KIP Kuliah: hapus lampiran", ds: "Pengelola modul.", sc: ["admisi:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/admisi/kip", k: "id", d: "/v1/admisi/kip/{id}" } }, rq: 1, ds: "ID angka atau UUID" }, { nm: "uuid", in: "path", s: { t: "string" }, rq: 1, ds: "UUID berkas" }], r: "none" }, postAdmisiKipByIdVerifikasi: { id: "postAdmisiKipByIdVerifikasi", m: "POST", path: "/v1/admisi/kip/{id}/verifikasi", tag: "Admisi: KIP Kuliah dan UKT", sum: "KIP Kuliah: Verifikasi berkas dan data", ds: "Pengelola modul. Status harus diajukan, menjadi diverifikasi.", sc: ["admisi:write"], tr: { dari: ["diajukan"], ke: "diverifikasi" }, oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/admisi/kip", k: "id", d: "/v1/admisi/kip/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "AdmisiKipVerifikasiInput", s: { t: "object", pr: { catatan: { t: "string", max: 1e3 } } }, rq: 1 }, r: "object", it: "AdmisiKip" }, postAdmisiKipByIdUsulkan: { id: "postAdmisiKipByIdUsulkan", m: "POST", path: "/v1/admisi/kip/{id}/usulkan", tag: "Admisi: KIP Kuliah dan UKT", sum: "KIP Kuliah: Usulkan ke SIM KIP Kuliah", ds: "Pengelola modul. Status harus diverifikasi, menjadi diusulkan.", sc: ["admisi:write"], tr: { dari: ["diverifikasi"], ke: "diusulkan" }, oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/admisi/kip", k: "id", d: "/v1/admisi/kip/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "AdmisiKipUsulkanInput", s: { t: "object", pr: { no_pendaftaran_kip: { t: "string", max: 50, p: "^[A-Za-z0-9._\\-/]+$" }, catatan: { t: "string", max: 1e3 } } }, rq: 1 }, r: "object", it: "AdmisiKip" }, postAdmisiKipByIdTetapkan: { id: "postAdmisiKipByIdTetapkan", m: "POST", path: "/v1/admisi/kip/{id}/tetapkan", tag: "Admisi: KIP Kuliah dan UKT", sum: "KIP Kuliah: Tetapkan sebagai penerima", ds: "Pengelola modul. Status harus diusulkan/diverifikasi, menjadi ditetapkan.", sc: ["admisi:write"], tr: { dari: ["diusulkan", "diverifikasi"], ke: "ditetapkan" }, oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/admisi/kip", k: "id", d: "/v1/admisi/kip/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "AdmisiKipTetapkanInput", s: { t: "object", pr: { nomor_sk: { t: "string", max: 100 }, catatan: { t: "string", max: 1e3 } }, rq: ["nomor_sk"] }, rq: 1 }, r: "object", it: "AdmisiKip" }, postAdmisiKipByIdTolak: { id: "postAdmisiKipByIdTolak", m: "POST", path: "/v1/admisi/kip/{id}/tolak", tag: "Admisi: KIP Kuliah dan UKT", sum: "KIP Kuliah: Tolak", ds: "Pengelola modul. Status harus diajukan/diverifikasi/diusulkan, menjadi ditolak.", sc: ["admisi:write"], tr: { dari: ["diajukan", "diverifikasi", "diusulkan"], ke: "ditolak" }, oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/admisi/kip", k: "id", d: "/v1/admisi/kip/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "AdmisiKipTolakInput", s: { t: "object", pr: { catatan: { t: "string", max: 1e3 } }, rq: ["catatan"] }, rq: 1 }, r: "object", it: "AdmisiKip" }, postAdmisiKipByIdCabut: { id: "postAdmisiKipByIdCabut", m: "POST", path: "/v1/admisi/kip/{id}/cabut", tag: "Admisi: KIP Kuliah dan UKT", sum: "KIP Kuliah: Cabut status penerima", ds: "Pengelola modul. Status harus ditetapkan, menjadi dicabut.", sc: ["admisi:write"], tr: { dari: ["ditetapkan"], ke: "dicabut" }, oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/admisi/kip", k: "id", d: "/v1/admisi/kip/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "AdmisiKipCabutInput", s: { t: "object", pr: { catatan: { t: "string", max: 1e3 } }, rq: ["catatan"] }, rq: 1 }, r: "object", it: "AdmisiKip" }, getAdmisiUkt: { id: "getAdmisiUkt", m: "GET", path: "/v1/admisi/ukt", tag: "Admisi: KIP Kuliah dan UKT", sum: "UKT pendaftar: daftar", ds: "Data ekonomi pendaftar untuk penetapan kelompok UKT. Penghasilan per kapita dan kelompok usulan dihitung otomatis dari /admisi/ukt-aturan. Aksi tetapkan (kelompok keu_mhs_ukt_kelompok prodi), banding; setelah daftar ulang POST /admisi/ukt/{id}/terapkan menulis penetapan UKT mahasiswa di /v1/keuangan/ukt/mahasiswa (dipakai generate tagihan). Hanya pengelola modul.", sc: ["admisi: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: "nim", in: "query", s: { t: "string", rf: { l: "/v1/mahasiswa", k: "nim", d: "/v1/mahasiswa/{nim}" } }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "kepemilikan_rumah", 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 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: "AdmisiUkt" }, postAdmisiUkt: { id: "postAdmisiUkt", m: "POST", path: "/v1/admisi/ukt", tag: "Admisi: KIP Kuliah dan UKT", sum: "UKT pendaftar: tambah", ds: "Pengelola modul.", sc: ["admisi:write"], oleh: "pengelola", b: { ct: "application/json", ref: "AdmisiUktInput", s: { t: "object", pr: { pmb_pendaftaran_id: { t: "integer", min: 1, mx: 2147483647, ds: "(unik)" }, kode_prodi: { t: "string", ds: "m_program_studi.kode_prodi", rf: { l: "/v1/referensi/prodi", k: "kode_prodi", q: 0 } }, penghasilan_ayah: { t: "number", d: "0" }, penghasilan_ibu: { t: "number", d: "0" }, penghasilan_wali: { t: "number", d: "0" }, jumlah_tanggungan: { t: "integer", min: 1, mx: 30, d: "1" }, pekerjaan_ayah: { t: "string", max: 100 }, pekerjaan_ibu: { t: "string", max: 100 }, daya_listrik: { t: "integer", min: 0, mx: 2e5 }, kepemilikan_rumah: { t: "string", e: ["milik_sendiri", "sewa", "menumpang", "dinas", "lainnya"] }, catatan: { t: "string", ds: "(hanya pengelola)" } }, rq: ["pmb_pendaftaran_id"] }, rq: 1 }, r: "object", it: "AdmisiUkt" }, getAdmisiUktById: { id: "getAdmisiUktById", m: "GET", path: "/v1/admisi/ukt/{id}", tag: "Admisi: KIP Kuliah dan UKT", sum: "UKT pendaftar: detail", ds: "Data ekonomi pendaftar untuk penetapan kelompok UKT. Penghasilan per kapita dan kelompok usulan dihitung otomatis dari /admisi/ukt-aturan. Aksi tetapkan (kelompok keu_mhs_ukt_kelompok prodi), banding; setelah daftar ulang POST /admisi/ukt/{id}/terapkan menulis penetapan UKT mahasiswa di /v1/keuangan/ukt/mahasiswa (dipakai generate tagihan). Hanya pengelola modul.", sc: ["admisi:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/admisi/ukt", k: "id", d: "/v1/admisi/ukt/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "AdmisiUkt" }, putAdmisiUktById: { id: "putAdmisiUktById", m: "PUT", path: "/v1/admisi/ukt/{id}", tag: "Admisi: KIP Kuliah dan UKT", sum: "UKT pendaftar: ubah", ds: "Pengelola modul. Kolom yang tidak dikirim tidak berubah.", sc: ["admisi:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/admisi/ukt", k: "id", d: "/v1/admisi/ukt/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "AdmisiUktInput", s: { t: "object", pr: { pmb_pendaftaran_id: { t: "integer", min: 1, mx: 2147483647, ds: "(unik)" }, kode_prodi: { t: "string", ds: "m_program_studi.kode_prodi", rf: { l: "/v1/referensi/prodi", k: "kode_prodi", q: 0 } }, penghasilan_ayah: { t: "number", d: "0" }, penghasilan_ibu: { t: "number", d: "0" }, penghasilan_wali: { t: "number", d: "0" }, jumlah_tanggungan: { t: "integer", min: 1, mx: 30, d: "1" }, pekerjaan_ayah: { t: "string", max: 100 }, pekerjaan_ibu: { t: "string", max: 100 }, daya_listrik: { t: "integer", min: 0, mx: 2e5 }, kepemilikan_rumah: { t: "string", e: ["milik_sendiri", "sewa", "menumpang", "dinas", "lainnya"] }, catatan: { t: "string", ds: "(hanya pengelola)" } }, rq: ["pmb_pendaftaran_id"] }, rq: 1 }, r: "object", it: "AdmisiUkt" }, deleteAdmisiUktById: { id: "deleteAdmisiUktById", m: "DELETE", path: "/v1/admisi/ukt/{id}", tag: "Admisi: KIP Kuliah dan UKT", sum: "UKT pendaftar: hapus", ds: "Pengelola modul.", sc: ["admisi:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/admisi/ukt", k: "id", d: "/v1/admisi/ukt/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "none" }, getAdmisiUktByIdBerkas: { id: "getAdmisiUktByIdBerkas", m: "GET", path: "/v1/admisi/ukt/{id}/berkas", tag: "Admisi: KIP Kuliah dan UKT", sum: "UKT pendaftar: daftar lampiran", ds: "Siapa pun yang boleh melihat barisnya.", sc: ["admisi:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/admisi/ukt", k: "id", d: "/v1/admisi/ukt/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "list", it: "PusatBerkas" }, postAdmisiUktByIdBerkas: { id: "postAdmisiUktByIdBerkas", m: "POST", path: "/v1/admisi/ukt/{id}/berkas", tag: "Admisi: KIP Kuliah dan UKT", sum: "UKT pendaftar: 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: ["admisi:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/admisi/ukt", k: "id", d: "/v1/admisi/ukt/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "multipart/form-data", ref: "PusatBerkasInput", s: { t: "object", pr: { berkas_id: { t: "string", f: "uuid", ds: "Alternatif file: UUID berkas dari /v1/berkas (mis. hasil unggah bertahap)" }, 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" }, getAdmisiUktByIdBerkasByUuid: { id: "getAdmisiUktByIdBerkasByUuid", m: "GET", path: "/v1/admisi/ukt/{id}/berkas/{uuid}", tag: "Admisi: KIP Kuliah dan UKT", sum: "UKT pendaftar: unduh lampiran", sc: ["admisi:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/admisi/ukt", k: "id", d: "/v1/admisi/ukt/{id}" } }, rq: 1, ds: "ID angka atau UUID" }, { nm: "uuid", in: "path", s: { t: "string" }, rq: 1, ds: "UUID berkas" }], r: "object" }, deleteAdmisiUktByIdBerkasByUuid: { id: "deleteAdmisiUktByIdBerkasByUuid", m: "DELETE", path: "/v1/admisi/ukt/{id}/berkas/{uuid}", tag: "Admisi: KIP Kuliah dan UKT", sum: "UKT pendaftar: hapus lampiran", ds: "Pengelola modul.", sc: ["admisi:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/admisi/ukt", k: "id", d: "/v1/admisi/ukt/{id}" } }, rq: 1, ds: "ID angka atau UUID" }, { nm: "uuid", in: "path", s: { t: "string" }, rq: 1, ds: "UUID berkas" }], r: "none" }, postAdmisiUktByIdTetapkan: { id: "postAdmisiUktByIdTetapkan", m: "POST", path: "/v1/admisi/ukt/{id}/tetapkan", tag: "Admisi: KIP Kuliah dan UKT", sum: "UKT pendaftar: Tetapkan kelompok UKT", ds: "Pengelola modul. Status harus diajukan/banding/ditetapkan, menjadi ditetapkan.", sc: ["admisi:write"], tr: { dari: ["diajukan", "banding", "ditetapkan"], ke: "ditetapkan" }, oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/admisi/ukt", k: "id", d: "/v1/admisi/ukt/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "AdmisiUktTetapkanInput", s: { t: "object", pr: { kelompok: { t: "string", max: 10 }, catatan: { t: "string", max: 1e3 } } }, rq: 1 }, r: "object", it: "AdmisiUkt" }, postAdmisiUktByIdBanding: { id: "postAdmisiUktByIdBanding", m: "POST", path: "/v1/admisi/ukt/{id}/banding", tag: "Admisi: KIP Kuliah dan UKT", sum: "UKT pendaftar: Catat banding", ds: "Pengelola modul. Status harus ditetapkan, menjadi banding.", sc: ["admisi:write"], tr: { dari: ["ditetapkan"], ke: "banding" }, oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/admisi/ukt", k: "id", d: "/v1/admisi/ukt/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "AdmisiUktBandingInput", s: { t: "object", pr: { catatan: { t: "string", max: 1e3 } }, rq: ["catatan"] }, rq: 1 }, r: "object", it: "AdmisiUkt" }, getAdmisiUktAturan: { id: "getAdmisiUktAturan", m: "GET", path: "/v1/admisi/ukt-aturan", tag: "Admisi: KIP Kuliah dan UKT", sum: "Aturan usulan kelompok UKT: daftar", ds: "Rentang penghasilan per kapita (penghasilan ayah+ibu+wali dibagi jumlah tanggungan) untuk usulan kelompok UKT per prodi (kosong = semua prodi; aturan prodi didahulukan). Hanya pengelola modul.", sc: ["admisi: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: "aktif", 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: "AdmisiUktAturan" }, postAdmisiUktAturan: { id: "postAdmisiUktAturan", m: "POST", path: "/v1/admisi/ukt-aturan", tag: "Admisi: KIP Kuliah dan UKT", sum: "Aturan usulan kelompok UKT: tambah", ds: "Pengelola modul.", sc: ["admisi:write"], oleh: "pengelola", b: { ct: "application/json", ref: "AdmisiUktAturanInput", s: { t: "object", pr: { kode_prodi: { t: "string", ds: "m_program_studi.kode_prodi", rf: { l: "/v1/referensi/prodi", k: "kode_prodi", q: 0 } }, per_kapita_min: { t: "number", d: "0" }, per_kapita_maks: { t: "number" }, kelompok: { t: "string", max: 10 }, aktif: { t: "boolean", d: "1" } }, rq: ["kelompok"] }, rq: 1 }, r: "object", it: "AdmisiUktAturan" }, getAdmisiUktAturanById: { id: "getAdmisiUktAturanById", m: "GET", path: "/v1/admisi/ukt-aturan/{id}", tag: "Admisi: KIP Kuliah dan UKT", sum: "Aturan usulan kelompok UKT: detail", ds: "Rentang penghasilan per kapita (penghasilan ayah+ibu+wali dibagi jumlah tanggungan) untuk usulan kelompok UKT per prodi (kosong = semua prodi; aturan prodi didahulukan). Hanya pengelola modul.", sc: ["admisi:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/admisi/ukt-aturan", k: "id", d: "/v1/admisi/ukt-aturan/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "AdmisiUktAturan" }, putAdmisiUktAturanById: { id: "putAdmisiUktAturanById", m: "PUT", path: "/v1/admisi/ukt-aturan/{id}", tag: "Admisi: KIP Kuliah dan UKT", sum: "Aturan usulan kelompok UKT: ubah", ds: "Pengelola modul. Kolom yang tidak dikirim tidak berubah.", sc: ["admisi:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/admisi/ukt-aturan", k: "id", d: "/v1/admisi/ukt-aturan/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "AdmisiUktAturanInput", s: { t: "object", pr: { kode_prodi: { t: "string", ds: "m_program_studi.kode_prodi", rf: { l: "/v1/referensi/prodi", k: "kode_prodi", q: 0 } }, per_kapita_min: { t: "number", d: "0" }, per_kapita_maks: { t: "number" }, kelompok: { t: "string", max: 10 }, aktif: { t: "boolean", d: "1" } }, rq: ["kelompok"] }, rq: 1 }, r: "object", it: "AdmisiUktAturan" }, deleteAdmisiUktAturanById: { id: "deleteAdmisiUktAturanById", m: "DELETE", path: "/v1/admisi/ukt-aturan/{id}", tag: "Admisi: KIP Kuliah dan UKT", sum: "Aturan usulan kelompok UKT: hapus", ds: "Pengelola modul.", sc: ["admisi:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/admisi/ukt-aturan", k: "id", d: "/v1/admisi/ukt-aturan/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "none" }, getAdmisiFormatNim: { id: "getAdmisiFormatNim", m: "GET", path: "/v1/admisi/format-nim", tag: "Admisi: Penerimaan", sum: "Format NIM: daftar", ds: "Pola NIM otomatis per prodi. Token: {YYYY} tahun masuk, {YY} dua digit tahun, {S} digit semester (1 ganjil, 2 genap), {PRODI} kode prodi, {NNN} nomor urut (panjang = jumlah N). Tanpa pola, NIM ditebak dari NIM angkatan terakhir prodi (bagian dua digit tahun diganti, nomor urut dilanjutkan). Hanya pengelola modul.", sc: ["admisi: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: "aktif", 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: "AdmisiFormatNim" }, postAdmisiFormatNim: { id: "postAdmisiFormatNim", m: "POST", path: "/v1/admisi/format-nim", tag: "Admisi: Penerimaan", sum: "Format NIM: tambah", ds: "Pengelola modul.", sc: ["admisi:write"], oleh: "pengelola", b: { ct: "application/json", ref: "AdmisiFormatNimInput", s: { t: "object", pr: { kode_prodi: { t: "string", ds: "m_program_studi.kode_prodi (unik)", rf: { l: "/v1/referensi/prodi", k: "kode_prodi", q: 0 } }, pola: { t: "string", max: 60 }, mulai: { t: "integer", min: 0, mx: 999999, d: "1" }, aktif: { t: "boolean", d: "1" } }, rq: ["kode_prodi", "pola"] }, rq: 1 }, r: "object", it: "AdmisiFormatNim" }, getAdmisiFormatNimById: { id: "getAdmisiFormatNimById", m: "GET", path: "/v1/admisi/format-nim/{id}", tag: "Admisi: Penerimaan", sum: "Format NIM: detail", ds: "Pola NIM otomatis per prodi. Token: {YYYY} tahun masuk, {YY} dua digit tahun, {S} digit semester (1 ganjil, 2 genap), {PRODI} kode prodi, {NNN} nomor urut (panjang = jumlah N). Tanpa pola, NIM ditebak dari NIM angkatan terakhir prodi (bagian dua digit tahun diganti, nomor urut dilanjutkan). Hanya pengelola modul.", sc: ["admisi:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/admisi/format-nim", k: "id", d: "/v1/admisi/format-nim/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "AdmisiFormatNim" }, putAdmisiFormatNimById: { id: "putAdmisiFormatNimById", m: "PUT", path: "/v1/admisi/format-nim/{id}", tag: "Admisi: Penerimaan", sum: "Format NIM: ubah", ds: "Pengelola modul. Kolom yang tidak dikirim tidak berubah.", sc: ["admisi:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/admisi/format-nim", k: "id", d: "/v1/admisi/format-nim/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "AdmisiFormatNimInput", s: { t: "object", pr: { kode_prodi: { t: "string", ds: "m_program_studi.kode_prodi (unik)", rf: { l: "/v1/referensi/prodi", k: "kode_prodi", q: 0 } }, pola: { t: "string", max: 60 }, mulai: { t: "integer", min: 0, mx: 999999, d: "1" }, aktif: { t: "boolean", d: "1" } }, rq: ["kode_prodi", "pola"] }, rq: 1 }, r: "object", it: "AdmisiFormatNim" }, deleteAdmisiFormatNimById: { id: "deleteAdmisiFormatNimById", m: "DELETE", path: "/v1/admisi/format-nim/{id}", tag: "Admisi: Penerimaan", sum: "Format NIM: hapus", ds: "Pengelola modul.", sc: ["admisi:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/admisi/format-nim", k: "id", d: "/v1/admisi/format-nim/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "none" } };
|
|
10
|
+
var mandiri = ["getAdmisiFeed", "getAdmisiRekomendasi", "getAdmisiNimUsulan", "postAdmisiNimGenerate", "postAdmisiLoaTerbitkan", "getAdmisiLaporan", "getAdmisiSayaChat", "postAdmisiSayaChat"];
|
|
11
|
+
var skema = { Objek: { t: "object", ds: "Baris data dengan nama kolom huruf kecil sesuai tabel SIAKAD." }, AdmisiProdiSyarat: { t: "object", ds: "Persyaratan penerimaan prodi (tabel adm_prodi_syarat)", pr: { id: { t: "integer" }, kode_prodi: { t: "string", ds: "m_program_studi.kode_prodi" }, jalur_masuk: { t: "string", max: 2, p: "^[A-Za-z0-9._\\-/]+$" }, judul: { t: "string", max: 150 }, uraian: { t: "string" }, jurusan_sma: { ds: "Nilai JSON apa pun" }, nilai_rapor_min: { t: "number" }, tes_kesehatan: { t: "boolean", d: "0" }, tes_buta_warna: { t: "boolean", d: "0" }, urutan: { t: "integer", min: 0, mx: 1e3, d: "0" }, aktif: { t: "boolean", d: "1" }, created_at: { t: "string", n: 1, f: "date-time" }, updated_at: { t: "string", n: 1, f: "date-time" } } }, AdmisiPetugasSesi: { t: "object", ds: "Petugas sesi tes (tabel adm_petugas_sesi)", pr: { id: { t: "integer" }, sesi_id: { t: "integer", min: 1, mx: 2147483647 }, username: { t: "string", ds: "user.username" }, nama: { t: "string", max: 150 }, peran: { t: "string", e: ["pengawas", "penguji", "pewawancara", "operator"], d: "pengawas" }, catatan: { t: "string", max: 255 }, created_at: { t: "string", n: 1, f: "date-time" }, updated_at: { t: "string", n: 1, f: "date-time" } } }, AdmisiLoa: { t: "object", ds: "Letter of Acceptance (tabel adm_loa)", pr: { id: { t: "integer" }, pmb_pendaftaran_id: { t: "integer", min: 1, mx: 2147483647, ds: "(hanya baca)", ro: 1 }, no_pmb: { t: "string", max: 10, p: "^[A-Za-z0-9._\\-/]+$", ds: "(hanya baca)", ro: 1 }, id_pilihan: { t: "integer", min: 1, mx: 2147483647, ds: "(hanya baca)", ro: 1 }, kode_prodi: { t: "string", ds: "m_program_studi.kode_prodi (hanya baca)", ro: 1 }, nomor: { t: "string", max: 100, ds: "(hanya baca)", ro: 1 }, tanggal: { t: "string", f: "date", ds: "(hanya baca)", ro: 1 }, batas_daftar_ulang: { t: "string", f: "date" }, isi: { t: "object", ds: "(hanya baca)", ro: 1 }, kode_verifikasi: { t: "string", max: 40, ds: "(hanya baca)", ro: 1 }, status: { t: "string", e: ["terbit", "batal"], ds: "(hanya baca)", ro: 1 }, alasan_batal: { t: "string", max: 255, ds: "(hanya baca)", ro: 1 }, created_at: { t: "string", n: 1, f: "date-time" }, updated_at: { t: "string", n: 1, f: "date-time" } } }, AdmisiKip: { t: "object", ds: "KIP Kuliah (tabel adm_kip)", pr: { id: { t: "integer" }, 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" }, kode_prodi: { t: "string", ds: "m_program_studi.kode_prodi" }, nama: { t: "string", max: 150 }, nik: { t: "string", max: 20, p: "^[A-Za-z0-9._\\-/]+$" }, nisn: { t: "string", max: 20, p: "^[A-Za-z0-9._\\-/]+$" }, no_pendaftaran_kip: { t: "string", max: 50, p: "^[A-Za-z0-9._\\-/]+$", ds: "(unik)" }, nomor_kip: { t: "string", max: 50, p: "^[A-Za-z0-9._\\-/]+$" }, punya_kks_pkh: { t: "boolean", d: "0" }, penghasilan_ortu: { t: "number" }, jumlah_tanggungan: { t: "integer", min: 0, mx: 30 }, skema: { t: "string", e: ["kip_kuliah", "kip_kuliah_merdeka", "afirmasi", "lainnya"], d: "kip_kuliah" }, angkatan: { t: "string", ds: "m_tahun.tahun_id" }, status: { t: "string", e: ["diajukan", "diverifikasi", "diusulkan", "ditetapkan", "ditolak", "dicabut"], ds: "(hanya baca)", ro: 1 }, nomor_sk: { t: "string", max: 100, 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" } } }, 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" } } }, AdmisiUkt: { t: "object", ds: "UKT pendaftar (tabel adm_ukt)", pr: { id: { t: "integer" }, pmb_pendaftaran_id: { t: "integer", min: 1, mx: 2147483647, ds: "(unik)" }, no_pmb: { t: "string", max: 10, p: "^[A-Za-z0-9._\\-/]+$", ds: "(hanya baca)", ro: 1 }, kode_prodi: { t: "string", ds: "m_program_studi.kode_prodi" }, nim: { t: "string", ds: "m_mahasiswa.NIM (hanya baca)", ro: 1 }, penghasilan_ayah: { t: "number", d: "0" }, penghasilan_ibu: { t: "number", d: "0" }, penghasilan_wali: { t: "number", d: "0" }, jumlah_tanggungan: { t: "integer", min: 1, mx: 30, d: "1" }, pekerjaan_ayah: { t: "string", max: 100 }, pekerjaan_ibu: { t: "string", max: 100 }, daya_listrik: { t: "integer", min: 0, mx: 2e5 }, kepemilikan_rumah: { t: "string", e: ["milik_sendiri", "sewa", "menumpang", "dinas", "lainnya"] }, penghasilan_per_kapita: { t: "number", ds: "(hanya baca)", ro: 1 }, kelompok_usulan: { t: "string", max: 10, ds: "(hanya baca)", ro: 1 }, kelompok: { t: "string", max: 10, ds: "(hanya baca)", ro: 1 }, status: { t: "string", e: ["diajukan", "ditetapkan", "banding", "diterapkan"], 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" } } }, AdmisiUktAturan: { t: "object", ds: "Aturan usulan kelompok UKT (tabel adm_ukt_aturan)", pr: { id: { t: "integer" }, kode_prodi: { t: "string", ds: "m_program_studi.kode_prodi" }, per_kapita_min: { t: "number", d: "0" }, per_kapita_maks: { t: "number" }, kelompok: { t: "string", max: 10 }, aktif: { t: "boolean", d: "1" }, created_at: { t: "string", n: 1, f: "date-time" }, updated_at: { t: "string", n: 1, f: "date-time" } } }, AdmisiFormatNim: { t: "object", ds: "Format NIM (tabel adm_format_nim)", pr: { id: { t: "integer" }, kode_prodi: { t: "string", ds: "m_program_studi.kode_prodi (unik)" }, pola: { t: "string", max: 60 }, mulai: { t: "integer", min: 0, mx: 999999, d: "1" }, aktif: { t: "boolean", d: "1" }, created_at: { t: "string", n: 1, f: "date-time" }, updated_at: { t: "string", n: 1, f: "date-time" } } } };
|
|
12
|
+
var admisi_default = { key, resources, ops, mandiri, skema };
|
|
13
|
+
|
|
14
|
+
exports.default = admisi_default;
|
|
15
|
+
exports.key = key;
|
|
16
|
+
exports.mandiri = mandiri;
|
|
17
|
+
exports.ops = ops;
|
|
18
|
+
exports.resources = resources;
|
|
19
|
+
exports.skema = skema;
|
|
20
|
+
//# sourceMappingURL=admisi-U6YYQGBB.cjs.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/akademik.json
|
|
7
|
+
var key = "akademik";
|
|
8
|
+
var resources = [{ id: "/v1/akademik/batas/{jenis}", tag: "Akademik: Batas waktu input", title: "Batas waktu input", base: "/v1/akademik/batas/{jenis}", item: "/v1/akademik/batas/{jenis}/{id}", key: "id", actions: ["postAkademikBatasByJenisById", "postAkademikBatasByJenisByIdKunci"], children: [] }, { id: "/v1/akademik/jadwal", tag: "Akademik: Jadwal dan kelas", title: "Jadwal dan kelas", base: "/v1/akademik/jadwal", item: "/v1/akademik/jadwal/{idj}", key: "idj", create: "postAkademikJadwal", actions: ["postAkademikJadwalByIdj", "postAkademikJadwalByIdjTim"], children: [], extra: ["getAkademikJadwal"] }, { id: "/v1/akademik/kartu-identitas", tag: "Akademik: Dokumen dan laporan", title: "Dokumen dan laporan", base: "/v1/akademik/kartu-identitas", item: "/v1/akademik/kartu-identitas/{username}", key: "username", get: "getAkademikKartuIdentitasByUsername", actions: [], children: [] }, { id: "/v1/akademik/kelas", tag: "Akademik: Jadwal dan kelas", title: "Jadwal dan kelas", base: "/v1/akademik/kelas", item: "/v1/akademik/kelas/{idk}", key: "idk", create: "postAkademikKelas", actions: ["postAkademikKelasByIdk", "postAkademikKelasByIdkHapus"], children: [], extra: ["getAkademikKelas"] }, { id: "/v1/akademik/krs/persetujuan", tag: "Akademik: Persetujuan KRS", title: "Persetujuan KRS", base: "/v1/akademik/krs/persetujuan", item: "/v1/akademik/krs/persetujuan/{nim}", key: "nim", create: "postAkademikKrsPersetujuan", get: "getAkademikKrsPersetujuanByNim", actions: ["postAkademikKrsPersetujuanByNim", "postAkademikKrsPersetujuanByNimHapusMk", "postAkademikKrsPersetujuanByNimPesan"], children: [], extra: ["getAkademikKrsPersetujuan"] }, { id: "/v1/akademik/nilai/kelas", tag: "Akademik: Nilai", title: "Nilai", base: "/v1/akademik/nilai/kelas", item: "/v1/akademik/nilai/kelas/{idj}", key: "idj", get: "getAkademikNilaiKelasByIdj", actions: ["postAkademikNilaiKelasByIdj", "postAkademikNilaiKelasByIdjUmumkan"], children: [], extra: ["getAkademikNilaiKelas"] }, { id: "/v1/akademik/pengajuan", tag: "Akademik: Pengajuan status", title: "Pengajuan status akademik", base: "/v1/akademik/pengajuan", item: "/v1/akademik/pengajuan/{id}", key: "id", list: "getAkademikPengajuan", create: "postAkademikPengajuan", get: "getAkademikPengajuanById", update: "putAkademikPengajuanById", del: "deleteAkademikPengajuanById", actions: ["postAkademikPengajuanByIdSetujui", "postAkademikPengajuanByIdTolak", "postAkademikPengajuanByIdBatalkan"], children: ["/v1/akademik/pengajuan/{id}/berkas"] }, { id: "/v1/akademik/pengajuan/{id}/berkas", tag: "Akademik: Pengajuan status", title: "Pengajuan status akademik", base: "/v1/akademik/pengajuan/{id}/berkas", item: "/v1/akademik/pengajuan/{id}/berkas/{uuid}", key: "uuid", list: "getAkademikPengajuanByIdBerkas", create: "postAkademikPengajuanByIdBerkas", get: "getAkademikPengajuanByIdBerkasByUuid", del: "deleteAkademikPengajuanByIdBerkasByUuid", actions: [], children: [], parent: "/v1/akademik/pengajuan" }, { id: "/v1/akademik/presensi/kelas", tag: "Akademik: Presensi dan jurnal", title: "Presensi dan jurnal", base: "/v1/akademik/presensi/kelas", item: "/v1/akademik/presensi/kelas/{idj}", key: "idj", get: "getAkademikPresensiKelasByIdj", actions: ["postAkademikPresensiKelasByIdj", "getAkademikPresensiKelasByIdjKartuAbsensi"], children: ["/v1/akademik/presensi/kelas/{idj}/mahasiswa", "/v1/akademik/presensi/kelas/{idj}/pertemuan"] }, { id: "/v1/akademik/presensi/kelas/{idj}/mahasiswa", tag: "Akademik: Presensi dan jurnal", title: "Presensi dan jurnal", base: "/v1/akademik/presensi/kelas/{idj}/mahasiswa", item: "/v1/akademik/presensi/kelas/{idj}/mahasiswa/{id}", key: "id", actions: ["postAkademikPresensiKelasByIdjMahasiswaById"], children: [], parent: "/v1/akademik/presensi/kelas" }, { id: "/v1/akademik/presensi/kelas/{idj}/pertemuan", tag: "Akademik: Presensi dan jurnal", title: "Presensi dan jurnal", base: "/v1/akademik/presensi/kelas/{idj}/pertemuan", item: "/v1/akademik/presensi/kelas/{idj}/pertemuan/{id}", key: "id", get: "getAkademikPresensiKelasByIdjPertemuanById", actions: ["postAkademikPresensiKelasByIdjPertemuanById", "postAkademikPresensiKelasByIdjPertemuanByIdHapus"], children: [], parent: "/v1/akademik/presensi/kelas" }, { id: "/v1/dosen", tag: "Dosen", title: "Dosen", base: "/v1/dosen", item: "/v1/dosen/{nidn}", key: "nidn", list: "getDosen", get: "getDosenByNidn", actions: [], children: ["/v1/dosen/{nidn}/jadwal", "/v1/dosen/{nidn}/mahasiswa-bimbingan"] }, { id: "/v1/dosen/{nidn}/jadwal", tag: "Jadwal", title: "Jadwal mengajar dosen", base: "/v1/dosen/{nidn}/jadwal", list: "getDosenByNidnJadwal", actions: [], children: [], parent: "/v1/dosen" }, { id: "/v1/dosen/{nidn}/mahasiswa-bimbingan", tag: "Dosen", title: "Mahasiswa bimbingan akademik", base: "/v1/dosen/{nidn}/mahasiswa-bimbingan", list: "getDosenByNidnMahasiswaBimbingan", actions: [], children: [], parent: "/v1/dosen" }, { id: "/v1/jadwal", tag: "Jadwal", title: "Jadwal kuliah", base: "/v1/jadwal", item: "/v1/jadwal/{idj}", key: "idj", list: "getJadwal", get: "getJadwalByIdj", actions: ["getJadwalByIdjPeserta", "getJadwalByIdjPresensi"], children: [] }, { id: "/v1/jadwal-ujian", tag: "Jadwal", title: "Jadwal ujian", base: "/v1/jadwal-ujian", list: "getJadwalUjian", actions: [], children: [] }, { id: "/v1/keuangan/biaya", tag: "Keuangan", title: "Master biaya per prodi dan periode", base: "/v1/keuangan/biaya", list: "getKeuanganBiaya", actions: [], children: [] }, { id: "/v1/keuangan/pembayaran", tag: "Keuangan", title: "Transaksi pembayaran", base: "/v1/keuangan/pembayaran", list: "getKeuanganPembayaran", actions: [], children: [] }, { id: "/v1/kurikulum", tag: "Akademik", title: "Ringkasan kurikulum per prodi", base: "/v1/kurikulum", list: "getKurikulum", actions: [], children: [] }, { id: "/v1/lulusan", tag: "Lulusan", title: "Lulusan dan mahasiswa keluar", base: "/v1/lulusan", list: "getLulusan", actions: [], children: [] }, { id: "/v1/mahasiswa", tag: "Mahasiswa", title: "Mahasiswa", base: "/v1/mahasiswa", item: "/v1/mahasiswa/{nim}", key: "nim", list: "getMahasiswa", get: "getMahasiswaByNim", actions: ["getMahasiswaByNimStatusSemester", "getMahasiswaByNimKrs", "postMahasiswaByNimKrs", "getMahasiswaByNimKhs", "getMahasiswaByNimTranskrip", "getMahasiswaByNimJadwal", "getMahasiswaByNimPresensi", "getMahasiswaByNimKeuangan", "getMahasiswaByNimKelulusan"], children: ["/v1/mahasiswa/{nim}/krs/pesan", "/v1/mahasiswa/{nim}/tugas-akhir"] }, { id: "/v1/mahasiswa/{nim}/krs/pesan", tag: "KRS", title: "Pesan konsultasi KRS dengan dosen PA", base: "/v1/mahasiswa/{nim}/krs/pesan", list: "getMahasiswaByNimKrsPesan", create: "postMahasiswaByNimKrsPesan", actions: [], children: [], parent: "/v1/mahasiswa" }, { id: "/v1/mahasiswa/{nim}/tugas-akhir", tag: "Lulusan", title: "Tugas akhir/skripsi", base: "/v1/mahasiswa/{nim}/tugas-akhir", list: "getMahasiswaByNimTugasAkhir", actions: [], children: [], parent: "/v1/mahasiswa" }, { id: "/v1/mata-kuliah", tag: "Akademik", title: "Mata kuliah", base: "/v1/mata-kuliah", list: "getMataKuliah", actions: [], children: [] }, { id: "/v1/wisuda", tag: "Lulusan", title: "Periode wisuda", base: "/v1/wisuda", list: "getWisuda", actions: [], children: [] }];
|
|
9
|
+
var ops = { getMahasiswa: { id: "getMahasiswa", m: "GET", path: "/v1/mahasiswa", tag: "Mahasiswa", sum: "Cari mahasiswa", ds: "Token dosen otomatis dibatasi ke mahasiswa bimbingannya; token mahasiswa tidak boleh memakai endpoint ini.", sc: ["mahasiswa:read"], pa: [{ nm: "prodi", in: "query", s: { t: "string", ex: "86206", rf: { l: "/v1/referensi/prodi", k: "kode_prodi", q: 0 } }, ds: "Kode prodi" }, { nm: "angkatan", in: "query", s: { t: "string", ex: "2024" }, ds: "Tahun masuk (4 digit)" }, { nm: "semester_masuk", in: "query", s: { t: "string", p: "^\\d{5}$", ex: "20261" }, ds: "Periode masuk" }, { nm: "status", in: "query", s: { t: "string", ex: "A" }, ds: "Kode status aktif (A, C, N, L, D, K, ...)" }, { nm: "nidn_pa", in: "query", s: { t: "string" }, ds: "NIDN dosen pembimbing akademik" }, { nm: "kelas", in: "query", s: { t: "string" }, ds: "Kode kelas" }, { nm: "q", in: "query", s: { t: "string" }, ds: "Cari NIM (awalan) atau nama" }, { nm: "page", in: "query", s: { t: "integer", min: 1, d: 1 }, ds: "Nomor halaman, mulai 1." }, { nm: "per_page", in: "query", s: { t: "integer", min: 1, mx: 100, d: 25 }, ds: "Jumlah data per halaman (maksimal 100)." }], r: "list", it: "MahasiswaRingkas" }, getMahasiswaByNim: { id: "getMahasiswaByNim", m: "GET", path: "/v1/mahasiswa/{nim}", tag: "Mahasiswa", sum: "Profil mahasiswa", ds: "Objek `pribadi` (NIK, tanggal lahir, alamat, kontak) hanya ada bila token punya scope `mahasiswa:pii`.", sc: ["mahasiswa: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: "Mahasiswa" }, getMahasiswaByNimStatusSemester: { id: "getMahasiswaByNimStatusSemester", m: "GET", path: "/v1/mahasiswa/{nim}/status-semester", tag: "Mahasiswa", sum: "Riwayat status per semester dan cuti", ds: "Status: A aktif, N non-aktif, C cuti (t_mahasiswa_status).", sc: ["mahasiswa: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" }, getMahasiswaByNimKrs: { id: "getMahasiswaByNimKrs", m: "GET", path: "/v1/mahasiswa/{nim}/krs", tag: "KRS", sum: "KRS mahasiswa", ds: "Default periode aktif. `tahun_id=semua` untuk semua periode. `status_krs` T = disetujui.", sc: ["krs:read"], pa: [{ nm: "nim", in: "path", s: { t: "string", rf: { l: "/v1/mahasiswa", k: "nim", d: "/v1/mahasiswa/{nim}" } }, rq: 1, ds: "NIM" }, { nm: "tahun_id", in: "query", s: { t: "string", ex: "20261", rf: { l: "/v1/referensi/tahun-akademik", k: "tahun_id", q: 0 } }, ds: 'Periode, atau "semua"' }], r: "object", it: "Krs" }, postMahasiswaByNimKrs: { id: "postMahasiswaByNimKrs", m: "POST", path: "/v1/mahasiswa/{nim}/krs", tag: "KRS", sum: "Ambil (simpan) KRS", ds: "Hanya token pengguna mahasiswa itu sendiri, pada periode aktif. Kirim `id` mata kuliah dan `idj` kelas dari\n`/krs/penawaran`. Server menghitung ulang batas SKS dan menolak mata kuliah/kelas yang tidak ditawarkan,\nbelum memenuhi prasyarat, atau penuh. Penyimpanan memakai logika yang sama dengan halaman web.", sc: ["krs:write"], pa: [{ nm: "nim", in: "path", s: { t: "string", rf: { l: "/v1/mahasiswa", k: "nim", d: "/v1/mahasiswa/{nim}" } }, rq: 1, ds: "NIM" }], b: { ct: "application/json", ref: "KrsAmbilRequest", s: { t: "object", pr: { mata_kuliah: { t: "array", i: { t: "object", pr: { id: { t: "integer" }, idj: { t: "integer" } }, rq: ["id"] } } }, rq: ["mata_kuliah"] }, rq: 1 }, r: "object", it: "KrsAmbilResponse" }, getMahasiswaByNimKrsPenawaran: { id: "getMahasiswaByNimKrsPenawaran", m: "GET", path: "/v1/mahasiswa/{nim}/krs/penawaran", tag: "KRS", sum: "Mata kuliah yang bisa diambil (form Ambil KRS)", ds: "Hanya token pengguna mahasiswa itu sendiri. Menjalankan pemeriksaan yang sama dengan halaman Ambil KRS:\nstatus aktif, kelas, persetujuan PA, masa KRS, administrasi/pembayaran, cuti, batas SKS, dan prasyarat.\nBila `boleh_ambil` false, `alasan` dan `pesan` menjelaskan sebabnya.", sc: ["krs: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: "KrsPenawaran" }, getMahasiswaByNimKrsPesan: { id: "getMahasiswaByNimKrsPesan", m: "GET", path: "/v1/mahasiswa/{nim}/krs/pesan", tag: "KRS", sum: "Pesan konsultasi KRS dengan dosen PA", sc: ["krs:read"], pa: [{ nm: "nim", in: "path", s: { t: "string", rf: { l: "/v1/mahasiswa", k: "nim", d: "/v1/mahasiswa/{nim}" } }, rq: 1, ds: "NIM" }, { nm: "tahun_id", in: "query", s: { t: "string", p: "^\\d{5}$", ex: "20261", rf: { l: "/v1/referensi/tahun-akademik", k: "tahun_id", q: 0 } }, ds: "Periode" }], r: "list", it: "Objek" }, postMahasiswaByNimKrsPesan: { id: "postMahasiswaByNimKrsPesan", m: "POST", path: "/v1/mahasiswa/{nim}/krs/pesan", tag: "KRS", sum: "Kirim pesan konsultasi KRS", ds: "Hanya bila fitur konsultasi PA aktif untuk periode/prodi mahasiswa.", sc: ["krs:write"], pa: [{ nm: "nim", in: "path", s: { t: "string", rf: { l: "/v1/mahasiswa", k: "nim", d: "/v1/mahasiswa/{nim}" } }, rq: 1, ds: "NIM" }], b: { ct: "application/json", ref: "PesanRequest", s: { t: "object", pr: { pesan: { t: "string", max: 2e3 } }, rq: ["pesan"] }, rq: 1 }, r: "object" }, getMahasiswaByNimKhs: { id: "getMahasiswaByNimKhs", m: "GET", path: "/v1/mahasiswa/{nim}/khs", tag: "Nilai", sum: "KHS dan IPS/IPK", ds: "Dengan `tahun_id`: KHS satu periode. Tanpa `tahun_id`: semua periode. Nilai, IPS, dan IPK dihitung dengan fungsi\nyang sama dengan halaman KHS (nilai yang belum divalidasi tidak ditampilkan: `nilai_ditampilkan` false).", sc: ["nilai:read"], pa: [{ nm: "nim", in: "path", s: { t: "string", rf: { l: "/v1/mahasiswa", k: "nim", d: "/v1/mahasiswa/{nim}" } }, rq: 1, ds: "NIM" }, { nm: "tahun_id", in: "query", s: { t: "string", p: "^\\d{5}$", ex: "20261", rf: { l: "/v1/referensi/tahun-akademik", k: "tahun_id", q: 0 } }, ds: "Periode" }], r: "object", it: "Khs" }, getMahasiswaByNimTranskrip: { id: "getMahasiswaByNimTranskrip", m: "GET", path: "/v1/mahasiswa/{nim}/transkrip", tag: "Nilai", sum: "Transkrip (nilai terbaik per mata kuliah) dan IPK", ds: "Sama dengan halaman transkrip sementara.", sc: ["nilai: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: "Transkrip" }, getMahasiswaByNimJadwal: { id: "getMahasiswaByNimJadwal", m: "GET", path: "/v1/mahasiswa/{nim}/jadwal", tag: "Jadwal", sum: "Jadwal kuliah mahasiswa", ds: "Dari KRS periode yang diminta (default periode aktif).", sc: ["jadwal:read"], pa: [{ nm: "nim", in: "path", s: { t: "string", rf: { l: "/v1/mahasiswa", k: "nim", d: "/v1/mahasiswa/{nim}" } }, rq: 1, ds: "NIM" }, { nm: "tahun_id", in: "query", s: { t: "string", p: "^\\d{5}$", ex: "20261", rf: { l: "/v1/referensi/tahun-akademik", k: "tahun_id", q: 0 } }, ds: "Periode" }], r: "object", it: "JadwalMahasiswa" }, getMahasiswaByNimPresensi: { id: "getMahasiswaByNimPresensi", m: "GET", path: "/v1/mahasiswa/{nim}/presensi", tag: "Presensi", sum: "Presensi mahasiswa", ds: "Rekap per mata kuliah dan detail pertemuan.", sc: ["presensi:read"], pa: [{ nm: "nim", in: "path", s: { t: "string", rf: { l: "/v1/mahasiswa", k: "nim", d: "/v1/mahasiswa/{nim}" } }, rq: 1, ds: "NIM" }, { nm: "tahun_id", in: "query", s: { t: "string", p: "^\\d{5}$", ex: "20261", rf: { l: "/v1/referensi/tahun-akademik", k: "tahun_id", q: 0 } }, ds: "Periode" }, { nm: "kode_mk", in: "query", s: { t: "string" }, ds: "Kode mata kuliah" }], r: "object", it: "Objek" }, getMahasiswaByNimKeuangan: { id: "getMahasiswaByNimKeuangan", m: "GET", path: "/v1/mahasiswa/{nim}/keuangan", tag: "Keuangan", sum: "Tagihan dan pembayaran mahasiswa", ds: "Sama dengan halaman Riwayat Keuangan: tagihan, dibayar, potongan, dan sisa per jenis biaya per periode.", sc: ["keuangan:read"], pa: [{ nm: "nim", in: "path", s: { t: "string", rf: { l: "/v1/mahasiswa", k: "nim", d: "/v1/mahasiswa/{nim}" } }, rq: 1, ds: "NIM" }, { nm: "tahun_id", in: "query", s: { t: "string", p: "^\\d{5}$", ex: "20261", rf: { l: "/v1/referensi/tahun-akademik", k: "tahun_id", q: 0 } }, ds: "Periode" }], r: "object", it: "Keuangan" }, getMahasiswaByNimTugasAkhir: { id: "getMahasiswaByNimTugasAkhir", m: "GET", path: "/v1/mahasiswa/{nim}/tugas-akhir", tag: "Lulusan", sum: "Tugas akhir/skripsi", ds: "Judul, jadwal seminar/ujian, pembimbing, penguji, dan nilai.", sc: ["lulusan:read"], pa: [{ nm: "nim", in: "path", s: { t: "string", rf: { l: "/v1/mahasiswa", k: "nim", d: "/v1/mahasiswa/{nim}" } }, rq: 1, ds: "NIM" }], r: "list", it: "Objek" }, getMahasiswaByNimKelulusan: { id: "getMahasiswaByNimKelulusan", m: "GET", path: "/v1/mahasiswa/{nim}/kelulusan", tag: "Lulusan", sum: "Status kelulusan/keluar dan pendaftaran wisuda", sc: ["lulusan: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" }, getDosen: { id: "getDosen", m: "GET", path: "/v1/dosen", tag: "Dosen", sum: "Cari dosen", ds: "Objek `pribadi` hanya dengan scope `dosen:pii` (token dosen: hanya dirinya).", sc: ["dosen:read"], pa: [{ nm: "prodi", in: "query", s: { t: "string", ex: "86206", rf: { l: "/v1/referensi/prodi", k: "kode_prodi", q: 0 } }, ds: "Kode prodi" }, { nm: "status", in: "query", s: { t: "string" }, ds: "Kode status aktif" }, { nm: "q", in: "query", s: { t: "string" }, ds: "Cari NIDN (awalan) atau nama" }, { nm: "page", in: "query", s: { t: "integer", min: 1, d: 1 }, ds: "Nomor halaman, mulai 1." }, { nm: "per_page", in: "query", s: { t: "integer", min: 1, mx: 100, d: 25 }, ds: "Jumlah data per halaman (maksimal 100)." }], r: "list", it: "Dosen" }, getDosenByNidn: { id: "getDosenByNidn", m: "GET", path: "/v1/dosen/{nidn}", tag: "Dosen", sum: "Profil dosen", sc: ["dosen:read"], pa: [{ nm: "nidn", in: "path", s: { t: "string", rf: { l: "/v1/dosen", k: "nidn", d: "/v1/dosen/{nidn}" } }, rq: 1, ds: "NIDN" }], r: "object", it: "Dosen" }, getDosenByNidnJadwal: { id: "getDosenByNidnJadwal", m: "GET", path: "/v1/dosen/{nidn}/jadwal", tag: "Jadwal", sum: "Jadwal mengajar dosen", ds: "Termasuk kelas di mana dosen menjadi anggota tim pengajar.", sc: ["jadwal:read"], pa: [{ nm: "nidn", in: "path", s: { t: "string", rf: { l: "/v1/dosen", k: "nidn", d: "/v1/dosen/{nidn}" } }, rq: 1, ds: "NIDN" }, { nm: "tahun_id", in: "query", s: { t: "string", p: "^\\d{5}$", ex: "20261", rf: { l: "/v1/referensi/tahun-akademik", k: "tahun_id", q: 0 } }, ds: "Periode (default aktif)" }, { nm: "page", in: "query", s: { t: "integer", min: 1, d: 1 }, ds: "Nomor halaman, mulai 1." }, { nm: "per_page", in: "query", s: { t: "integer", min: 1, mx: 100, d: 25 }, ds: "Jumlah data per halaman (maksimal 100)." }], r: "list", it: "Jadwal" }, getDosenByNidnMahasiswaBimbingan: { id: "getDosenByNidnMahasiswaBimbingan", m: "GET", path: "/v1/dosen/{nidn}/mahasiswa-bimbingan", tag: "Dosen", sum: "Mahasiswa bimbingan akademik (PA)", sc: ["mahasiswa:read"], pa: [{ nm: "nidn", in: "path", s: { t: "string", rf: { l: "/v1/dosen", k: "nidn", d: "/v1/dosen/{nidn}" } }, rq: 1, ds: "NIDN" }, { nm: "status", in: "query", s: { t: "string" }, ds: "Kode status aktif" }, { nm: "page", in: "query", s: { t: "integer", min: 1, d: 1 }, ds: "Nomor halaman, mulai 1." }, { nm: "per_page", in: "query", s: { t: "integer", min: 1, mx: 100, d: 25 }, ds: "Jumlah data per halaman (maksimal 100)." }], r: "list", it: "MahasiswaRingkas" }, getMataKuliah: { id: "getMataKuliah", m: "GET", path: "/v1/mata-kuliah", tag: "Akademik", sum: "Mata kuliah (kurikulum per periode)", sc: ["akademik:read"], pa: [{ nm: "prodi", in: "query", s: { t: "string", ex: "86206", rf: { l: "/v1/referensi/prodi", k: "kode_prodi", q: 0 } }, ds: "Kode prodi" }, { nm: "tahun_id", in: "query", s: { t: "string", p: "^\\d{5}$", ex: "20261", rf: { l: "/v1/referensi/tahun-akademik", k: "tahun_id", q: 0 } }, ds: "Periode kurikulum" }, { nm: "semester", in: "query", s: { t: "string" }, ds: "Semester (1-14)" }, { nm: "status", in: "query", s: { t: "string" }, ds: "kode_status (A = aktif)" }, { nm: "q", in: "query", s: { t: "string" }, ds: "Cari kode (awalan) atau nama" }, { nm: "page", in: "query", s: { t: "integer", min: 1, d: 1 }, ds: "Nomor halaman, mulai 1." }, { nm: "per_page", in: "query", s: { t: "integer", min: 1, mx: 100, d: 25 }, ds: "Jumlah data per halaman (maksimal 100)." }], r: "list", it: "Objek" }, getKurikulum: { id: "getKurikulum", m: "GET", path: "/v1/kurikulum", tag: "Akademik", sum: "Ringkasan kurikulum per prodi (SKS wajib/pilihan/total)", sc: ["akademik:read"], pa: [{ nm: "prodi", in: "query", s: { t: "string", ex: "86206", rf: { l: "/v1/referensi/prodi", k: "kode_prodi", q: 0 } }, ds: "Kode prodi" }], r: "list", it: "Objek" }, getJadwal: { id: "getJadwal", m: "GET", path: "/v1/jadwal", tag: "Jadwal", sum: "Jadwal kuliah", ds: "Default periode aktif.", sc: ["jadwal:read"], pa: [{ nm: "tahun_id", in: "query", s: { t: "string", p: "^\\d{5}$", ex: "20261", rf: { l: "/v1/referensi/tahun-akademik", k: "tahun_id", q: 0 } }, ds: "Periode" }, { nm: "prodi", in: "query", s: { t: "string", ex: "86206", rf: { l: "/v1/referensi/prodi", k: "kode_prodi", q: 0 } }, ds: "Kode prodi" }, { nm: "nidn", in: "query", s: { t: "string", rf: { l: "/v1/dosen", k: "nidn", d: "/v1/dosen/{nidn}" } }, ds: "NIDN pengampu/tim" }, { nm: "kode_mk", in: "query", s: { t: "string" }, ds: "Kode mata kuliah" }, { nm: "kelas", in: "query", s: { t: "string" }, ds: "Kode kelas" }, { nm: "hari", in: "query", s: { t: "string" }, ds: "Kode hari" }, { nm: "page", in: "query", s: { t: "integer", min: 1, d: 1 }, ds: "Nomor halaman, mulai 1." }, { nm: "per_page", in: "query", s: { t: "integer", min: 1, mx: 100, d: 25 }, ds: "Jumlah data per halaman (maksimal 100)." }], r: "list", it: "Jadwal" }, getJadwalByIdj: { id: "getJadwalByIdj", m: "GET", path: "/v1/jadwal/{idj}", tag: "Jadwal", sum: "Detail jadwal kuliah", sc: ["jadwal:read"], pa: [{ nm: "idj", in: "path", s: { t: "string", rf: { l: "/v1/jadwal", k: "idj", d: "/v1/jadwal/{idj}" } }, rq: 1, ds: "ID jadwal" }], r: "object", it: "Jadwal" }, getJadwalByIdjPeserta: { id: "getJadwalByIdjPeserta", m: "GET", path: "/v1/jadwal/{idj}/peserta", tag: "Jadwal", sum: "Peserta kelas", ds: "Mahasiswa yang KRS-nya memakai jadwal ini. Token dosen: hanya kelas yang diajarnya.", sc: ["krs:read"], pa: [{ nm: "idj", in: "path", s: { t: "string", rf: { l: "/v1/jadwal", k: "idj", d: "/v1/jadwal/{idj}" } }, rq: 1, ds: "ID jadwal" }], r: "object", it: "Objek" }, getJadwalByIdjPresensi: { id: "getJadwalByIdjPresensi", m: "GET", path: "/v1/jadwal/{idj}/presensi", tag: "Presensi", sum: "Presensi dosen (berita acara) satu kelas", sc: ["presensi:read"], pa: [{ nm: "idj", in: "path", s: { t: "string", rf: { l: "/v1/jadwal", k: "idj", d: "/v1/jadwal/{idj}" } }, rq: 1, ds: "ID jadwal" }], r: "object", it: "Objek" }, getJadwalUjian: { id: "getJadwalUjian", m: "GET", path: "/v1/jadwal-ujian", tag: "Jadwal", sum: "Jadwal ujian (UTS/UAS)", sc: ["jadwal:read"], pa: [{ nm: "tahun_id", in: "query", s: { t: "string", p: "^\\d{5}$", ex: "20261", rf: { l: "/v1/referensi/tahun-akademik", k: "tahun_id", q: 0 } }, ds: "Periode" }, { nm: "prodi", in: "query", s: { t: "string", ex: "86206", rf: { l: "/v1/referensi/prodi", k: "kode_prodi", q: 0 } }, ds: "Kode prodi" }, { nm: "kode_mk", in: "query", s: { t: "string" }, ds: "Kode mata kuliah" }, { nm: "ujian", in: "query", s: { t: "string" }, ds: "Jenis ujian" }, { nm: "page", in: "query", s: { t: "integer", min: 1, d: 1 }, ds: "Nomor halaman, mulai 1." }, { nm: "per_page", in: "query", s: { t: "integer", min: 1, mx: 100, d: 25 }, ds: "Jumlah data per halaman (maksimal 100)." }], r: "list", it: "Objek" }, getKeuanganBiaya: { id: "getKeuanganBiaya", m: "GET", path: "/v1/keuangan/biaya", tag: "Keuangan", sum: "Master biaya per prodi dan periode", sc: ["keuangan:read"], pa: [{ nm: "prodi", in: "query", s: { t: "string", ex: "86206", rf: { l: "/v1/referensi/prodi", k: "kode_prodi", q: 0 } }, ds: "Kode prodi" }, { nm: "tahun_id", in: "query", s: { t: "string", p: "^\\d{5}$", ex: "20261", rf: { l: "/v1/referensi/tahun-akademik", k: "tahun_id", q: 0 } }, ds: "Periode" }], r: "list", it: "Objek" }, getKeuanganPembayaran: { id: "getKeuanganPembayaran", m: "GET", path: "/v1/keuangan/pembayaran", tag: "Keuangan", sum: "Transaksi pembayaran", ds: "Untuk aplikasi keuangan/bank. Tidak untuk token mahasiswa/dosen.", sc: ["keuangan:read"], pa: [{ nm: "tahun_id", in: "query", s: { t: "string", p: "^\\d{5}$", ex: "20261", rf: { l: "/v1/referensi/tahun-akademik", k: "tahun_id", q: 0 } }, ds: "Periode" }, { nm: "prodi", in: "query", s: { t: "string", ex: "86206", rf: { l: "/v1/referensi/prodi", k: "kode_prodi", q: 0 } }, ds: "Kode prodi" }, { nm: "nim", in: "query", s: { t: "string", rf: { l: "/v1/mahasiswa", k: "nim", d: "/v1/mahasiswa/{nim}" } }, ds: "NIM" }, { nm: "kode_biaya", in: "query", s: { t: "string" }, ds: "Kode biaya" }, { nm: "dari", in: "query", s: { t: "string", f: "date" }, ds: "Tanggal awal (YYYY-MM-DD)" }, { nm: "sampai", in: "query", s: { t: "string", f: "date" }, ds: "Tanggal akhir (YYYY-MM-DD)" }, { nm: "page", in: "query", s: { t: "integer", min: 1, d: 1 }, ds: "Nomor halaman, mulai 1." }, { nm: "per_page", in: "query", s: { t: "integer", min: 1, mx: 100, d: 25 }, ds: "Jumlah data per halaman (maksimal 100)." }], r: "list", it: "Objek" }, getLulusan: { id: "getLulusan", m: "GET", path: "/v1/lulusan", tag: "Lulusan", sum: "Daftar lulusan dan mahasiswa keluar", ds: "Dari t_mahasiswa_status_lulus_do. Status: L lulus, D drop out, K keluar, dll.", sc: ["lulusan:read"], pa: [{ nm: "prodi", in: "query", s: { t: "string", ex: "86206", rf: { l: "/v1/referensi/prodi", k: "kode_prodi", q: 0 } }, ds: "Kode prodi" }, { nm: "tahun_id", in: "query", s: { t: "string", p: "^\\d{5}$", ex: "20261", rf: { l: "/v1/referensi/tahun-akademik", k: "tahun_id", q: 0 } }, ds: "Periode" }, { nm: "status", in: "query", s: { t: "string" }, ds: "Kode status" }, { nm: "page", in: "query", s: { t: "integer", min: 1, d: 1 }, ds: "Nomor halaman, mulai 1." }, { nm: "per_page", in: "query", s: { t: "integer", min: 1, mx: 100, d: 25 }, ds: "Jumlah data per halaman (maksimal 100)." }], r: "list", it: "Objek" }, getWisuda: { id: "getWisuda", m: "GET", path: "/v1/wisuda", tag: "Lulusan", sum: "Periode wisuda", sc: ["lulusan:read"], r: "list", it: "Objek" }, getAkademikSaya: { id: "getAkademikSaya", m: "GET", path: "/v1/akademik/saya", tag: "Akademik: Jadwal dan kelas", sum: "Hak akses akademik saya", ds: "Apakah pemilik token pengelola akademik (ADMIN, BAK, PROGDI, OPERATOR, peran akademik:kelola), dosen, prodi yang boleh dikelola, dan tahun aktif.", sc: ["akademik:read"], r: "object", it: "Objek" }, getAkademikJadwalReferensi: { id: "getAkademikJadwalReferensi", m: "GET", path: "/v1/akademik/jadwal/referensi", tag: "Akademik: Jadwal dan kelas", sum: "Referensi form jadwal", ds: "Mata kuliah, kelas, ruang, hari, jam, dosen aktif, kampus, periode untuk satu prodi.", sc: ["akademik:read"], pa: [{ nm: "prodi", in: "query", s: { t: "string", rf: { l: "/v1/referensi/prodi", k: "kode_prodi", q: 0 } }, ds: "Kode prodi (wajib bila berwenang di lebih dari satu prodi; boleh juga di body)" }, { nm: "tahun_id", in: "query", s: { t: "string", rf: { l: "/v1/referensi/tahun-akademik", k: "tahun_id", q: 0 } }, ds: "Bawaan tahun aktif (boleh juga di body)" }], r: "object", it: "Objek" }, getAkademikJadwal: { id: "getAkademikJadwal", m: "GET", path: "/v1/akademik/jadwal", tag: "Akademik: Jadwal dan kelas", sum: "Daftar jadwal kuliah prodi", ds: "Jadwal per periode dengan jam, dosen + tim, peserta, bisa_dihapus. Semester pendek = periode berakhiran 3 (mis. 20253).", sc: ["akademik:read"], pa: [{ nm: "prodi", in: "query", s: { t: "string", rf: { l: "/v1/referensi/prodi", k: "kode_prodi", q: 0 } }, ds: "Kode prodi (wajib bila berwenang di lebih dari satu prodi; boleh juga di body)" }, { nm: "tahun_id", in: "query", s: { t: "string", rf: { l: "/v1/referensi/tahun-akademik", k: "tahun_id", q: 0 } }, ds: "Bawaan tahun aktif (boleh juga di body)" }], r: "object", it: "Objek" }, postAkademikJadwal: { id: "postAkademikJadwal", m: "POST", path: "/v1/akademik/jadwal", tag: "Akademik: Jadwal dan kelas", sum: "Tambah jadwal", ds: 'Body: {"kode_mk", "kelas", "ruang", "kapasitas", "hari", "jamke", "nidn"}. Lewat JadwalKuliahService (validasi bentrok ruang/dosen dan jadwal ganda sama dengan web; ditolak 409 dengan pesan).', sc: ["akademik:write"], pa: [{ nm: "prodi", in: "query", s: { t: "string", rf: { l: "/v1/referensi/prodi", k: "kode_prodi", q: 0 } }, ds: "Kode prodi (wajib bila berwenang di lebih dari satu prodi; boleh juga di body)" }, { nm: "tahun_id", in: "query", s: { t: "string", rf: { l: "/v1/referensi/tahun-akademik", k: "tahun_id", q: 0 } }, ds: "Bawaan tahun aktif (boleh juga di body)" }], r: "object", it: "Objek" }, postAkademikJadwalHapus: { id: "postAkademikJadwalHapus", m: "POST", path: "/v1/akademik/jadwal/hapus", tag: "Akademik: Jadwal dan kelas", sum: "Hapus jadwal", ds: 'Body: {"id": [12, 13]}. Jadwal yang sudah dipakai KRS dilewati.', sc: ["akademik:write"], pa: [{ nm: "prodi", in: "query", s: { t: "string", rf: { l: "/v1/referensi/prodi", k: "kode_prodi", q: 0 } }, ds: "Kode prodi (wajib bila berwenang di lebih dari satu prodi; boleh juga di body)" }, { nm: "tahun_id", in: "query", s: { t: "string", rf: { l: "/v1/referensi/tahun-akademik", k: "tahun_id", q: 0 } }, ds: "Bawaan tahun aktif (boleh juga di body)" }], r: "object", it: "Objek" }, postAkademikJadwalSalin: { id: "postAkademikJadwalSalin", m: "POST", path: "/v1/akademik/jadwal/salin", tag: "Akademik: Jadwal dan kelas", sum: "Salin jadwal dari periode lain", ds: 'Body: {"sumber": "20242"}. Lewat JadwalKuliahService::salin.', sc: ["akademik:write"], pa: [{ nm: "prodi", in: "query", s: { t: "string", rf: { l: "/v1/referensi/prodi", k: "kode_prodi", q: 0 } }, ds: "Kode prodi (wajib bila berwenang di lebih dari satu prodi; boleh juga di body)" }, { nm: "tahun_id", in: "query", s: { t: "string", rf: { l: "/v1/referensi/tahun-akademik", k: "tahun_id", q: 0 } }, ds: "Bawaan tahun aktif (boleh juga di body)" }], r: "object", it: "Objek" }, postAkademikJadwalByIdj: { id: "postAkademikJadwalByIdj", m: "POST", path: "/v1/akademik/jadwal/{idj}", tag: "Akademik: Jadwal dan kelas", sum: "Ubah jadwal", ds: "Body sama dengan tambah jadwal.", sc: ["akademik:write"], pa: [{ nm: "idj", in: "path", s: { t: "string" }, rq: 1, ds: "ID jadwal kuliah (t_jadwal.idj)" }, { nm: "prodi", in: "query", s: { t: "string", rf: { l: "/v1/referensi/prodi", k: "kode_prodi", q: 0 } }, ds: "Kode prodi (wajib bila berwenang di lebih dari satu prodi; boleh juga di body)" }, { nm: "tahun_id", in: "query", s: { t: "string", rf: { l: "/v1/referensi/tahun-akademik", k: "tahun_id", q: 0 } }, ds: "Bawaan tahun aktif (boleh juga di body)" }], r: "object", it: "Objek" }, postAkademikJadwalByIdjTim: { id: "postAkademikJadwalByIdjTim", m: "POST", path: "/v1/akademik/jadwal/{idj}/tim", tag: "Akademik: Jadwal dan kelas", sum: "Atur dosen pengampu (tim dosen)", ds: 'Body: {"nidn": ["0905011", ...]} (kosong = hapus tim).', sc: ["akademik:write"], pa: [{ nm: "idj", in: "path", s: { t: "string" }, rq: 1, ds: "ID jadwal kuliah (t_jadwal.idj)" }, { nm: "prodi", in: "query", s: { t: "string", rf: { l: "/v1/referensi/prodi", k: "kode_prodi", q: 0 } }, ds: "Kode prodi (wajib bila berwenang di lebih dari satu prodi; boleh juga di body)" }, { nm: "tahun_id", in: "query", s: { t: "string", rf: { l: "/v1/referensi/tahun-akademik", k: "tahun_id", q: 0 } }, ds: "Bawaan tahun aktif (boleh juga di body)" }], r: "object", it: "Objek" }, getAkademikKelas: { id: "getAkademikKelas", m: "GET", path: "/v1/akademik/kelas", tag: "Akademik: Jadwal dan kelas", sum: "Data kelas prodi", ds: "m_kelas + jumlah jadwal dan mahasiswa.", sc: ["akademik:read"], pa: [{ nm: "prodi", in: "query", s: { t: "string", rf: { l: "/v1/referensi/prodi", k: "kode_prodi", q: 0 } }, ds: "Kode prodi (wajib bila berwenang di lebih dari satu prodi; boleh juga di body)" }, { nm: "tahun_id", in: "query", s: { t: "string", rf: { l: "/v1/referensi/tahun-akademik", k: "tahun_id", q: 0 } }, ds: "Bawaan tahun aktif (boleh juga di body)" }], r: "object", it: "Objek" }, postAkademikKelas: { id: "postAkademikKelas", m: "POST", path: "/v1/akademik/kelas", tag: "Akademik: Jadwal dan kelas", sum: "Tambah kelas", ds: 'Body: {"kelas": "A", "kode_kelas": "01", "kampus": "01"}.', sc: ["akademik:write"], pa: [{ nm: "prodi", in: "query", s: { t: "string", rf: { l: "/v1/referensi/prodi", k: "kode_prodi", q: 0 } }, ds: "Kode prodi (wajib bila berwenang di lebih dari satu prodi; boleh juga di body)" }, { nm: "tahun_id", in: "query", s: { t: "string", rf: { l: "/v1/referensi/tahun-akademik", k: "tahun_id", q: 0 } }, ds: "Bawaan tahun aktif (boleh juga di body)" }], r: "object", it: "Objek" }, postAkademikKelasByIdk: { id: "postAkademikKelasByIdk", m: "POST", path: "/v1/akademik/kelas/{idk}", tag: "Akademik: Jadwal dan kelas", sum: "Ubah kelas", ds: "Body sama dengan tambah kelas.", sc: ["akademik:write"], pa: [{ nm: "idk", in: "path", s: { t: "string" }, rq: 1, ds: "ID kelas" }, { nm: "prodi", in: "query", s: { t: "string", rf: { l: "/v1/referensi/prodi", k: "kode_prodi", q: 0 } }, ds: "Kode prodi (wajib bila berwenang di lebih dari satu prodi; boleh juga di body)" }, { nm: "tahun_id", in: "query", s: { t: "string", rf: { l: "/v1/referensi/tahun-akademik", k: "tahun_id", q: 0 } }, ds: "Bawaan tahun aktif (boleh juga di body)" }], r: "object", it: "Objek" }, postAkademikKelasByIdkHapus: { id: "postAkademikKelasByIdkHapus", m: "POST", path: "/v1/akademik/kelas/{idk}/hapus", tag: "Akademik: Jadwal dan kelas", sum: "Hapus kelas", ds: "Ditolak bila kelas masih dipakai jadwal/mahasiswa.", sc: ["akademik:write"], pa: [{ nm: "idk", in: "path", s: { t: "string" }, rq: 1, ds: "ID kelas" }, { nm: "prodi", in: "query", s: { t: "string", rf: { l: "/v1/referensi/prodi", k: "kode_prodi", q: 0 } }, ds: "Kode prodi (wajib bila berwenang di lebih dari satu prodi; boleh juga di body)" }, { nm: "tahun_id", in: "query", s: { t: "string", rf: { l: "/v1/referensi/tahun-akademik", k: "tahun_id", q: 0 } }, ds: "Bawaan tahun aktif (boleh juga di body)" }], r: "object", it: "Objek" }, getAkademikKrsPersetujuan: { id: "getAkademikKrsPersetujuan", m: "GET", path: "/v1/akademik/krs/persetujuan", tag: "Akademik: Persetujuan KRS", sum: "Antrian persetujuan KRS", ds: "Mahasiswa aktif dengan status KRS (belum, menunggu, disetujui) + ringkasan. Dosen: mahasiswa bimbingan PA-nya.", sc: ["akademik:read"], pa: [{ nm: "prodi", in: "query", s: { t: "string", rf: { l: "/v1/referensi/prodi", k: "kode_prodi", q: 0 } }, ds: "Batasi ke satu prodi" }, { nm: "tahun_id", in: "query", s: { t: "string", rf: { l: "/v1/referensi/tahun-akademik", k: "tahun_id", q: 0 } }, ds: "Bawaan tahun aktif" }, { nm: "status", in: "query", s: { t: "string" }, ds: "belum|menunggu|disetujui" }, { nm: "q", in: "query", s: { t: "string" }, ds: "NIM atau nama" }, { nm: "angkatan", in: "query", s: { t: "string" }, ds: "Tahun masuk" }, { nm: "page", in: "query", s: { t: "integer", min: 1, d: 1 }, ds: "Nomor halaman, mulai 1." }, { nm: "per_page", in: "query", s: { t: "integer", min: 1, mx: 100, d: 25 }, ds: "Jumlah data per halaman (maksimal 100)." }], r: "object" }, postAkademikKrsPersetujuan: { id: "postAkademikKrsPersetujuan", m: "POST", path: "/v1/akademik/krs/persetujuan", tag: "Akademik: Persetujuan KRS", sum: "Setujui KRS banyak mahasiswa", ds: 'Body: {"nim": ["..."], "tahun_id": "20261"} (maks. 200). Lewat view_insert_krs_terima (sama dengan menu Terima KRS).', sc: ["akademik:write"], r: "object", it: "Objek" }, getAkademikKrsPersetujuanByNim: { id: "getAkademikKrsPersetujuanByNim", m: "GET", path: "/v1/akademik/krs/persetujuan/{nim}", tag: "Akademik: Persetujuan KRS", sum: "KRS satu mahasiswa", ds: "Mata kuliah diambil + jadwal, batas SKS, riwayat IPS, pesan PA.", sc: ["akademik:read"], pa: [{ nm: "nim", in: "path", s: { t: "string", rf: { l: "/v1/mahasiswa", k: "nim", d: "/v1/mahasiswa/{nim}" } }, rq: 1, ds: "NIM" }, { nm: "tahun_id", in: "query", s: { t: "string", rf: { l: "/v1/referensi/tahun-akademik", k: "tahun_id", q: 0 } }, ds: "Bawaan tahun aktif" }], r: "object", it: "Objek" }, postAkademikKrsPersetujuanByNim: { id: "postAkademikKrsPersetujuanByNim", m: "POST", path: "/v1/akademik/krs/persetujuan/{nim}", tag: "Akademik: Persetujuan KRS", sum: "Setujui/batalkan KRS", ds: 'Body: {"setuju": true|false, "tahun_id"}.', sc: ["akademik: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" }, postAkademikKrsPersetujuanByNimHapusMk: { id: "postAkademikKrsPersetujuanByNimHapusMk", m: "POST", path: "/v1/akademik/krs/persetujuan/{nim}/hapus-mk", tag: "Akademik: Persetujuan KRS", sum: "Hapus mata kuliah dari KRS", ds: 'Body: {"idkrs": 123}. Ditolak bila sudah bernilai.', sc: ["akademik: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" }, postAkademikKrsPersetujuanByNimPesan: { id: "postAkademikKrsPersetujuanByNimPesan", m: "POST", path: "/v1/akademik/krs/persetujuan/{nim}/pesan", tag: "Akademik: Persetujuan KRS", sum: "Kirim pesan konsultasi KRS", ds: 'Body: {"pesan": "...", "tahun_id"}.', sc: ["akademik: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" }, getAkademikNilaiKelas: { id: "getAkademikNilaiKelas", m: "GET", path: "/v1/akademik/nilai/kelas", tag: "Akademik: Nilai", sum: "Kelas untuk input nilai", ds: "Peserta dan jumlah bernilai per kelas. Dosen: kelas yang diampu/tim.", sc: ["akademik:read"], pa: [{ nm: "prodi", in: "query", s: { t: "string", rf: { l: "/v1/referensi/prodi", k: "kode_prodi", q: 0 } }, ds: "Batasi ke satu prodi" }, { nm: "tahun_id", in: "query", s: { t: "string", rf: { l: "/v1/referensi/tahun-akademik", k: "tahun_id", q: 0 } }, ds: "Bawaan tahun aktif" }], r: "object", it: "Objek" }, getAkademikNilaiKelasByIdj: { id: "getAkademikNilaiKelasByIdj", m: "GET", path: "/v1/akademik/nilai/kelas/{idj}", tag: "Akademik: Nilai", sum: "Tabel nilai kelas", ds: "Komposisi penilaian (persen Harian/Tugas/UTS/UAS), nilai per komponen, nilai akhir, distribusi, skala, batas input.", sc: ["akademik:read"], pa: [{ nm: "idj", in: "path", s: { t: "string" }, rq: 1, ds: "ID jadwal kuliah (t_jadwal.idj)" }], r: "object", it: "Objek" }, postAkademikNilaiKelasByIdj: { id: "postAkademikNilaiKelasByIdj", m: "POST", path: "/v1/akademik/nilai/kelas/{idj}", tag: "Akademik: Nilai", sum: "Simpan komposisi dan nilai kelas", ds: 'Body: {"persen": {"Harian": 10, "Tugas": 20, "UTS": 30, "UAS": 40}, "nilai": [{"idkrs": 1, "jenis": "UTS", "ke": 1, "nilai": 80}]}. Lewat KrsNilaiService; nilai akhir dihitung ulang (HitungNilaiAngka). Hanya dalam batas tanggal input nilai.', sc: ["akademik:write"], pa: [{ nm: "idj", in: "path", s: { t: "string" }, rq: 1, ds: "ID jadwal kuliah (t_jadwal.idj)" }], r: "object", it: "Objek" }, postAkademikNilaiKelasByIdjUmumkan: { id: "postAkademikNilaiKelasByIdjUmumkan", m: "POST", path: "/v1/akademik/nilai/kelas/{idj}/umumkan", tag: "Akademik: Nilai", sum: "Umumkan nilai kelas", ds: 'Kirim notifikasi ke kotak masuk peserta yang nilainya sudah masuk. Body opsional: {"pesan": "..."}. Tidak mengubah nilai.', sc: ["akademik:write"], pa: [{ nm: "idj", in: "path", s: { t: "string" }, rq: 1, ds: "ID jadwal kuliah (t_jadwal.idj)" }], r: "object", it: "Objek" }, getAkademikBatas: { id: "getAkademikBatas", m: "GET", path: "/v1/akademik/batas", tag: "Akademik: Batas waktu input", sum: "Batas waktu input per prodi", ds: "jenis: krs, krs_dosen, krs_mhs, nilai, nilai_dosen, ta, uji_ta, wd. Baris dari m_bataskrs*/m_batas_* (dibuat SIAKAD saat popup batas waktu dibuka).", sc: ["akademik:read"], pa: [{ nm: "jenis", in: "query", s: { t: "string" }, ds: "Bawaan nilai" }, { nm: "prodi", in: "query", s: { t: "string", rf: { l: "/v1/referensi/prodi", k: "kode_prodi", q: 0 } }, ds: "Batasi ke satu prodi" }, { nm: "tahun_id", in: "query", s: { t: "string", rf: { l: "/v1/referensi/tahun-akademik", k: "tahun_id", q: 0 } }, ds: "Bawaan tahun aktif" }], r: "object", it: "Objek" }, postAkademikBatasByJenisById: { id: "postAkademikBatasByJenisById", m: "POST", path: "/v1/akademik/batas/{jenis}/{id}", tag: "Akademik: Batas waktu input", sum: "Ubah batas waktu", ds: 'Body: {"mulai": "2026-12-01", "selesai": "2026-12-20", "terima_krs": "Y|N" (khusus krs_mhs)}. Lewat TahunRepository::ubahBatas, sama dengan menu Tahun Akademik.', sc: ["akademik:write"], pa: [{ nm: "jenis", in: "path", s: { t: "string", ex: "nilai" }, rq: 1, ds: "krs|krs_dosen|krs_mhs|nilai|nilai_dosen|ta|uji_ta|wd" }, { nm: "id", in: "path", s: { t: "string" }, rq: 1, ds: "ID baris batas" }], r: "object", it: "Objek" }, postAkademikBatasByJenisByIdKunci: { id: "postAkademikBatasByJenisByIdKunci", m: "POST", path: "/v1/akademik/batas/{jenis}/{id}/kunci", tag: "Akademik: Batas waktu input", sum: "Kunci input (tutup sekarang)", ds: "Tanggal selesai diisi kemarin sehingga input (mis. nilai) langsung tertutup. Buka lagi dengan mengubah batas.", sc: ["akademik:write"], pa: [{ nm: "jenis", in: "path", s: { t: "string", ex: "nilai" }, rq: 1, ds: "krs|krs_dosen|krs_mhs|nilai|nilai_dosen|ta|uji_ta|wd" }, { nm: "id", in: "path", s: { t: "string" }, rq: 1, ds: "ID baris batas" }], r: "object", it: "Objek" }, getAkademikPresensiKelasByIdj: { id: "getAkademikPresensiKelasByIdj", m: "GET", path: "/v1/akademik/presensi/kelas/{idj}", tag: "Akademik: Presensi dan jurnal", sum: "Presensi dan jurnal kelas", ds: "Pertemuan (tanggal, jam, dosen, bahasan/jurnal) dan rekap hadir/izin/sakit/alpa per mahasiswa.", sc: ["akademik:read"], pa: [{ nm: "idj", in: "path", s: { t: "string" }, rq: 1, ds: "ID jadwal kuliah (t_jadwal.idj)" }], r: "object", it: "Objek" }, postAkademikPresensiKelasByIdj: { id: "postAkademikPresensiKelasByIdj", m: "POST", path: "/v1/akademik/presensi/kelas/{idj}", tag: "Akademik: Presensi dan jurnal", sum: "Catat pertemuan dan presensi", ds: 'Body: {"tanggal": "2026-11-15", "jam": 3, "jam_selesai": 4, "lama": 2, "bahasan": "...", "nidn": "(pengelola, opsional)", "mahasiswa": [{"nim": "...", "status": "H|I|S|A"}]}. Tanpa "mahasiswa": semua peserta dicatat hadir (PresensiDosenService). Dengan "mahasiswa": status per mahasiswa (PresensiInputDosenService). Untuk dosen, tanggal selalu hari ini seperti halaman web.', sc: ["akademik:write"], pa: [{ nm: "idj", in: "path", s: { t: "string" }, rq: 1, ds: "ID jadwal kuliah (t_jadwal.idj)" }], r: "object", it: "Objek" }, getAkademikPresensiKelasByIdjPertemuanById: { id: "getAkademikPresensiKelasByIdjPertemuanById", m: "GET", path: "/v1/akademik/presensi/kelas/{idj}/pertemuan/{id}", tag: "Akademik: Presensi dan jurnal", sum: "Detail pertemuan", ds: "Jurnal pertemuan dan status tiap mahasiswa.", sc: ["akademik:read"], pa: [{ nm: "idj", in: "path", s: { t: "string" }, rq: 1, ds: "ID jadwal kuliah (t_jadwal.idj)" }, { nm: "id", in: "path", s: { t: "string" }, rq: 1, ds: "ID pertemuan (iddm)" }], r: "object", it: "Objek" }, postAkademikPresensiKelasByIdjPertemuanById: { id: "postAkademikPresensiKelasByIdjPertemuanById", m: "POST", path: "/v1/akademik/presensi/kelas/{idj}/pertemuan/{id}", tag: "Akademik: Presensi dan jurnal", sum: "Ubah pertemuan / jurnal", ds: 'Body: {"tanggal", "jam", "jam_selesai", "lama", "bahasan", "jenis_presensi"}. Lewat PresensiDosenService::ubahPertemuan.', sc: ["akademik:write"], pa: [{ nm: "idj", in: "path", s: { t: "string" }, rq: 1, ds: "ID jadwal kuliah (t_jadwal.idj)" }, { nm: "id", in: "path", s: { t: "string" }, rq: 1, ds: "ID pertemuan (iddm)" }], r: "object", it: "Objek" }, postAkademikPresensiKelasByIdjPertemuanByIdHapus: { id: "postAkademikPresensiKelasByIdjPertemuanByIdHapus", m: "POST", path: "/v1/akademik/presensi/kelas/{idj}/pertemuan/{id}/hapus", tag: "Akademik: Presensi dan jurnal", sum: "Hapus pertemuan", ds: "Menghapus presensi dosen dan presensi mahasiswa pertemuan itu (PresensiDosenService::hapusPertemuan).", sc: ["akademik:write"], pa: [{ nm: "idj", in: "path", s: { t: "string" }, rq: 1, ds: "ID jadwal kuliah (t_jadwal.idj)" }, { nm: "id", in: "path", s: { t: "string" }, rq: 1, ds: "ID pertemuan (iddm)" }], r: "object", it: "Objek" }, postAkademikPresensiKelasByIdjMahasiswaById: { id: "postAkademikPresensiKelasByIdjMahasiswaById", m: "POST", path: "/v1/akademik/presensi/kelas/{idj}/mahasiswa/{id}", tag: "Akademik: Presensi dan jurnal", sum: "Ubah status presensi mahasiswa", ds: 'Body: {"status": "H|I|S|A"}. Lewat PresensiInputDosenService::update.', sc: ["akademik:write"], pa: [{ nm: "idj", in: "path", s: { t: "string" }, rq: 1, ds: "ID jadwal kuliah (t_jadwal.idj)" }, { nm: "id", in: "path", s: { t: "string" }, rq: 1, ds: "ID presensi mahasiswa (idpm)" }], r: "object", it: "Objek" }, getAkademikPresensiKelasByIdjKartuAbsensi: { id: "getAkademikPresensiKelasByIdjKartuAbsensi", m: "GET", path: "/v1/akademik/presensi/kelas/{idj}/kartu-absensi", tag: "Akademik: Presensi dan jurnal", sum: "Kartu absensi kelas", ds: "Data untuk mencetak kartu/daftar hadir: peserta, pertemuan, status tiap pertemuan.", sc: ["akademik:read"], pa: [{ nm: "idj", in: "path", s: { t: "string" }, rq: 1, ds: "ID jadwal kuliah (t_jadwal.idj)" }], r: "object", it: "Objek" }, getAkademikMahasiswaByNimRingkasan: { id: "getAkademikMahasiswaByNimRingkasan", m: "GET", path: "/v1/akademik/mahasiswa/{nim}/ringkasan", tag: "Akademik: Dokumen dan laporan", sum: "Ringkasan akademik mahasiswa", ds: "Status per periode, SKS/IP per periode, IPK (nilai_ipk), PA, dan data pindahan/transfer (asal PT, SKS diakui, mata kuliah konversi).", sc: ["akademik: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" }, getAkademikMahasiswaByNimKartuUjian: { id: "getAkademikMahasiswaByNimKartuUjian", m: "GET", path: "/v1/akademik/mahasiswa/{nim}/kartu-ujian", tag: "Akademik: Dokumen dan laporan", sum: "Kartu ujian", ds: "UTS/UAS yang sedang berlangsung + izin cetak (pembayaran, presensi UAS; KartuUjianMahasiswaService) dan jadwal ujian mata kuliah KRS.", sc: ["akademik:read"], pa: [{ nm: "nim", in: "path", s: { t: "string", rf: { l: "/v1/mahasiswa", k: "nim", d: "/v1/mahasiswa/{nim}" } }, rq: 1, ds: "NIM" }, { nm: "tahun_id", in: "query", s: { t: "string", rf: { l: "/v1/referensi/tahun-akademik", k: "tahun_id", q: 0 } }, ds: "Bawaan tahun aktif" }], r: "object", it: "Objek" }, getAkademikMahasiswaByNimKtm: { id: "getAkademikMahasiswaByNimKtm", m: "GET", path: "/v1/akademik/mahasiswa/{nim}/ktm", tag: "Akademik: Dokumen dan laporan", sum: "Kartu tanda mahasiswa (KTM)", ds: "Data KTM: identitas, prodi/fakultas, angkatan, status, masa berlaku (dari batas studi). Foto lewat /foto.", sc: ["akademik: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" }, getAkademikMahasiswaByNimFoto: { id: "getAkademikMahasiswaByNimFoto", m: "GET", path: "/v1/akademik/mahasiswa/{nim}/foto", tag: "Akademik: Dokumen dan laporan", sum: "Foto mahasiswa", ds: "File foto (images/avatar) untuk KTM.", sc: ["akademik: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" }, getAkademikMahasiswaByNimTranskripSementara: { id: "getAkademikMahasiswaByNimTranskripSementara", m: "GET", path: "/v1/akademik/mahasiswa/{nim}/transkrip-sementara", tag: "Akademik: Dokumen dan laporan", sum: "Transkrip sementara", ds: "Transkrip nilai terbaik (sama dengan /v1/mahasiswa/{nim}/transkrip) + kop perguruan tinggi, prodi, predikat sementara (m_predikat).", sc: ["akademik: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" }, getAkademikKartuIdentitasByUsername: { id: "getAkademikKartuIdentitasByUsername", m: "GET", path: "/v1/akademik/kartu-identitas/{username}", tag: "Akademik: Dokumen dan laporan", sum: "Kartu identitas dosen/pegawai", ds: "Data kartu identitas dari m_dosen/m_karyawan + sdm_pegawai. Pemilik atau pengelola akademik.", sc: ["akademik:read"], pa: [{ nm: "username", in: "path", s: { t: "string", rf: { l: "pengguna", k: "username" } }, rq: 1, ds: "NIDN atau NIK" }], r: "object", it: "Objek" }, getAkademikLaporan: { id: "getAkademikLaporan", m: "GET", path: "/v1/akademik/laporan", tag: "Akademik: Dokumen dan laporan", sum: "Laporan akademik per prodi", ds: "Status mahasiswa, KRS, nilai terisi + distribusi, kelas dan pertemuan untuk satu periode. Pengelola akademik.", sc: ["akademik:read"], pa: [{ nm: "prodi", in: "query", s: { t: "string", rf: { l: "/v1/referensi/prodi", k: "kode_prodi", q: 0 } }, ds: "Batasi ke satu prodi" }, { nm: "tahun_id", in: "query", s: { t: "string", rf: { l: "/v1/referensi/tahun-akademik", k: "tahun_id", q: 0 } }, ds: "Bawaan tahun aktif" }], r: "object", it: "Objek" }, getAkademikPengajuan: { id: "getAkademikPengajuan", m: "GET", path: "/v1/akademik/pengajuan", tag: "Akademik: Pengajuan status", sum: "Pengajuan status akademik: daftar", ds: "Mahasiswa mengajukan cuti, aktif kembali, non-aktif, mengundurkan diri, atau pindah kelas/kampus/prodi; pengelola akademik (ADMIN, BAK, PROGDI, OPERATOR) memutuskan. Persetujuan cuti, non-aktif, dan mengundurkan diri langsung dicatat ke status SIAKAD lewat service halaman web (sama dengan menu Mahasiswa Cuti, Non Aktif, dan Keluar); jenis lain ditandai disetujui untuk ditindaklanjuti operator. Pengelola melihat semua; pengguna lain hanya miliknya sendiri (nim).", sc: ["akademik: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: "nim", in: "query", s: { t: "string", rf: { l: "/v1/mahasiswa", k: "nim", d: "/v1/mahasiswa/{nim}" } }, 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: "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: "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: "tercatat_siakad", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "q", in: "query", s: { t: "string" }, ds: "Cari di nim, alasan" }, { 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: "AkademikPengajuan" }, postAkademikPengajuan: { id: "postAkademikPengajuan", m: "POST", path: "/v1/akademik/pengajuan", tag: "Akademik: Pengajuan status", sum: "Pengajuan status akademik: tambah", ds: "Pengelola, atau pengguna untuk datanya sendiri (nim diisi otomatis); pemilik hanya bisa mengubah/menghapus bila status diajukan.", sc: ["akademik:write"], b: { ct: "application/json", ref: "AkademikPengajuanInput", s: { t: "object", pr: { nim: { t: "string", ds: "m_mahasiswa.NIM", rf: { l: "/v1/mahasiswa", k: "nim", d: "/v1/mahasiswa/{nim}" } }, tahun_id: { t: "string", ds: "m_tahun.tahun_id", rf: { l: "/v1/referensi/tahun-akademik", k: "tahun_id", q: 0 } }, jenis: { t: "string", e: ["cuti", "aktif_kembali", "non_aktif", "mengundurkan_diri", "pindah_kelas", "pindah_kampus", "pindah_prodi"] }, tanggal_mulai: { t: "string", f: "date" }, tanggal_akhir: { t: "string", f: "date" }, tujuan: { t: "string", max: 20 }, alasan: { t: "string" }, catatan: { t: "string", ds: "(hanya pengelola)" } }, rq: ["nim", "jenis"] }, rq: 1 }, r: "object", it: "AkademikPengajuan" }, getAkademikPengajuanById: { id: "getAkademikPengajuanById", m: "GET", path: "/v1/akademik/pengajuan/{id}", tag: "Akademik: Pengajuan status", sum: "Pengajuan status akademik: detail", ds: "Mahasiswa mengajukan cuti, aktif kembali, non-aktif, mengundurkan diri, atau pindah kelas/kampus/prodi; pengelola akademik (ADMIN, BAK, PROGDI, OPERATOR) memutuskan. Persetujuan cuti, non-aktif, dan mengundurkan diri langsung dicatat ke status SIAKAD lewat service halaman web (sama dengan menu Mahasiswa Cuti, Non Aktif, dan Keluar); jenis lain ditandai disetujui untuk ditindaklanjuti operator. Pengelola melihat semua; pengguna lain hanya miliknya sendiri (nim).", sc: ["akademik:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/akademik/pengajuan", k: "id", d: "/v1/akademik/pengajuan/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "AkademikPengajuan" }, putAkademikPengajuanById: { id: "putAkademikPengajuanById", m: "PUT", path: "/v1/akademik/pengajuan/{id}", tag: "Akademik: Pengajuan status", sum: "Pengajuan status akademik: ubah", ds: "Pengelola, atau pengguna untuk datanya sendiri (nim diisi otomatis); pemilik hanya bisa mengubah/menghapus bila status diajukan. Kolom yang tidak dikirim tidak berubah.", sc: ["akademik:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/akademik/pengajuan", k: "id", d: "/v1/akademik/pengajuan/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "AkademikPengajuanInput", s: { t: "object", pr: { nim: { t: "string", ds: "m_mahasiswa.NIM", rf: { l: "/v1/mahasiswa", k: "nim", d: "/v1/mahasiswa/{nim}" } }, tahun_id: { t: "string", ds: "m_tahun.tahun_id", rf: { l: "/v1/referensi/tahun-akademik", k: "tahun_id", q: 0 } }, jenis: { t: "string", e: ["cuti", "aktif_kembali", "non_aktif", "mengundurkan_diri", "pindah_kelas", "pindah_kampus", "pindah_prodi"] }, tanggal_mulai: { t: "string", f: "date" }, tanggal_akhir: { t: "string", f: "date" }, tujuan: { t: "string", max: 20 }, alasan: { t: "string" }, catatan: { t: "string", ds: "(hanya pengelola)" } }, rq: ["nim", "jenis"] }, rq: 1 }, r: "object", it: "AkademikPengajuan" }, deleteAkademikPengajuanById: { id: "deleteAkademikPengajuanById", m: "DELETE", path: "/v1/akademik/pengajuan/{id}", tag: "Akademik: Pengajuan status", sum: "Pengajuan status akademik: hapus", ds: "Pengelola, atau pengguna untuk datanya sendiri (nim diisi otomatis); pemilik hanya bisa mengubah/menghapus bila status diajukan.", sc: ["akademik:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/akademik/pengajuan", k: "id", d: "/v1/akademik/pengajuan/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "none" }, getAkademikPengajuanByIdBerkas: { id: "getAkademikPengajuanByIdBerkas", m: "GET", path: "/v1/akademik/pengajuan/{id}/berkas", tag: "Akademik: Pengajuan status", sum: "Pengajuan status akademik: daftar lampiran", ds: "Siapa pun yang boleh melihat barisnya.", sc: ["akademik:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/akademik/pengajuan", k: "id", d: "/v1/akademik/pengajuan/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "list", it: "PusatBerkas" }, postAkademikPengajuanByIdBerkas: { id: "postAkademikPengajuanByIdBerkas", m: "POST", path: "/v1/akademik/pengajuan/{id}/berkas", tag: "Akademik: Pengajuan status", sum: "Pengajuan status akademik: 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 (nim diisi otomatis); pemilik hanya bisa mengubah/menghapus bila status diajukan.', sc: ["akademik:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/akademik/pengajuan", k: "id", d: "/v1/akademik/pengajuan/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "multipart/form-data", ref: "PusatBerkasInput", s: { t: "object", pr: { berkas_id: { t: "string", f: "uuid", ds: "Alternatif file: UUID berkas dari /v1/berkas (mis. hasil unggah bertahap)" }, 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" }, getAkademikPengajuanByIdBerkasByUuid: { id: "getAkademikPengajuanByIdBerkasByUuid", m: "GET", path: "/v1/akademik/pengajuan/{id}/berkas/{uuid}", tag: "Akademik: Pengajuan status", sum: "Pengajuan status akademik: unduh lampiran", sc: ["akademik:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/akademik/pengajuan", k: "id", d: "/v1/akademik/pengajuan/{id}" } }, rq: 1, ds: "ID angka atau UUID" }, { nm: "uuid", in: "path", s: { t: "string" }, rq: 1, ds: "UUID berkas" }], r: "object" }, deleteAkademikPengajuanByIdBerkasByUuid: { id: "deleteAkademikPengajuanByIdBerkasByUuid", m: "DELETE", path: "/v1/akademik/pengajuan/{id}/berkas/{uuid}", tag: "Akademik: Pengajuan status", sum: "Pengajuan status akademik: hapus lampiran", ds: "Pengelola, atau pengguna untuk datanya sendiri (nim diisi otomatis); pemilik hanya bisa mengubah/menghapus bila status diajukan.", sc: ["akademik:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/akademik/pengajuan", k: "id", d: "/v1/akademik/pengajuan/{id}" } }, rq: 1, ds: "ID angka atau UUID" }, { nm: "uuid", in: "path", s: { t: "string" }, rq: 1, ds: "UUID berkas" }], r: "none" }, postAkademikPengajuanByIdSetujui: { id: "postAkademikPengajuanByIdSetujui", m: "POST", path: "/v1/akademik/pengajuan/{id}/setujui", tag: "Akademik: Pengajuan status", sum: "Pengajuan status akademik: Setujui (cuti, non-aktif, dan mengundurkan diri langsung dicatat ke SIAKAD)", ds: "Pengelola modul. Status harus diajukan, menjadi disetujui.", sc: ["akademik:write"], tr: { dari: ["diajukan"], ke: "disetujui" }, oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/akademik/pengajuan", k: "id", d: "/v1/akademik/pengajuan/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "AkademikPengajuanSetujuiInput", s: { t: "object", pr: { catatan: { t: "string", max: 1e3 } } }, rq: 1 }, r: "object", it: "AkademikPengajuan" }, postAkademikPengajuanByIdTolak: { id: "postAkademikPengajuanByIdTolak", m: "POST", path: "/v1/akademik/pengajuan/{id}/tolak", tag: "Akademik: Pengajuan status", sum: "Pengajuan status akademik: Tolak", ds: "Pengelola modul. Status harus diajukan, menjadi ditolak.", sc: ["akademik:write"], tr: { dari: ["diajukan"], ke: "ditolak" }, oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/akademik/pengajuan", k: "id", d: "/v1/akademik/pengajuan/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "AkademikPengajuanTolakInput", s: { t: "object", pr: { catatan: { t: "string", max: 1e3 } }, rq: ["catatan"] }, rq: 1 }, r: "object", it: "AkademikPengajuan" }, postAkademikPengajuanByIdBatalkan: { id: "postAkademikPengajuanByIdBatalkan", m: "POST", path: "/v1/akademik/pengajuan/{id}/batalkan", tag: "Akademik: Pengajuan status", sum: "Pengajuan status akademik: Batalkan pengajuan (oleh mahasiswa)", ds: "Pemilik data atau pengelola. Status harus diajukan, menjadi dibatalkan.", sc: ["akademik:write"], tr: { dari: ["diajukan"], ke: "dibatalkan" }, oleh: "pemilik_atau_pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/akademik/pengajuan", k: "id", d: "/v1/akademik/pengajuan/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "AkademikPengajuan" } };
|
|
10
|
+
var mandiri = ["getMahasiswaByNimKrsPenawaran", "getAkademikSaya", "getAkademikJadwalReferensi", "postAkademikJadwalHapus", "postAkademikJadwalSalin", "getAkademikBatas", "getAkademikMahasiswaByNimRingkasan", "getAkademikMahasiswaByNimKartuUjian", "getAkademikMahasiswaByNimKtm", "getAkademikMahasiswaByNimFoto", "getAkademikMahasiswaByNimTranskripSementara", "getAkademikLaporan"];
|
|
11
|
+
var skema = { MahasiswaRingkas: { t: "object", pr: { nim: { t: "string", n: 1 }, nama: { t: "string", n: 1 }, kode_prodi: { t: "string", n: 1 }, nama_prodi: { t: "string", n: 1 }, kode_jenjang: { t: "string", n: 1 }, jenis_kelamin: { t: "string", n: 1, ds: "L/P" }, tahun_masuk: { t: "string", n: 1 }, semester_masuk: { t: "string", n: 1 }, kelas: { t: "string", n: 1 }, status_aktif: { t: "string", n: 1, ds: "Kode status (lihat /v1/referensi/kode/05)" }, status_aktif_label: { t: "string", n: 1 }, nidn_pa: { t: "string", n: 1 } } }, Mahasiswa: { t: "object", pr: { nim: { t: "string", n: 1 }, nama: { t: "string", n: 1 }, kode_pt: { t: "string", n: 1 }, kode_fakultas: { t: "string", n: 1 }, kode_prodi: { t: "string", n: 1 }, nama_prodi: { t: "string", n: 1 }, kode_jenjang: { t: "string", n: 1 }, jenis_kelamin: { t: "string", n: 1 }, agama: { t: "string", n: 1 }, status_masuk: { t: "string", n: 1, ds: "B baru, P pindahan" }, tahun_masuk: { t: "string", n: 1 }, semester_masuk: { t: "string", n: 1 }, tanggal_masuk: { t: "string", n: 1, f: "date" }, batas_studi: { t: "string", n: 1 }, kelas: { t: "string", n: 1 }, shift: { t: "string", n: 1 }, semester: { t: "integer", n: 1 }, status_aktif: { t: "string", n: 1 }, status_aktif_label: { t: "string", n: 1 }, nidn_pa: { t: "string", n: 1 }, nirm: { t: "string", n: 1 }, npm: { t: "string", n: 1 }, konsentrasi: { t: "string", n: 1 }, tanggal_lulus: { t: "string", n: 1, f: "date" }, yudisium: { t: "string", n: 1 }, no_sk_yudisium: { t: "string", n: 1 }, tanggal_sk_yudisium: { t: "string", n: 1, f: "date" }, no_ijazah: { t: "string", n: 1 }, tanggal_beri_ijazah: { t: "string", n: 1, f: "date" }, asal: { t: "object", pr: { nama_sekolah: { t: "string", n: 1 }, tahun_lulus_sekolah: { t: "string", n: 1 }, nama_pt: { t: "string", n: 1 }, nim: { t: "string", n: 1 }, nama_prodi: { t: "string", n: 1 }, sks_diakui: { t: "integer", n: 1 } } }, pribadi: { t: "object", ds: "Hanya dengan scope mahasiswa:pii", pr: { nik: { t: "string", n: 1 }, nisn: { t: "string", n: 1 }, npwp: { t: "string", n: 1 }, tempat_lahir: { t: "string", n: 1 }, tanggal_lahir: { t: "string", n: 1, f: "date" }, warga_negara: { t: "string", n: 1 }, status_sipil: { t: "string", n: 1 }, email: { t: "string", n: 1 }, hp: { t: "string", n: 1 }, telepon: { t: "string", n: 1 }, alamat: { t: "object", pr: { jalan: { t: "string", n: 1 }, rt: { t: "string", n: 1 }, rw: { t: "string", n: 1 }, dusun: { t: "string", n: 1 }, desa: { t: "string", n: 1 }, kecamatan: { t: "string", n: 1 }, kode_kabupaten: { t: "string", n: 1 }, kode_propinsi: { t: "string", n: 1 }, kode_pos: { t: "string", n: 1 } } }, jenis_tinggal: { t: "string", n: 1 } } } } }, Objek: { t: "object", ds: "Baris data dengan nama kolom huruf kecil sesuai tabel SIAKAD." }, Krs: { t: "object", pr: { nim: { t: "string", n: 1 }, tahun_id: { t: "string", n: 1 }, jumlah_sks: { t: "integer", n: 1 }, mata_kuliah: { t: "array", i: { t: "object", pr: { idkrs: { t: "integer", n: 1 }, tahun_id: { t: "string", n: 1 }, semester: { t: "integer", n: 1 }, kode_mk: { t: "string", n: 1 }, nama_mk: { t: "string", n: 1 }, sks: { t: "integer", n: 1 }, kelas: { t: "string", n: 1 }, idj: { t: "integer", n: 1 }, status_krs: { t: "string", n: 1, ds: "T = disetujui" }, disetujui: { t: "boolean" }, hari: { t: "string", n: 1 }, jam_ke: { t: "integer", n: 1 }, ruang: { t: "string", n: 1 }, nidn_dosen: { t: "string", n: 1 }, ujian: { t: "object" } } } } } }, KrsAmbilResponse: { t: "object", pr: { nim: { t: "string", n: 1 }, tahun_id: { t: "string", n: 1 }, batas_sks: { t: "integer", n: 1 }, melebihi_batas_sks: { t: "boolean" }, tersimpan: { t: "array", i: { t: "object", pr: { kode_mk: { t: "string", n: 1 }, nama_mk: { t: "string", n: 1 }, nim: { t: "string", n: 1 }, hari: { t: "string", n: 1 }, jamke: { t: "string", n: 1 } } } }, sudah_ada: { t: "array", i: { t: "object", pr: { kode_mk: { t: "string", n: 1 }, nama_mk: { t: "string", n: 1 }, nim: { t: "string", n: 1 }, hari: { t: "string", n: 1 }, jamke: { t: "string", n: 1 } } } }, kelas_belum_terpilih_atau_penuh: { t: "array", i: { t: "object", pr: { kode_mk: { t: "string", n: 1 }, nama_mk: { t: "string", n: 1 }, nim: { t: "string", n: 1 }, hari: { t: "string", n: 1 }, jamke: { t: "string", n: 1 } } } }, bentrok: { t: "array", i: { t: "object", pr: { kode_mk: { t: "string", n: 1 }, nama_mk: { t: "string", n: 1 }, nim: { t: "string", n: 1 }, hari: { t: "string", n: 1 }, jamke: { t: "string", n: 1 } } } }, sks_terambil: { t: "integer", n: 1 }, pesan: { t: "array", i: { t: "string" } } } }, KrsPenawaran: { t: "object", pr: { nim: { t: "string", n: 1 }, tahun_id: { t: "string", n: 1 }, boleh_ambil: { t: "boolean" }, alasan: { t: "string", n: 1, ds: "Sebab bila boleh_ambil false" }, mode: { t: "string", n: 1, ds: "standar, uma, atau umsb" }, batas_sks: { t: "integer", n: 1 }, ips_sebelumnya: { t: "number", n: 1 }, sks_terambil: { t: "integer", n: 1 }, mata_kuliah: { t: "array", i: { t: "object", pr: { id: { t: "integer", n: 1, ds: "ID mata kuliah, dikirim saat ambil KRS" }, kode_mk: { t: "string", n: 1 }, nama_mk: { t: "string", n: 1 }, semester: { t: "integer", n: 1 }, sks: { t: "integer", n: 1 }, dosen: { t: "string", n: 1 }, sudah_diambil: { t: "boolean" }, bisa_dipilih: { t: "boolean" }, keterangan: { t: "string", n: 1, ds: "Mis. prasyarat belum lulus" }, nilai_sebelumnya: { t: "string", n: 1 }, pilih_kelas: { t: "boolean", ds: "true: wajib mengirim idj" }, kelas: { t: "array", i: { t: "object" } } } } }, pesan: { t: "array", i: { t: "string" } } } }, Khs: { t: "string" }, Transkrip: { t: "object", pr: { nim: { t: "string", n: 1 }, nama: { t: "string", n: 1 }, kode_prodi: { t: "string", n: 1 }, mata_kuliah: { t: "array", i: { t: "object", pr: { kode_mk: { t: "string", n: 1 }, nama_mk: { t: "string", n: 1 }, tahun_id: { t: "string", n: 1 }, semester: { t: "integer", n: 1 }, sks: { t: "integer", n: 1 }, nilai_huruf: { t: "string", n: 1 }, bobot: { t: "number", n: 1 }, mutu: { t: "number", n: 1 } } } }, jumlah_sks: { t: "integer", n: 1 }, jumlah_mutu: { t: "number", n: 1 }, ipk: { t: "object", pr: { sks: { t: "integer", n: 1, ds: "Jumlah SKS yang dihitung" }, nilai: { t: "number", n: 1, ds: "Indeks prestasi (2 desimal)" } } } } }, JadwalMahasiswa: { t: "object", pr: { nim: { t: "string", n: 1 }, tahun_id: { t: "string", n: 1 }, jadwal: { t: "array", i: { t: "object", pr: { idj: { t: "integer", n: 1, ds: "ID jadwal" }, tahun_id: { t: "string", n: 1, ds: "Periode", ex: "20261" }, kode_prodi: { t: "string", n: 1 }, semester: { t: "integer", n: 1 }, kelas: { t: "string", n: 1 }, kode_mk: { t: "string", n: 1 }, nama_mk: { t: "string", n: 1 }, sks: { t: "integer", n: 1 }, hari: { t: "string", n: 1, ds: "Kode hari" }, jam_ke: { t: "integer", n: 1 }, jam_mulai: { t: "string", n: 1, ex: "07:30:00" }, jam_selesai: { t: "string", n: 1 }, ruang: { t: "string", n: 1 }, nama_ruang: { t: "string", n: 1 }, kapasitas: { t: "integer", n: 1 }, dosen: { t: "object" }, tim_pengajar: { t: "array", i: { t: "object" } } } } } } }, Keuangan: { t: "object", pr: { nim: { t: "string", n: 1 }, mode_tagihan: { t: "string", n: 1, ds: "tagihan_mahasiswa (per NIM) atau biaya_prodi" }, periode: { t: "array", i: { t: "object", pr: { tahun_id: { t: "string", n: 1 }, item: { t: "array", i: { t: "object" } }, ringkasan: { t: "object" } } } }, ringkasan: { t: "object", pr: { tagihan: { t: "number", n: 1 }, dibayar: { t: "number", n: 1 }, potongan: { t: "number", n: 1 }, sisa: { t: "number", n: 1 } } } } }, Dosen: { t: "object", pr: { nidn: { t: "string", n: 1 }, nama: { t: "string", n: 1 }, nama_lengkap: { t: "string", n: 1, ds: "Dengan gelar" }, gelar_depan: { t: "string", n: 1 }, gelar_belakang: { t: "string", n: 1 }, nip: { t: "string", n: 1 }, kode_fakultas: { t: "string", n: 1 }, kode_prodi: { t: "string", n: 1 }, nama_prodi: { t: "string", n: 1 }, kode_jenjang: { t: "string", n: 1 }, jenis_kelamin: { t: "string", n: 1 }, status_aktif: { t: "string", n: 1 }, status_pegawai: { t: "string", n: 1 }, ikatan_kerja: { t: "string", n: 1 }, pendidikan: { t: "string", n: 1 }, pangkat_golongan: { t: "string", n: 1 }, jabatan_akademik: { t: "string", n: 1 }, jabatan_fungsional: { t: "string", n: 1 }, jabatan_struktural: { t: "string", n: 1 }, mulai_masuk: { t: "string", n: 1, f: "date" }, pribadi: { t: "object", ds: "Hanya dengan scope dosen:pii", pr: { nik: { t: "string", n: 1 }, npwp: { t: "string", n: 1 }, agama: { t: "string", n: 1 }, tempat_lahir: { t: "string", n: 1 }, tanggal_lahir: { t: "string", n: 1, f: "date" }, email: { t: "string", n: 1 }, hp: { t: "string", n: 1 }, telepon: { t: "string", n: 1 }, alamat: { t: "object", pr: { jalan: { t: "string", n: 1 }, rt: { t: "string", n: 1 }, rw: { t: "string", n: 1 }, dusun: { t: "string", n: 1 }, desa: { t: "string", n: 1 }, kecamatan: { t: "string", n: 1 }, kode_kabupaten: { t: "string", n: 1 }, kode_propinsi: { t: "string", n: 1 }, kode_pos: { t: "string", n: 1 } } } } } } }, Jadwal: { t: "object", pr: { idj: { t: "integer", n: 1, ds: "ID jadwal" }, tahun_id: { t: "string", n: 1, ds: "Periode", ex: "20261" }, kode_prodi: { t: "string", n: 1 }, semester: { t: "integer", n: 1 }, kelas: { t: "string", n: 1 }, kode_mk: { t: "string", n: 1 }, nama_mk: { t: "string", n: 1 }, sks: { t: "integer", n: 1 }, hari: { t: "string", n: 1, ds: "Kode hari" }, jam_ke: { t: "integer", n: 1 }, jam_mulai: { t: "string", n: 1, ex: "07:30:00" }, jam_selesai: { t: "string", n: 1 }, ruang: { t: "string", n: 1 }, nama_ruang: { t: "string", n: 1 }, kapasitas: { t: "integer", n: 1 }, dosen: { t: "object", pr: { nidn: { t: "string", n: 1 }, nama: { t: "string", n: 1 } } }, tim_pengajar: { t: "array", i: { t: "object", pr: { nidn: { t: "string", n: 1 }, nama: { t: "string", n: 1 } } } } } }, AkademikPengajuan: { t: "object", ds: "Pengajuan status akademik (tabel akd_pengajuan)", pr: { id: { t: "integer" }, nim: { t: "string", ds: "m_mahasiswa.NIM" }, kode_prodi: { t: "string", ds: "m_program_studi.kode_prodi (hanya baca)", ro: 1 }, tahun_id: { t: "string", ds: "m_tahun.tahun_id" }, jenis: { t: "string", e: ["cuti", "aktif_kembali", "non_aktif", "mengundurkan_diri", "pindah_kelas", "pindah_kampus", "pindah_prodi"] }, tanggal_mulai: { t: "string", f: "date" }, tanggal_akhir: { t: "string", f: "date" }, tujuan: { t: "string", max: 20 }, alasan: { t: "string" }, status: { t: "string", e: ["diajukan", "disetujui", "ditolak", "dibatalkan"], ds: "(hanya baca)", ro: 1 }, catatan: { t: "string", ds: "(hanya pengelola)" }, tercatat_siakad: { t: "boolean", ds: "(hanya baca)", ro: 1 }, hasil_siakad: { t: "string", ds: "(hanya baca)", ro: 1 }, diputus_oleh: { t: "string", max: 60, ds: "(hanya baca)", ro: 1 }, diputus_at: { t: "string", max: 30, ds: "(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 akademik_default = { key, resources, ops, mandiri, skema };
|
|
13
|
+
|
|
14
|
+
exports.default = akademik_default;
|
|
15
|
+
exports.key = key;
|
|
16
|
+
exports.mandiri = mandiri;
|
|
17
|
+
exports.ops = ops;
|
|
18
|
+
exports.resources = resources;
|
|
19
|
+
exports.skema = skema;
|
|
20
|
+
//# sourceMappingURL=akademik-3DFVHKUD.cjs.map
|