unipo-ui 1.2.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cli/index.mjs +53 -4
- package/dist/admisi-YCOE3DMH.cjs +20 -0
- package/dist/admisi-YXCTBECZ.js +11 -0
- package/dist/akademik-PJGL6MSP.cjs +20 -0
- package/dist/akademik-TPDFEZGF.js +11 -0
- package/dist/akses-AUPQD6YN.cjs +20 -0
- package/dist/akses-V5XIMBWT.js +11 -0
- package/dist/arsip-2T7IEION.cjs +20 -0
- package/dist/arsip-LDRV7FYX.js +11 -0
- package/dist/cbt-4N6COVIN.js +11 -0
- package/dist/cbt-GMQSR7TP.cjs +20 -0
- package/dist/chunk-34OKV63Q.js +122 -0
- package/dist/chunk-34OKV63Q.js.map +1 -0
- package/dist/chunk-3O5ELKBH.cjs +18 -0
- package/dist/chunk-3O5ELKBH.cjs.map +1 -0
- package/dist/chunk-4BQOABRV.js +462 -0
- package/dist/chunk-4BQOABRV.js.map +1 -0
- package/dist/{chunk-DEF5CA7C.cjs → chunk-5VNCBW4R.cjs} +282 -1165
- package/dist/chunk-5VNCBW4R.cjs.map +1 -0
- package/dist/{chunk-SJ4DJOMZ.js → chunk-7AJ4LW5H.js} +163 -1019
- package/dist/chunk-7AJ4LW5H.js.map +1 -0
- package/dist/chunk-JASW45YF.cjs +510 -0
- package/dist/chunk-JASW45YF.cjs.map +1 -0
- package/dist/chunk-JSUHAYQ4.js +15 -0
- package/dist/chunk-JSUHAYQ4.js.map +1 -0
- package/dist/chunk-LN6HZMPI.js +1006 -0
- package/dist/chunk-LN6HZMPI.js.map +1 -0
- package/dist/chunk-LNJTDEQR.cjs +1937 -0
- package/dist/chunk-LNJTDEQR.cjs.map +1 -0
- package/dist/chunk-MKQEH7QS.cjs +1058 -0
- package/dist/chunk-MKQEH7QS.cjs.map +1 -0
- package/dist/chunk-TAKLMRU7.cjs +150 -0
- package/dist/chunk-TAKLMRU7.cjs.map +1 -0
- package/dist/chunk-TYCRRYCQ.js +1843 -0
- package/dist/chunk-TYCRRYCQ.js.map +1 -0
- package/dist/crm-C4XGSG6O.js +11 -0
- package/dist/crm-LTVCDNMK.cjs +20 -0
- package/dist/dasbor-OJLMSFTF.cjs +20 -0
- package/dist/dasbor-Y3UPFYFE.js +11 -0
- package/dist/edom-3GZUUB7H.cjs +20 -0
- package/dist/edom-K4Y2NV4K.js +11 -0
- package/dist/fakultas-DJRUVJBV.js +11 -0
- package/dist/fakultas-VVAQOPUX.cjs +20 -0
- package/dist/filter-D54KALbB.d.cts +436 -0
- package/dist/filter-D54KALbB.d.ts +436 -0
- package/dist/helpdesk-AWVC7BPE.cjs +20 -0
- package/dist/helpdesk-BAOXAU6G.js +11 -0
- package/dist/humas-7BMMJ3WF.js +11 -0
- package/dist/humas-H56JFUW6.cjs +20 -0
- package/dist/ikon.cjs +125 -0
- package/dist/ikon.cjs.map +1 -0
- package/dist/ikon.d.cts +140 -0
- package/dist/ikon.d.ts +140 -0
- package/dist/ikon.js +6 -0
- package/dist/ikon.js.map +1 -0
- package/dist/iku-7JLF2NIH.js +11 -0
- package/dist/iku-F47ZLMYJ.cjs +20 -0
- package/dist/index.cjs +544 -257
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +192 -2
- package/dist/index.d.ts +192 -2
- package/dist/index.js +126 -4
- package/dist/index.js.map +1 -1
- package/dist/induk-BGTGKRLL.js +11 -0
- package/dist/induk-DLYDMZAM.cjs +20 -0
- package/dist/integrasi-4VXNGA3V.cjs +20 -0
- package/dist/integrasi-IP3WWDO7.js +11 -0
- package/dist/kalender-DGQDGJCL.cjs +20 -0
- package/dist/kalender-FGGUBYKZ.js +11 -0
- package/dist/karier-H3HBFCQQ.js +11 -0
- package/dist/karier-QTU2P5YD.cjs +20 -0
- package/dist/katalog.cjs +1709 -0
- package/dist/katalog.cjs.map +1 -0
- package/dist/katalog.d.cts +645 -0
- package/dist/katalog.d.ts +645 -0
- package/dist/katalog.js +1626 -0
- package/dist/katalog.js.map +1 -0
- package/dist/kelulusan-BHFQM5N4.cjs +20 -0
- package/dist/kelulusan-ZR7CM6I5.js +11 -0
- package/dist/kemahasiswaan-EINWXAY7.cjs +20 -0
- package/dist/kemahasiswaan-NH2LEDH7.js +11 -0
- package/dist/kerjasama-FAOHZCML.js +11 -0
- package/dist/kerjasama-TXWJOU4Y.cjs +20 -0
- package/dist/keu-4TXF4FEP.cjs +20 -0
- package/dist/keu-SD7UOCDB.js +11 -0
- package/dist/kurikulum-SRO7TJYI.cjs +20 -0
- package/dist/kurikulum-XT7PZJOK.js +11 -0
- package/dist/layanan-RQ2AWCQ5.cjs +20 -0
- package/dist/layanan-Y6WUCSD2.js +11 -0
- package/dist/lms-5JYOSLBI.cjs +20 -0
- package/dist/lms-NTXMSHG2.js +11 -0
- package/dist/lppm-7DH7PRF3.cjs +20 -0
- package/dist/lppm-UXYGIOIF.js +11 -0
- package/dist/master-GKTTAKLF.cjs +20 -0
- package/dist/master-ZG4SPPDU.js +11 -0
- package/dist/mbkm-OGR72BTB.js +11 -0
- package/dist/mbkm-URKJHUIQ.cjs +20 -0
- package/dist/notifikasi-FMA26M4I.js +11 -0
- package/dist/notifikasi-QDCYIX7G.cjs +20 -0
- package/dist/pddikti-RJVYY2J4.cjs +20 -0
- package/dist/pddikti-VF2PXDKA.js +11 -0
- package/dist/{content-DaJPx5LX.d.cts → pemeliharaan-D5S-1lqW.d.ts} +38 -434
- package/dist/{content-DaJPx5LX.d.ts → pemeliharaan-Dr0HSxvZ.d.cts} +38 -434
- package/dist/perpustakaan-5RL33XG2.js +11 -0
- package/dist/perpustakaan-JXZW43MJ.cjs +20 -0
- package/dist/pilih-BEes_D3n.d.cts +205 -0
- package/dist/pilih-CEKqXMUS.d.ts +205 -0
- package/dist/pmb-EGTWW2ZH.cjs +20 -0
- package/dist/pmb-G7EAFJ3R.js +11 -0
- package/dist/portal-EI7TXN7H.cjs +20 -0
- package/dist/portal-MMUYX3RA.js +11 -0
- package/dist/portal-api-BJLO6AGI.js +11 -0
- package/dist/portal-api-Q6B3X6ZV.cjs +20 -0
- package/dist/profil-46FV46VH.cjs +20 -0
- package/dist/profil-4BIXIM6D.js +11 -0
- package/dist/referensi-HNYOJGNX.js +11 -0
- package/dist/referensi-VOT5BRCL.cjs +20 -0
- package/dist/registry.json +606 -4
- package/dist/repositori-2MJ43NXM.js +11 -0
- package/dist/repositori-KFXVJB7B.cjs +20 -0
- package/dist/rpl-2ZXHNSPF.js +11 -0
- package/dist/rpl-YF5MV2YA.cjs +20 -0
- package/dist/sarpras-CQ7QKVUN.js +11 -0
- package/dist/sarpras-XGPHHFCG.cjs +20 -0
- package/dist/scss/components/_animasi.scss +280 -0
- package/dist/scss/components/_ikon.scss +249 -0
- package/dist/scss/components/_katalog.scss +662 -0
- package/dist/scss/components/_platform.scss +364 -0
- package/dist/scss/index.scss +4 -0
- package/dist/sdm-N6LE66PP.cjs +20 -0
- package/dist/sdm-QKBXH3JF.js +11 -0
- package/dist/siakad.cjs +1389 -2915
- package/dist/siakad.cjs.map +1 -1
- package/dist/siakad.d.cts +31 -196
- package/dist/siakad.d.ts +31 -196
- package/dist/siakad.js +446 -2194
- package/dist/siakad.js.map +1 -1
- package/dist/spmi-J37NEYIU.js +11 -0
- package/dist/spmi-N6EU7KNC.cjs +20 -0
- package/dist/tracer-G6DDXVXC.cjs +20 -0
- package/dist/tracer-M3FTNWBG.js +11 -0
- package/dist/ui-unipo.css +1650 -0
- package/dist/ui-unipo.min.css +1 -1
- package/package.json +25 -3
- package/src/components/animasi.tsx +186 -0
- package/src/components/modal.tsx +113 -0
- package/src/components/overlays.tsx +6 -1
- package/src/components/pemeliharaan.tsx +152 -0
- package/src/components/platform.tsx +94 -0
- package/src/ikon/ilustrasi.tsx +283 -0
- package/src/ikon/index.ts +7 -0
- package/src/ikon/kotak.tsx +30 -0
- package/src/ikon/unipo.tsx +326 -0
- package/src/index.ts +8 -0
- package/src/katalog/aturan.ts +488 -0
- package/src/katalog/data/id.ts +749 -0
- package/src/katalog/data/indeks.json +1 -0
- package/src/katalog/data/muat.ts +47 -0
- package/src/katalog/ikon.tsx +11 -0
- package/src/katalog/index.ts +13 -0
- package/src/katalog/isian.tsx +372 -0
- package/src/katalog/katalog.tsx +138 -0
- package/src/katalog/kelola.tsx +620 -0
- package/src/katalog/modul.tsx +336 -0
- package/src/katalog/tampil.tsx +147 -0
- package/src/katalog/tipe.ts +141 -0
- package/src/katalog/wizard.tsx +155 -0
- package/src/lib/platform.ts +91 -0
- package/src/siakad/index.ts +1 -0
- package/src/siakad/pemeliharaan.tsx +118 -0
- package/src/siakad/provider.tsx +2 -0
- package/dist/chunk-DEF5CA7C.cjs.map +0 -1
- package/dist/chunk-SJ4DJOMZ.js.map +0 -1
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
// src/katalog/data/modul/karier.json
|
|
3
|
+
var key = "karier";
|
|
4
|
+
var resources = [{ id: "/v1/karier/acara", tag: "Karier: Acara", title: "Acara karier", base: "/v1/karier/acara", item: "/v1/karier/acara/{id}", key: "id", list: "getKarierAcara", create: "postKarierAcara", get: "getKarierAcaraById", update: "putKarierAcaraById", del: "deleteKarierAcaraById", actions: [], children: ["/v1/karier/acara/{id}/berkas"] }, { id: "/v1/karier/acara/{id}/berkas", tag: "Karier: Acara", title: "Acara karier", base: "/v1/karier/acara/{id}/berkas", item: "/v1/karier/acara/{id}/berkas/{uuid}", key: "uuid", list: "getKarierAcaraByIdBerkas", create: "postKarierAcaraByIdBerkas", get: "getKarierAcaraByIdBerkasByUuid", del: "deleteKarierAcaraByIdBerkasByUuid", actions: [], children: [], parent: "/v1/karier/acara" }, { id: "/v1/karier/artikel", tag: "Karier: Tips", title: "Tips dan artikel karier", base: "/v1/karier/artikel", item: "/v1/karier/artikel/{id}", key: "id", list: "getKarierArtikel", create: "postKarierArtikel", get: "getKarierArtikelById", update: "putKarierArtikelById", del: "deleteKarierArtikelById", actions: [], children: ["/v1/karier/artikel/{id}/berkas"] }, { id: "/v1/karier/artikel/{id}/berkas", tag: "Karier: Tips", title: "Tips dan artikel karier", base: "/v1/karier/artikel/{id}/berkas", item: "/v1/karier/artikel/{id}/berkas/{uuid}", key: "uuid", list: "getKarierArtikelByIdBerkas", create: "postKarierArtikelByIdBerkas", get: "getKarierArtikelByIdBerkasByUuid", del: "deleteKarierArtikelByIdBerkasByUuid", actions: [], children: [], parent: "/v1/karier/artikel" }, { id: "/v1/karier/cv", tag: "Karier: Profil dan CV", title: "Profil dan CV", base: "/v1/karier/cv", item: "/v1/karier/cv/{nim}", key: "nim", get: "getKarierCvByNim", actions: [], children: [] }, { id: "/v1/karier/interaksi", tag: "Karier: Mitra", title: "Interaksi dengan mitra", base: "/v1/karier/interaksi", item: "/v1/karier/interaksi/{id}", key: "id", list: "getKarierInteraksi", create: "postKarierInteraksi", get: "getKarierInteraksiById", update: "putKarierInteraksiById", del: "deleteKarierInteraksiById", actions: ["postKarierInteraksiByIdSelesai"], children: [] }, { id: "/v1/karier/kandidat", tag: "Karier: Profil dan CV", title: "Kandidat", base: "/v1/karier/kandidat", list: "getKarierKandidat", actions: [], children: [] }, { id: "/v1/karier/lamaran", tag: "Karier: Lamaran", title: "Lamaran kerja", base: "/v1/karier/lamaran", item: "/v1/karier/lamaran/{id}", key: "id", list: "getKarierLamaran", create: "postKarierLamaran", get: "getKarierLamaranById", update: "putKarierLamaranById", del: "deleteKarierLamaranById", actions: ["postKarierLamaranByIdTarik", "postKarierLamaranByIdTandaiDilihat", "postKarierLamaranByIdSeleksi", "postKarierLamaranByIdWawancara", "postKarierLamaranByIdTerima", "postKarierLamaranByIdTolak"], children: ["/v1/karier/lamaran/{id}/berkas"] }, { id: "/v1/karier/lamaran/{id}/berkas", tag: "Karier: Lamaran", title: "Lamaran kerja", base: "/v1/karier/lamaran/{id}/berkas", item: "/v1/karier/lamaran/{id}/berkas/{uuid}", key: "uuid", list: "getKarierLamaranByIdBerkas", create: "postKarierLamaranByIdBerkas", get: "getKarierLamaranByIdBerkasByUuid", del: "deleteKarierLamaranByIdBerkasByUuid", actions: [], children: [], parent: "/v1/karier/lamaran" }, { id: "/v1/karier/mitra", tag: "Karier: Mitra", title: "Perusahaan mitra", base: "/v1/karier/mitra", item: "/v1/karier/mitra/{id}", key: "id", list: "getKarierMitra", create: "postKarierMitra", get: "getKarierMitraById", update: "putKarierMitraById", del: "deleteKarierMitraById", actions: ["postKarierMitraByIdAktifkan", "postKarierMitraByIdNonaktifkan"], children: [] }, { id: "/v1/karier/pengalaman", tag: "Karier: Profil dan CV", title: "Pengalaman", base: "/v1/karier/pengalaman", item: "/v1/karier/pengalaman/{id}", key: "id", list: "getKarierPengalaman", create: "postKarierPengalaman", get: "getKarierPengalamanById", update: "putKarierPengalamanById", del: "deleteKarierPengalamanById", actions: [], children: ["/v1/karier/pengalaman/{id}/berkas"] }, { id: "/v1/karier/pengalaman/{id}/berkas", tag: "Karier: Profil dan CV", title: "Pengalaman", base: "/v1/karier/pengalaman/{id}/berkas", item: "/v1/karier/pengalaman/{id}/berkas/{uuid}", key: "uuid", list: "getKarierPengalamanByIdBerkas", create: "postKarierPengalamanByIdBerkas", get: "getKarierPengalamanByIdBerkasByUuid", del: "deleteKarierPengalamanByIdBerkasByUuid", actions: [], children: [], parent: "/v1/karier/pengalaman" }, { id: "/v1/karier/peserta", tag: "Karier: Acara", title: "Pendaftar acara", base: "/v1/karier/peserta", item: "/v1/karier/peserta/{id}", key: "id", list: "getKarierPeserta", create: "postKarierPeserta", get: "getKarierPesertaById", del: "deleteKarierPesertaById", actions: ["postKarierPesertaByIdHadir", "postKarierPesertaByIdBatal"], children: [] }, { id: "/v1/karier/profil", tag: "Karier: Profil dan CV", title: "Profil karier", base: "/v1/karier/profil", item: "/v1/karier/profil/{id}", key: "id", list: "getKarierProfil", create: "postKarierProfil", get: "getKarierProfilById", update: "putKarierProfilById", del: "deleteKarierProfilById", actions: [], children: ["/v1/karier/profil/{id}/berkas"] }, { id: "/v1/karier/profil/{id}/berkas", tag: "Karier: Profil dan CV", title: "Profil karier", base: "/v1/karier/profil/{id}/berkas", item: "/v1/karier/profil/{id}/berkas/{uuid}", key: "uuid", list: "getKarierProfilByIdBerkas", create: "postKarierProfilByIdBerkas", get: "getKarierProfilByIdBerkasByUuid", del: "deleteKarierProfilByIdBerkasByUuid", actions: [], children: [], parent: "/v1/karier/profil" }, { id: "/v1/karier/rekomendasi", tag: "Karier: Rekomendasi", title: "Rekomendasi lulusan", base: "/v1/karier/rekomendasi", item: "/v1/karier/rekomendasi/{id}", key: "id", list: "getKarierRekomendasi", create: "postKarierRekomendasi", get: "getKarierRekomendasiById", update: "putKarierRekomendasiById", del: "deleteKarierRekomendasiById", actions: ["postKarierRekomendasiByIdKirim", "postKarierRekomendasiByIdDiminati", "postKarierRekomendasiByIdTolak", "postKarierRekomendasiByIdDirekrut"], children: [] }, { id: "/v1/karier/undangan-mitra", tag: "Karier: Mitra", title: "Undangan mitra", base: "/v1/karier/undangan-mitra", list: "getKarierUndanganMitra", create: "postKarierUndanganMitra", actions: [], children: [] }, { id: "/v1/karier/undangan-mitra/terima", tag: "Karier: Mitra", title: "Mitra", base: "/v1/karier/undangan-mitra/terima", item: "/v1/karier/undangan-mitra/terima/{token}", key: "token", get: "getKarierUndanganMitraTerimaByToken", actions: ["postKarierUndanganMitraTerimaByToken"], children: [] }];
|
|
5
|
+
var ops = { getKarierCvByNim: { id: "getKarierCvByNim", m: "GET", path: "/v1/karier/cv/{nim}", tag: "Karier: Profil dan CV", sum: "CV lengkap", ds: "Profil dan pengalaman digabung data SIAKAD: prodi, tahun masuk, tanggal lulus, IPK, prestasi terverifikasi (kemahasiswaan), kegiatan MBKM selesai, dan jabatan di ormawa. Untuk pemilik, pengelola, atau aplikasi mitra bila profil ditampilkan ke mitra.", sc: ["karier:read"], pa: [{ nm: "nim", in: "path", s: { t: "string", rf: { l: "/v1/mahasiswa", k: "nim", d: "/v1/mahasiswa/{nim}" } }, rq: 1, ds: "NIM" }], r: "object", it: "Objek" }, getKarierKandidat: { id: "getKarierKandidat", m: "GET", path: "/v1/karier/kandidat", tag: "Karier: Profil dan CV", sum: "Cari kandidat", ds: "Untuk pengelola dan aplikasi mitra: profil yang setuju ditampilkan ke mitra, beserta IPK lulusan. Maksimal 200 baris.", sc: ["karier:read"], pa: [{ nm: "keahlian", in: "query", s: { t: "string" }, ds: "Kata dalam daftar keahlian" }, { nm: "kode_prodi", in: "query", s: { t: "string", rf: { l: "/v1/referensi/prodi", k: "kode_prodi", q: 0 } }, ds: "Prodi" }, { nm: "status_kerja", in: "query", s: { t: "string" }, ds: "mencari, terbuka, ..." }, { nm: "lulusan", in: "query", s: { t: "string" }, ds: "1 = hanya yang sudah lulus" }], r: "list", it: "Objek" }, getKarierRekap: { id: "getKarierRekap", m: "GET", path: "/v1/karier/rekap", tag: "Karier: Laporan", sum: "Rekap pusat karier", ds: "Profil, lamaran per status, lowongan terbit, dan acara 12 bulan terakhir. Pengelola.", sc: ["karier:read"], r: "object", it: "Objek" }, getKarierLowonganPantau: { id: "getKarierLowonganPantau", m: "GET", path: "/v1/karier/lowongan/pantau", tag: "Karier: Laporan", sum: "Pemantauan lowongan", ds: "Ringkasan lowongan tracer (draf, terbit aktif, ditutup, lewat batas tapi masih terbit, akan tutup 14 hari, aktif tanpa pelamar), lamaran per status dan persen diterima, per tipe, per instansi beserta status mitra, tren 12 bulan, dan daftar lowongan aktif dengan jumlah pelamar/belum dilihat/rekomendasi. Pengelola.", sc: ["karier:read"], pa: [{ nm: "instansi_id", in: "query", s: { t: "string" }, ds: "Instansi" }, { nm: "kode_prodi", in: "query", s: { t: "string", rf: { l: "/v1/referensi/prodi", k: "kode_prodi", q: 0 } }, ds: "Lowongan untuk prodi ini" }], r: "object", it: "Objek" }, getKarierLowonganByIdSaranKandidat: { id: "getKarierLowonganByIdSaranKandidat", m: "GET", path: "/v1/karier/lowongan/{id}/saran-kandidat", tag: "Karier: Rekomendasi", sum: "Saran kandidat untuk lowongan", ds: "Profil yang setuju ditampilkan ke mitra, diurutkan menurut skor kecocokan (prodi, keahlian dan minat terhadap teks lowongan, IPK, lokasi, status mencari kerja) beserta alasannya; yang sudah melamar/direkomendasikan ditandai. Pengelola.", sc: ["karier:read"], pa: [{ nm: "id", in: "path", s: { t: "string" }, rq: 1, ds: "ID lowongan (tracer_lowongan)" }, { nm: "batas", in: "query", s: { t: "string" }, ds: "Jumlah kandidat (bawaan 30)" }], r: "object", it: "Objek" }, getKarierUndanganMitra: { id: "getKarierUndanganMitra", m: "GET", path: "/v1/karier/undangan-mitra", tag: "Karier: Mitra", sum: "Daftar undangan mitra", ds: "Pengelola.", sc: ["karier:read"], pa: [{ nm: "status", in: "query", s: { t: "string" }, ds: "terkirim | dibuka | diterima | ditolak | dicabut" }], r: "list", it: "Objek" }, postKarierUndanganMitra: { id: "postKarierUndanganMitra", m: "POST", path: "/v1/karier/undangan-mitra", tag: "Karier: Mitra", sum: "Undang calon mitra", ds: "Body {email, nama_instansi?, nama_kontak?, pesan?}. Membuat tautan bertoken (berlaku 30 hari, hanya tampil sekali) untuk dikirim ke perusahaan; undangan aktif lama ke email yang sama dicabut. Pengelola.", sc: ["karier:write"], b: { ct: "application/json", ref: "Objek", s: { t: "object", ds: "Baris data dengan nama kolom huruf kecil sesuai tabel SIAKAD." }, rq: 1 }, r: "object", it: "Objek" }, postKarierUndanganMitraByIdCabut: { id: "postKarierUndanganMitraByIdCabut", m: "POST", path: "/v1/karier/undangan-mitra/{id}/cabut", tag: "Karier: Mitra", sum: "Cabut undangan mitra", sc: ["karier:write"], pa: [{ nm: "id", in: "path", s: { t: "string" }, rq: 1, ds: "ID undangan" }], r: "object", it: "Objek" }, getKarierUndanganMitraTerimaByToken: { id: "getKarierUndanganMitraTerimaByToken", m: "GET", path: "/v1/karier/undangan-mitra/terima/{token}", tag: "Karier: Mitra", sum: "Lihat undangan (calon mitra, tanpa token akses)", ds: "Isi undangan dan daftar isian. Membuka tautan menandai undangan dibuka.", pub: 1, pa: [{ nm: "token", in: "path", s: { t: "string" }, rq: 1, ds: "Token undangan" }], r: "object", it: "Objek" }, postKarierUndanganMitraTerimaByToken: { id: "postKarierUndanganMitraTerimaByToken", m: "POST", path: "/v1/karier/undangan-mitra/terima/{token}", tag: "Karier: Mitra", sum: "Jawab undangan (calon mitra, tanpa token akses)", ds: "Body {setuju: true, nama, kontak_nama, bidang_usaha?, alamat?, telepon?, situs?, kontak_jabatan?, kontak_hp?, bidang_rekrutmen?} atau {setuju: false}. Diterima: perusahaan dicatat di tracer_instansi (belum terverifikasi) dan mitra berstatus calon; pengelola mendapat notifikasi lalu mengaktifkan.", pub: 1, pa: [{ nm: "token", in: "path", s: { t: "string" }, rq: 1, ds: "Token undangan" }], b: { ct: "application/json", ref: "Objek", s: { t: "object", ds: "Baris data dengan nama kolom huruf kecil sesuai tabel SIAKAD." }, rq: 1 }, r: "object", it: "Objek" }, getKarierProfil: { id: "getKarierProfil", m: "GET", path: "/v1/karier/profil", tag: "Karier: Profil dan CV", sum: "Profil karier: daftar", ds: "Satu profil per mahasiswa/alumni (nim otomatis untuk pemilik). Aplikasi mitra (token aplikasi ber-scope karier:read) hanya melihat profil yang `tampil_ke_mitra`. CV dilampirkan lewat /berkas; CV lengkap otomatis di /karier/cv/{nim}. Pengelola melihat semua; pengguna lain hanya miliknya sendiri (nim).", sc: ["karier: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: "status_kerja", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "tampil_ke_mitra", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "q", in: "query", s: { t: "string" }, ds: "Cari di nim, judul_profil, minat_bidang" }, { nm: "dari", in: "query", s: { t: "string" }, ds: "Tanggal awal (YYYY-MM-DD)" }, { nm: "sampai", in: "query", s: { t: "string" }, ds: "Tanggal akhir (YYYY-MM-DD)" }, { nm: "urut", in: "query", s: { t: "string" }, ds: 'Nama kolom, awali "-" untuk menurun' }], r: "list", it: "KarierProfil" }, postKarierProfil: { id: "postKarierProfil", m: "POST", path: "/v1/karier/profil", tag: "Karier: Profil dan CV", sum: "Profil karier: tambah", ds: "Pengelola, atau pengguna untuk datanya sendiri (nim diisi otomatis).", sc: ["karier:write"], b: { ct: "application/json", ref: "KarierProfilInput", s: { t: "object", pr: { nim: { t: "string", ds: "m_mahasiswa.NIM (unik)", rf: { l: "/v1/mahasiswa", k: "nim", d: "/v1/mahasiswa/{nim}" } }, judul_profil: { t: "string", max: 150 }, ringkasan: { t: "string" }, keahlian: { t: "object" }, bahasa: { t: "object" }, minat_bidang: { t: "string", max: 255 }, lokasi_diinginkan: { t: "string", max: 255 }, status_kerja: { t: "string", e: ["mencari", "terbuka", "bekerja", "studi_lanjut", "wirausaha", "tidak_mencari"], d: "terbuka" }, linkedin: { t: "string", f: "uri" }, portofolio: { t: "string", f: "uri" }, tampil_ke_mitra: { t: "boolean", d: "0" } }, rq: ["nim"] }, rq: 1 }, r: "object", it: "KarierProfil" }, getKarierProfilById: { id: "getKarierProfilById", m: "GET", path: "/v1/karier/profil/{id}", tag: "Karier: Profil dan CV", sum: "Profil karier: detail", ds: "Satu profil per mahasiswa/alumni (nim otomatis untuk pemilik). Aplikasi mitra (token aplikasi ber-scope karier:read) hanya melihat profil yang `tampil_ke_mitra`. CV dilampirkan lewat /berkas; CV lengkap otomatis di /karier/cv/{nim}. Pengelola melihat semua; pengguna lain hanya miliknya sendiri (nim).", sc: ["karier:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/profil", k: "id", d: "/v1/karier/profil/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "KarierProfil" }, putKarierProfilById: { id: "putKarierProfilById", m: "PUT", path: "/v1/karier/profil/{id}", tag: "Karier: Profil dan CV", sum: "Profil karier: ubah", ds: "Pengelola, atau pengguna untuk datanya sendiri (nim diisi otomatis). Kolom yang tidak dikirim tidak berubah.", sc: ["karier:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/profil", k: "id", d: "/v1/karier/profil/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "KarierProfilInput", s: { t: "object", pr: { nim: { t: "string", ds: "m_mahasiswa.NIM (unik)", rf: { l: "/v1/mahasiswa", k: "nim", d: "/v1/mahasiswa/{nim}" } }, judul_profil: { t: "string", max: 150 }, ringkasan: { t: "string" }, keahlian: { t: "object" }, bahasa: { t: "object" }, minat_bidang: { t: "string", max: 255 }, lokasi_diinginkan: { t: "string", max: 255 }, status_kerja: { t: "string", e: ["mencari", "terbuka", "bekerja", "studi_lanjut", "wirausaha", "tidak_mencari"], d: "terbuka" }, linkedin: { t: "string", f: "uri" }, portofolio: { t: "string", f: "uri" }, tampil_ke_mitra: { t: "boolean", d: "0" } }, rq: ["nim"] }, rq: 1 }, r: "object", it: "KarierProfil" }, deleteKarierProfilById: { id: "deleteKarierProfilById", m: "DELETE", path: "/v1/karier/profil/{id}", tag: "Karier: Profil dan CV", sum: "Profil karier: hapus", ds: "Pengelola, atau pengguna untuk datanya sendiri (nim diisi otomatis).", sc: ["karier:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/profil", k: "id", d: "/v1/karier/profil/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "none" }, getKarierProfilByIdBerkas: { id: "getKarierProfilByIdBerkas", m: "GET", path: "/v1/karier/profil/{id}/berkas", tag: "Karier: Profil dan CV", sum: "Profil karier: daftar lampiran", ds: "Siapa pun yang boleh melihat barisnya.", sc: ["karier:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/profil", k: "id", d: "/v1/karier/profil/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "list", it: "PusatBerkas" }, postKarierProfilByIdBerkas: { id: "postKarierProfilByIdBerkas", m: "POST", path: "/v1/karier/profil/{id}/berkas", tag: "Karier: Profil dan CV", sum: "Profil karier: unggah lampiran", ds: 'Multipart field "berkas" (atau JSON berkas_base64 + nama_file), opsional jenis dan keterangan. PDF, gambar, dokumen Office/ODF, CSV, TXT, ZIP; maksimal PUSAT_DATA_MAKS_MB (bawaan 20 MB). Pengelola, atau pengguna untuk datanya sendiri (nim diisi otomatis).', sc: ["karier:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/profil", k: "id", d: "/v1/karier/profil/{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" }, getKarierProfilByIdBerkasByUuid: { id: "getKarierProfilByIdBerkasByUuid", m: "GET", path: "/v1/karier/profil/{id}/berkas/{uuid}", tag: "Karier: Profil dan CV", sum: "Profil karier: unduh lampiran", sc: ["karier:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/profil", k: "id", d: "/v1/karier/profil/{id}" } }, rq: 1, ds: "ID angka atau UUID" }, { nm: "uuid", in: "path", s: { t: "string" }, rq: 1, ds: "UUID berkas" }], r: "object" }, deleteKarierProfilByIdBerkasByUuid: { id: "deleteKarierProfilByIdBerkasByUuid", m: "DELETE", path: "/v1/karier/profil/{id}/berkas/{uuid}", tag: "Karier: Profil dan CV", sum: "Profil karier: hapus lampiran", ds: "Pengelola, atau pengguna untuk datanya sendiri (nim diisi otomatis).", sc: ["karier:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/profil", k: "id", d: "/v1/karier/profil/{id}" } }, rq: 1, ds: "ID angka atau UUID" }, { nm: "uuid", in: "path", s: { t: "string" }, rq: 1, ds: "UUID berkas" }], r: "none" }, getKarierPengalaman: { id: "getKarierPengalaman", m: "GET", path: "/v1/karier/pengalaman", tag: "Karier: Profil dan CV", sum: "Pengalaman: daftar", ds: "Pengelola melihat semua; pengguna lain hanya miliknya sendiri (nim).", sc: ["karier: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: "jenis", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "q", in: "query", s: { t: "string" }, ds: "Cari di judul, instansi" }, { nm: "dari", in: "query", s: { t: "string" }, ds: "Tanggal awal (YYYY-MM-DD)" }, { nm: "sampai", in: "query", s: { t: "string" }, ds: "Tanggal akhir (YYYY-MM-DD)" }, { nm: "urut", in: "query", s: { t: "string" }, ds: 'Nama kolom, awali "-" untuk menurun' }], r: "list", it: "KarierPengalaman" }, postKarierPengalaman: { id: "postKarierPengalaman", m: "POST", path: "/v1/karier/pengalaman", tag: "Karier: Profil dan CV", sum: "Pengalaman: tambah", ds: "Pengelola, atau pengguna untuk datanya sendiri (nim diisi otomatis).", sc: ["karier:write"], b: { ct: "application/json", ref: "KarierPengalamanInput", s: { t: "object", pr: { nim: { t: "string", ds: "m_mahasiswa.NIM", rf: { l: "/v1/mahasiswa", k: "nim", d: "/v1/mahasiswa/{nim}" } }, jenis: { t: "string", e: ["kerja", "magang", "organisasi", "proyek", "pelatihan", "sertifikasi", "penghargaan", "relawan", "lainnya"] }, judul: { t: "string", max: 200 }, instansi: { t: "string", max: 200 }, mulai: { t: "string", f: "date" }, selesai: { t: "string", f: "date" }, uraian: { t: "string" }, nomor_kredensial: { t: "string", max: 100 }, tautan: { t: "string", f: "uri" } }, rq: ["nim", "jenis", "judul"] }, rq: 1 }, r: "object", it: "KarierPengalaman" }, getKarierPengalamanById: { id: "getKarierPengalamanById", m: "GET", path: "/v1/karier/pengalaman/{id}", tag: "Karier: Profil dan CV", sum: "Pengalaman: detail", ds: "Pengelola melihat semua; pengguna lain hanya miliknya sendiri (nim).", sc: ["karier:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/pengalaman", k: "id", d: "/v1/karier/pengalaman/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "KarierPengalaman" }, putKarierPengalamanById: { id: "putKarierPengalamanById", m: "PUT", path: "/v1/karier/pengalaman/{id}", tag: "Karier: Profil dan CV", sum: "Pengalaman: ubah", ds: "Pengelola, atau pengguna untuk datanya sendiri (nim diisi otomatis). Kolom yang tidak dikirim tidak berubah.", sc: ["karier:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/pengalaman", k: "id", d: "/v1/karier/pengalaman/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "KarierPengalamanInput", s: { t: "object", pr: { nim: { t: "string", ds: "m_mahasiswa.NIM", rf: { l: "/v1/mahasiswa", k: "nim", d: "/v1/mahasiswa/{nim}" } }, jenis: { t: "string", e: ["kerja", "magang", "organisasi", "proyek", "pelatihan", "sertifikasi", "penghargaan", "relawan", "lainnya"] }, judul: { t: "string", max: 200 }, instansi: { t: "string", max: 200 }, mulai: { t: "string", f: "date" }, selesai: { t: "string", f: "date" }, uraian: { t: "string" }, nomor_kredensial: { t: "string", max: 100 }, tautan: { t: "string", f: "uri" } }, rq: ["nim", "jenis", "judul"] }, rq: 1 }, r: "object", it: "KarierPengalaman" }, deleteKarierPengalamanById: { id: "deleteKarierPengalamanById", m: "DELETE", path: "/v1/karier/pengalaman/{id}", tag: "Karier: Profil dan CV", sum: "Pengalaman: hapus", ds: "Pengelola, atau pengguna untuk datanya sendiri (nim diisi otomatis).", sc: ["karier:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/pengalaman", k: "id", d: "/v1/karier/pengalaman/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "none" }, getKarierPengalamanByIdBerkas: { id: "getKarierPengalamanByIdBerkas", m: "GET", path: "/v1/karier/pengalaman/{id}/berkas", tag: "Karier: Profil dan CV", sum: "Pengalaman: daftar lampiran", ds: "Siapa pun yang boleh melihat barisnya.", sc: ["karier:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/pengalaman", k: "id", d: "/v1/karier/pengalaman/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "list", it: "PusatBerkas" }, postKarierPengalamanByIdBerkas: { id: "postKarierPengalamanByIdBerkas", m: "POST", path: "/v1/karier/pengalaman/{id}/berkas", tag: "Karier: Profil dan CV", sum: "Pengalaman: unggah lampiran", ds: 'Multipart field "berkas" (atau JSON berkas_base64 + nama_file), opsional jenis dan keterangan. PDF, gambar, dokumen Office/ODF, CSV, TXT, ZIP; maksimal PUSAT_DATA_MAKS_MB (bawaan 20 MB). Pengelola, atau pengguna untuk datanya sendiri (nim diisi otomatis).', sc: ["karier:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/pengalaman", k: "id", d: "/v1/karier/pengalaman/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "multipart/form-data", ref: "PusatBerkasInput", s: { t: "object", pr: { berkas: { t: "string", f: "binary" }, jenis: { t: "string", ds: "Mis. lampiran, bukti, laporan" }, keterangan: { t: "string" }, berkas_base64: { t: "string", ds: "Alternatif JSON" }, nama_file: { t: "string" } } }, rq: 1 }, r: "object", it: "PusatBerkas" }, getKarierPengalamanByIdBerkasByUuid: { id: "getKarierPengalamanByIdBerkasByUuid", m: "GET", path: "/v1/karier/pengalaman/{id}/berkas/{uuid}", tag: "Karier: Profil dan CV", sum: "Pengalaman: unduh lampiran", sc: ["karier:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/pengalaman", k: "id", d: "/v1/karier/pengalaman/{id}" } }, rq: 1, ds: "ID angka atau UUID" }, { nm: "uuid", in: "path", s: { t: "string" }, rq: 1, ds: "UUID berkas" }], r: "object" }, deleteKarierPengalamanByIdBerkasByUuid: { id: "deleteKarierPengalamanByIdBerkasByUuid", m: "DELETE", path: "/v1/karier/pengalaman/{id}/berkas/{uuid}", tag: "Karier: Profil dan CV", sum: "Pengalaman: hapus lampiran", ds: "Pengelola, atau pengguna untuk datanya sendiri (nim diisi otomatis).", sc: ["karier:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/pengalaman", k: "id", d: "/v1/karier/pengalaman/{id}" } }, rq: 1, ds: "ID angka atau UUID" }, { nm: "uuid", in: "path", s: { t: "string" }, rq: 1, ds: "UUID berkas" }], r: "none" }, getKarierLamaran: { id: "getKarierLamaran", m: "GET", path: "/v1/karier/lamaran", tag: "Karier: Lamaran", sum: "Lamaran kerja: daftar", ds: "Lamaran ke lowongan tracer (`tracer_lowongan` terbit, belum lewat batas). Pelamar wajib punya profil karier. Pengelola atau aplikasi mitra memperbarui status; pelamar mendapat notifikasi dan bisa menarik lamaran. Pengelola melihat semua; pengguna lain hanya miliknya sendiri (nim).", sc: ["karier: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: "lowongan_id", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "nim", in: "query", s: { t: "string", rf: { l: "/v1/mahasiswa", k: "nim", d: "/v1/mahasiswa/{nim}" } }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "status", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "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: "KarierLamaran" }, postKarierLamaran: { id: "postKarierLamaran", m: "POST", path: "/v1/karier/lamaran", tag: "Karier: Lamaran", sum: "Lamaran kerja: tambah", ds: "Pengelola, atau pengguna untuk datanya sendiri (nim diisi otomatis); pemilik hanya bisa mengubah/menghapus bila status dikirim.", sc: ["karier:write"], b: { ct: "application/json", ref: "KarierLamaranInput", s: { t: "object", pr: { lowongan_id: { t: "integer", ds: "ID di tracer_lowongan", rf: { l: "/v1/tracer/lowongan", k: "id", d: "/v1/tracer/lowongan/{id}" } }, nim: { t: "string", ds: "m_mahasiswa.NIM", rf: { l: "/v1/mahasiswa", k: "nim", d: "/v1/mahasiswa/{nim}" } }, surat_lamaran: { t: "string" } }, rq: ["lowongan_id", "nim"] }, rq: 1 }, r: "object", it: "KarierLamaran" }, getKarierLamaranById: { id: "getKarierLamaranById", m: "GET", path: "/v1/karier/lamaran/{id}", tag: "Karier: Lamaran", sum: "Lamaran kerja: detail", ds: "Lamaran ke lowongan tracer (`tracer_lowongan` terbit, belum lewat batas). Pelamar wajib punya profil karier. Pengelola atau aplikasi mitra memperbarui status; pelamar mendapat notifikasi dan bisa menarik lamaran. Pengelola melihat semua; pengguna lain hanya miliknya sendiri (nim).", sc: ["karier:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/lamaran", k: "id", d: "/v1/karier/lamaran/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "KarierLamaran" }, putKarierLamaranById: { id: "putKarierLamaranById", m: "PUT", path: "/v1/karier/lamaran/{id}", tag: "Karier: Lamaran", sum: "Lamaran kerja: ubah", ds: "Pengelola, atau pengguna untuk datanya sendiri (nim diisi otomatis); pemilik hanya bisa mengubah/menghapus bila status dikirim. Kolom yang tidak dikirim tidak berubah.", sc: ["karier:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/lamaran", k: "id", d: "/v1/karier/lamaran/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "KarierLamaranInput", s: { t: "object", pr: { lowongan_id: { t: "integer", ds: "ID di tracer_lowongan", rf: { l: "/v1/tracer/lowongan", k: "id", d: "/v1/tracer/lowongan/{id}" } }, nim: { t: "string", ds: "m_mahasiswa.NIM", rf: { l: "/v1/mahasiswa", k: "nim", d: "/v1/mahasiswa/{nim}" } }, surat_lamaran: { t: "string" } }, rq: ["lowongan_id", "nim"] }, rq: 1 }, r: "object", it: "KarierLamaran" }, deleteKarierLamaranById: { id: "deleteKarierLamaranById", m: "DELETE", path: "/v1/karier/lamaran/{id}", tag: "Karier: Lamaran", sum: "Lamaran kerja: hapus", ds: "Pengelola, atau pengguna untuk datanya sendiri (nim diisi otomatis); pemilik hanya bisa mengubah/menghapus bila status dikirim.", sc: ["karier:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/lamaran", k: "id", d: "/v1/karier/lamaran/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "none" }, getKarierLamaranByIdBerkas: { id: "getKarierLamaranByIdBerkas", m: "GET", path: "/v1/karier/lamaran/{id}/berkas", tag: "Karier: Lamaran", sum: "Lamaran kerja: daftar lampiran", ds: "Siapa pun yang boleh melihat barisnya.", sc: ["karier:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/lamaran", k: "id", d: "/v1/karier/lamaran/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "list", it: "PusatBerkas" }, postKarierLamaranByIdBerkas: { id: "postKarierLamaranByIdBerkas", m: "POST", path: "/v1/karier/lamaran/{id}/berkas", tag: "Karier: Lamaran", sum: "Lamaran kerja: unggah lampiran", ds: 'Multipart field "berkas" (atau JSON berkas_base64 + nama_file), opsional jenis dan keterangan. PDF, gambar, dokumen Office/ODF, CSV, TXT, ZIP; maksimal PUSAT_DATA_MAKS_MB (bawaan 20 MB). Pengelola, atau pengguna untuk datanya sendiri (nim diisi otomatis); pemilik hanya bisa mengubah/menghapus bila status dikirim.', sc: ["karier:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/lamaran", k: "id", d: "/v1/karier/lamaran/{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" }, getKarierLamaranByIdBerkasByUuid: { id: "getKarierLamaranByIdBerkasByUuid", m: "GET", path: "/v1/karier/lamaran/{id}/berkas/{uuid}", tag: "Karier: Lamaran", sum: "Lamaran kerja: unduh lampiran", sc: ["karier:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/lamaran", k: "id", d: "/v1/karier/lamaran/{id}" } }, rq: 1, ds: "ID angka atau UUID" }, { nm: "uuid", in: "path", s: { t: "string" }, rq: 1, ds: "UUID berkas" }], r: "object" }, deleteKarierLamaranByIdBerkasByUuid: { id: "deleteKarierLamaranByIdBerkasByUuid", m: "DELETE", path: "/v1/karier/lamaran/{id}/berkas/{uuid}", tag: "Karier: Lamaran", sum: "Lamaran kerja: hapus lampiran", ds: "Pengelola, atau pengguna untuk datanya sendiri (nim diisi otomatis); pemilik hanya bisa mengubah/menghapus bila status dikirim.", sc: ["karier:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/lamaran", k: "id", d: "/v1/karier/lamaran/{id}" } }, rq: 1, ds: "ID angka atau UUID" }, { nm: "uuid", in: "path", s: { t: "string" }, rq: 1, ds: "UUID berkas" }], r: "none" }, postKarierLamaranByIdTarik: { id: "postKarierLamaranByIdTarik", m: "POST", path: "/v1/karier/lamaran/{id}/tarik", tag: "Karier: Lamaran", sum: "Lamaran kerja: Tarik lamaran", ds: "Pemilik data. Status harus dikirim/dilihat/seleksi/wawancara, menjadi ditarik.", sc: ["karier:write"], tr: { dari: ["dikirim", "dilihat", "seleksi", "wawancara"], ke: "ditarik" }, oleh: "pemilik", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/lamaran", k: "id", d: "/v1/karier/lamaran/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "KarierLamaran" }, postKarierLamaranByIdTandaiDilihat: { id: "postKarierLamaranByIdTandaiDilihat", m: "POST", path: "/v1/karier/lamaran/{id}/tandai-dilihat", tag: "Karier: Lamaran", sum: "Lamaran kerja: Status: dilihat", ds: "Pengelola modul. Status harus dikirim, menjadi dilihat.", sc: ["karier:write"], tr: { dari: ["dikirim"], ke: "dilihat" }, oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/lamaran", k: "id", d: "/v1/karier/lamaran/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "KarierLamaranTandaiDilihatInput", s: { t: "object", pr: { catatan: { t: "string" } } }, rq: 1 }, r: "object", it: "KarierLamaran" }, postKarierLamaranByIdSeleksi: { id: "postKarierLamaranByIdSeleksi", m: "POST", path: "/v1/karier/lamaran/{id}/seleksi", tag: "Karier: Lamaran", sum: "Lamaran kerja: Status: seleksi", ds: "Pengelola modul. Status harus dikirim/dilihat, menjadi seleksi.", sc: ["karier:write"], tr: { dari: ["dikirim", "dilihat"], ke: "seleksi" }, oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/lamaran", k: "id", d: "/v1/karier/lamaran/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "KarierLamaranSeleksiInput", s: { t: "object", pr: { catatan: { t: "string" } } }, rq: 1 }, r: "object", it: "KarierLamaran" }, postKarierLamaranByIdWawancara: { id: "postKarierLamaranByIdWawancara", m: "POST", path: "/v1/karier/lamaran/{id}/wawancara", tag: "Karier: Lamaran", sum: "Lamaran kerja: Status: wawancara", ds: "Pengelola modul. Status harus dikirim/dilihat/seleksi, menjadi wawancara.", sc: ["karier:write"], tr: { dari: ["dikirim", "dilihat", "seleksi"], ke: "wawancara" }, oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/lamaran", k: "id", d: "/v1/karier/lamaran/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "KarierLamaranWawancaraInput", s: { t: "object", pr: { catatan: { t: "string" } } }, rq: 1 }, r: "object", it: "KarierLamaran" }, postKarierLamaranByIdTerima: { id: "postKarierLamaranByIdTerima", m: "POST", path: "/v1/karier/lamaran/{id}/terima", tag: "Karier: Lamaran", sum: "Lamaran kerja: Status: diterima", ds: "Pengelola modul. Status harus dilihat/seleksi/wawancara, menjadi diterima.", sc: ["karier:write"], tr: { dari: ["dilihat", "seleksi", "wawancara"], ke: "diterima" }, oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/lamaran", k: "id", d: "/v1/karier/lamaran/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "KarierLamaranTerimaInput", s: { t: "object", pr: { catatan: { t: "string" } } }, rq: 1 }, r: "object", it: "KarierLamaran" }, postKarierLamaranByIdTolak: { id: "postKarierLamaranByIdTolak", m: "POST", path: "/v1/karier/lamaran/{id}/tolak", tag: "Karier: Lamaran", sum: "Lamaran kerja: Status: ditolak", ds: "Pengelola modul. Status harus dikirim/dilihat/seleksi/wawancara, menjadi ditolak.", sc: ["karier:write"], tr: { dari: ["dikirim", "dilihat", "seleksi", "wawancara"], ke: "ditolak" }, oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/lamaran", k: "id", d: "/v1/karier/lamaran/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "KarierLamaranTolakInput", s: { t: "object", pr: { catatan: { t: "string" } } }, rq: 1 }, r: "object", it: "KarierLamaran" }, getKarierAcara: { id: "getKarierAcara", m: "GET", path: "/v1/karier/acara", tag: "Karier: Acara", sum: "Acara karier: daftar", ds: "Semua pemilik token ber-scope karier:read (selain pengelola hanya melihat status terbit/selesai).", 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: "jenis", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "mitra_id", in: "query", s: { t: "string", rf: { l: "/v1/karier/mitra", k: "id", d: "/v1/karier/mitra/{id}" } }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "instansi_id", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "mode", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "sasaran", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "status", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "q", in: "query", s: { t: "string" }, ds: "Cari di judul" }, { nm: "dari", in: "query", s: { t: "string" }, ds: "Tanggal awal (YYYY-MM-DD)" }, { nm: "sampai", in: "query", s: { t: "string" }, ds: "Tanggal akhir (YYYY-MM-DD)" }, { nm: "urut", in: "query", s: { t: "string" }, ds: 'Nama kolom, awali "-" untuk menurun' }], r: "list", it: "KarierAcara" }, postKarierAcara: { id: "postKarierAcara", m: "POST", path: "/v1/karier/acara", tag: "Karier: Acara", sum: "Acara karier: tambah", ds: "Pengelola modul.", sc: ["karier:write"], oleh: "pengelola", b: { ct: "application/json", ref: "KarierAcaraInput", s: { t: "object", pr: { judul: { t: "string", max: 200 }, jenis: { t: "string", e: ["job_fair", "rekrutmen_kampus", "pelatihan", "sertifikasi", "seminar", "kunjungan_industri", "lainnya"], d: "seminar" }, mitra_id: { t: "integer", ds: "ID di kerjasama_mitra", rf: { l: "/v1/kerjasama/mitra", k: "id", d: "/v1/kerjasama/mitra/{id}" } }, instansi_id: { t: "integer", ds: "ID di tracer_instansi", rf: { l: "/v1/tracer/instansi", k: "id", d: "/v1/tracer/instansi/{id}" } }, deskripsi: { t: "string" }, mulai: { t: "string", f: "date-time" }, selesai: { t: "string", f: "date-time" }, mode: { t: "string", e: ["luring", "daring", "hibrida"], d: "luring" }, lokasi: { t: "string", max: 255 }, tautan: { t: "string", f: "uri" }, kuota: { t: "integer", min: 1, mx: 1e5 }, sasaran: { t: "string", e: ["mahasiswa", "alumni", "semua"], d: "semua" }, status: { t: "string", e: ["draf", "terbit", "selesai", "batal"], d: "draf" } }, rq: ["judul", "mulai"] }, rq: 1 }, r: "object", it: "KarierAcara" }, getKarierAcaraById: { id: "getKarierAcaraById", m: "GET", path: "/v1/karier/acara/{id}", tag: "Karier: Acara", sum: "Acara karier: detail", ds: "Semua pemilik token ber-scope karier:read (selain pengelola hanya melihat status terbit/selesai).", pub: 1, pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/acara", k: "id", d: "/v1/karier/acara/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "KarierAcara" }, putKarierAcaraById: { id: "putKarierAcaraById", m: "PUT", path: "/v1/karier/acara/{id}", tag: "Karier: Acara", sum: "Acara karier: ubah", ds: "Pengelola modul. Kolom yang tidak dikirim tidak berubah.", sc: ["karier:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/acara", k: "id", d: "/v1/karier/acara/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "KarierAcaraInput", s: { t: "object", pr: { judul: { t: "string", max: 200 }, jenis: { t: "string", e: ["job_fair", "rekrutmen_kampus", "pelatihan", "sertifikasi", "seminar", "kunjungan_industri", "lainnya"], d: "seminar" }, mitra_id: { t: "integer", ds: "ID di kerjasama_mitra", rf: { l: "/v1/kerjasama/mitra", k: "id", d: "/v1/kerjasama/mitra/{id}" } }, instansi_id: { t: "integer", ds: "ID di tracer_instansi", rf: { l: "/v1/tracer/instansi", k: "id", d: "/v1/tracer/instansi/{id}" } }, deskripsi: { t: "string" }, mulai: { t: "string", f: "date-time" }, selesai: { t: "string", f: "date-time" }, mode: { t: "string", e: ["luring", "daring", "hibrida"], d: "luring" }, lokasi: { t: "string", max: 255 }, tautan: { t: "string", f: "uri" }, kuota: { t: "integer", min: 1, mx: 1e5 }, sasaran: { t: "string", e: ["mahasiswa", "alumni", "semua"], d: "semua" }, status: { t: "string", e: ["draf", "terbit", "selesai", "batal"], d: "draf" } }, rq: ["judul", "mulai"] }, rq: 1 }, r: "object", it: "KarierAcara" }, deleteKarierAcaraById: { id: "deleteKarierAcaraById", m: "DELETE", path: "/v1/karier/acara/{id}", tag: "Karier: Acara", sum: "Acara karier: hapus", ds: "Pengelola modul.", sc: ["karier:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/acara", k: "id", d: "/v1/karier/acara/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "none" }, getKarierAcaraByIdBerkas: { id: "getKarierAcaraByIdBerkas", m: "GET", path: "/v1/karier/acara/{id}/berkas", tag: "Karier: Acara", sum: "Acara karier: daftar lampiran", ds: "Siapa pun yang boleh melihat barisnya.", pub: 1, pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/acara", k: "id", d: "/v1/karier/acara/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "list", it: "PusatBerkas" }, postKarierAcaraByIdBerkas: { id: "postKarierAcaraByIdBerkas", m: "POST", path: "/v1/karier/acara/{id}/berkas", tag: "Karier: Acara", sum: "Acara karier: 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: ["karier:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/acara", k: "id", d: "/v1/karier/acara/{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" }, getKarierAcaraByIdBerkasByUuid: { id: "getKarierAcaraByIdBerkasByUuid", m: "GET", path: "/v1/karier/acara/{id}/berkas/{uuid}", tag: "Karier: Acara", sum: "Acara karier: unduh lampiran", pub: 1, pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/acara", k: "id", d: "/v1/karier/acara/{id}" } }, rq: 1, ds: "ID angka atau UUID" }, { nm: "uuid", in: "path", s: { t: "string" }, rq: 1, ds: "UUID berkas" }], r: "object" }, deleteKarierAcaraByIdBerkasByUuid: { id: "deleteKarierAcaraByIdBerkasByUuid", m: "DELETE", path: "/v1/karier/acara/{id}/berkas/{uuid}", tag: "Karier: Acara", sum: "Acara karier: hapus lampiran", ds: "Pengelola modul.", sc: ["karier:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/acara", k: "id", d: "/v1/karier/acara/{id}" } }, rq: 1, ds: "ID angka atau UUID" }, { nm: "uuid", in: "path", s: { t: "string" }, rq: 1, ds: "UUID berkas" }], r: "none" }, getKarierPeserta: { id: "getKarierPeserta", m: "GET", path: "/v1/karier/peserta", tag: "Karier: Acara", sum: "Pendaftar acara: daftar", ds: "Mendaftar acara terbit (username otomatis), dicek kuota. Pengelola menandai `hadir` (opsional nomor sertifikat). Pengelola melihat semua; pengguna lain hanya miliknya sendiri (username).", sc: ["karier: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: "acara_id", in: "query", s: { t: "string", rf: { l: "/v1/karier/acara", k: "id", d: "/v1/karier/acara/{id}" } }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "username", in: "query", s: { t: "string", rf: { l: "pengguna", k: "username" } }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "status", 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: "KarierPeserta" }, postKarierPeserta: { id: "postKarierPeserta", m: "POST", path: "/v1/karier/peserta", tag: "Karier: Acara", sum: "Pendaftar acara: tambah", ds: "Pengelola, atau pengguna untuk datanya sendiri (username diisi otomatis).", sc: ["karier:write"], b: { ct: "application/json", ref: "KarierPesertaInput", s: { t: "object", pr: { acara_id: { t: "integer", ds: "ID di karier_acara", rf: { l: "/v1/karier/acara", k: "id", d: "/v1/karier/acara/{id}" } }, username: { t: "string", ds: "user.username", rf: { l: "pengguna", k: "username" } } }, rq: ["acara_id", "username"] }, rq: 1 }, r: "object", it: "KarierPeserta" }, getKarierPesertaById: { id: "getKarierPesertaById", m: "GET", path: "/v1/karier/peserta/{id}", tag: "Karier: Acara", sum: "Pendaftar acara: detail", ds: "Mendaftar acara terbit (username otomatis), dicek kuota. Pengelola menandai `hadir` (opsional nomor sertifikat). Pengelola melihat semua; pengguna lain hanya miliknya sendiri (username).", sc: ["karier:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/peserta", k: "id", d: "/v1/karier/peserta/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "KarierPeserta" }, deleteKarierPesertaById: { id: "deleteKarierPesertaById", m: "DELETE", path: "/v1/karier/peserta/{id}", tag: "Karier: Acara", sum: "Pendaftar acara: hapus", ds: "Pengelola, atau pengguna untuk datanya sendiri (username diisi otomatis).", sc: ["karier:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/peserta", k: "id", d: "/v1/karier/peserta/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "none" }, postKarierPesertaByIdHadir: { id: "postKarierPesertaByIdHadir", m: "POST", path: "/v1/karier/peserta/{id}/hadir", tag: "Karier: Acara", sum: "Pendaftar acara: Tandai hadir", ds: "Pengelola modul. Status harus terdaftar, menjadi hadir.", sc: ["karier:write"], tr: { dari: ["terdaftar"], ke: "hadir" }, oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/peserta", k: "id", d: "/v1/karier/peserta/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "KarierPesertaHadirInput", s: { t: "object", pr: { sertifikat_nomor: { t: "string", max: 100 } } }, rq: 1 }, r: "object", it: "KarierPeserta" }, postKarierPesertaByIdBatal: { id: "postKarierPesertaByIdBatal", m: "POST", path: "/v1/karier/peserta/{id}/batal", tag: "Karier: Acara", sum: "Pendaftar acara: Batalkan pendaftaran", ds: "Pemilik data atau pengelola. Status harus terdaftar, menjadi batal.", sc: ["karier:write"], tr: { dari: ["terdaftar"], ke: "batal" }, oleh: "pemilik_atau_pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/peserta", k: "id", d: "/v1/karier/peserta/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "KarierPeserta" }, getKarierMitra: { id: "getKarierMitra", m: "GET", path: "/v1/karier/mitra", tag: "Karier: Mitra", sum: "Perusahaan mitra: daftar", ds: "Database perusahaan mitra pusat karier. Data perusahaan (nama, alamat, bidang usaha, kontak umum) tetap di tracer_instansi (/v1/tracer/instansi); di sini status kemitraan, kategori, PIC rekrutmen, bidang dan prodi sasaran, serta tautan ke MoU (kerjasama_mitra). Detail memuat lowongan, lamaran, rekomendasi, dan interaksi terakhir. Hanya pengelola modul.", sc: ["karier: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: "instansi_id", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "kerjasama_mitra_id", in: "query", s: { t: "string", rf: { l: "/v1/kerjasama/mitra", k: "id", d: "/v1/kerjasama/mitra/{id}" } }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "status", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "kategori", 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: "KarierMitra" }, postKarierMitra: { id: "postKarierMitra", m: "POST", path: "/v1/karier/mitra", tag: "Karier: Mitra", sum: "Perusahaan mitra: tambah", ds: "Pengelola modul.", sc: ["karier:write"], oleh: "pengelola", b: { ct: "application/json", ref: "KarierMitraInput", s: { t: "object", pr: { instansi_id: { t: "integer", ds: "ID di tracer_instansi (unik)", rf: { l: "/v1/tracer/instansi", k: "id", d: "/v1/tracer/instansi/{id}" } }, kerjasama_mitra_id: { t: "integer", ds: "ID di kerjasama_mitra", rf: { l: "/v1/kerjasama/mitra", k: "id", d: "/v1/kerjasama/mitra/{id}" } }, status: { t: "string", e: ["calon", "diundang", "aktif", "nonaktif"], d: "calon" }, kategori: { t: "string", e: ["biasa", "prioritas", "strategis"], d: "biasa" }, bidang_rekrutmen: { t: "string", max: 255 }, prodi_sasaran: { t: "string", max: 255 }, pic_nama: { t: "string", max: 150 }, pic_jabatan: { t: "string", max: 100 }, pic_email: { t: "string", f: "email" }, pic_hp: { t: "string" }, terakhir_kontak: { t: "string", f: "date" }, catatan: { t: "string" } }, rq: ["instansi_id"] }, rq: 1 }, r: "object", it: "KarierMitra" }, getKarierMitraById: { id: "getKarierMitraById", m: "GET", path: "/v1/karier/mitra/{id}", tag: "Karier: Mitra", sum: "Perusahaan mitra: detail", ds: "Database perusahaan mitra pusat karier. Data perusahaan (nama, alamat, bidang usaha, kontak umum) tetap di tracer_instansi (/v1/tracer/instansi); di sini status kemitraan, kategori, PIC rekrutmen, bidang dan prodi sasaran, serta tautan ke MoU (kerjasama_mitra). Detail memuat lowongan, lamaran, rekomendasi, dan interaksi terakhir. Hanya pengelola modul.", sc: ["karier:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/mitra", k: "id", d: "/v1/karier/mitra/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "KarierMitra" }, putKarierMitraById: { id: "putKarierMitraById", m: "PUT", path: "/v1/karier/mitra/{id}", tag: "Karier: Mitra", sum: "Perusahaan mitra: ubah", ds: "Pengelola modul. Kolom yang tidak dikirim tidak berubah.", sc: ["karier:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/mitra", k: "id", d: "/v1/karier/mitra/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "KarierMitraInput", s: { t: "object", pr: { instansi_id: { t: "integer", ds: "ID di tracer_instansi (unik)", rf: { l: "/v1/tracer/instansi", k: "id", d: "/v1/tracer/instansi/{id}" } }, kerjasama_mitra_id: { t: "integer", ds: "ID di kerjasama_mitra", rf: { l: "/v1/kerjasama/mitra", k: "id", d: "/v1/kerjasama/mitra/{id}" } }, status: { t: "string", e: ["calon", "diundang", "aktif", "nonaktif"], d: "calon" }, kategori: { t: "string", e: ["biasa", "prioritas", "strategis"], d: "biasa" }, bidang_rekrutmen: { t: "string", max: 255 }, prodi_sasaran: { t: "string", max: 255 }, pic_nama: { t: "string", max: 150 }, pic_jabatan: { t: "string", max: 100 }, pic_email: { t: "string", f: "email" }, pic_hp: { t: "string" }, terakhir_kontak: { t: "string", f: "date" }, catatan: { t: "string" } }, rq: ["instansi_id"] }, rq: 1 }, r: "object", it: "KarierMitra" }, deleteKarierMitraById: { id: "deleteKarierMitraById", m: "DELETE", path: "/v1/karier/mitra/{id}", tag: "Karier: Mitra", sum: "Perusahaan mitra: hapus", ds: "Pengelola modul.", sc: ["karier:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/mitra", k: "id", d: "/v1/karier/mitra/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "none" }, postKarierMitraByIdAktifkan: { id: "postKarierMitraByIdAktifkan", m: "POST", path: "/v1/karier/mitra/{id}/aktifkan", tag: "Karier: Mitra", sum: "Perusahaan mitra: Aktifkan kemitraan", ds: "Pengelola modul. Status harus calon/diundang/nonaktif, menjadi aktif.", sc: ["karier:write"], tr: { dari: ["calon", "diundang", "nonaktif"], ke: "aktif" }, oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/mitra", k: "id", d: "/v1/karier/mitra/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "KarierMitra" }, postKarierMitraByIdNonaktifkan: { id: "postKarierMitraByIdNonaktifkan", m: "POST", path: "/v1/karier/mitra/{id}/nonaktifkan", tag: "Karier: Mitra", sum: "Perusahaan mitra: Nonaktifkan kemitraan", ds: "Pengelola modul. Status harus calon/diundang/aktif, menjadi nonaktif.", sc: ["karier:write"], tr: { dari: ["calon", "diundang", "aktif"], ke: "nonaktif" }, oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/mitra", k: "id", d: "/v1/karier/mitra/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "KarierMitra" }, getKarierInteraksi: { id: "getKarierInteraksi", m: "GET", path: "/v1/karier/interaksi", tag: "Karier: Mitra", sum: "Interaksi dengan mitra: daftar", ds: "Catatan relasi (kunjungan, rapat, email, telepon, pameran, MoU, rekrutmen, magang) beserta tindak lanjut dan tenggat. `terakhir_kontak` mitra diperbarui otomatis. Hanya pengelola modul.", sc: ["karier: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: "mitra_id", in: "query", s: { t: "string", rf: { l: "/v1/karier/mitra", k: "id", d: "/v1/karier/mitra/{id}" } }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "jenis", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "status", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "q", in: "query", s: { t: "string" }, ds: "Cari di ringkasan" }, { 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: "KarierInteraksi" }, postKarierInteraksi: { id: "postKarierInteraksi", m: "POST", path: "/v1/karier/interaksi", tag: "Karier: Mitra", sum: "Interaksi dengan mitra: tambah", ds: "Pengelola modul.", sc: ["karier:write"], oleh: "pengelola", b: { ct: "application/json", ref: "KarierInteraksiInput", s: { t: "object", pr: { mitra_id: { t: "integer", ds: "ID di karier_mitra", rf: { l: "/v1/karier/mitra", k: "id", d: "/v1/karier/mitra/{id}" } }, jenis: { t: "string", e: ["kunjungan", "rapat", "email", "telepon", "pameran", "mou", "rekrutmen", "magang", "lainnya"], d: "lainnya" }, tanggal: { t: "string", f: "date" }, ringkasan: { t: "string" }, tindak_lanjut: { t: "string" }, tenggat: { t: "string", f: "date" }, status: { t: "string", e: ["terbuka", "selesai"], d: "selesai" } }, rq: ["mitra_id", "tanggal", "ringkasan"] }, rq: 1 }, r: "object", it: "KarierInteraksi" }, getKarierInteraksiById: { id: "getKarierInteraksiById", m: "GET", path: "/v1/karier/interaksi/{id}", tag: "Karier: Mitra", sum: "Interaksi dengan mitra: detail", ds: "Catatan relasi (kunjungan, rapat, email, telepon, pameran, MoU, rekrutmen, magang) beserta tindak lanjut dan tenggat. `terakhir_kontak` mitra diperbarui otomatis. Hanya pengelola modul.", sc: ["karier:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/interaksi", k: "id", d: "/v1/karier/interaksi/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "KarierInteraksi" }, putKarierInteraksiById: { id: "putKarierInteraksiById", m: "PUT", path: "/v1/karier/interaksi/{id}", tag: "Karier: Mitra", sum: "Interaksi dengan mitra: ubah", ds: "Pengelola modul. Kolom yang tidak dikirim tidak berubah.", sc: ["karier:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/interaksi", k: "id", d: "/v1/karier/interaksi/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "KarierInteraksiInput", s: { t: "object", pr: { mitra_id: { t: "integer", ds: "ID di karier_mitra", rf: { l: "/v1/karier/mitra", k: "id", d: "/v1/karier/mitra/{id}" } }, jenis: { t: "string", e: ["kunjungan", "rapat", "email", "telepon", "pameran", "mou", "rekrutmen", "magang", "lainnya"], d: "lainnya" }, tanggal: { t: "string", f: "date" }, ringkasan: { t: "string" }, tindak_lanjut: { t: "string" }, tenggat: { t: "string", f: "date" }, status: { t: "string", e: ["terbuka", "selesai"], d: "selesai" } }, rq: ["mitra_id", "tanggal", "ringkasan"] }, rq: 1 }, r: "object", it: "KarierInteraksi" }, deleteKarierInteraksiById: { id: "deleteKarierInteraksiById", m: "DELETE", path: "/v1/karier/interaksi/{id}", tag: "Karier: Mitra", sum: "Interaksi dengan mitra: hapus", ds: "Pengelola modul.", sc: ["karier:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/interaksi", k: "id", d: "/v1/karier/interaksi/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "none" }, postKarierInteraksiByIdSelesai: { id: "postKarierInteraksiByIdSelesai", m: "POST", path: "/v1/karier/interaksi/{id}/selesai", tag: "Karier: Mitra", sum: "Interaksi dengan mitra: Tandai tindak lanjut selesai", ds: "Pengelola modul. Status harus terbuka, menjadi selesai.", sc: ["karier:write"], tr: { dari: ["terbuka"], ke: "selesai" }, oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/interaksi", k: "id", d: "/v1/karier/interaksi/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "KarierInteraksi" }, getKarierArtikel: { id: "getKarierArtikel", m: "GET", path: "/v1/karier/artikel", tag: "Karier: Tips", sum: "Tips dan artikel karier: daftar", ds: "Artikel pengembangan karier (CV dan lamaran, wawancara, dunia kerja, wirausaha, studi lanjut). Tanpa token hanya yang terbit. Isi berupa teks/Markdown; sampul lewat /berkas. Slug dibuat dari judul bila kosong; terbit_at diisi saat pertama terbit. Semua pemilik token ber-scope karier:read (selain pengelola hanya melihat status terbit).", 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: "kategori", 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: "slug", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "q", in: "query", s: { t: "string" }, ds: "Cari di judul, ringkasan, tag" }, { 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: "KarierArtikel" }, postKarierArtikel: { id: "postKarierArtikel", m: "POST", path: "/v1/karier/artikel", tag: "Karier: Tips", sum: "Tips dan artikel karier: tambah", ds: "Pengelola modul.", sc: ["karier:write"], oleh: "pengelola", b: { ct: "application/json", ref: "KarierArtikelInput", s: { t: "object", pr: { judul: { t: "string", max: 200 }, slug: { t: "string", max: 220, p: "^[A-Za-z0-9._\\-/]+$", ds: "(unik)" }, kategori: { t: "string", e: ["cv_lamaran", "wawancara", "pengembangan_diri", "dunia_kerja", "wirausaha", "studi_lanjut", "lainnya"], d: "lainnya" }, ringkasan: { t: "string", max: 500 }, isi: { t: "string" }, penulis: { t: "string", max: 150 }, tag: { t: "string", max: 255 }, status: { t: "string", e: ["draf", "terbit"], d: "draf" } }, rq: ["judul", "isi"] }, rq: 1 }, r: "object", it: "KarierArtikel" }, getKarierArtikelById: { id: "getKarierArtikelById", m: "GET", path: "/v1/karier/artikel/{id}", tag: "Karier: Tips", sum: "Tips dan artikel karier: detail", ds: "Artikel pengembangan karier (CV dan lamaran, wawancara, dunia kerja, wirausaha, studi lanjut). Tanpa token hanya yang terbit. Isi berupa teks/Markdown; sampul lewat /berkas. Slug dibuat dari judul bila kosong; terbit_at diisi saat pertama terbit. Semua pemilik token ber-scope karier:read (selain pengelola hanya melihat status terbit).", pub: 1, pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/artikel", k: "id", d: "/v1/karier/artikel/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "KarierArtikel" }, putKarierArtikelById: { id: "putKarierArtikelById", m: "PUT", path: "/v1/karier/artikel/{id}", tag: "Karier: Tips", sum: "Tips dan artikel karier: ubah", ds: "Pengelola modul. Kolom yang tidak dikirim tidak berubah.", sc: ["karier:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/artikel", k: "id", d: "/v1/karier/artikel/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "KarierArtikelInput", s: { t: "object", pr: { judul: { t: "string", max: 200 }, slug: { t: "string", max: 220, p: "^[A-Za-z0-9._\\-/]+$", ds: "(unik)" }, kategori: { t: "string", e: ["cv_lamaran", "wawancara", "pengembangan_diri", "dunia_kerja", "wirausaha", "studi_lanjut", "lainnya"], d: "lainnya" }, ringkasan: { t: "string", max: 500 }, isi: { t: "string" }, penulis: { t: "string", max: 150 }, tag: { t: "string", max: 255 }, status: { t: "string", e: ["draf", "terbit"], d: "draf" } }, rq: ["judul", "isi"] }, rq: 1 }, r: "object", it: "KarierArtikel" }, deleteKarierArtikelById: { id: "deleteKarierArtikelById", m: "DELETE", path: "/v1/karier/artikel/{id}", tag: "Karier: Tips", sum: "Tips dan artikel karier: hapus", ds: "Pengelola modul.", sc: ["karier:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/artikel", k: "id", d: "/v1/karier/artikel/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "none" }, getKarierArtikelByIdBerkas: { id: "getKarierArtikelByIdBerkas", m: "GET", path: "/v1/karier/artikel/{id}/berkas", tag: "Karier: Tips", sum: "Tips dan artikel karier: daftar lampiran", ds: "Siapa pun yang boleh melihat barisnya.", pub: 1, pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/artikel", k: "id", d: "/v1/karier/artikel/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "list", it: "PusatBerkas" }, postKarierArtikelByIdBerkas: { id: "postKarierArtikelByIdBerkas", m: "POST", path: "/v1/karier/artikel/{id}/berkas", tag: "Karier: Tips", sum: "Tips dan artikel karier: 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: ["karier:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/artikel", k: "id", d: "/v1/karier/artikel/{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" }, getKarierArtikelByIdBerkasByUuid: { id: "getKarierArtikelByIdBerkasByUuid", m: "GET", path: "/v1/karier/artikel/{id}/berkas/{uuid}", tag: "Karier: Tips", sum: "Tips dan artikel karier: unduh lampiran", pub: 1, pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/artikel", k: "id", d: "/v1/karier/artikel/{id}" } }, rq: 1, ds: "ID angka atau UUID" }, { nm: "uuid", in: "path", s: { t: "string" }, rq: 1, ds: "UUID berkas" }], r: "object" }, deleteKarierArtikelByIdBerkasByUuid: { id: "deleteKarierArtikelByIdBerkasByUuid", m: "DELETE", path: "/v1/karier/artikel/{id}/berkas/{uuid}", tag: "Karier: Tips", sum: "Tips dan artikel karier: hapus lampiran", ds: "Pengelola modul.", sc: ["karier:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/artikel", k: "id", d: "/v1/karier/artikel/{id}" } }, rq: 1, ds: "ID angka atau UUID" }, { nm: "uuid", in: "path", s: { t: "string" }, rq: 1, ds: "UUID berkas" }], r: "none" }, getKarierRekomendasi: { id: "getKarierRekomendasi", m: "GET", path: "/v1/karier/rekomendasi", tag: "Karier: Rekomendasi", sum: "Rekomendasi lulusan: daftar", ds: "Pengelola merekomendasikan mahasiswa/alumni ke lowongan atau mitra (saran kandidat: GET /v1/karier/lowongan/{id}/saran-kandidat). Hanya profil yang setuju ditampilkan ke mitra. Mahasiswa melihat rekomendasi dirinya dan mendapat notifikasi saat dikirim dan saat mitra menanggapi. Pengelola melihat semua; pengguna lain hanya miliknya sendiri (nim).", sc: ["karier: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: "lowongan_id", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "mitra_id", in: "query", s: { t: "string", rf: { l: "/v1/karier/mitra", k: "id", d: "/v1/karier/mitra/{id}" } }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "status", 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: "KarierRekomendasi" }, postKarierRekomendasi: { id: "postKarierRekomendasi", m: "POST", path: "/v1/karier/rekomendasi", tag: "Karier: Rekomendasi", sum: "Rekomendasi lulusan: tambah", ds: "Pengelola modul.", sc: ["karier:write"], oleh: "pengelola", b: { ct: "application/json", ref: "KarierRekomendasiInput", s: { t: "object", pr: { nim: { t: "string", ds: "m_mahasiswa.NIM", rf: { l: "/v1/mahasiswa", k: "nim", d: "/v1/mahasiswa/{nim}" } }, lowongan_id: { t: "integer", ds: "ID di tracer_lowongan", rf: { l: "/v1/tracer/lowongan", k: "id", d: "/v1/tracer/lowongan/{id}" } }, mitra_id: { t: "integer", ds: "ID di karier_mitra", rf: { l: "/v1/karier/mitra", k: "id", d: "/v1/karier/mitra/{id}" } }, skor: { t: "number" }, alasan: { t: "string" } }, rq: ["nim"] }, rq: 1 }, r: "object", it: "KarierRekomendasi" }, getKarierRekomendasiById: { id: "getKarierRekomendasiById", m: "GET", path: "/v1/karier/rekomendasi/{id}", tag: "Karier: Rekomendasi", sum: "Rekomendasi lulusan: detail", ds: "Pengelola merekomendasikan mahasiswa/alumni ke lowongan atau mitra (saran kandidat: GET /v1/karier/lowongan/{id}/saran-kandidat). Hanya profil yang setuju ditampilkan ke mitra. Mahasiswa melihat rekomendasi dirinya dan mendapat notifikasi saat dikirim dan saat mitra menanggapi. Pengelola melihat semua; pengguna lain hanya miliknya sendiri (nim).", sc: ["karier:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/rekomendasi", k: "id", d: "/v1/karier/rekomendasi/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "KarierRekomendasi" }, putKarierRekomendasiById: { id: "putKarierRekomendasiById", m: "PUT", path: "/v1/karier/rekomendasi/{id}", tag: "Karier: Rekomendasi", sum: "Rekomendasi lulusan: ubah", ds: "Pengelola modul. Kolom yang tidak dikirim tidak berubah.", sc: ["karier:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/rekomendasi", k: "id", d: "/v1/karier/rekomendasi/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "KarierRekomendasiInput", s: { t: "object", pr: { nim: { t: "string", ds: "m_mahasiswa.NIM", rf: { l: "/v1/mahasiswa", k: "nim", d: "/v1/mahasiswa/{nim}" } }, lowongan_id: { t: "integer", ds: "ID di tracer_lowongan", rf: { l: "/v1/tracer/lowongan", k: "id", d: "/v1/tracer/lowongan/{id}" } }, mitra_id: { t: "integer", ds: "ID di karier_mitra", rf: { l: "/v1/karier/mitra", k: "id", d: "/v1/karier/mitra/{id}" } }, skor: { t: "number" }, alasan: { t: "string" } }, rq: ["nim"] }, rq: 1 }, r: "object", it: "KarierRekomendasi" }, deleteKarierRekomendasiById: { id: "deleteKarierRekomendasiById", m: "DELETE", path: "/v1/karier/rekomendasi/{id}", tag: "Karier: Rekomendasi", sum: "Rekomendasi lulusan: hapus", ds: "Pengelola modul.", sc: ["karier:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/rekomendasi", k: "id", d: "/v1/karier/rekomendasi/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "none" }, postKarierRekomendasiByIdKirim: { id: "postKarierRekomendasiByIdKirim", m: "POST", path: "/v1/karier/rekomendasi/{id}/kirim", tag: "Karier: Rekomendasi", sum: "Rekomendasi lulusan: Status: dikirim", ds: "Pengelola modul. Status harus diusulkan, menjadi dikirim.", sc: ["karier:write"], tr: { dari: ["diusulkan"], ke: "dikirim" }, oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/rekomendasi", k: "id", d: "/v1/karier/rekomendasi/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "KarierRekomendasiKirimInput", s: { t: "object", pr: { tanggapan: { t: "string" } } }, rq: 1 }, r: "object", it: "KarierRekomendasi" }, postKarierRekomendasiByIdDiminati: { id: "postKarierRekomendasiByIdDiminati", m: "POST", path: "/v1/karier/rekomendasi/{id}/diminati", tag: "Karier: Rekomendasi", sum: "Rekomendasi lulusan: Status: diminati", ds: "Pengelola modul. Status harus dikirim, menjadi diminati.", sc: ["karier:write"], tr: { dari: ["dikirim"], ke: "diminati" }, oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/rekomendasi", k: "id", d: "/v1/karier/rekomendasi/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "KarierRekomendasiDiminatiInput", s: { t: "object", pr: { tanggapan: { t: "string" } } }, rq: 1 }, r: "object", it: "KarierRekomendasi" }, postKarierRekomendasiByIdTolak: { id: "postKarierRekomendasiByIdTolak", m: "POST", path: "/v1/karier/rekomendasi/{id}/tolak", tag: "Karier: Rekomendasi", sum: "Rekomendasi lulusan: Status: ditolak", ds: "Pengelola modul. Status harus diusulkan/dikirim/diminati, menjadi ditolak.", sc: ["karier:write"], tr: { dari: ["diusulkan", "dikirim", "diminati"], ke: "ditolak" }, oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/rekomendasi", k: "id", d: "/v1/karier/rekomendasi/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "KarierRekomendasiTolakInput", s: { t: "object", pr: { tanggapan: { t: "string" } } }, rq: 1 }, r: "object", it: "KarierRekomendasi" }, postKarierRekomendasiByIdDirekrut: { id: "postKarierRekomendasiByIdDirekrut", m: "POST", path: "/v1/karier/rekomendasi/{id}/direkrut", tag: "Karier: Rekomendasi", sum: "Rekomendasi lulusan: Status: direkrut", ds: "Pengelola modul. Status harus dikirim/diminati, menjadi direkrut.", sc: ["karier:write"], tr: { dari: ["dikirim", "diminati"], ke: "direkrut" }, oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/rekomendasi", k: "id", d: "/v1/karier/rekomendasi/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "KarierRekomendasiDirekrutInput", s: { t: "object", pr: { tanggapan: { t: "string" } } }, rq: 1 }, r: "object", it: "KarierRekomendasi" } };
|
|
6
|
+
var mandiri = ["getKarierRekap", "getKarierLowonganPantau", "getKarierLowonganByIdSaranKandidat", "postKarierUndanganMitraByIdCabut"];
|
|
7
|
+
var skema = { Objek: { t: "object", ds: "Baris data dengan nama kolom huruf kecil sesuai tabel SIAKAD." }, KarierProfil: { t: "object", ds: "Profil karier (tabel karier_profil)", pr: { id: { t: "integer" }, nim: { t: "string", ds: "m_mahasiswa.NIM (unik)" }, kode_prodi: { t: "string", ds: "m_program_studi.kode_prodi (hanya baca)", ro: 1 }, judul_profil: { t: "string", max: 150 }, ringkasan: { t: "string" }, keahlian: { t: "object" }, bahasa: { t: "object" }, minat_bidang: { t: "string", max: 255 }, lokasi_diinginkan: { t: "string", max: 255 }, status_kerja: { t: "string", e: ["mencari", "terbuka", "bekerja", "studi_lanjut", "wirausaha", "tidak_mencari"], d: "terbuka" }, linkedin: { t: "string", f: "uri" }, portofolio: { t: "string", f: "uri" }, tampil_ke_mitra: { t: "boolean", d: "0" }, 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" } } }, KarierPengalaman: { t: "object", ds: "Pengalaman (tabel karier_pengalaman)", pr: { id: { t: "integer" }, nim: { t: "string", ds: "m_mahasiswa.NIM" }, jenis: { t: "string", e: ["kerja", "magang", "organisasi", "proyek", "pelatihan", "sertifikasi", "penghargaan", "relawan", "lainnya"] }, judul: { t: "string", max: 200 }, instansi: { t: "string", max: 200 }, mulai: { t: "string", f: "date" }, selesai: { t: "string", f: "date" }, uraian: { t: "string" }, nomor_kredensial: { t: "string", max: 100 }, tautan: { t: "string", f: "uri" }, created_at: { t: "string", n: 1, f: "date-time" }, updated_at: { t: "string", n: 1, f: "date-time" } } }, KarierLamaran: { t: "object", ds: "Lamaran kerja (tabel karier_lamaran)", pr: { id: { t: "integer" }, lowongan_id: { t: "integer", ds: "ID di tracer_lowongan" }, nim: { t: "string", ds: "m_mahasiswa.NIM" }, surat_lamaran: { t: "string" }, status: { t: "string", e: ["dikirim", "dilihat", "seleksi", "wawancara", "diterima", "ditolak", "ditarik"], ds: "(hanya baca)", ro: 1 }, catatan: { t: "string", ds: "(hanya baca)", ro: 1 }, created_at: { t: "string", n: 1, f: "date-time" }, updated_at: { t: "string", n: 1, f: "date-time" } } }, KarierAcara: { t: "object", ds: "Acara karier (tabel karier_acara)", pr: { id: { t: "integer" }, judul: { t: "string", max: 200 }, jenis: { t: "string", e: ["job_fair", "rekrutmen_kampus", "pelatihan", "sertifikasi", "seminar", "kunjungan_industri", "lainnya"], d: "seminar" }, mitra_id: { t: "integer", ds: "ID di kerjasama_mitra" }, instansi_id: { t: "integer", ds: "ID di tracer_instansi" }, deskripsi: { t: "string" }, mulai: { t: "string", f: "date-time" }, selesai: { t: "string", f: "date-time" }, mode: { t: "string", e: ["luring", "daring", "hibrida"], d: "luring" }, lokasi: { t: "string", max: 255 }, tautan: { t: "string", f: "uri" }, kuota: { t: "integer", min: 1, mx: 1e5 }, sasaran: { t: "string", e: ["mahasiswa", "alumni", "semua"], d: "semua" }, status: { t: "string", e: ["draf", "terbit", "selesai", "batal"], d: "draf" }, created_at: { t: "string", n: 1, f: "date-time" }, updated_at: { t: "string", n: 1, f: "date-time" } } }, KarierPeserta: { t: "object", ds: "Pendaftar acara (tabel karier_acara_peserta)", pr: { id: { t: "integer" }, acara_id: { t: "integer", ds: "ID di karier_acara" }, username: { t: "string", ds: "user.username" }, status: { t: "string", e: ["terdaftar", "hadir", "batal"], ds: "(hanya baca)", ro: 1 }, sertifikat_nomor: { t: "string", max: 100, ds: "(hanya baca)", ro: 1 }, created_at: { t: "string", n: 1, f: "date-time" }, updated_at: { t: "string", n: 1, f: "date-time" } } }, KarierMitra: { t: "object", ds: "Perusahaan mitra (tabel karier_mitra)", pr: { id: { t: "integer" }, instansi_id: { t: "integer", ds: "ID di tracer_instansi (unik)" }, kerjasama_mitra_id: { t: "integer", ds: "ID di kerjasama_mitra" }, status: { t: "string", e: ["calon", "diundang", "aktif", "nonaktif"], d: "calon" }, kategori: { t: "string", e: ["biasa", "prioritas", "strategis"], d: "biasa" }, bidang_rekrutmen: { t: "string", max: 255 }, prodi_sasaran: { t: "string", max: 255 }, pic_nama: { t: "string", max: 150 }, pic_jabatan: { t: "string", max: 100 }, pic_email: { t: "string", f: "email" }, pic_hp: { t: "string" }, terakhir_kontak: { t: "string", f: "date" }, catatan: { t: "string" }, created_at: { t: "string", n: 1, f: "date-time" }, updated_at: { t: "string", n: 1, f: "date-time" } } }, KarierInteraksi: { t: "object", ds: "Interaksi dengan mitra (tabel karier_interaksi)", pr: { id: { t: "integer" }, mitra_id: { t: "integer", ds: "ID di karier_mitra" }, jenis: { t: "string", e: ["kunjungan", "rapat", "email", "telepon", "pameran", "mou", "rekrutmen", "magang", "lainnya"], d: "lainnya" }, tanggal: { t: "string", f: "date" }, ringkasan: { t: "string" }, tindak_lanjut: { t: "string" }, tenggat: { t: "string", f: "date" }, status: { t: "string", e: ["terbuka", "selesai"], d: "selesai" }, created_at: { t: "string", n: 1, f: "date-time" }, updated_at: { t: "string", n: 1, f: "date-time" } } }, KarierArtikel: { t: "object", ds: "Tips dan artikel karier (tabel karier_artikel)", pr: { id: { t: "integer" }, judul: { t: "string", max: 200 }, slug: { t: "string", max: 220, p: "^[A-Za-z0-9._\\-/]+$", ds: "(unik)" }, kategori: { t: "string", e: ["cv_lamaran", "wawancara", "pengembangan_diri", "dunia_kerja", "wirausaha", "studi_lanjut", "lainnya"], d: "lainnya" }, ringkasan: { t: "string", max: 500 }, isi: { t: "string" }, penulis: { t: "string", max: 150 }, tag: { t: "string", max: 255 }, status: { t: "string", e: ["draf", "terbit"], d: "draf" }, terbit_at: { t: "string", f: "date-time", ds: "(hanya baca)", ro: 1 }, dibaca: { t: "integer", min: 0, mx: 2e9, ds: "(hanya baca)", ro: 1 }, created_at: { t: "string", n: 1, f: "date-time" }, updated_at: { t: "string", n: 1, f: "date-time" } } }, KarierRekomendasi: { t: "object", ds: "Rekomendasi lulusan (tabel karier_rekomendasi)", pr: { id: { t: "integer" }, nim: { t: "string", ds: "m_mahasiswa.NIM" }, lowongan_id: { t: "integer", ds: "ID di tracer_lowongan" }, mitra_id: { t: "integer", ds: "ID di karier_mitra" }, skor: { t: "number" }, alasan: { t: "string" }, status: { t: "string", e: ["diusulkan", "dikirim", "diminati", "ditolak", "direkrut"], ds: "(hanya baca)", ro: 1 }, tanggapan: { t: "string", ds: "(hanya baca)", ro: 1 }, created_at: { t: "string", n: 1, f: "date-time" }, updated_at: { t: "string", n: 1, f: "date-time" } } } };
|
|
8
|
+
var karier_default = { key, resources, ops, mandiri, skema };
|
|
9
|
+
|
|
10
|
+
export { karier_default as default, key, mandiri, ops, resources, skema };
|
|
11
|
+
//# sourceMappingURL=karier-H3HBFCQQ.js.map
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
5
|
+
|
|
6
|
+
// src/katalog/data/modul/karier.json
|
|
7
|
+
var key = "karier";
|
|
8
|
+
var resources = [{ id: "/v1/karier/acara", tag: "Karier: Acara", title: "Acara karier", base: "/v1/karier/acara", item: "/v1/karier/acara/{id}", key: "id", list: "getKarierAcara", create: "postKarierAcara", get: "getKarierAcaraById", update: "putKarierAcaraById", del: "deleteKarierAcaraById", actions: [], children: ["/v1/karier/acara/{id}/berkas"] }, { id: "/v1/karier/acara/{id}/berkas", tag: "Karier: Acara", title: "Acara karier", base: "/v1/karier/acara/{id}/berkas", item: "/v1/karier/acara/{id}/berkas/{uuid}", key: "uuid", list: "getKarierAcaraByIdBerkas", create: "postKarierAcaraByIdBerkas", get: "getKarierAcaraByIdBerkasByUuid", del: "deleteKarierAcaraByIdBerkasByUuid", actions: [], children: [], parent: "/v1/karier/acara" }, { id: "/v1/karier/artikel", tag: "Karier: Tips", title: "Tips dan artikel karier", base: "/v1/karier/artikel", item: "/v1/karier/artikel/{id}", key: "id", list: "getKarierArtikel", create: "postKarierArtikel", get: "getKarierArtikelById", update: "putKarierArtikelById", del: "deleteKarierArtikelById", actions: [], children: ["/v1/karier/artikel/{id}/berkas"] }, { id: "/v1/karier/artikel/{id}/berkas", tag: "Karier: Tips", title: "Tips dan artikel karier", base: "/v1/karier/artikel/{id}/berkas", item: "/v1/karier/artikel/{id}/berkas/{uuid}", key: "uuid", list: "getKarierArtikelByIdBerkas", create: "postKarierArtikelByIdBerkas", get: "getKarierArtikelByIdBerkasByUuid", del: "deleteKarierArtikelByIdBerkasByUuid", actions: [], children: [], parent: "/v1/karier/artikel" }, { id: "/v1/karier/cv", tag: "Karier: Profil dan CV", title: "Profil dan CV", base: "/v1/karier/cv", item: "/v1/karier/cv/{nim}", key: "nim", get: "getKarierCvByNim", actions: [], children: [] }, { id: "/v1/karier/interaksi", tag: "Karier: Mitra", title: "Interaksi dengan mitra", base: "/v1/karier/interaksi", item: "/v1/karier/interaksi/{id}", key: "id", list: "getKarierInteraksi", create: "postKarierInteraksi", get: "getKarierInteraksiById", update: "putKarierInteraksiById", del: "deleteKarierInteraksiById", actions: ["postKarierInteraksiByIdSelesai"], children: [] }, { id: "/v1/karier/kandidat", tag: "Karier: Profil dan CV", title: "Kandidat", base: "/v1/karier/kandidat", list: "getKarierKandidat", actions: [], children: [] }, { id: "/v1/karier/lamaran", tag: "Karier: Lamaran", title: "Lamaran kerja", base: "/v1/karier/lamaran", item: "/v1/karier/lamaran/{id}", key: "id", list: "getKarierLamaran", create: "postKarierLamaran", get: "getKarierLamaranById", update: "putKarierLamaranById", del: "deleteKarierLamaranById", actions: ["postKarierLamaranByIdTarik", "postKarierLamaranByIdTandaiDilihat", "postKarierLamaranByIdSeleksi", "postKarierLamaranByIdWawancara", "postKarierLamaranByIdTerima", "postKarierLamaranByIdTolak"], children: ["/v1/karier/lamaran/{id}/berkas"] }, { id: "/v1/karier/lamaran/{id}/berkas", tag: "Karier: Lamaran", title: "Lamaran kerja", base: "/v1/karier/lamaran/{id}/berkas", item: "/v1/karier/lamaran/{id}/berkas/{uuid}", key: "uuid", list: "getKarierLamaranByIdBerkas", create: "postKarierLamaranByIdBerkas", get: "getKarierLamaranByIdBerkasByUuid", del: "deleteKarierLamaranByIdBerkasByUuid", actions: [], children: [], parent: "/v1/karier/lamaran" }, { id: "/v1/karier/mitra", tag: "Karier: Mitra", title: "Perusahaan mitra", base: "/v1/karier/mitra", item: "/v1/karier/mitra/{id}", key: "id", list: "getKarierMitra", create: "postKarierMitra", get: "getKarierMitraById", update: "putKarierMitraById", del: "deleteKarierMitraById", actions: ["postKarierMitraByIdAktifkan", "postKarierMitraByIdNonaktifkan"], children: [] }, { id: "/v1/karier/pengalaman", tag: "Karier: Profil dan CV", title: "Pengalaman", base: "/v1/karier/pengalaman", item: "/v1/karier/pengalaman/{id}", key: "id", list: "getKarierPengalaman", create: "postKarierPengalaman", get: "getKarierPengalamanById", update: "putKarierPengalamanById", del: "deleteKarierPengalamanById", actions: [], children: ["/v1/karier/pengalaman/{id}/berkas"] }, { id: "/v1/karier/pengalaman/{id}/berkas", tag: "Karier: Profil dan CV", title: "Pengalaman", base: "/v1/karier/pengalaman/{id}/berkas", item: "/v1/karier/pengalaman/{id}/berkas/{uuid}", key: "uuid", list: "getKarierPengalamanByIdBerkas", create: "postKarierPengalamanByIdBerkas", get: "getKarierPengalamanByIdBerkasByUuid", del: "deleteKarierPengalamanByIdBerkasByUuid", actions: [], children: [], parent: "/v1/karier/pengalaman" }, { id: "/v1/karier/peserta", tag: "Karier: Acara", title: "Pendaftar acara", base: "/v1/karier/peserta", item: "/v1/karier/peserta/{id}", key: "id", list: "getKarierPeserta", create: "postKarierPeserta", get: "getKarierPesertaById", del: "deleteKarierPesertaById", actions: ["postKarierPesertaByIdHadir", "postKarierPesertaByIdBatal"], children: [] }, { id: "/v1/karier/profil", tag: "Karier: Profil dan CV", title: "Profil karier", base: "/v1/karier/profil", item: "/v1/karier/profil/{id}", key: "id", list: "getKarierProfil", create: "postKarierProfil", get: "getKarierProfilById", update: "putKarierProfilById", del: "deleteKarierProfilById", actions: [], children: ["/v1/karier/profil/{id}/berkas"] }, { id: "/v1/karier/profil/{id}/berkas", tag: "Karier: Profil dan CV", title: "Profil karier", base: "/v1/karier/profil/{id}/berkas", item: "/v1/karier/profil/{id}/berkas/{uuid}", key: "uuid", list: "getKarierProfilByIdBerkas", create: "postKarierProfilByIdBerkas", get: "getKarierProfilByIdBerkasByUuid", del: "deleteKarierProfilByIdBerkasByUuid", actions: [], children: [], parent: "/v1/karier/profil" }, { id: "/v1/karier/rekomendasi", tag: "Karier: Rekomendasi", title: "Rekomendasi lulusan", base: "/v1/karier/rekomendasi", item: "/v1/karier/rekomendasi/{id}", key: "id", list: "getKarierRekomendasi", create: "postKarierRekomendasi", get: "getKarierRekomendasiById", update: "putKarierRekomendasiById", del: "deleteKarierRekomendasiById", actions: ["postKarierRekomendasiByIdKirim", "postKarierRekomendasiByIdDiminati", "postKarierRekomendasiByIdTolak", "postKarierRekomendasiByIdDirekrut"], children: [] }, { id: "/v1/karier/undangan-mitra", tag: "Karier: Mitra", title: "Undangan mitra", base: "/v1/karier/undangan-mitra", list: "getKarierUndanganMitra", create: "postKarierUndanganMitra", actions: [], children: [] }, { id: "/v1/karier/undangan-mitra/terima", tag: "Karier: Mitra", title: "Mitra", base: "/v1/karier/undangan-mitra/terima", item: "/v1/karier/undangan-mitra/terima/{token}", key: "token", get: "getKarierUndanganMitraTerimaByToken", actions: ["postKarierUndanganMitraTerimaByToken"], children: [] }];
|
|
9
|
+
var ops = { getKarierCvByNim: { id: "getKarierCvByNim", m: "GET", path: "/v1/karier/cv/{nim}", tag: "Karier: Profil dan CV", sum: "CV lengkap", ds: "Profil dan pengalaman digabung data SIAKAD: prodi, tahun masuk, tanggal lulus, IPK, prestasi terverifikasi (kemahasiswaan), kegiatan MBKM selesai, dan jabatan di ormawa. Untuk pemilik, pengelola, atau aplikasi mitra bila profil ditampilkan ke mitra.", sc: ["karier:read"], pa: [{ nm: "nim", in: "path", s: { t: "string", rf: { l: "/v1/mahasiswa", k: "nim", d: "/v1/mahasiswa/{nim}" } }, rq: 1, ds: "NIM" }], r: "object", it: "Objek" }, getKarierKandidat: { id: "getKarierKandidat", m: "GET", path: "/v1/karier/kandidat", tag: "Karier: Profil dan CV", sum: "Cari kandidat", ds: "Untuk pengelola dan aplikasi mitra: profil yang setuju ditampilkan ke mitra, beserta IPK lulusan. Maksimal 200 baris.", sc: ["karier:read"], pa: [{ nm: "keahlian", in: "query", s: { t: "string" }, ds: "Kata dalam daftar keahlian" }, { nm: "kode_prodi", in: "query", s: { t: "string", rf: { l: "/v1/referensi/prodi", k: "kode_prodi", q: 0 } }, ds: "Prodi" }, { nm: "status_kerja", in: "query", s: { t: "string" }, ds: "mencari, terbuka, ..." }, { nm: "lulusan", in: "query", s: { t: "string" }, ds: "1 = hanya yang sudah lulus" }], r: "list", it: "Objek" }, getKarierRekap: { id: "getKarierRekap", m: "GET", path: "/v1/karier/rekap", tag: "Karier: Laporan", sum: "Rekap pusat karier", ds: "Profil, lamaran per status, lowongan terbit, dan acara 12 bulan terakhir. Pengelola.", sc: ["karier:read"], r: "object", it: "Objek" }, getKarierLowonganPantau: { id: "getKarierLowonganPantau", m: "GET", path: "/v1/karier/lowongan/pantau", tag: "Karier: Laporan", sum: "Pemantauan lowongan", ds: "Ringkasan lowongan tracer (draf, terbit aktif, ditutup, lewat batas tapi masih terbit, akan tutup 14 hari, aktif tanpa pelamar), lamaran per status dan persen diterima, per tipe, per instansi beserta status mitra, tren 12 bulan, dan daftar lowongan aktif dengan jumlah pelamar/belum dilihat/rekomendasi. Pengelola.", sc: ["karier:read"], pa: [{ nm: "instansi_id", in: "query", s: { t: "string" }, ds: "Instansi" }, { nm: "kode_prodi", in: "query", s: { t: "string", rf: { l: "/v1/referensi/prodi", k: "kode_prodi", q: 0 } }, ds: "Lowongan untuk prodi ini" }], r: "object", it: "Objek" }, getKarierLowonganByIdSaranKandidat: { id: "getKarierLowonganByIdSaranKandidat", m: "GET", path: "/v1/karier/lowongan/{id}/saran-kandidat", tag: "Karier: Rekomendasi", sum: "Saran kandidat untuk lowongan", ds: "Profil yang setuju ditampilkan ke mitra, diurutkan menurut skor kecocokan (prodi, keahlian dan minat terhadap teks lowongan, IPK, lokasi, status mencari kerja) beserta alasannya; yang sudah melamar/direkomendasikan ditandai. Pengelola.", sc: ["karier:read"], pa: [{ nm: "id", in: "path", s: { t: "string" }, rq: 1, ds: "ID lowongan (tracer_lowongan)" }, { nm: "batas", in: "query", s: { t: "string" }, ds: "Jumlah kandidat (bawaan 30)" }], r: "object", it: "Objek" }, getKarierUndanganMitra: { id: "getKarierUndanganMitra", m: "GET", path: "/v1/karier/undangan-mitra", tag: "Karier: Mitra", sum: "Daftar undangan mitra", ds: "Pengelola.", sc: ["karier:read"], pa: [{ nm: "status", in: "query", s: { t: "string" }, ds: "terkirim | dibuka | diterima | ditolak | dicabut" }], r: "list", it: "Objek" }, postKarierUndanganMitra: { id: "postKarierUndanganMitra", m: "POST", path: "/v1/karier/undangan-mitra", tag: "Karier: Mitra", sum: "Undang calon mitra", ds: "Body {email, nama_instansi?, nama_kontak?, pesan?}. Membuat tautan bertoken (berlaku 30 hari, hanya tampil sekali) untuk dikirim ke perusahaan; undangan aktif lama ke email yang sama dicabut. Pengelola.", sc: ["karier:write"], b: { ct: "application/json", ref: "Objek", s: { t: "object", ds: "Baris data dengan nama kolom huruf kecil sesuai tabel SIAKAD." }, rq: 1 }, r: "object", it: "Objek" }, postKarierUndanganMitraByIdCabut: { id: "postKarierUndanganMitraByIdCabut", m: "POST", path: "/v1/karier/undangan-mitra/{id}/cabut", tag: "Karier: Mitra", sum: "Cabut undangan mitra", sc: ["karier:write"], pa: [{ nm: "id", in: "path", s: { t: "string" }, rq: 1, ds: "ID undangan" }], r: "object", it: "Objek" }, getKarierUndanganMitraTerimaByToken: { id: "getKarierUndanganMitraTerimaByToken", m: "GET", path: "/v1/karier/undangan-mitra/terima/{token}", tag: "Karier: Mitra", sum: "Lihat undangan (calon mitra, tanpa token akses)", ds: "Isi undangan dan daftar isian. Membuka tautan menandai undangan dibuka.", pub: 1, pa: [{ nm: "token", in: "path", s: { t: "string" }, rq: 1, ds: "Token undangan" }], r: "object", it: "Objek" }, postKarierUndanganMitraTerimaByToken: { id: "postKarierUndanganMitraTerimaByToken", m: "POST", path: "/v1/karier/undangan-mitra/terima/{token}", tag: "Karier: Mitra", sum: "Jawab undangan (calon mitra, tanpa token akses)", ds: "Body {setuju: true, nama, kontak_nama, bidang_usaha?, alamat?, telepon?, situs?, kontak_jabatan?, kontak_hp?, bidang_rekrutmen?} atau {setuju: false}. Diterima: perusahaan dicatat di tracer_instansi (belum terverifikasi) dan mitra berstatus calon; pengelola mendapat notifikasi lalu mengaktifkan.", pub: 1, pa: [{ nm: "token", in: "path", s: { t: "string" }, rq: 1, ds: "Token undangan" }], b: { ct: "application/json", ref: "Objek", s: { t: "object", ds: "Baris data dengan nama kolom huruf kecil sesuai tabel SIAKAD." }, rq: 1 }, r: "object", it: "Objek" }, getKarierProfil: { id: "getKarierProfil", m: "GET", path: "/v1/karier/profil", tag: "Karier: Profil dan CV", sum: "Profil karier: daftar", ds: "Satu profil per mahasiswa/alumni (nim otomatis untuk pemilik). Aplikasi mitra (token aplikasi ber-scope karier:read) hanya melihat profil yang `tampil_ke_mitra`. CV dilampirkan lewat /berkas; CV lengkap otomatis di /karier/cv/{nim}. Pengelola melihat semua; pengguna lain hanya miliknya sendiri (nim).", sc: ["karier: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: "status_kerja", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "tampil_ke_mitra", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "q", in: "query", s: { t: "string" }, ds: "Cari di nim, judul_profil, minat_bidang" }, { nm: "dari", in: "query", s: { t: "string" }, ds: "Tanggal awal (YYYY-MM-DD)" }, { nm: "sampai", in: "query", s: { t: "string" }, ds: "Tanggal akhir (YYYY-MM-DD)" }, { nm: "urut", in: "query", s: { t: "string" }, ds: 'Nama kolom, awali "-" untuk menurun' }], r: "list", it: "KarierProfil" }, postKarierProfil: { id: "postKarierProfil", m: "POST", path: "/v1/karier/profil", tag: "Karier: Profil dan CV", sum: "Profil karier: tambah", ds: "Pengelola, atau pengguna untuk datanya sendiri (nim diisi otomatis).", sc: ["karier:write"], b: { ct: "application/json", ref: "KarierProfilInput", s: { t: "object", pr: { nim: { t: "string", ds: "m_mahasiswa.NIM (unik)", rf: { l: "/v1/mahasiswa", k: "nim", d: "/v1/mahasiswa/{nim}" } }, judul_profil: { t: "string", max: 150 }, ringkasan: { t: "string" }, keahlian: { t: "object" }, bahasa: { t: "object" }, minat_bidang: { t: "string", max: 255 }, lokasi_diinginkan: { t: "string", max: 255 }, status_kerja: { t: "string", e: ["mencari", "terbuka", "bekerja", "studi_lanjut", "wirausaha", "tidak_mencari"], d: "terbuka" }, linkedin: { t: "string", f: "uri" }, portofolio: { t: "string", f: "uri" }, tampil_ke_mitra: { t: "boolean", d: "0" } }, rq: ["nim"] }, rq: 1 }, r: "object", it: "KarierProfil" }, getKarierProfilById: { id: "getKarierProfilById", m: "GET", path: "/v1/karier/profil/{id}", tag: "Karier: Profil dan CV", sum: "Profil karier: detail", ds: "Satu profil per mahasiswa/alumni (nim otomatis untuk pemilik). Aplikasi mitra (token aplikasi ber-scope karier:read) hanya melihat profil yang `tampil_ke_mitra`. CV dilampirkan lewat /berkas; CV lengkap otomatis di /karier/cv/{nim}. Pengelola melihat semua; pengguna lain hanya miliknya sendiri (nim).", sc: ["karier:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/profil", k: "id", d: "/v1/karier/profil/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "KarierProfil" }, putKarierProfilById: { id: "putKarierProfilById", m: "PUT", path: "/v1/karier/profil/{id}", tag: "Karier: Profil dan CV", sum: "Profil karier: ubah", ds: "Pengelola, atau pengguna untuk datanya sendiri (nim diisi otomatis). Kolom yang tidak dikirim tidak berubah.", sc: ["karier:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/profil", k: "id", d: "/v1/karier/profil/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "KarierProfilInput", s: { t: "object", pr: { nim: { t: "string", ds: "m_mahasiswa.NIM (unik)", rf: { l: "/v1/mahasiswa", k: "nim", d: "/v1/mahasiswa/{nim}" } }, judul_profil: { t: "string", max: 150 }, ringkasan: { t: "string" }, keahlian: { t: "object" }, bahasa: { t: "object" }, minat_bidang: { t: "string", max: 255 }, lokasi_diinginkan: { t: "string", max: 255 }, status_kerja: { t: "string", e: ["mencari", "terbuka", "bekerja", "studi_lanjut", "wirausaha", "tidak_mencari"], d: "terbuka" }, linkedin: { t: "string", f: "uri" }, portofolio: { t: "string", f: "uri" }, tampil_ke_mitra: { t: "boolean", d: "0" } }, rq: ["nim"] }, rq: 1 }, r: "object", it: "KarierProfil" }, deleteKarierProfilById: { id: "deleteKarierProfilById", m: "DELETE", path: "/v1/karier/profil/{id}", tag: "Karier: Profil dan CV", sum: "Profil karier: hapus", ds: "Pengelola, atau pengguna untuk datanya sendiri (nim diisi otomatis).", sc: ["karier:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/profil", k: "id", d: "/v1/karier/profil/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "none" }, getKarierProfilByIdBerkas: { id: "getKarierProfilByIdBerkas", m: "GET", path: "/v1/karier/profil/{id}/berkas", tag: "Karier: Profil dan CV", sum: "Profil karier: daftar lampiran", ds: "Siapa pun yang boleh melihat barisnya.", sc: ["karier:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/profil", k: "id", d: "/v1/karier/profil/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "list", it: "PusatBerkas" }, postKarierProfilByIdBerkas: { id: "postKarierProfilByIdBerkas", m: "POST", path: "/v1/karier/profil/{id}/berkas", tag: "Karier: Profil dan CV", sum: "Profil karier: unggah lampiran", ds: 'Multipart field "berkas" (atau JSON berkas_base64 + nama_file), opsional jenis dan keterangan. PDF, gambar, dokumen Office/ODF, CSV, TXT, ZIP; maksimal PUSAT_DATA_MAKS_MB (bawaan 20 MB). Pengelola, atau pengguna untuk datanya sendiri (nim diisi otomatis).', sc: ["karier:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/profil", k: "id", d: "/v1/karier/profil/{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" }, getKarierProfilByIdBerkasByUuid: { id: "getKarierProfilByIdBerkasByUuid", m: "GET", path: "/v1/karier/profil/{id}/berkas/{uuid}", tag: "Karier: Profil dan CV", sum: "Profil karier: unduh lampiran", sc: ["karier:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/profil", k: "id", d: "/v1/karier/profil/{id}" } }, rq: 1, ds: "ID angka atau UUID" }, { nm: "uuid", in: "path", s: { t: "string" }, rq: 1, ds: "UUID berkas" }], r: "object" }, deleteKarierProfilByIdBerkasByUuid: { id: "deleteKarierProfilByIdBerkasByUuid", m: "DELETE", path: "/v1/karier/profil/{id}/berkas/{uuid}", tag: "Karier: Profil dan CV", sum: "Profil karier: hapus lampiran", ds: "Pengelola, atau pengguna untuk datanya sendiri (nim diisi otomatis).", sc: ["karier:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/profil", k: "id", d: "/v1/karier/profil/{id}" } }, rq: 1, ds: "ID angka atau UUID" }, { nm: "uuid", in: "path", s: { t: "string" }, rq: 1, ds: "UUID berkas" }], r: "none" }, getKarierPengalaman: { id: "getKarierPengalaman", m: "GET", path: "/v1/karier/pengalaman", tag: "Karier: Profil dan CV", sum: "Pengalaman: daftar", ds: "Pengelola melihat semua; pengguna lain hanya miliknya sendiri (nim).", sc: ["karier: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: "jenis", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "q", in: "query", s: { t: "string" }, ds: "Cari di judul, instansi" }, { nm: "dari", in: "query", s: { t: "string" }, ds: "Tanggal awal (YYYY-MM-DD)" }, { nm: "sampai", in: "query", s: { t: "string" }, ds: "Tanggal akhir (YYYY-MM-DD)" }, { nm: "urut", in: "query", s: { t: "string" }, ds: 'Nama kolom, awali "-" untuk menurun' }], r: "list", it: "KarierPengalaman" }, postKarierPengalaman: { id: "postKarierPengalaman", m: "POST", path: "/v1/karier/pengalaman", tag: "Karier: Profil dan CV", sum: "Pengalaman: tambah", ds: "Pengelola, atau pengguna untuk datanya sendiri (nim diisi otomatis).", sc: ["karier:write"], b: { ct: "application/json", ref: "KarierPengalamanInput", s: { t: "object", pr: { nim: { t: "string", ds: "m_mahasiswa.NIM", rf: { l: "/v1/mahasiswa", k: "nim", d: "/v1/mahasiswa/{nim}" } }, jenis: { t: "string", e: ["kerja", "magang", "organisasi", "proyek", "pelatihan", "sertifikasi", "penghargaan", "relawan", "lainnya"] }, judul: { t: "string", max: 200 }, instansi: { t: "string", max: 200 }, mulai: { t: "string", f: "date" }, selesai: { t: "string", f: "date" }, uraian: { t: "string" }, nomor_kredensial: { t: "string", max: 100 }, tautan: { t: "string", f: "uri" } }, rq: ["nim", "jenis", "judul"] }, rq: 1 }, r: "object", it: "KarierPengalaman" }, getKarierPengalamanById: { id: "getKarierPengalamanById", m: "GET", path: "/v1/karier/pengalaman/{id}", tag: "Karier: Profil dan CV", sum: "Pengalaman: detail", ds: "Pengelola melihat semua; pengguna lain hanya miliknya sendiri (nim).", sc: ["karier:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/pengalaman", k: "id", d: "/v1/karier/pengalaman/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "KarierPengalaman" }, putKarierPengalamanById: { id: "putKarierPengalamanById", m: "PUT", path: "/v1/karier/pengalaman/{id}", tag: "Karier: Profil dan CV", sum: "Pengalaman: ubah", ds: "Pengelola, atau pengguna untuk datanya sendiri (nim diisi otomatis). Kolom yang tidak dikirim tidak berubah.", sc: ["karier:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/pengalaman", k: "id", d: "/v1/karier/pengalaman/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "KarierPengalamanInput", s: { t: "object", pr: { nim: { t: "string", ds: "m_mahasiswa.NIM", rf: { l: "/v1/mahasiswa", k: "nim", d: "/v1/mahasiswa/{nim}" } }, jenis: { t: "string", e: ["kerja", "magang", "organisasi", "proyek", "pelatihan", "sertifikasi", "penghargaan", "relawan", "lainnya"] }, judul: { t: "string", max: 200 }, instansi: { t: "string", max: 200 }, mulai: { t: "string", f: "date" }, selesai: { t: "string", f: "date" }, uraian: { t: "string" }, nomor_kredensial: { t: "string", max: 100 }, tautan: { t: "string", f: "uri" } }, rq: ["nim", "jenis", "judul"] }, rq: 1 }, r: "object", it: "KarierPengalaman" }, deleteKarierPengalamanById: { id: "deleteKarierPengalamanById", m: "DELETE", path: "/v1/karier/pengalaman/{id}", tag: "Karier: Profil dan CV", sum: "Pengalaman: hapus", ds: "Pengelola, atau pengguna untuk datanya sendiri (nim diisi otomatis).", sc: ["karier:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/pengalaman", k: "id", d: "/v1/karier/pengalaman/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "none" }, getKarierPengalamanByIdBerkas: { id: "getKarierPengalamanByIdBerkas", m: "GET", path: "/v1/karier/pengalaman/{id}/berkas", tag: "Karier: Profil dan CV", sum: "Pengalaman: daftar lampiran", ds: "Siapa pun yang boleh melihat barisnya.", sc: ["karier:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/pengalaman", k: "id", d: "/v1/karier/pengalaman/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "list", it: "PusatBerkas" }, postKarierPengalamanByIdBerkas: { id: "postKarierPengalamanByIdBerkas", m: "POST", path: "/v1/karier/pengalaman/{id}/berkas", tag: "Karier: Profil dan CV", sum: "Pengalaman: unggah lampiran", ds: 'Multipart field "berkas" (atau JSON berkas_base64 + nama_file), opsional jenis dan keterangan. PDF, gambar, dokumen Office/ODF, CSV, TXT, ZIP; maksimal PUSAT_DATA_MAKS_MB (bawaan 20 MB). Pengelola, atau pengguna untuk datanya sendiri (nim diisi otomatis).', sc: ["karier:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/pengalaman", k: "id", d: "/v1/karier/pengalaman/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "multipart/form-data", ref: "PusatBerkasInput", s: { t: "object", pr: { berkas: { t: "string", f: "binary" }, jenis: { t: "string", ds: "Mis. lampiran, bukti, laporan" }, keterangan: { t: "string" }, berkas_base64: { t: "string", ds: "Alternatif JSON" }, nama_file: { t: "string" } } }, rq: 1 }, r: "object", it: "PusatBerkas" }, getKarierPengalamanByIdBerkasByUuid: { id: "getKarierPengalamanByIdBerkasByUuid", m: "GET", path: "/v1/karier/pengalaman/{id}/berkas/{uuid}", tag: "Karier: Profil dan CV", sum: "Pengalaman: unduh lampiran", sc: ["karier:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/pengalaman", k: "id", d: "/v1/karier/pengalaman/{id}" } }, rq: 1, ds: "ID angka atau UUID" }, { nm: "uuid", in: "path", s: { t: "string" }, rq: 1, ds: "UUID berkas" }], r: "object" }, deleteKarierPengalamanByIdBerkasByUuid: { id: "deleteKarierPengalamanByIdBerkasByUuid", m: "DELETE", path: "/v1/karier/pengalaman/{id}/berkas/{uuid}", tag: "Karier: Profil dan CV", sum: "Pengalaman: hapus lampiran", ds: "Pengelola, atau pengguna untuk datanya sendiri (nim diisi otomatis).", sc: ["karier:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/pengalaman", k: "id", d: "/v1/karier/pengalaman/{id}" } }, rq: 1, ds: "ID angka atau UUID" }, { nm: "uuid", in: "path", s: { t: "string" }, rq: 1, ds: "UUID berkas" }], r: "none" }, getKarierLamaran: { id: "getKarierLamaran", m: "GET", path: "/v1/karier/lamaran", tag: "Karier: Lamaran", sum: "Lamaran kerja: daftar", ds: "Lamaran ke lowongan tracer (`tracer_lowongan` terbit, belum lewat batas). Pelamar wajib punya profil karier. Pengelola atau aplikasi mitra memperbarui status; pelamar mendapat notifikasi dan bisa menarik lamaran. Pengelola melihat semua; pengguna lain hanya miliknya sendiri (nim).", sc: ["karier: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: "lowongan_id", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "nim", in: "query", s: { t: "string", rf: { l: "/v1/mahasiswa", k: "nim", d: "/v1/mahasiswa/{nim}" } }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "status", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "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: "KarierLamaran" }, postKarierLamaran: { id: "postKarierLamaran", m: "POST", path: "/v1/karier/lamaran", tag: "Karier: Lamaran", sum: "Lamaran kerja: tambah", ds: "Pengelola, atau pengguna untuk datanya sendiri (nim diisi otomatis); pemilik hanya bisa mengubah/menghapus bila status dikirim.", sc: ["karier:write"], b: { ct: "application/json", ref: "KarierLamaranInput", s: { t: "object", pr: { lowongan_id: { t: "integer", ds: "ID di tracer_lowongan", rf: { l: "/v1/tracer/lowongan", k: "id", d: "/v1/tracer/lowongan/{id}" } }, nim: { t: "string", ds: "m_mahasiswa.NIM", rf: { l: "/v1/mahasiswa", k: "nim", d: "/v1/mahasiswa/{nim}" } }, surat_lamaran: { t: "string" } }, rq: ["lowongan_id", "nim"] }, rq: 1 }, r: "object", it: "KarierLamaran" }, getKarierLamaranById: { id: "getKarierLamaranById", m: "GET", path: "/v1/karier/lamaran/{id}", tag: "Karier: Lamaran", sum: "Lamaran kerja: detail", ds: "Lamaran ke lowongan tracer (`tracer_lowongan` terbit, belum lewat batas). Pelamar wajib punya profil karier. Pengelola atau aplikasi mitra memperbarui status; pelamar mendapat notifikasi dan bisa menarik lamaran. Pengelola melihat semua; pengguna lain hanya miliknya sendiri (nim).", sc: ["karier:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/lamaran", k: "id", d: "/v1/karier/lamaran/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "KarierLamaran" }, putKarierLamaranById: { id: "putKarierLamaranById", m: "PUT", path: "/v1/karier/lamaran/{id}", tag: "Karier: Lamaran", sum: "Lamaran kerja: ubah", ds: "Pengelola, atau pengguna untuk datanya sendiri (nim diisi otomatis); pemilik hanya bisa mengubah/menghapus bila status dikirim. Kolom yang tidak dikirim tidak berubah.", sc: ["karier:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/lamaran", k: "id", d: "/v1/karier/lamaran/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "KarierLamaranInput", s: { t: "object", pr: { lowongan_id: { t: "integer", ds: "ID di tracer_lowongan", rf: { l: "/v1/tracer/lowongan", k: "id", d: "/v1/tracer/lowongan/{id}" } }, nim: { t: "string", ds: "m_mahasiswa.NIM", rf: { l: "/v1/mahasiswa", k: "nim", d: "/v1/mahasiswa/{nim}" } }, surat_lamaran: { t: "string" } }, rq: ["lowongan_id", "nim"] }, rq: 1 }, r: "object", it: "KarierLamaran" }, deleteKarierLamaranById: { id: "deleteKarierLamaranById", m: "DELETE", path: "/v1/karier/lamaran/{id}", tag: "Karier: Lamaran", sum: "Lamaran kerja: hapus", ds: "Pengelola, atau pengguna untuk datanya sendiri (nim diisi otomatis); pemilik hanya bisa mengubah/menghapus bila status dikirim.", sc: ["karier:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/lamaran", k: "id", d: "/v1/karier/lamaran/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "none" }, getKarierLamaranByIdBerkas: { id: "getKarierLamaranByIdBerkas", m: "GET", path: "/v1/karier/lamaran/{id}/berkas", tag: "Karier: Lamaran", sum: "Lamaran kerja: daftar lampiran", ds: "Siapa pun yang boleh melihat barisnya.", sc: ["karier:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/lamaran", k: "id", d: "/v1/karier/lamaran/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "list", it: "PusatBerkas" }, postKarierLamaranByIdBerkas: { id: "postKarierLamaranByIdBerkas", m: "POST", path: "/v1/karier/lamaran/{id}/berkas", tag: "Karier: Lamaran", sum: "Lamaran kerja: unggah lampiran", ds: 'Multipart field "berkas" (atau JSON berkas_base64 + nama_file), opsional jenis dan keterangan. PDF, gambar, dokumen Office/ODF, CSV, TXT, ZIP; maksimal PUSAT_DATA_MAKS_MB (bawaan 20 MB). Pengelola, atau pengguna untuk datanya sendiri (nim diisi otomatis); pemilik hanya bisa mengubah/menghapus bila status dikirim.', sc: ["karier:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/lamaran", k: "id", d: "/v1/karier/lamaran/{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" }, getKarierLamaranByIdBerkasByUuid: { id: "getKarierLamaranByIdBerkasByUuid", m: "GET", path: "/v1/karier/lamaran/{id}/berkas/{uuid}", tag: "Karier: Lamaran", sum: "Lamaran kerja: unduh lampiran", sc: ["karier:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/lamaran", k: "id", d: "/v1/karier/lamaran/{id}" } }, rq: 1, ds: "ID angka atau UUID" }, { nm: "uuid", in: "path", s: { t: "string" }, rq: 1, ds: "UUID berkas" }], r: "object" }, deleteKarierLamaranByIdBerkasByUuid: { id: "deleteKarierLamaranByIdBerkasByUuid", m: "DELETE", path: "/v1/karier/lamaran/{id}/berkas/{uuid}", tag: "Karier: Lamaran", sum: "Lamaran kerja: hapus lampiran", ds: "Pengelola, atau pengguna untuk datanya sendiri (nim diisi otomatis); pemilik hanya bisa mengubah/menghapus bila status dikirim.", sc: ["karier:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/lamaran", k: "id", d: "/v1/karier/lamaran/{id}" } }, rq: 1, ds: "ID angka atau UUID" }, { nm: "uuid", in: "path", s: { t: "string" }, rq: 1, ds: "UUID berkas" }], r: "none" }, postKarierLamaranByIdTarik: { id: "postKarierLamaranByIdTarik", m: "POST", path: "/v1/karier/lamaran/{id}/tarik", tag: "Karier: Lamaran", sum: "Lamaran kerja: Tarik lamaran", ds: "Pemilik data. Status harus dikirim/dilihat/seleksi/wawancara, menjadi ditarik.", sc: ["karier:write"], tr: { dari: ["dikirim", "dilihat", "seleksi", "wawancara"], ke: "ditarik" }, oleh: "pemilik", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/lamaran", k: "id", d: "/v1/karier/lamaran/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "KarierLamaran" }, postKarierLamaranByIdTandaiDilihat: { id: "postKarierLamaranByIdTandaiDilihat", m: "POST", path: "/v1/karier/lamaran/{id}/tandai-dilihat", tag: "Karier: Lamaran", sum: "Lamaran kerja: Status: dilihat", ds: "Pengelola modul. Status harus dikirim, menjadi dilihat.", sc: ["karier:write"], tr: { dari: ["dikirim"], ke: "dilihat" }, oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/lamaran", k: "id", d: "/v1/karier/lamaran/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "KarierLamaranTandaiDilihatInput", s: { t: "object", pr: { catatan: { t: "string" } } }, rq: 1 }, r: "object", it: "KarierLamaran" }, postKarierLamaranByIdSeleksi: { id: "postKarierLamaranByIdSeleksi", m: "POST", path: "/v1/karier/lamaran/{id}/seleksi", tag: "Karier: Lamaran", sum: "Lamaran kerja: Status: seleksi", ds: "Pengelola modul. Status harus dikirim/dilihat, menjadi seleksi.", sc: ["karier:write"], tr: { dari: ["dikirim", "dilihat"], ke: "seleksi" }, oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/lamaran", k: "id", d: "/v1/karier/lamaran/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "KarierLamaranSeleksiInput", s: { t: "object", pr: { catatan: { t: "string" } } }, rq: 1 }, r: "object", it: "KarierLamaran" }, postKarierLamaranByIdWawancara: { id: "postKarierLamaranByIdWawancara", m: "POST", path: "/v1/karier/lamaran/{id}/wawancara", tag: "Karier: Lamaran", sum: "Lamaran kerja: Status: wawancara", ds: "Pengelola modul. Status harus dikirim/dilihat/seleksi, menjadi wawancara.", sc: ["karier:write"], tr: { dari: ["dikirim", "dilihat", "seleksi"], ke: "wawancara" }, oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/lamaran", k: "id", d: "/v1/karier/lamaran/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "KarierLamaranWawancaraInput", s: { t: "object", pr: { catatan: { t: "string" } } }, rq: 1 }, r: "object", it: "KarierLamaran" }, postKarierLamaranByIdTerima: { id: "postKarierLamaranByIdTerima", m: "POST", path: "/v1/karier/lamaran/{id}/terima", tag: "Karier: Lamaran", sum: "Lamaran kerja: Status: diterima", ds: "Pengelola modul. Status harus dilihat/seleksi/wawancara, menjadi diterima.", sc: ["karier:write"], tr: { dari: ["dilihat", "seleksi", "wawancara"], ke: "diterima" }, oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/lamaran", k: "id", d: "/v1/karier/lamaran/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "KarierLamaranTerimaInput", s: { t: "object", pr: { catatan: { t: "string" } } }, rq: 1 }, r: "object", it: "KarierLamaran" }, postKarierLamaranByIdTolak: { id: "postKarierLamaranByIdTolak", m: "POST", path: "/v1/karier/lamaran/{id}/tolak", tag: "Karier: Lamaran", sum: "Lamaran kerja: Status: ditolak", ds: "Pengelola modul. Status harus dikirim/dilihat/seleksi/wawancara, menjadi ditolak.", sc: ["karier:write"], tr: { dari: ["dikirim", "dilihat", "seleksi", "wawancara"], ke: "ditolak" }, oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/lamaran", k: "id", d: "/v1/karier/lamaran/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "KarierLamaranTolakInput", s: { t: "object", pr: { catatan: { t: "string" } } }, rq: 1 }, r: "object", it: "KarierLamaran" }, getKarierAcara: { id: "getKarierAcara", m: "GET", path: "/v1/karier/acara", tag: "Karier: Acara", sum: "Acara karier: daftar", ds: "Semua pemilik token ber-scope karier:read (selain pengelola hanya melihat status terbit/selesai).", 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: "jenis", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "mitra_id", in: "query", s: { t: "string", rf: { l: "/v1/karier/mitra", k: "id", d: "/v1/karier/mitra/{id}" } }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "instansi_id", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "mode", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "sasaran", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "status", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "q", in: "query", s: { t: "string" }, ds: "Cari di judul" }, { nm: "dari", in: "query", s: { t: "string" }, ds: "Tanggal awal (YYYY-MM-DD)" }, { nm: "sampai", in: "query", s: { t: "string" }, ds: "Tanggal akhir (YYYY-MM-DD)" }, { nm: "urut", in: "query", s: { t: "string" }, ds: 'Nama kolom, awali "-" untuk menurun' }], r: "list", it: "KarierAcara" }, postKarierAcara: { id: "postKarierAcara", m: "POST", path: "/v1/karier/acara", tag: "Karier: Acara", sum: "Acara karier: tambah", ds: "Pengelola modul.", sc: ["karier:write"], oleh: "pengelola", b: { ct: "application/json", ref: "KarierAcaraInput", s: { t: "object", pr: { judul: { t: "string", max: 200 }, jenis: { t: "string", e: ["job_fair", "rekrutmen_kampus", "pelatihan", "sertifikasi", "seminar", "kunjungan_industri", "lainnya"], d: "seminar" }, mitra_id: { t: "integer", ds: "ID di kerjasama_mitra", rf: { l: "/v1/kerjasama/mitra", k: "id", d: "/v1/kerjasama/mitra/{id}" } }, instansi_id: { t: "integer", ds: "ID di tracer_instansi", rf: { l: "/v1/tracer/instansi", k: "id", d: "/v1/tracer/instansi/{id}" } }, deskripsi: { t: "string" }, mulai: { t: "string", f: "date-time" }, selesai: { t: "string", f: "date-time" }, mode: { t: "string", e: ["luring", "daring", "hibrida"], d: "luring" }, lokasi: { t: "string", max: 255 }, tautan: { t: "string", f: "uri" }, kuota: { t: "integer", min: 1, mx: 1e5 }, sasaran: { t: "string", e: ["mahasiswa", "alumni", "semua"], d: "semua" }, status: { t: "string", e: ["draf", "terbit", "selesai", "batal"], d: "draf" } }, rq: ["judul", "mulai"] }, rq: 1 }, r: "object", it: "KarierAcara" }, getKarierAcaraById: { id: "getKarierAcaraById", m: "GET", path: "/v1/karier/acara/{id}", tag: "Karier: Acara", sum: "Acara karier: detail", ds: "Semua pemilik token ber-scope karier:read (selain pengelola hanya melihat status terbit/selesai).", pub: 1, pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/acara", k: "id", d: "/v1/karier/acara/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "KarierAcara" }, putKarierAcaraById: { id: "putKarierAcaraById", m: "PUT", path: "/v1/karier/acara/{id}", tag: "Karier: Acara", sum: "Acara karier: ubah", ds: "Pengelola modul. Kolom yang tidak dikirim tidak berubah.", sc: ["karier:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/acara", k: "id", d: "/v1/karier/acara/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "KarierAcaraInput", s: { t: "object", pr: { judul: { t: "string", max: 200 }, jenis: { t: "string", e: ["job_fair", "rekrutmen_kampus", "pelatihan", "sertifikasi", "seminar", "kunjungan_industri", "lainnya"], d: "seminar" }, mitra_id: { t: "integer", ds: "ID di kerjasama_mitra", rf: { l: "/v1/kerjasama/mitra", k: "id", d: "/v1/kerjasama/mitra/{id}" } }, instansi_id: { t: "integer", ds: "ID di tracer_instansi", rf: { l: "/v1/tracer/instansi", k: "id", d: "/v1/tracer/instansi/{id}" } }, deskripsi: { t: "string" }, mulai: { t: "string", f: "date-time" }, selesai: { t: "string", f: "date-time" }, mode: { t: "string", e: ["luring", "daring", "hibrida"], d: "luring" }, lokasi: { t: "string", max: 255 }, tautan: { t: "string", f: "uri" }, kuota: { t: "integer", min: 1, mx: 1e5 }, sasaran: { t: "string", e: ["mahasiswa", "alumni", "semua"], d: "semua" }, status: { t: "string", e: ["draf", "terbit", "selesai", "batal"], d: "draf" } }, rq: ["judul", "mulai"] }, rq: 1 }, r: "object", it: "KarierAcara" }, deleteKarierAcaraById: { id: "deleteKarierAcaraById", m: "DELETE", path: "/v1/karier/acara/{id}", tag: "Karier: Acara", sum: "Acara karier: hapus", ds: "Pengelola modul.", sc: ["karier:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/acara", k: "id", d: "/v1/karier/acara/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "none" }, getKarierAcaraByIdBerkas: { id: "getKarierAcaraByIdBerkas", m: "GET", path: "/v1/karier/acara/{id}/berkas", tag: "Karier: Acara", sum: "Acara karier: daftar lampiran", ds: "Siapa pun yang boleh melihat barisnya.", pub: 1, pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/acara", k: "id", d: "/v1/karier/acara/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "list", it: "PusatBerkas" }, postKarierAcaraByIdBerkas: { id: "postKarierAcaraByIdBerkas", m: "POST", path: "/v1/karier/acara/{id}/berkas", tag: "Karier: Acara", sum: "Acara karier: 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: ["karier:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/acara", k: "id", d: "/v1/karier/acara/{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" }, getKarierAcaraByIdBerkasByUuid: { id: "getKarierAcaraByIdBerkasByUuid", m: "GET", path: "/v1/karier/acara/{id}/berkas/{uuid}", tag: "Karier: Acara", sum: "Acara karier: unduh lampiran", pub: 1, pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/acara", k: "id", d: "/v1/karier/acara/{id}" } }, rq: 1, ds: "ID angka atau UUID" }, { nm: "uuid", in: "path", s: { t: "string" }, rq: 1, ds: "UUID berkas" }], r: "object" }, deleteKarierAcaraByIdBerkasByUuid: { id: "deleteKarierAcaraByIdBerkasByUuid", m: "DELETE", path: "/v1/karier/acara/{id}/berkas/{uuid}", tag: "Karier: Acara", sum: "Acara karier: hapus lampiran", ds: "Pengelola modul.", sc: ["karier:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/acara", k: "id", d: "/v1/karier/acara/{id}" } }, rq: 1, ds: "ID angka atau UUID" }, { nm: "uuid", in: "path", s: { t: "string" }, rq: 1, ds: "UUID berkas" }], r: "none" }, getKarierPeserta: { id: "getKarierPeserta", m: "GET", path: "/v1/karier/peserta", tag: "Karier: Acara", sum: "Pendaftar acara: daftar", ds: "Mendaftar acara terbit (username otomatis), dicek kuota. Pengelola menandai `hadir` (opsional nomor sertifikat). Pengelola melihat semua; pengguna lain hanya miliknya sendiri (username).", sc: ["karier: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: "acara_id", in: "query", s: { t: "string", rf: { l: "/v1/karier/acara", k: "id", d: "/v1/karier/acara/{id}" } }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "username", in: "query", s: { t: "string", rf: { l: "pengguna", k: "username" } }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "status", 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: "KarierPeserta" }, postKarierPeserta: { id: "postKarierPeserta", m: "POST", path: "/v1/karier/peserta", tag: "Karier: Acara", sum: "Pendaftar acara: tambah", ds: "Pengelola, atau pengguna untuk datanya sendiri (username diisi otomatis).", sc: ["karier:write"], b: { ct: "application/json", ref: "KarierPesertaInput", s: { t: "object", pr: { acara_id: { t: "integer", ds: "ID di karier_acara", rf: { l: "/v1/karier/acara", k: "id", d: "/v1/karier/acara/{id}" } }, username: { t: "string", ds: "user.username", rf: { l: "pengguna", k: "username" } } }, rq: ["acara_id", "username"] }, rq: 1 }, r: "object", it: "KarierPeserta" }, getKarierPesertaById: { id: "getKarierPesertaById", m: "GET", path: "/v1/karier/peserta/{id}", tag: "Karier: Acara", sum: "Pendaftar acara: detail", ds: "Mendaftar acara terbit (username otomatis), dicek kuota. Pengelola menandai `hadir` (opsional nomor sertifikat). Pengelola melihat semua; pengguna lain hanya miliknya sendiri (username).", sc: ["karier:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/peserta", k: "id", d: "/v1/karier/peserta/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "KarierPeserta" }, deleteKarierPesertaById: { id: "deleteKarierPesertaById", m: "DELETE", path: "/v1/karier/peserta/{id}", tag: "Karier: Acara", sum: "Pendaftar acara: hapus", ds: "Pengelola, atau pengguna untuk datanya sendiri (username diisi otomatis).", sc: ["karier:write"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/peserta", k: "id", d: "/v1/karier/peserta/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "none" }, postKarierPesertaByIdHadir: { id: "postKarierPesertaByIdHadir", m: "POST", path: "/v1/karier/peserta/{id}/hadir", tag: "Karier: Acara", sum: "Pendaftar acara: Tandai hadir", ds: "Pengelola modul. Status harus terdaftar, menjadi hadir.", sc: ["karier:write"], tr: { dari: ["terdaftar"], ke: "hadir" }, oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/peserta", k: "id", d: "/v1/karier/peserta/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "KarierPesertaHadirInput", s: { t: "object", pr: { sertifikat_nomor: { t: "string", max: 100 } } }, rq: 1 }, r: "object", it: "KarierPeserta" }, postKarierPesertaByIdBatal: { id: "postKarierPesertaByIdBatal", m: "POST", path: "/v1/karier/peserta/{id}/batal", tag: "Karier: Acara", sum: "Pendaftar acara: Batalkan pendaftaran", ds: "Pemilik data atau pengelola. Status harus terdaftar, menjadi batal.", sc: ["karier:write"], tr: { dari: ["terdaftar"], ke: "batal" }, oleh: "pemilik_atau_pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/peserta", k: "id", d: "/v1/karier/peserta/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "KarierPeserta" }, getKarierMitra: { id: "getKarierMitra", m: "GET", path: "/v1/karier/mitra", tag: "Karier: Mitra", sum: "Perusahaan mitra: daftar", ds: "Database perusahaan mitra pusat karier. Data perusahaan (nama, alamat, bidang usaha, kontak umum) tetap di tracer_instansi (/v1/tracer/instansi); di sini status kemitraan, kategori, PIC rekrutmen, bidang dan prodi sasaran, serta tautan ke MoU (kerjasama_mitra). Detail memuat lowongan, lamaran, rekomendasi, dan interaksi terakhir. Hanya pengelola modul.", sc: ["karier: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: "instansi_id", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "kerjasama_mitra_id", in: "query", s: { t: "string", rf: { l: "/v1/kerjasama/mitra", k: "id", d: "/v1/kerjasama/mitra/{id}" } }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "status", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "kategori", 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: "KarierMitra" }, postKarierMitra: { id: "postKarierMitra", m: "POST", path: "/v1/karier/mitra", tag: "Karier: Mitra", sum: "Perusahaan mitra: tambah", ds: "Pengelola modul.", sc: ["karier:write"], oleh: "pengelola", b: { ct: "application/json", ref: "KarierMitraInput", s: { t: "object", pr: { instansi_id: { t: "integer", ds: "ID di tracer_instansi (unik)", rf: { l: "/v1/tracer/instansi", k: "id", d: "/v1/tracer/instansi/{id}" } }, kerjasama_mitra_id: { t: "integer", ds: "ID di kerjasama_mitra", rf: { l: "/v1/kerjasama/mitra", k: "id", d: "/v1/kerjasama/mitra/{id}" } }, status: { t: "string", e: ["calon", "diundang", "aktif", "nonaktif"], d: "calon" }, kategori: { t: "string", e: ["biasa", "prioritas", "strategis"], d: "biasa" }, bidang_rekrutmen: { t: "string", max: 255 }, prodi_sasaran: { t: "string", max: 255 }, pic_nama: { t: "string", max: 150 }, pic_jabatan: { t: "string", max: 100 }, pic_email: { t: "string", f: "email" }, pic_hp: { t: "string" }, terakhir_kontak: { t: "string", f: "date" }, catatan: { t: "string" } }, rq: ["instansi_id"] }, rq: 1 }, r: "object", it: "KarierMitra" }, getKarierMitraById: { id: "getKarierMitraById", m: "GET", path: "/v1/karier/mitra/{id}", tag: "Karier: Mitra", sum: "Perusahaan mitra: detail", ds: "Database perusahaan mitra pusat karier. Data perusahaan (nama, alamat, bidang usaha, kontak umum) tetap di tracer_instansi (/v1/tracer/instansi); di sini status kemitraan, kategori, PIC rekrutmen, bidang dan prodi sasaran, serta tautan ke MoU (kerjasama_mitra). Detail memuat lowongan, lamaran, rekomendasi, dan interaksi terakhir. Hanya pengelola modul.", sc: ["karier:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/mitra", k: "id", d: "/v1/karier/mitra/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "KarierMitra" }, putKarierMitraById: { id: "putKarierMitraById", m: "PUT", path: "/v1/karier/mitra/{id}", tag: "Karier: Mitra", sum: "Perusahaan mitra: ubah", ds: "Pengelola modul. Kolom yang tidak dikirim tidak berubah.", sc: ["karier:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/mitra", k: "id", d: "/v1/karier/mitra/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "KarierMitraInput", s: { t: "object", pr: { instansi_id: { t: "integer", ds: "ID di tracer_instansi (unik)", rf: { l: "/v1/tracer/instansi", k: "id", d: "/v1/tracer/instansi/{id}" } }, kerjasama_mitra_id: { t: "integer", ds: "ID di kerjasama_mitra", rf: { l: "/v1/kerjasama/mitra", k: "id", d: "/v1/kerjasama/mitra/{id}" } }, status: { t: "string", e: ["calon", "diundang", "aktif", "nonaktif"], d: "calon" }, kategori: { t: "string", e: ["biasa", "prioritas", "strategis"], d: "biasa" }, bidang_rekrutmen: { t: "string", max: 255 }, prodi_sasaran: { t: "string", max: 255 }, pic_nama: { t: "string", max: 150 }, pic_jabatan: { t: "string", max: 100 }, pic_email: { t: "string", f: "email" }, pic_hp: { t: "string" }, terakhir_kontak: { t: "string", f: "date" }, catatan: { t: "string" } }, rq: ["instansi_id"] }, rq: 1 }, r: "object", it: "KarierMitra" }, deleteKarierMitraById: { id: "deleteKarierMitraById", m: "DELETE", path: "/v1/karier/mitra/{id}", tag: "Karier: Mitra", sum: "Perusahaan mitra: hapus", ds: "Pengelola modul.", sc: ["karier:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/mitra", k: "id", d: "/v1/karier/mitra/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "none" }, postKarierMitraByIdAktifkan: { id: "postKarierMitraByIdAktifkan", m: "POST", path: "/v1/karier/mitra/{id}/aktifkan", tag: "Karier: Mitra", sum: "Perusahaan mitra: Aktifkan kemitraan", ds: "Pengelola modul. Status harus calon/diundang/nonaktif, menjadi aktif.", sc: ["karier:write"], tr: { dari: ["calon", "diundang", "nonaktif"], ke: "aktif" }, oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/mitra", k: "id", d: "/v1/karier/mitra/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "KarierMitra" }, postKarierMitraByIdNonaktifkan: { id: "postKarierMitraByIdNonaktifkan", m: "POST", path: "/v1/karier/mitra/{id}/nonaktifkan", tag: "Karier: Mitra", sum: "Perusahaan mitra: Nonaktifkan kemitraan", ds: "Pengelola modul. Status harus calon/diundang/aktif, menjadi nonaktif.", sc: ["karier:write"], tr: { dari: ["calon", "diundang", "aktif"], ke: "nonaktif" }, oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/mitra", k: "id", d: "/v1/karier/mitra/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "KarierMitra" }, getKarierInteraksi: { id: "getKarierInteraksi", m: "GET", path: "/v1/karier/interaksi", tag: "Karier: Mitra", sum: "Interaksi dengan mitra: daftar", ds: "Catatan relasi (kunjungan, rapat, email, telepon, pameran, MoU, rekrutmen, magang) beserta tindak lanjut dan tenggat. `terakhir_kontak` mitra diperbarui otomatis. Hanya pengelola modul.", sc: ["karier: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: "mitra_id", in: "query", s: { t: "string", rf: { l: "/v1/karier/mitra", k: "id", d: "/v1/karier/mitra/{id}" } }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "jenis", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "status", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "q", in: "query", s: { t: "string" }, ds: "Cari di ringkasan" }, { 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: "KarierInteraksi" }, postKarierInteraksi: { id: "postKarierInteraksi", m: "POST", path: "/v1/karier/interaksi", tag: "Karier: Mitra", sum: "Interaksi dengan mitra: tambah", ds: "Pengelola modul.", sc: ["karier:write"], oleh: "pengelola", b: { ct: "application/json", ref: "KarierInteraksiInput", s: { t: "object", pr: { mitra_id: { t: "integer", ds: "ID di karier_mitra", rf: { l: "/v1/karier/mitra", k: "id", d: "/v1/karier/mitra/{id}" } }, jenis: { t: "string", e: ["kunjungan", "rapat", "email", "telepon", "pameran", "mou", "rekrutmen", "magang", "lainnya"], d: "lainnya" }, tanggal: { t: "string", f: "date" }, ringkasan: { t: "string" }, tindak_lanjut: { t: "string" }, tenggat: { t: "string", f: "date" }, status: { t: "string", e: ["terbuka", "selesai"], d: "selesai" } }, rq: ["mitra_id", "tanggal", "ringkasan"] }, rq: 1 }, r: "object", it: "KarierInteraksi" }, getKarierInteraksiById: { id: "getKarierInteraksiById", m: "GET", path: "/v1/karier/interaksi/{id}", tag: "Karier: Mitra", sum: "Interaksi dengan mitra: detail", ds: "Catatan relasi (kunjungan, rapat, email, telepon, pameran, MoU, rekrutmen, magang) beserta tindak lanjut dan tenggat. `terakhir_kontak` mitra diperbarui otomatis. Hanya pengelola modul.", sc: ["karier:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/interaksi", k: "id", d: "/v1/karier/interaksi/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "KarierInteraksi" }, putKarierInteraksiById: { id: "putKarierInteraksiById", m: "PUT", path: "/v1/karier/interaksi/{id}", tag: "Karier: Mitra", sum: "Interaksi dengan mitra: ubah", ds: "Pengelola modul. Kolom yang tidak dikirim tidak berubah.", sc: ["karier:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/interaksi", k: "id", d: "/v1/karier/interaksi/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "KarierInteraksiInput", s: { t: "object", pr: { mitra_id: { t: "integer", ds: "ID di karier_mitra", rf: { l: "/v1/karier/mitra", k: "id", d: "/v1/karier/mitra/{id}" } }, jenis: { t: "string", e: ["kunjungan", "rapat", "email", "telepon", "pameran", "mou", "rekrutmen", "magang", "lainnya"], d: "lainnya" }, tanggal: { t: "string", f: "date" }, ringkasan: { t: "string" }, tindak_lanjut: { t: "string" }, tenggat: { t: "string", f: "date" }, status: { t: "string", e: ["terbuka", "selesai"], d: "selesai" } }, rq: ["mitra_id", "tanggal", "ringkasan"] }, rq: 1 }, r: "object", it: "KarierInteraksi" }, deleteKarierInteraksiById: { id: "deleteKarierInteraksiById", m: "DELETE", path: "/v1/karier/interaksi/{id}", tag: "Karier: Mitra", sum: "Interaksi dengan mitra: hapus", ds: "Pengelola modul.", sc: ["karier:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/interaksi", k: "id", d: "/v1/karier/interaksi/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "none" }, postKarierInteraksiByIdSelesai: { id: "postKarierInteraksiByIdSelesai", m: "POST", path: "/v1/karier/interaksi/{id}/selesai", tag: "Karier: Mitra", sum: "Interaksi dengan mitra: Tandai tindak lanjut selesai", ds: "Pengelola modul. Status harus terbuka, menjadi selesai.", sc: ["karier:write"], tr: { dari: ["terbuka"], ke: "selesai" }, oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/interaksi", k: "id", d: "/v1/karier/interaksi/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "KarierInteraksi" }, getKarierArtikel: { id: "getKarierArtikel", m: "GET", path: "/v1/karier/artikel", tag: "Karier: Tips", sum: "Tips dan artikel karier: daftar", ds: "Artikel pengembangan karier (CV dan lamaran, wawancara, dunia kerja, wirausaha, studi lanjut). Tanpa token hanya yang terbit. Isi berupa teks/Markdown; sampul lewat /berkas. Slug dibuat dari judul bila kosong; terbit_at diisi saat pertama terbit. Semua pemilik token ber-scope karier:read (selain pengelola hanya melihat status terbit).", 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: "kategori", 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: "slug", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "q", in: "query", s: { t: "string" }, ds: "Cari di judul, ringkasan, tag" }, { 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: "KarierArtikel" }, postKarierArtikel: { id: "postKarierArtikel", m: "POST", path: "/v1/karier/artikel", tag: "Karier: Tips", sum: "Tips dan artikel karier: tambah", ds: "Pengelola modul.", sc: ["karier:write"], oleh: "pengelola", b: { ct: "application/json", ref: "KarierArtikelInput", s: { t: "object", pr: { judul: { t: "string", max: 200 }, slug: { t: "string", max: 220, p: "^[A-Za-z0-9._\\-/]+$", ds: "(unik)" }, kategori: { t: "string", e: ["cv_lamaran", "wawancara", "pengembangan_diri", "dunia_kerja", "wirausaha", "studi_lanjut", "lainnya"], d: "lainnya" }, ringkasan: { t: "string", max: 500 }, isi: { t: "string" }, penulis: { t: "string", max: 150 }, tag: { t: "string", max: 255 }, status: { t: "string", e: ["draf", "terbit"], d: "draf" } }, rq: ["judul", "isi"] }, rq: 1 }, r: "object", it: "KarierArtikel" }, getKarierArtikelById: { id: "getKarierArtikelById", m: "GET", path: "/v1/karier/artikel/{id}", tag: "Karier: Tips", sum: "Tips dan artikel karier: detail", ds: "Artikel pengembangan karier (CV dan lamaran, wawancara, dunia kerja, wirausaha, studi lanjut). Tanpa token hanya yang terbit. Isi berupa teks/Markdown; sampul lewat /berkas. Slug dibuat dari judul bila kosong; terbit_at diisi saat pertama terbit. Semua pemilik token ber-scope karier:read (selain pengelola hanya melihat status terbit).", pub: 1, pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/artikel", k: "id", d: "/v1/karier/artikel/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "KarierArtikel" }, putKarierArtikelById: { id: "putKarierArtikelById", m: "PUT", path: "/v1/karier/artikel/{id}", tag: "Karier: Tips", sum: "Tips dan artikel karier: ubah", ds: "Pengelola modul. Kolom yang tidak dikirim tidak berubah.", sc: ["karier:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/artikel", k: "id", d: "/v1/karier/artikel/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "KarierArtikelInput", s: { t: "object", pr: { judul: { t: "string", max: 200 }, slug: { t: "string", max: 220, p: "^[A-Za-z0-9._\\-/]+$", ds: "(unik)" }, kategori: { t: "string", e: ["cv_lamaran", "wawancara", "pengembangan_diri", "dunia_kerja", "wirausaha", "studi_lanjut", "lainnya"], d: "lainnya" }, ringkasan: { t: "string", max: 500 }, isi: { t: "string" }, penulis: { t: "string", max: 150 }, tag: { t: "string", max: 255 }, status: { t: "string", e: ["draf", "terbit"], d: "draf" } }, rq: ["judul", "isi"] }, rq: 1 }, r: "object", it: "KarierArtikel" }, deleteKarierArtikelById: { id: "deleteKarierArtikelById", m: "DELETE", path: "/v1/karier/artikel/{id}", tag: "Karier: Tips", sum: "Tips dan artikel karier: hapus", ds: "Pengelola modul.", sc: ["karier:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/artikel", k: "id", d: "/v1/karier/artikel/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "none" }, getKarierArtikelByIdBerkas: { id: "getKarierArtikelByIdBerkas", m: "GET", path: "/v1/karier/artikel/{id}/berkas", tag: "Karier: Tips", sum: "Tips dan artikel karier: daftar lampiran", ds: "Siapa pun yang boleh melihat barisnya.", pub: 1, pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/artikel", k: "id", d: "/v1/karier/artikel/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "list", it: "PusatBerkas" }, postKarierArtikelByIdBerkas: { id: "postKarierArtikelByIdBerkas", m: "POST", path: "/v1/karier/artikel/{id}/berkas", tag: "Karier: Tips", sum: "Tips dan artikel karier: 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: ["karier:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/artikel", k: "id", d: "/v1/karier/artikel/{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" }, getKarierArtikelByIdBerkasByUuid: { id: "getKarierArtikelByIdBerkasByUuid", m: "GET", path: "/v1/karier/artikel/{id}/berkas/{uuid}", tag: "Karier: Tips", sum: "Tips dan artikel karier: unduh lampiran", pub: 1, pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/artikel", k: "id", d: "/v1/karier/artikel/{id}" } }, rq: 1, ds: "ID angka atau UUID" }, { nm: "uuid", in: "path", s: { t: "string" }, rq: 1, ds: "UUID berkas" }], r: "object" }, deleteKarierArtikelByIdBerkasByUuid: { id: "deleteKarierArtikelByIdBerkasByUuid", m: "DELETE", path: "/v1/karier/artikel/{id}/berkas/{uuid}", tag: "Karier: Tips", sum: "Tips dan artikel karier: hapus lampiran", ds: "Pengelola modul.", sc: ["karier:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/artikel", k: "id", d: "/v1/karier/artikel/{id}" } }, rq: 1, ds: "ID angka atau UUID" }, { nm: "uuid", in: "path", s: { t: "string" }, rq: 1, ds: "UUID berkas" }], r: "none" }, getKarierRekomendasi: { id: "getKarierRekomendasi", m: "GET", path: "/v1/karier/rekomendasi", tag: "Karier: Rekomendasi", sum: "Rekomendasi lulusan: daftar", ds: "Pengelola merekomendasikan mahasiswa/alumni ke lowongan atau mitra (saran kandidat: GET /v1/karier/lowongan/{id}/saran-kandidat). Hanya profil yang setuju ditampilkan ke mitra. Mahasiswa melihat rekomendasi dirinya dan mendapat notifikasi saat dikirim dan saat mitra menanggapi. Pengelola melihat semua; pengguna lain hanya miliknya sendiri (nim).", sc: ["karier: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: "lowongan_id", in: "query", s: { t: "string" }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "mitra_id", in: "query", s: { t: "string", rf: { l: "/v1/karier/mitra", k: "id", d: "/v1/karier/mitra/{id}" } }, ds: 'Filter kesamaan (isi "null" untuk kosong)' }, { nm: "status", 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: "KarierRekomendasi" }, postKarierRekomendasi: { id: "postKarierRekomendasi", m: "POST", path: "/v1/karier/rekomendasi", tag: "Karier: Rekomendasi", sum: "Rekomendasi lulusan: tambah", ds: "Pengelola modul.", sc: ["karier:write"], oleh: "pengelola", b: { ct: "application/json", ref: "KarierRekomendasiInput", s: { t: "object", pr: { nim: { t: "string", ds: "m_mahasiswa.NIM", rf: { l: "/v1/mahasiswa", k: "nim", d: "/v1/mahasiswa/{nim}" } }, lowongan_id: { t: "integer", ds: "ID di tracer_lowongan", rf: { l: "/v1/tracer/lowongan", k: "id", d: "/v1/tracer/lowongan/{id}" } }, mitra_id: { t: "integer", ds: "ID di karier_mitra", rf: { l: "/v1/karier/mitra", k: "id", d: "/v1/karier/mitra/{id}" } }, skor: { t: "number" }, alasan: { t: "string" } }, rq: ["nim"] }, rq: 1 }, r: "object", it: "KarierRekomendasi" }, getKarierRekomendasiById: { id: "getKarierRekomendasiById", m: "GET", path: "/v1/karier/rekomendasi/{id}", tag: "Karier: Rekomendasi", sum: "Rekomendasi lulusan: detail", ds: "Pengelola merekomendasikan mahasiswa/alumni ke lowongan atau mitra (saran kandidat: GET /v1/karier/lowongan/{id}/saran-kandidat). Hanya profil yang setuju ditampilkan ke mitra. Mahasiswa melihat rekomendasi dirinya dan mendapat notifikasi saat dikirim dan saat mitra menanggapi. Pengelola melihat semua; pengguna lain hanya miliknya sendiri (nim).", sc: ["karier:read"], pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/rekomendasi", k: "id", d: "/v1/karier/rekomendasi/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "object", it: "KarierRekomendasi" }, putKarierRekomendasiById: { id: "putKarierRekomendasiById", m: "PUT", path: "/v1/karier/rekomendasi/{id}", tag: "Karier: Rekomendasi", sum: "Rekomendasi lulusan: ubah", ds: "Pengelola modul. Kolom yang tidak dikirim tidak berubah.", sc: ["karier:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/rekomendasi", k: "id", d: "/v1/karier/rekomendasi/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "KarierRekomendasiInput", s: { t: "object", pr: { nim: { t: "string", ds: "m_mahasiswa.NIM", rf: { l: "/v1/mahasiswa", k: "nim", d: "/v1/mahasiswa/{nim}" } }, lowongan_id: { t: "integer", ds: "ID di tracer_lowongan", rf: { l: "/v1/tracer/lowongan", k: "id", d: "/v1/tracer/lowongan/{id}" } }, mitra_id: { t: "integer", ds: "ID di karier_mitra", rf: { l: "/v1/karier/mitra", k: "id", d: "/v1/karier/mitra/{id}" } }, skor: { t: "number" }, alasan: { t: "string" } }, rq: ["nim"] }, rq: 1 }, r: "object", it: "KarierRekomendasi" }, deleteKarierRekomendasiById: { id: "deleteKarierRekomendasiById", m: "DELETE", path: "/v1/karier/rekomendasi/{id}", tag: "Karier: Rekomendasi", sum: "Rekomendasi lulusan: hapus", ds: "Pengelola modul.", sc: ["karier:write"], oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/rekomendasi", k: "id", d: "/v1/karier/rekomendasi/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], r: "none" }, postKarierRekomendasiByIdKirim: { id: "postKarierRekomendasiByIdKirim", m: "POST", path: "/v1/karier/rekomendasi/{id}/kirim", tag: "Karier: Rekomendasi", sum: "Rekomendasi lulusan: Status: dikirim", ds: "Pengelola modul. Status harus diusulkan, menjadi dikirim.", sc: ["karier:write"], tr: { dari: ["diusulkan"], ke: "dikirim" }, oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/rekomendasi", k: "id", d: "/v1/karier/rekomendasi/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "KarierRekomendasiKirimInput", s: { t: "object", pr: { tanggapan: { t: "string" } } }, rq: 1 }, r: "object", it: "KarierRekomendasi" }, postKarierRekomendasiByIdDiminati: { id: "postKarierRekomendasiByIdDiminati", m: "POST", path: "/v1/karier/rekomendasi/{id}/diminati", tag: "Karier: Rekomendasi", sum: "Rekomendasi lulusan: Status: diminati", ds: "Pengelola modul. Status harus dikirim, menjadi diminati.", sc: ["karier:write"], tr: { dari: ["dikirim"], ke: "diminati" }, oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/rekomendasi", k: "id", d: "/v1/karier/rekomendasi/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "KarierRekomendasiDiminatiInput", s: { t: "object", pr: { tanggapan: { t: "string" } } }, rq: 1 }, r: "object", it: "KarierRekomendasi" }, postKarierRekomendasiByIdTolak: { id: "postKarierRekomendasiByIdTolak", m: "POST", path: "/v1/karier/rekomendasi/{id}/tolak", tag: "Karier: Rekomendasi", sum: "Rekomendasi lulusan: Status: ditolak", ds: "Pengelola modul. Status harus diusulkan/dikirim/diminati, menjadi ditolak.", sc: ["karier:write"], tr: { dari: ["diusulkan", "dikirim", "diminati"], ke: "ditolak" }, oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/rekomendasi", k: "id", d: "/v1/karier/rekomendasi/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "KarierRekomendasiTolakInput", s: { t: "object", pr: { tanggapan: { t: "string" } } }, rq: 1 }, r: "object", it: "KarierRekomendasi" }, postKarierRekomendasiByIdDirekrut: { id: "postKarierRekomendasiByIdDirekrut", m: "POST", path: "/v1/karier/rekomendasi/{id}/direkrut", tag: "Karier: Rekomendasi", sum: "Rekomendasi lulusan: Status: direkrut", ds: "Pengelola modul. Status harus dikirim/diminati, menjadi direkrut.", sc: ["karier:write"], tr: { dari: ["dikirim", "diminati"], ke: "direkrut" }, oleh: "pengelola", pa: [{ nm: "id", in: "path", s: { t: "string", rf: { l: "/v1/karier/rekomendasi", k: "id", d: "/v1/karier/rekomendasi/{id}" } }, rq: 1, ds: "ID angka atau UUID" }], b: { ct: "application/json", ref: "KarierRekomendasiDirekrutInput", s: { t: "object", pr: { tanggapan: { t: "string" } } }, rq: 1 }, r: "object", it: "KarierRekomendasi" } };
|
|
10
|
+
var mandiri = ["getKarierRekap", "getKarierLowonganPantau", "getKarierLowonganByIdSaranKandidat", "postKarierUndanganMitraByIdCabut"];
|
|
11
|
+
var skema = { Objek: { t: "object", ds: "Baris data dengan nama kolom huruf kecil sesuai tabel SIAKAD." }, KarierProfil: { t: "object", ds: "Profil karier (tabel karier_profil)", pr: { id: { t: "integer" }, nim: { t: "string", ds: "m_mahasiswa.NIM (unik)" }, kode_prodi: { t: "string", ds: "m_program_studi.kode_prodi (hanya baca)", ro: 1 }, judul_profil: { t: "string", max: 150 }, ringkasan: { t: "string" }, keahlian: { t: "object" }, bahasa: { t: "object" }, minat_bidang: { t: "string", max: 255 }, lokasi_diinginkan: { t: "string", max: 255 }, status_kerja: { t: "string", e: ["mencari", "terbuka", "bekerja", "studi_lanjut", "wirausaha", "tidak_mencari"], d: "terbuka" }, linkedin: { t: "string", f: "uri" }, portofolio: { t: "string", f: "uri" }, tampil_ke_mitra: { t: "boolean", d: "0" }, 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" } } }, KarierPengalaman: { t: "object", ds: "Pengalaman (tabel karier_pengalaman)", pr: { id: { t: "integer" }, nim: { t: "string", ds: "m_mahasiswa.NIM" }, jenis: { t: "string", e: ["kerja", "magang", "organisasi", "proyek", "pelatihan", "sertifikasi", "penghargaan", "relawan", "lainnya"] }, judul: { t: "string", max: 200 }, instansi: { t: "string", max: 200 }, mulai: { t: "string", f: "date" }, selesai: { t: "string", f: "date" }, uraian: { t: "string" }, nomor_kredensial: { t: "string", max: 100 }, tautan: { t: "string", f: "uri" }, created_at: { t: "string", n: 1, f: "date-time" }, updated_at: { t: "string", n: 1, f: "date-time" } } }, KarierLamaran: { t: "object", ds: "Lamaran kerja (tabel karier_lamaran)", pr: { id: { t: "integer" }, lowongan_id: { t: "integer", ds: "ID di tracer_lowongan" }, nim: { t: "string", ds: "m_mahasiswa.NIM" }, surat_lamaran: { t: "string" }, status: { t: "string", e: ["dikirim", "dilihat", "seleksi", "wawancara", "diterima", "ditolak", "ditarik"], ds: "(hanya baca)", ro: 1 }, catatan: { t: "string", ds: "(hanya baca)", ro: 1 }, created_at: { t: "string", n: 1, f: "date-time" }, updated_at: { t: "string", n: 1, f: "date-time" } } }, KarierAcara: { t: "object", ds: "Acara karier (tabel karier_acara)", pr: { id: { t: "integer" }, judul: { t: "string", max: 200 }, jenis: { t: "string", e: ["job_fair", "rekrutmen_kampus", "pelatihan", "sertifikasi", "seminar", "kunjungan_industri", "lainnya"], d: "seminar" }, mitra_id: { t: "integer", ds: "ID di kerjasama_mitra" }, instansi_id: { t: "integer", ds: "ID di tracer_instansi" }, deskripsi: { t: "string" }, mulai: { t: "string", f: "date-time" }, selesai: { t: "string", f: "date-time" }, mode: { t: "string", e: ["luring", "daring", "hibrida"], d: "luring" }, lokasi: { t: "string", max: 255 }, tautan: { t: "string", f: "uri" }, kuota: { t: "integer", min: 1, mx: 1e5 }, sasaran: { t: "string", e: ["mahasiswa", "alumni", "semua"], d: "semua" }, status: { t: "string", e: ["draf", "terbit", "selesai", "batal"], d: "draf" }, created_at: { t: "string", n: 1, f: "date-time" }, updated_at: { t: "string", n: 1, f: "date-time" } } }, KarierPeserta: { t: "object", ds: "Pendaftar acara (tabel karier_acara_peserta)", pr: { id: { t: "integer" }, acara_id: { t: "integer", ds: "ID di karier_acara" }, username: { t: "string", ds: "user.username" }, status: { t: "string", e: ["terdaftar", "hadir", "batal"], ds: "(hanya baca)", ro: 1 }, sertifikat_nomor: { t: "string", max: 100, ds: "(hanya baca)", ro: 1 }, created_at: { t: "string", n: 1, f: "date-time" }, updated_at: { t: "string", n: 1, f: "date-time" } } }, KarierMitra: { t: "object", ds: "Perusahaan mitra (tabel karier_mitra)", pr: { id: { t: "integer" }, instansi_id: { t: "integer", ds: "ID di tracer_instansi (unik)" }, kerjasama_mitra_id: { t: "integer", ds: "ID di kerjasama_mitra" }, status: { t: "string", e: ["calon", "diundang", "aktif", "nonaktif"], d: "calon" }, kategori: { t: "string", e: ["biasa", "prioritas", "strategis"], d: "biasa" }, bidang_rekrutmen: { t: "string", max: 255 }, prodi_sasaran: { t: "string", max: 255 }, pic_nama: { t: "string", max: 150 }, pic_jabatan: { t: "string", max: 100 }, pic_email: { t: "string", f: "email" }, pic_hp: { t: "string" }, terakhir_kontak: { t: "string", f: "date" }, catatan: { t: "string" }, created_at: { t: "string", n: 1, f: "date-time" }, updated_at: { t: "string", n: 1, f: "date-time" } } }, KarierInteraksi: { t: "object", ds: "Interaksi dengan mitra (tabel karier_interaksi)", pr: { id: { t: "integer" }, mitra_id: { t: "integer", ds: "ID di karier_mitra" }, jenis: { t: "string", e: ["kunjungan", "rapat", "email", "telepon", "pameran", "mou", "rekrutmen", "magang", "lainnya"], d: "lainnya" }, tanggal: { t: "string", f: "date" }, ringkasan: { t: "string" }, tindak_lanjut: { t: "string" }, tenggat: { t: "string", f: "date" }, status: { t: "string", e: ["terbuka", "selesai"], d: "selesai" }, created_at: { t: "string", n: 1, f: "date-time" }, updated_at: { t: "string", n: 1, f: "date-time" } } }, KarierArtikel: { t: "object", ds: "Tips dan artikel karier (tabel karier_artikel)", pr: { id: { t: "integer" }, judul: { t: "string", max: 200 }, slug: { t: "string", max: 220, p: "^[A-Za-z0-9._\\-/]+$", ds: "(unik)" }, kategori: { t: "string", e: ["cv_lamaran", "wawancara", "pengembangan_diri", "dunia_kerja", "wirausaha", "studi_lanjut", "lainnya"], d: "lainnya" }, ringkasan: { t: "string", max: 500 }, isi: { t: "string" }, penulis: { t: "string", max: 150 }, tag: { t: "string", max: 255 }, status: { t: "string", e: ["draf", "terbit"], d: "draf" }, terbit_at: { t: "string", f: "date-time", ds: "(hanya baca)", ro: 1 }, dibaca: { t: "integer", min: 0, mx: 2e9, ds: "(hanya baca)", ro: 1 }, created_at: { t: "string", n: 1, f: "date-time" }, updated_at: { t: "string", n: 1, f: "date-time" } } }, KarierRekomendasi: { t: "object", ds: "Rekomendasi lulusan (tabel karier_rekomendasi)", pr: { id: { t: "integer" }, nim: { t: "string", ds: "m_mahasiswa.NIM" }, lowongan_id: { t: "integer", ds: "ID di tracer_lowongan" }, mitra_id: { t: "integer", ds: "ID di karier_mitra" }, skor: { t: "number" }, alasan: { t: "string" }, status: { t: "string", e: ["diusulkan", "dikirim", "diminati", "ditolak", "direkrut"], ds: "(hanya baca)", ro: 1 }, tanggapan: { t: "string", ds: "(hanya baca)", ro: 1 }, created_at: { t: "string", n: 1, f: "date-time" }, updated_at: { t: "string", n: 1, f: "date-time" } } } };
|
|
12
|
+
var karier_default = { key, resources, ops, mandiri, skema };
|
|
13
|
+
|
|
14
|
+
exports.default = karier_default;
|
|
15
|
+
exports.key = key;
|
|
16
|
+
exports.mandiri = mandiri;
|
|
17
|
+
exports.ops = ops;
|
|
18
|
+
exports.resources = resources;
|
|
19
|
+
exports.skema = skema;
|
|
20
|
+
//# sourceMappingURL=karier-QTU2P5YD.cjs.map
|