unipo-ui 1.1.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cli/index.mjs +53 -4
- package/dist/admisi-YCOE3DMH.cjs +20 -0
- package/dist/admisi-YXCTBECZ.js +11 -0
- package/dist/akademik-PJGL6MSP.cjs +20 -0
- package/dist/akademik-TPDFEZGF.js +11 -0
- package/dist/akses-AUPQD6YN.cjs +20 -0
- package/dist/akses-V5XIMBWT.js +11 -0
- package/dist/arsip-2T7IEION.cjs +20 -0
- package/dist/arsip-LDRV7FYX.js +11 -0
- package/dist/cbt-4N6COVIN.js +11 -0
- package/dist/cbt-GMQSR7TP.cjs +20 -0
- package/dist/chunk-34OKV63Q.js +122 -0
- package/dist/chunk-34OKV63Q.js.map +1 -0
- package/dist/chunk-3O5ELKBH.cjs +18 -0
- package/dist/chunk-3O5ELKBH.cjs.map +1 -0
- package/dist/chunk-4BQOABRV.js +462 -0
- package/dist/chunk-4BQOABRV.js.map +1 -0
- package/dist/{chunk-DEF5CA7C.cjs → chunk-5VNCBW4R.cjs} +282 -1165
- package/dist/chunk-5VNCBW4R.cjs.map +1 -0
- package/dist/{chunk-SJ4DJOMZ.js → chunk-7AJ4LW5H.js} +163 -1019
- package/dist/chunk-7AJ4LW5H.js.map +1 -0
- package/dist/chunk-JASW45YF.cjs +510 -0
- package/dist/chunk-JASW45YF.cjs.map +1 -0
- package/dist/chunk-JSUHAYQ4.js +15 -0
- package/dist/chunk-JSUHAYQ4.js.map +1 -0
- package/dist/chunk-LN6HZMPI.js +1006 -0
- package/dist/chunk-LN6HZMPI.js.map +1 -0
- package/dist/chunk-LNJTDEQR.cjs +1937 -0
- package/dist/chunk-LNJTDEQR.cjs.map +1 -0
- package/dist/chunk-MKQEH7QS.cjs +1058 -0
- package/dist/chunk-MKQEH7QS.cjs.map +1 -0
- package/dist/chunk-TAKLMRU7.cjs +150 -0
- package/dist/chunk-TAKLMRU7.cjs.map +1 -0
- package/dist/chunk-TYCRRYCQ.js +1843 -0
- package/dist/chunk-TYCRRYCQ.js.map +1 -0
- package/dist/crm-C4XGSG6O.js +11 -0
- package/dist/crm-LTVCDNMK.cjs +20 -0
- package/dist/dasbor-OJLMSFTF.cjs +20 -0
- package/dist/dasbor-Y3UPFYFE.js +11 -0
- package/dist/edom-3GZUUB7H.cjs +20 -0
- package/dist/edom-K4Y2NV4K.js +11 -0
- package/dist/fakultas-DJRUVJBV.js +11 -0
- package/dist/fakultas-VVAQOPUX.cjs +20 -0
- package/dist/filter-D54KALbB.d.cts +436 -0
- package/dist/filter-D54KALbB.d.ts +436 -0
- package/dist/helpdesk-AWVC7BPE.cjs +20 -0
- package/dist/helpdesk-BAOXAU6G.js +11 -0
- package/dist/humas-7BMMJ3WF.js +11 -0
- package/dist/humas-H56JFUW6.cjs +20 -0
- package/dist/ikon.cjs +125 -0
- package/dist/ikon.cjs.map +1 -0
- package/dist/ikon.d.cts +140 -0
- package/dist/ikon.d.ts +140 -0
- package/dist/ikon.js +6 -0
- package/dist/ikon.js.map +1 -0
- package/dist/iku-7JLF2NIH.js +11 -0
- package/dist/iku-F47ZLMYJ.cjs +20 -0
- package/dist/index.cjs +544 -257
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +192 -2
- package/dist/index.d.ts +192 -2
- package/dist/index.js +126 -4
- package/dist/index.js.map +1 -1
- package/dist/induk-BGTGKRLL.js +11 -0
- package/dist/induk-DLYDMZAM.cjs +20 -0
- package/dist/integrasi-4VXNGA3V.cjs +20 -0
- package/dist/integrasi-IP3WWDO7.js +11 -0
- package/dist/kalender-DGQDGJCL.cjs +20 -0
- package/dist/kalender-FGGUBYKZ.js +11 -0
- package/dist/karier-H3HBFCQQ.js +11 -0
- package/dist/karier-QTU2P5YD.cjs +20 -0
- package/dist/katalog.cjs +1709 -0
- package/dist/katalog.cjs.map +1 -0
- package/dist/katalog.d.cts +645 -0
- package/dist/katalog.d.ts +645 -0
- package/dist/katalog.js +1626 -0
- package/dist/katalog.js.map +1 -0
- package/dist/kelulusan-BHFQM5N4.cjs +20 -0
- package/dist/kelulusan-ZR7CM6I5.js +11 -0
- package/dist/kemahasiswaan-EINWXAY7.cjs +20 -0
- package/dist/kemahasiswaan-NH2LEDH7.js +11 -0
- package/dist/kerjasama-FAOHZCML.js +11 -0
- package/dist/kerjasama-TXWJOU4Y.cjs +20 -0
- package/dist/keu-4TXF4FEP.cjs +20 -0
- package/dist/keu-SD7UOCDB.js +11 -0
- package/dist/kurikulum-SRO7TJYI.cjs +20 -0
- package/dist/kurikulum-XT7PZJOK.js +11 -0
- package/dist/layanan-RQ2AWCQ5.cjs +20 -0
- package/dist/layanan-Y6WUCSD2.js +11 -0
- package/dist/lms-5JYOSLBI.cjs +20 -0
- package/dist/lms-NTXMSHG2.js +11 -0
- package/dist/lppm-7DH7PRF3.cjs +20 -0
- package/dist/lppm-UXYGIOIF.js +11 -0
- package/dist/master-GKTTAKLF.cjs +20 -0
- package/dist/master-ZG4SPPDU.js +11 -0
- package/dist/mbkm-OGR72BTB.js +11 -0
- package/dist/mbkm-URKJHUIQ.cjs +20 -0
- package/dist/notifikasi-FMA26M4I.js +11 -0
- package/dist/notifikasi-QDCYIX7G.cjs +20 -0
- package/dist/pddikti-RJVYY2J4.cjs +20 -0
- package/dist/pddikti-VF2PXDKA.js +11 -0
- package/dist/{content-DaJPx5LX.d.cts → pemeliharaan-D5S-1lqW.d.ts} +38 -434
- package/dist/{content-DaJPx5LX.d.ts → pemeliharaan-Dr0HSxvZ.d.cts} +38 -434
- package/dist/perpustakaan-5RL33XG2.js +11 -0
- package/dist/perpustakaan-JXZW43MJ.cjs +20 -0
- package/dist/pilih-BEes_D3n.d.cts +205 -0
- package/dist/pilih-CEKqXMUS.d.ts +205 -0
- package/dist/pmb-EGTWW2ZH.cjs +20 -0
- package/dist/pmb-G7EAFJ3R.js +11 -0
- package/dist/portal-EI7TXN7H.cjs +20 -0
- package/dist/portal-MMUYX3RA.js +11 -0
- package/dist/portal-api-BJLO6AGI.js +11 -0
- package/dist/portal-api-Q6B3X6ZV.cjs +20 -0
- package/dist/profil-46FV46VH.cjs +20 -0
- package/dist/profil-4BIXIM6D.js +11 -0
- package/dist/referensi-HNYOJGNX.js +11 -0
- package/dist/referensi-VOT5BRCL.cjs +20 -0
- package/dist/registry.json +634 -4
- package/dist/repositori-2MJ43NXM.js +11 -0
- package/dist/repositori-KFXVJB7B.cjs +20 -0
- package/dist/rpl-2ZXHNSPF.js +11 -0
- package/dist/rpl-YF5MV2YA.cjs +20 -0
- package/dist/sarpras-CQ7QKVUN.js +11 -0
- package/dist/sarpras-XGPHHFCG.cjs +20 -0
- package/dist/scss/components/_animasi.scss +280 -0
- package/dist/scss/components/_ikon.scss +249 -0
- package/dist/scss/components/_katalog.scss +662 -0
- package/dist/scss/components/_platform.scss +364 -0
- package/dist/scss/index.scss +4 -0
- package/dist/sdm-N6LE66PP.cjs +20 -0
- package/dist/sdm-QKBXH3JF.js +11 -0
- package/dist/siakad.cjs +1562 -2960
- package/dist/siakad.cjs.map +1 -1
- package/dist/siakad.d.cts +97 -189
- package/dist/siakad.d.ts +97 -189
- package/dist/siakad.js +558 -2183
- package/dist/siakad.js.map +1 -1
- package/dist/spmi-J37NEYIU.js +11 -0
- package/dist/spmi-N6EU7KNC.cjs +20 -0
- package/dist/tracer-G6DDXVXC.cjs +20 -0
- package/dist/tracer-M3FTNWBG.js +11 -0
- package/dist/ui-unipo.css +1650 -0
- package/dist/ui-unipo.min.css +1 -1
- package/package.json +25 -3
- package/src/components/animasi.tsx +186 -0
- package/src/components/modal.tsx +113 -0
- package/src/components/overlays.tsx +6 -1
- package/src/components/pemeliharaan.tsx +152 -0
- package/src/components/platform.tsx +94 -0
- package/src/ikon/ilustrasi.tsx +283 -0
- package/src/ikon/index.ts +7 -0
- package/src/ikon/kotak.tsx +30 -0
- package/src/ikon/unipo.tsx +326 -0
- package/src/index.ts +8 -0
- package/src/katalog/aturan.ts +488 -0
- package/src/katalog/data/id.ts +749 -0
- package/src/katalog/data/indeks.json +1 -0
- package/src/katalog/data/muat.ts +47 -0
- package/src/katalog/ikon.tsx +11 -0
- package/src/katalog/index.ts +13 -0
- package/src/katalog/isian.tsx +372 -0
- package/src/katalog/katalog.tsx +138 -0
- package/src/katalog/kelola.tsx +620 -0
- package/src/katalog/modul.tsx +336 -0
- package/src/katalog/tampil.tsx +147 -0
- package/src/katalog/tipe.ts +141 -0
- package/src/katalog/wizard.tsx +155 -0
- package/src/lib/platform.ts +91 -0
- package/src/siakad/berkas.tsx +203 -0
- package/src/siakad/index.ts +2 -0
- package/src/siakad/pemeliharaan.tsx +118 -0
- package/src/siakad/provider.tsx +2 -0
- package/dist/chunk-DEF5CA7C.cjs.map +0 -1
- package/dist/chunk-SJ4DJOMZ.js.map +0 -1
package/cli/index.mjs
CHANGED
|
@@ -132,6 +132,49 @@ function entryFile() {
|
|
|
132
132
|
return cands.find((f) => existsSync(join(cwd, f)));
|
|
133
133
|
}
|
|
134
134
|
|
|
135
|
+
// ---------------------------------------------------------------- platform
|
|
136
|
+
const PLATFORM = ['web', 'desktop', 'mobile'];
|
|
137
|
+
const OS = ['ios', 'android', 'auto'];
|
|
138
|
+
/** Target platform: web (peramban), desktop (Electron/Tauri), mobile (Capacitor/WebView) dengan pilihan iOS/Android. */
|
|
139
|
+
async function tanyaPlatform(cfg) {
|
|
140
|
+
const platform = String(flags.platform ?? (await ask('Target platform: web / desktop / mobile', cfg.platform ?? 'web'))).toLowerCase();
|
|
141
|
+
if (!PLATFORM.includes(platform)) fail('Platform harus web, desktop, atau mobile.');
|
|
142
|
+
let os = null;
|
|
143
|
+
if (platform === 'mobile') {
|
|
144
|
+
os = String(flags.os ?? (await ask('Sistem operasi mobile: ios / android / auto (deteksi saat berjalan)', cfg.os ?? 'auto'))).toLowerCase();
|
|
145
|
+
if (!OS.includes(os)) fail('OS mobile harus ios, android, atau auto.');
|
|
146
|
+
}
|
|
147
|
+
return { platform, os };
|
|
148
|
+
}
|
|
149
|
+
function barisPlatform(platform, os) {
|
|
150
|
+
if (!platform || platform === 'web') return '';
|
|
151
|
+
return `import { setelPlatform } from 'unipo-ui';\nsetelPlatform({ platform: '${platform}'${os ? `, os: '${os}'` : ''} });\n`;
|
|
152
|
+
}
|
|
153
|
+
const PLATFORM_LABEL = { web: 'Web', desktop: 'Desktop (Electron/Tauri)', mobile: 'Mobile' };
|
|
154
|
+
|
|
155
|
+
// ---------------------------------------------------------------- perintah: platform
|
|
156
|
+
async function platformCmd() {
|
|
157
|
+
const cfg = config();
|
|
158
|
+
if (rest[0]) flags.platform = rest[0];
|
|
159
|
+
const { platform, os } = await tanyaPlatform(cfg);
|
|
160
|
+
const entry = entryFile();
|
|
161
|
+
if (entry && !entry.endsWith('.vue') && !flags['no-edit']) {
|
|
162
|
+
const p = join(cwd, entry);
|
|
163
|
+
let src = readFileSync(p, 'utf8');
|
|
164
|
+
src = src.replace(/import \{ setelPlatform \} from 'unipo-ui';\nsetelPlatform\([^)]*\);\n/, '');
|
|
165
|
+
const baris = barisPlatform(platform, os);
|
|
166
|
+
if (baris) {
|
|
167
|
+
const i = src.indexOf("import 'unipo-ui/css';\n");
|
|
168
|
+
src = i >= 0 ? src.slice(0, i) + "import 'unipo-ui/css';\n" + baris + src.slice(i + "import 'unipo-ui/css';\n".length) : baris + src;
|
|
169
|
+
}
|
|
170
|
+
writeFileSync(p, src);
|
|
171
|
+
ok(`Platform di ${c.b(entry)} diatur ke ${PLATFORM_LABEL[platform]}${os ? ` (${os})` : ''}`);
|
|
172
|
+
} else if (platform !== 'web') {
|
|
173
|
+
warn(`Panggil sekali di awal aplikasi: ${c.c(barisPlatform(platform, os).split('\n')[1])} atau tandai <html data-u-platform="${platform}"${os ? ` data-u-os="${os}"` : ''}>`);
|
|
174
|
+
}
|
|
175
|
+
if (existsSync(CONFIG)) writeFileSync(CONFIG, JSON.stringify({ ...cfg, platform, os }, null, 2) + '\n');
|
|
176
|
+
}
|
|
177
|
+
|
|
135
178
|
// ---------------------------------------------------------------- perintah: init
|
|
136
179
|
async function init() {
|
|
137
180
|
if (!project) fail('package.json tidak ditemukan. Jalankan di folder akar proyek (atau `npm init -y` dulu).');
|
|
@@ -144,11 +187,12 @@ async function init() {
|
|
|
144
187
|
const radius = Number(flags.radius ?? (await ask('Radius sudut (px)', String(cfg.radius ?? 10))));
|
|
145
188
|
if (!HEX.test(primary) || !HEX.test(secondary)) fail('Warna harus berformat hex, mis. #244ce6.');
|
|
146
189
|
const sdk = flags.sdk ?? (fw === 'react' || fw === 'next' ? (await ask('Pasang juga SDK SIAKAD (unipo-siakad-sdk)? y/n', 'y')).toLowerCase().startsWith('y') : false);
|
|
190
|
+
const { platform, os } = await tanyaPlatform(cfg);
|
|
147
191
|
|
|
148
192
|
if (fw === 'react-native') {
|
|
149
193
|
install(['unipo-ui-tokens']);
|
|
150
194
|
ok('Terpasang unipo-ui-tokens. Di React Native pakai token: import { colors } from "unipo-ui-tokens"; colors("light").primary');
|
|
151
|
-
writeFileSync(CONFIG, JSON.stringify({ framework: fw, primary, secondary, radius }, null, 2) + '\n');
|
|
195
|
+
writeFileSync(CONFIG, JSON.stringify({ framework: fw, primary, secondary, radius, platform, os }, null, 2) + '\n');
|
|
152
196
|
return;
|
|
153
197
|
}
|
|
154
198
|
|
|
@@ -168,7 +212,7 @@ async function init() {
|
|
|
168
212
|
let src = readFileSync(p, 'utf8');
|
|
169
213
|
if (!src.includes('unipo-ui/css')) {
|
|
170
214
|
const relTheme = './' + relative(dirname(p), join(cwd, themePath)).split('\\').join('/');
|
|
171
|
-
const lines = entry.endsWith('.vue') ? null : `${font ? "import '@fontsource-variable/plus-jakarta-sans';\n" : ''}import 'unipo-ui/css';\nimport '${relTheme.startsWith('./..') ? relTheme.slice(2) : relTheme}';\n`;
|
|
215
|
+
const lines = entry.endsWith('.vue') ? null : `${font ? "import '@fontsource-variable/plus-jakarta-sans';\n" : ''}import 'unipo-ui/css';\nimport '${relTheme.startsWith('./..') ? relTheme.slice(2) : relTheme}';\n${barisPlatform(platform, os)}`;
|
|
172
216
|
if (lines) {
|
|
173
217
|
const m = src.match(/^(['"]use client['"];?\s*\n)/);
|
|
174
218
|
src = m ? m[1] + lines + src.slice(m[1].length) : lines + src;
|
|
@@ -178,6 +222,7 @@ async function init() {
|
|
|
178
222
|
}
|
|
179
223
|
} else if (fw === 'laravel' || fw === 'html') {
|
|
180
224
|
warn('Salin CSS jadi: node_modules/unipo-ui/dist/ui-unipo.min.css ke folder publik, lalu muat setelahnya unipo-tema.css.');
|
|
225
|
+
if (platform !== 'web') warn(`Tandai platform di tag <html>: <html data-u-platform="${platform}"${os ? ` data-u-os="${os}"` : ''}>`);
|
|
181
226
|
} else {
|
|
182
227
|
warn(`Impor sekali di berkas awal aplikasi: import 'unipo-ui/css'; import './${themePath}';`);
|
|
183
228
|
}
|
|
@@ -208,7 +253,7 @@ export function Providers({ children, accessToken }: { children: React.ReactNode
|
|
|
208
253
|
}
|
|
209
254
|
}
|
|
210
255
|
|
|
211
|
-
writeFileSync(CONFIG, JSON.stringify({ $schema: 'https://api.unipo.ac.id/docs/panduan/ui', framework: fw, dir: cfg.dir ?? defaultDir(fw), theme: themePath, primary, secondary, radius, sdk }, null, 2) + '\n');
|
|
256
|
+
writeFileSync(CONFIG, JSON.stringify({ $schema: 'https://api.unipo.ac.id/docs/panduan/ui', framework: fw, dir: cfg.dir ?? defaultDir(fw), theme: themePath, primary, secondary, radius, sdk, platform, os }, null, 2) + '\n');
|
|
212
257
|
ok(`Konfigurasi disimpan di ${c.b('unipo.json')}`);
|
|
213
258
|
console.log(`\nSelesai. Contoh pakai:\n ${c.c("import { Button, FilterBar } from 'unipo-ui';")}${sdk ? `\n ${c.c("import { CariMahasiswa } from 'unipo-ui/siakad';")}` : ''}\nDaftar komponen: ${c.c('npx unipo-ui list')} · Salin sumber untuk diubah: ${c.c('npx unipo-ui add <Komponen>')}\n`);
|
|
214
259
|
}
|
|
@@ -329,6 +374,8 @@ ${c.b('unipo-ui')} ${c.d('v' + pkg.version)} Komponen UI UNIPO
|
|
|
329
374
|
${c.b('Perintah')}
|
|
330
375
|
init Pasang unipo-ui (+ SDK), buat berkas tema, impor CSS otomatis
|
|
331
376
|
--primary "#244ce6" --secondary "#f2b42a" --radius 10 --sdk -y
|
|
377
|
+
--platform web|desktop|mobile --os ios|android|auto
|
|
378
|
+
platform [target] Ganti target platform: web, desktop, mobile (--os ios|android|auto)
|
|
332
379
|
add <Komponen...> Salin sumber komponen dan dependensinya ke proyek (bisa diubah bebas)
|
|
333
380
|
--dir src/components/unipo --overwrite
|
|
334
381
|
list [kata] Daftar komponen per kelompok
|
|
@@ -340,6 +387,8 @@ ${c.b('Opsi umum')}
|
|
|
340
387
|
|
|
341
388
|
${c.b('Contoh')}
|
|
342
389
|
npx unipo-ui init -y --primary "#0f766e"
|
|
390
|
+
npx unipo-ui init -y --platform mobile --os ios
|
|
391
|
+
npx unipo-ui platform desktop
|
|
343
392
|
npx unipo-ui add FilterBar CariMahasiswa
|
|
344
393
|
npx unipo-ui list cari
|
|
345
394
|
|
|
@@ -347,6 +396,6 @@ Panduan: https://api.unipo.ac.id/docs/panduan/ui
|
|
|
347
396
|
`);
|
|
348
397
|
}
|
|
349
398
|
|
|
350
|
-
const run = { init, add, list, tema, theme: tema, help, '--help': help, '-h': help, '--version': () => console.log(pkg.version), '-v': () => console.log(pkg.version) }[cmd];
|
|
399
|
+
const run = { init, platform: platformCmd, add, list, tema, theme: tema, help, '--help': help, '-h': help, '--version': () => console.log(pkg.version), '-v': () => console.log(pkg.version) }[cmd];
|
|
351
400
|
if (!run) fail(`Perintah "${cmd}" tidak dikenal. Lihat \`npx unipo-ui help\`.`);
|
|
352
401
|
await run();
|
|
@@ -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: { 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: { 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-YCOE3DMH.cjs.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
// src/katalog/data/modul/admisi.json
|
|
3
|
+
var key = "admisi";
|
|
4
|
+
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" }];
|
|
5
|
+
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: { 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: { 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" } };
|
|
6
|
+
var mandiri = ["getAdmisiFeed", "getAdmisiRekomendasi", "getAdmisiNimUsulan", "postAdmisiNimGenerate", "postAdmisiLoaTerbitkan", "getAdmisiLaporan", "getAdmisiSayaChat", "postAdmisiSayaChat"];
|
|
7
|
+
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" } } } };
|
|
8
|
+
var admisi_default = { key, resources, ops, mandiri, skema };
|
|
9
|
+
|
|
10
|
+
export { admisi_default as default, key, mandiri, ops, resources, skema };
|
|
11
|
+
//# sourceMappingURL=admisi-YXCTBECZ.js.map
|