openapi: 3.0.0
info:
  title: SISTER Web Service PT
  description: >
    ## Overview

      Web service ini digunakan oleh pengembang perangkat lunak atau admin perguruan tinggi untuk mengakses data pada SISTER. Web service ini tidak ditujukan untuk individu dosen karena menggunakan hak akses admin dan dapat mengakses data seluruh dosen pada perguruan tinggi yang bersangkutan.

    ## Format Data

      Seluruh data menggunakan format JSON untuk request dan response. Terdapat pengecualian pada endpoint terkait dokumen. Upload dokumen menggunakan format `multipart/form-data` untuk mengirimkan isi dokumen dalam bentuk binary. Download dokumen akan mengembalikan isi dokumen dalam bentuk binary sesuai mime type dokumen.

      Sebagian besar ID data menggunakan format UUID (`00000000-0000-0000-0000-000000000000`) lowercase. Seluruh tanggal untuk request maupun response menggunakan format `yyyy-mm-dd`. Angka menggunakan titik `.` untuk pemisah desimal. Field request yang sifatnya opsional dapat diisi dengan `null`, `0`, atau array kosong `[]` sesuai tipe datanya. Tidak diperkenankan menambahkan atau mengurangi field JSON pada request karena berpotensi mengakibatkan error.

    ## Dokumen Pendukung Data

      Entri data utama dan dokumen pendukung dilakukan secara terpisah. Dokumen pendukung harus dientri terlebih dahulu melalui endpoint [/dokumen](#post-/dokumen) untuk didapatkan ID-nya. Setelah itu, satu atau lebih ID dokumen tersebut dikirimkan bersama dengan data utama. Dengan demikian, satu ID dokumen dapat digunakan pada beberapa data utama.

    ## Mekanisme Update Data

      Secara umum request untuk menambah atau mengubah data menggunakan bentuk request body yang sama. Untuk proses mengubah data (update), **seluruh field data harus dikirimkan kembali** dalam request body dan tidak boleh ada yang di-skip, termasuk field data pendukung (misalnya dokumen). Sebagai contoh, suatu data portofolio akan diubah tanggalnya. Data tersebut memiliki dokumen pendukung dengan ID '1234'. Di request update, dokumen ID '1234' tersebut juga harus disertakan kembali. Jika tidak, request tersebut akan dianggap sebagai request untuk menghapus dokumen ID '1234' dari data portofolio.

    ## Verifikasi Perubahan Data Dosen (PDD)

      Data PDD yang dientri melalui web service secara otomatis statusnya menjadi terverifikasi sesuai level pengguna. Oleh karena itu, perguruan tinggi **wajib** memasukkan data yang benar dan valid di web service sesuai SPTJM (Surat Pernyataan Tanggung Jawab Mutlak) yang disampaikan pimpinan perguruan tinggi ke Ditjen Diktiristek. Level verifikasi bergantung pada level pengguna web service:

      - WS-BASIC: PDD otomatis berstatus terverifikasi perguruan tinggi namun perlu diverifikasi lagi oleh kementerian.
      - WS-PRO: PDD otomatis berstatus terverifikasi perguruan tinggi dan kementerian.

    ## Authorization

      Seluruh endpoint web service menggunakan token (JWT) yang dikirimkan di request header dengan format: `Authorization: Bearer <token>`. Token ini didapatkan dengan memasukkan credential pada endpoint [/authorize](#post-/authorize). Token ini berlaku selama 60 menit. Jika token sudah expired, endpoint akan memberikan response status code 401.

    ## Credential Akses

      Akses ke web service membutuhkan credential yang didapatkan dari sistem [manajemen akses sistem Diktiristek](http://akses.ristekdikti.go.id). Admin perguruan tinggi dapat membuat user baru dengan role `Developer` atau `Sister-WS Basic`, dan kemudian akan dibuatkan credential untuk mengakses web service pada instance SISTER masing-masing perguruan tinggi. Pengajuan role `Sister-WS Pro` harus melalui pengajuan ke Ditjen Diktiristek.

    ## Status Code

      Berikut ini beberapa HTTP status code standar untuk response. Setiap endpoint dapat mendefinisikan status tersendiri sesuai kebutuhan. Web service tidak mendefinisikan *error code* khusus.

      - `200`: Sukses dan mengembalikan data.
      - `204`: Sukses tanpa mengembalikan data. Digunakan pada request delete dan beberapa request PDD.
      - `400`: Data pada request tidak valid. Alasan tidak valid dicantumkan dalam response body.
      - `401`: Token tidak valid atau sudah expired.
      - `403`: Perubahan data ditolak. Alasan dicantumkan dalam response body.
      - `404`: Endpoint tidak ditemukan, atau data tertentu tidak ditemukan / sudah dihapus.
      - `405`: Metode HTTP tidak diizinkan. Ada pada endpoint yang read only.
      - `409`: Data yang akan dientri sudah ada atau duplikat. Hanya ada pada beberapa endpoint.
      - `500`: Error generik. Keterangan error atau pesan exception dicantumkan dalam response body.


    ## Download Spesifikasi

      Anda dapat mengunduh spesifikasi web service ini dalam bentuk YAML dengan mengklik tombol Download API Spec pada bagian atas. File YAML dapat di-import ke aplikasi seperti Postman untuk mengeksekusi web service ini. Spesifikasi dalam bentuk PDF (auto-generated) juga dapat diunduh dengan mengklik tombol Download API Reference.

  version: 1.0.0
servers:
  - url: /ws.php/1.0
    description: Server production
  - url: /ws-sandbox.php/1.0
    description: Server sandbox
tags:
  - name: Akses
    description: Manajemen akses web service
  - name: Referensi
    description: Data referensi yang digunakan untuk data lain
    x-tag-expanded: false
  - name: Dokumen
    description: Manajemen dokumen yang diunggah di sistem
    x-tag-expanded: false
  - name: Kolaborator Eksternal
    description: Data kolaborator eksternal (non-civitas) yang mengikuti kegiatan tridharma
    x-tag-expanded: false
  - name: Data Pokok
    description: Data pokok seorang SDM (data pribadi dan kepegawaian)
    x-tag-expanded: false
  - name: Inpassing
    description: Profil - inpassing
    x-tag-expanded: false
  - name: Jabatan Fungsional
    description: Profil - jabatan fungsional dosen
    x-tag-expanded: false
  - name: Kepangkatan
    description: Profil - kepangkatan dosen
    x-tag-expanded: false
  - name: Penugasan
    description: Profil - penugasan/penempatan dosen
    x-tag-expanded: false
  - name: Pengajaran
    description: Pelaksanaan pendidikan - pengajaran (read only)
    x-tag-expanded: false
  - name: Kelas Kuliah
    description: Pelaksanaan pendidikan - dokumen kelas kuliah
    x-tag-expanded: false
  - name: Bimbingan Mahasiswa
    description: Pelaksanaan pendidikan - bimbingan mahasiswa (read only)
    x-tag-expanded: false
  - name: Pengujian Mahasiswa
    description: Pelaksanaan pendidikan - pengujian mahasiswa (read only)
    x-tag-expanded: false
  - name: Detasering
    description: Pelaksanaan pendidikan - detasering
    x-tag-expanded: false
  - name: Orasi Ilmiah
    description: Pelaksanaan pendidikan - orasi ilmiah
    x-tag-expanded: false
  - name: Bahan Ajar
    description: Pelaksanaan pendidikan - bahan ajar
    x-tag-expanded: false
  - name: Bimbingan Dosen
    description: Pelaksanaan pendidikan - pembimbingan dosen (read only)
    x-tag-expanded: false
  - name: Tugas Tambahan
    description: Pelaksanaan pendidikan - tugas tambahan
    x-tag-expanded: false
  - name: Penelitian
    description: Pelaksanaan penelitian - penelitian
    x-tag-expanded: false
  - name: Publikasi
    description: Pelaksanaan penelitian - publikasi karya
    x-tag-expanded: false
  - name: Kekayaan Intelektual
    description: Pelaksanaan penelitian - paten / kekayaan intelektual
    x-tag-expanded: false
  - name: Pengabdian
    description: Pelaksanaan pengabdian - pengabdian
    x-tag-expanded: false
  - name: Pembicara
    description: Pelaksanaan pengabdian - pembicara dalam pertemuan ilmiah
    x-tag-expanded: false
  - name: Jabatan Struktural
    description: Pelaksanaan pengabdian - jabatan negara
    x-tag-expanded: false
  - name: Anggota Profesi
    description: Penunjang - anggota asosiasi profesi
    x-tag-expanded: false
  - name: Pengelola Jurnal
    description: Penunjang - pengelola jurnal
    x-tag-expanded: false
  - name: Penghargaan
    description: Penunjang - penghargaan
    x-tag-expanded: false
  - name: Visiting Scientist
    description: Penunjang - visiting scientist
    x-tag-expanded: false
  - name: Penunjang Lain
    description: Penunjang - penunjang lain
    x-tag-expanded: false
  - name: Pendidikan Formal
    description: Data pendidikan formal
    x-tag-expanded: false
  - name: Diklat
    description: Data diklat dosen
    x-tag-expanded: false
  - name: Riwayat Pekerjaan
    description: Data riwayat pekerjaan dosen
    x-tag-expanded: false
  - name: Sertifikasi Profesi
    description: Sertifikasi profesi
    x-tag-expanded: false
  - name: Sertifikasi Dosen
    description: Sertifikasi dosen
    x-tag-expanded: false
  - name: Tes
    description: Data nilai tes (TOEFL, IELTS, dll)
    x-tag-expanded: false
  - name: Beasiswa
    description: Reward - beasiswa dosen
    x-tag-expanded: false
  - name: Kesejahteraan
    description: Reward - kesejahteraan
    x-tag-expanded: false
  - name: Tunjangan
    description: Reward - tunjangan
    x-tag-expanded: false
  - name: BKD
    description: Beban Kerja Dosen
    x-tag-expanded: false
paths:
  /authorize:
    post:
      tags:
        - Akses
      summary: Mendapatkan token untuk otorisasi
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/AuthParameter"
        description: Credential untuk akses
      responses:
        200:
          description: Jika credential benar
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AuthToken"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
  /referensi/kategori_capaian_luaran:
    get:
      tags:
        - Referensi
      summary: Kategori capaian luaran
      security:
        - Bearer: []
      responses:
        200:
          description: Daftar kategori capaian luaran
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ReferensiIntegerResult"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
  /referensi/perguruan_tinggi:
    get:
      tags:
        - Referensi
      summary: Perguruan tinggi
      security:
        - Bearer: []
      responses:
        200:
          description: Daftar perguruan tinggi
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ReferensiUuidResult"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
  /referensi/unit_kerja:
    get:
      tags:
        - Referensi
      summary: Unit kerja di perguruan tinggi
      security:
        - Bearer: []
      parameters:
        - in: query
          name: id_perguruan_tinggi
          example: "828fb966-3733-430e-86ff-909b764e2523"
          required: true
          description: ID perguruan tinggi dari endpoint [/referensi/perguruan_tinggi](#get-/referensi/perguruan_tinggi)
          schema:
            type: string
            format: uuid
      responses:
        200:
          description: Daftar unit kerja pada perguruan tinggi tersebut
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ReferensiUnitKerjaResult"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
  /referensi/detail_unit_kerja:
    get:
      tags:
        - Referensi
      summary: Detail Unit kerja di perguruan tinggi
      security:
        - Bearer: []
      parameters:
        - in: query
          name: id_unit_kerja
          example: "c6228784-0b80-4e0a-b72d-d3203e44d907"
          required: true
          description: ID unit kerja dari endpoint [/referensi/unit_kerja](#get-/referensi/unit_kerja)
          schema:
            type: string
            format: uuid
      responses:
        200:
          description: Detail unit kerja pada perguruan tinggi tersebut
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ReferensiDetailUnitKerjaResult"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
  /referensi/mahasiswa_pddikti:
    get:
      tags:
        - Referensi
      summary: Mahasiswa terdaftar di PDDIKTI
      security:
        - Bearer: []
      parameters:
        - in: query
          name: id_perguruan_tinggi
          example: 828fb966-3733-430e-86ff-909b764e2523
          required: true
          description: ID perguruan tinggi dari endpoint [/referensi/perguruan_tinggi](#get-/referensi/perguruan_tinggi)
          schema:
            type: string
            format: uuid
        - in: query
          name: id_program_studi
          example: c6228784-0b80-4e0a-b72d-d3203e44d907
          required: true
          description: ID program studi dari endpoint [/referensi/unit_kerja](#get-/referensi/unit_kerja)
          schema:
            type: string
            format: uuid
        - in: query
          name: keyword
          example: dean
          required: false
          description: Keyword nama untuk pencarian mahasiswa
          schema:
            type: string
            format: string
      responses:
        200:
          description: Data jenis dokumen (ID dan nama jenis)
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ReferensiMahasiswaResult"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
  /referensi/agama:
    get:
      tags:
        - Referensi
      summary: Agama
      security:
        - Bearer: []
      responses:
        200:
          description: Data agama (ID dan nama jenis)
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ReferensiIntegerResult"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
  /referensi/bidang_studi:
    get:
      tags:
        - Referensi
      summary: Bidang studi
      security:
        - Bearer: []
      responses:
        200:
          description: Data bidang studi (ID dan nama jenis)
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ReferensiIntegerResult"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
  /referensi/bidang_usaha:
    get:
      tags:
        - Referensi
      summary: Bidang usaha
      security:
        - Bearer: []
      responses:
        200:
          description: Data bidang usaha (ID dan nama jenis)
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ReferensiIntegerResult"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
  /referensi/dudi:
    get:
      tags:
        - Referensi
      summary: Mitra litabmas / DUDI
      security:
        - Bearer: []
      responses:
        200:
          description: Data mitra litabmas / dunia usaha dan dunia industri (DUDI) (ID dan nama)
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ReferensiUuidResult"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
  /referensi/gelar_akademik:
    get:
      tags:
        - Referensi
      summary: Gelar akademik
      security:
        - Bearer: []
      responses:
        200:
          description: Data gelar akademik (ID dan nama jenis)
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ReferensiGelarAkademikResult"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
  /referensi/golongan_pangkat:
    get:
      tags:
        - Referensi
      summary: Golongan pangkat
      security:
        - Bearer: []
      responses:
        200:
          description: Data golongan pangkat (ID dan nama jenis)
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ReferensiIntegerResult"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
  /referensi/ikatan_kerja:
    get:
      tags:
        - Referensi
      summary: Jenis ikatan kerja
      security:
        - Bearer: []
      responses:
        200:
          description: Data jenis ikatan kerja (ID dan nama jenis)
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      description: ID ikatan kerja
                      example: "A"
                    nama:
                      type: string
                      description: Keterangan
                      example: Dosen Tetap
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
  /referensi/jenis_dokumen:
    get:
      tags:
        - Referensi
      summary: Jenis dokumen sister
      security:
        - Bearer: []
      responses:
        200:
          description: Data jenis dokumen (ID dan nama jenis)
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ReferensiIntegerResult"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
  /referensi/jabatan_fungsional:
    get:
      tags:
        - Referensi
      summary: Jabatan fungsional
      security:
        - Bearer: []
      responses:
        200:
          description: Data fungsional (ID dan nama jenis)
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ReferensiIntegerResult"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
  /referensi/jabatan_negara:
    get:
      tags:
        - Referensi
      summary: Jabatan tugas negara
      security:
        - Bearer: []
      responses:
        200:
          description: Data jabatan negara (ID dan nama jenis)
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ReferensiIntegerResult"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
  /referensi/jabatan_tugas_tambahan:
    get:
      tags:
        - Referensi
      summary: Jabatan tugas tambahan
      security:
        - Bearer: []
      responses:
        200:
          description: Data jabatan tugas tambahan (ID dan nama jenis)
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ReferensiIntegerResult"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
  /referensi/jenis_bahan_ajar:
    get:
      tags:
        - Referensi
      summary: Jenis bahan ajar
      security:
        - Bearer: []
      responses:
        200:
          description: Data jenis bahan ajar (ID dan nama jenis)
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ReferensiIntegerResult"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
  /referensi/jenis_penghargaan:
    get:
      tags:
        - Referensi
      summary: Jenis penghargaan
      security:
        - Bearer: []
      responses:
        200:
          description: Data jenis penghargaan (ID dan nama jenis)
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ReferensiIntegerResult"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
  /referensi/jenis_kepanitiaan:
    get:
      tags:
        - Referensi
      summary: Jenis kepanitiaan
      security:
        - Bearer: []
      responses:
        200:
          description: Data jenis kepanitiaan (ID dan nama jenis)
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ReferensiIntegerResult"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
  /referensi/jenis_kesejahteraan:
    get:
      tags:
        - Referensi
      summary: Jenis kesejahteraan
      security:
        - Bearer: []
      responses:
        200:
          description: Data jenis kesejahteraan (ID dan nama jenis)
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ReferensiIntegerResult"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
  /referensi/jenis_beasiswa:
    get:
      tags:
        - Referensi
      summary: Jenis beasiswa
      security:
        - Bearer: []
      responses:
        200:
          description: Data jenis beasiswa (ID dan nama jenis)
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ReferensiIntegerResult"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
  /referensi/jenis_diklat:
    get:
      tags:
        - Referensi
      summary: Jenis diklat
      security:
        - Bearer: []
      responses:
        200:
          description: Data jenis diklat (ID dan nama jenis)
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ReferensiIntegerResult"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
  /referensi/jenis_keluar:
    get:
      tags:
        - Referensi
      summary: Jenis keluar SDM
      security:
        - Bearer: []
      responses:
        200:
          description: Data jenis keluar (ID dan nama jenis)
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      description: ID jenis keluar
                      example: "9"
                    nama:
                      type: string
                      description: Keterangan
                      example: Pensiun
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
  /referensi/jenis_pekerjaan:
    get:
      tags:
        - Referensi
      summary: Jenis pekerjaan
      security:
        - Bearer: []
      responses:
        200:
          description: Data jenis pekerjaan (ID dan nama jenis)
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ReferensiIntegerResult"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
  /referensi/jenis_publikasi:
    get:
      tags:
        - Referensi
      summary: Jenis publikasi
      security:
        - Bearer: []
      responses:
        200:
          description: Data jenis publikasi (ID dan nama jenis)
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ReferensiIntegerResult"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
  /referensi/jenis_tes:
    get:
      tags:
        - Referensi
      summary: Jenis tes
      security:
        - Bearer: []
      responses:
        200:
          description: Data jenis tes (ID dan nama jenis)
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ReferensiIntegerResult"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
  /referensi/jenis_tunjangan:
    get:
      tags:
        - Referensi
      summary: Jenis tunjangan
      security:
        - Bearer: []
      responses:
        200:
          description: Data jenis tunjangan (ID dan nama jenis)
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ReferensiIntegerResult"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
  /referensi/jenjang_pendidikan:
    get:
      tags:
        - Referensi
      summary: Jenjang pendidikan
      security:
        - Bearer: []
      responses:
        200:
          description: Data jenjang pendidikan (ID dan nama)
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ReferensiIntegerResult"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
  /referensi/profil_pt:
    get:
      tags:
        - Referensi
      summary: Profil perguruan tinggi
      description: Detail perguruan tinggi tempat instance SISTER ini berada
      security:
        - Bearer: []
      responses:
        200:
          description: Data profil perguruan tinggi
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ReferensiProfilPtResult"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
  /referensi/status_kepegawaian:
    get:
      tags:
        - Referensi
      summary: Status kepegawaian
      security:
        - Bearer: []
      responses:
        200:
          description: Data status kepegawaian (ID dan nama jenis)
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ReferensiIntegerResult"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
  /referensi/skim_kegiatan:
    get:
      tags:
        - Referensi
      summary: Skim kegiatan
      security:
        - Bearer: []
      responses:
        200:
          description: Data Skim Kegiatan (ID dan nama)
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ReferensiUuidResult"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
  /referensi/tingkat_penghargaan:
    get:
      tags:
        - Referensi
      summary: Tingkat penghargaan
      security:
        - Bearer: []
      responses:
        200:
          description: Data tingkat penghargaan (ID dan nama jenis)
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ReferensiIntegerResult"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
  /referensi/media_publikasi:
    get:
      tags:
        - Referensi
      summary: Media publikasi
      security:
        - Bearer: []
      parameters:
        - in: query
          name: nama
          example: kajian
          required: false
          description: Keyword nama untuk pencarian
          schema:
            type: string
            format: string
      responses:
        200:
          description: Data media publikasi (ID dan nama jenis)
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ReferensiUuidResult"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
  /referensi/negara:
    get:
      tags:
        - Referensi
      summary: Negara
      security:
        - Bearer: []
      responses:
        200:
          description: Data negara (ID dan nama negara)
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      description: ID negara (2 huruf)
                      example: ID
                    nama:
                      type: string
                      description: Nama negara
                      example: Indonesia
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
  /referensi/kategori_kegiatan:
    get:
      tags:
        - Referensi
      summary: Kategori kegiatan
      description: Mendapatkan data referensi kategori kegiatan dosen yang digunakan untuk BKD dan PAK
      security:
        - Bearer: []
      parameters:
        - in: query
          name: tipe
          example: list
          required: true
          description: Jenis data yang dihasilkan. Jika `list` akan menghasilkan data linear. Jika `tree` akan menghasilkan data hierarki.
          schema:
            type: string
            enum:
              - list
              - tree
        - in: query
          name: menu
          example: anggota_profesi
          required: false
          description: Filter data berdasarkan menu.
          schema:
            type: string
            enum:
              - anggota_profesi
              - bahan_ajar
              - detasering
              - diklat
              - kekayaan_intelektual
              - jabatan_struktural
              - orasi_ilmiah
              - penelitian
              - pembicara
              - pengabdian
              - pengelola_jurnal
              - penghargaan
              - penunjang_lain
              - publikasi
              - tugas_tambahan
              - visiting_scientist
      responses:
        200:
          description: Data kategori kegiatan. Bentuk data bergantung pada parameter `tipe`.
          content:
            application/json:
              schema:
                type: array
                description: Array dari data
                items:
                  oneOf:
                    - $ref: "#/components/schemas/ReferensiKategoriKegiatanListResult"
                    - $ref: "#/components/schemas/ReferensiKategoriKegiatanTreeResult"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
  /referensi/kelompok_bidang:
    get:
      tags:
        - Referensi
      summary: Kelompok bidang
      security:
        - Bearer: []
      parameters:
        - in: query
          name: iptek
          example: true
          required: true
          description: Filter kelompok bidang ilmu untuk kegiatan tridharma
          schema:
            type: boolean
            enum:
              - true
              - false
      responses:
        200:
          description: Daftar kelompok bidang
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ReferensiUuidResult"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
  /referensi/lembaga_sertifikasi:
    get:
      tags:
        - Referensi
      summary: Lembaga Sertifikasi
      security:
        - Bearer: [ ]
      responses:
        200:
          description: Data lembaga sertifikasi (ID dan nama lembaga sertifikasi)
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ReferensiIntegerResult"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
  /referensi/wilayah:
    get:
      tags:
        - Referensi
      summary: Wilayah
      parameters:
        - in: query
          name: id_level_wilayah
          example: 2
          required: true
          description: 0=Negara, 1=Provinsi, 2=Kota/Kabupaten, 3=Kecamatan
          schema:
            type: integer
            enum:
              - 0
              - 1
              - 2
              - 3
      security:
        - Bearer: []
      responses:
        200:
          description: Daftar wilayah
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ReferensiWilayahResult"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
  /referensi/sdm:
    get:
      tags:
        - Referensi
      summary: Pegawai di perguruan tinggi
      security:
        - Bearer: []
      parameters:
        - in: query
          name: id_sp
          example: 1782f838-f5dd-485c-b29e-00339227c4d0
          required: false
          description: Keyword ID SP untuk pencarian, bila menggunakan parameter ini, parameter nama harus diisi minimal 3 karakter
          schema:
            type: string
            format: string
        - in: query
          name: nama
          example: dean
          required: false
          description: Keyword nama untuk pencarian, bila menggunakan id_sp, parameter ini harus diisi minimal 3 karakter
          schema:
            type: string
            format: string
        - in: query
          name: nidn
          example: 032999923
          required: false
          description: Keyword NIDN untuk pencarian
          schema:
            type: string
            format: string
        - in: query
          name: nip
          example: 190010101900101003
          required: false
          description: Keyword NIP untuk pencarian
          schema:
            type: string
            format: string
        - in: query
          name: nuptk
          example: 4723786869032232
          required: false
          description: Keyword NUPTK untuk pencarian
          schema:
            type: string
            format: string
      responses:
        200:
          description: Data pegawai (id_sdm, nama, status, jenis)
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ReferensiSdmResult"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
  /referensi/semester:
    get:
      tags:
        - Referensi
      summary: Semester
      security:
        - Bearer: []
      responses:
        200:
          description: Daftar semester
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ReferensiIntegerResult"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
  /referensi/sumber_gaji:
    get:
      tags:
        - Referensi
      summary: Sumber gaji
      security:
        - Bearer: []
      responses:
        200:
          description: Daftar sumber gaji
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ReferensiIntegerResult"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
  /data_pribadi/foto/{id_sdm}:
    get:
      tags:
        - Data Pokok
      summary: Mengambil data foto seorang SDM
      parameters:
        - $ref: "#/components/parameters/id_sdm_path"
      security:
        - Bearer: []
      responses:
        200:
          description: File foto. Content-type response sesuai data mime_type yang tersimpan di database.
          content:
            application/json:
              schema:
                type: string
                format: binary
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
    post:
      tags:
        - Data Pokok
      summary: Mengubah data foto seorang SDM
      description: File foto dikirim dalam format multipart/form-data
      parameters:
        - $ref: "#/components/parameters/id_sdm_path"
      security:
        - Bearer: []
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                file:
                  description: File foto baru untuk menimpa yang lama. Format yang diizinkan JPG atau PNG.
                  type: string
                  format: binary
      responses:
        204:
          description: Jika sukses tidak mengembalikan hasil apapun (response kosong)
        400:
          $ref: "#/components/responses/BadRequest"
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        500:
          $ref: "#/components/responses/GeneralError"
  /data_pribadi/profil/{id_sdm}:
    get:
      tags:
        - Data Pokok
      summary: Mengambil data profil seorang SDM
      parameters:
        - $ref: "#/components/parameters/id_sdm_path"
      security:
        - Bearer: []
      responses:
        200:
          description: Data profil
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DataPribadiProfilGetDetail"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
  /data_pribadi/kependudukan/{id_sdm}:
    get:
      tags:
        - Data Pokok
      summary: Mengambil data kependudukan seorang SDM
      parameters:
        - $ref: "#/components/parameters/id_sdm_path"
      security:
        - Bearer: []
      responses:
        200:
          description: Data kependudukan
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DataPribadiKependudukanGetDetail"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
  /data_pribadi/keluarga/{id_sdm}:
    get:
      tags:
        - Data Pokok
      summary: Mengambil data keluarga seorang SDM
      parameters:
        - $ref: "#/components/parameters/id_sdm_path"
      security:
        - Bearer: []
      responses:
        200:
          description: Data keluarga
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DataPribadiKeluargaGetDetail"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
    put:
      tags:
        - Data Pokok
      summary: Mengubah data keluarga seorang SDM
      description: User WS-BASIC akan membuat ajuan perubahan, sedangkan user WS-PRO akan langsung mengubah data.
      parameters:
        - $ref: "#/components/parameters/id_sdm_path"
      security:
        - Bearer: []
      requestBody:
        $ref: "#/components/requestBodies/DataPribadiKeluargaPostBody"
      responses:
        200:
          description: Jika sukses akan mengembalikan data keluarga SDM tersebut (WS-PRO)
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DataPribadiKeluargaGetDetail"
        204:
          description: Jika sukses tidak mengembalikan hasil apapun (WS-BASIC). Daftar ajuan dapat dilihat pada endpoint /data_pribadi/ajuan.
        400:
          $ref: "#/components/responses/BadRequest"
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        500:
          $ref: "#/components/responses/GeneralError"
  /data_pribadi/alamat/{id_sdm}:
    get:
      tags:
        - Data Pokok
      summary: Mengambil data alamat dan kontak seorang SDM
      parameters:
        - $ref: "#/components/parameters/id_sdm_path"
      security:
        - Bearer: []
      responses:
        200:
          description: Data alamat dan kontak
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DataPribadiAlamatGetDetail"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
    put:
      tags:
        - Data Pokok
      summary: Mengubah data alamat dan kontak seorang SDM
      description: User WS-BASIC akan membuat ajuan perubahan, sedangkan user WS-PRO akan langsung mengubah data.
      parameters:
        - $ref: "#/components/parameters/id_sdm_path"
      security:
        - Bearer: []
      requestBody:
        $ref: "#/components/requestBodies/DataPribadiAlamatPostBody"
      responses:
        200:
          description: Jika sukses akan mengembalikan data alamat dan kontak SDM tersebut (WS-PRO)
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DataPribadiAlamatGetDetail"
        204:
          description: Jika sukses tidak mengembalikan hasil apapun (WS-BASIC). Daftar ajuan dapat dilihat pada endpoint /data_pribadi/ajuan.
        400:
          $ref: "#/components/responses/BadRequest"
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        500:
          $ref: "#/components/responses/GeneralError"
  /data_pribadi/kepegawaian/{id_sdm}:
    get:
      tags:
        - Data Pokok
      summary: Mengambil data kepegawaian seorang SDM
      parameters:
        - $ref: "#/components/parameters/id_sdm_path"
      security:
        - Bearer: []
      responses:
        200:
          description: Data kepegawaian
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DataPribadiKepegawaianGetDetail"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
  /data_pribadi/lain/{id_sdm}:
    get:
      tags:
        - Data Pokok
      summary: Mengambil data pribadi lain seorang SDM
      parameters:
        - $ref: "#/components/parameters/id_sdm_path"
      security:
        - Bearer: []
      responses:
        200:
          description: Data pribadi lain
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DataPribadiLainGetDetail"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
    put:
      tags:
        - Data Pokok
      summary: Mengubah data pribadi lain seorang SDM
      description: User WS-BASIC akan membuat ajuan perubahan, sedangkan user WS-PRO akan langsung mengubah data.
      parameters:
        - $ref: "#/components/parameters/id_sdm_path"
      security:
        - Bearer: []
      requestBody:
        $ref: "#/components/requestBodies/DataPribadiLainPostBody"
      responses:
        200:
          description: Jika sukses akan mengembalikan data pribadi lain SDM tersebut (WS-PRO)
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DataPribadiLainGetDetail"
        204:
          description: Jika sukses tidak mengembalikan hasil apapun (WS-BASIC). Daftar ajuan dapat dilihat pada endpoint /data_pribadi/ajuan.
        400:
          $ref: "#/components/responses/BadRequest"
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        500:
          $ref: "#/components/responses/GeneralError"
  /data_pribadi/bidang_ilmu/{id_sdm}:
    get:
      tags:
        - Data Pokok
      summary: Mengambil list data bidang ilmu seorang SDM
      parameters:
        - $ref: "#/components/parameters/id_sdm_path"
      security:
        - Bearer: []
      responses:
        200:
          description: Data bidang ilmu
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DataPribadiInterestGetDetail"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
    put:
      tags:
        - Data Pokok
      summary: Mengubah data bidang ilmu seorang SDM
      parameters:
        - $ref: "#/components/parameters/id_sdm_path"
      security:
        - Bearer: []
      requestBody:
        $ref: "#/components/requestBodies/DataPribadiInterestPostBody"
      responses:
        200:
          description: Jika sukses akan mengembalikan data list bidang ilmu SDM tersebut
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DataPribadiInterestGetDetail"
        400:
          $ref: "#/components/responses/BadRequest"
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        500:
          $ref: "#/components/responses/GeneralError"
  /inpassing:
    get:
      tags:
        - Inpassing
      summary: List data inpassing
      parameters:
        - $ref: "#/components/parameters/id_sdm"
      security:
        - Bearer: []
      responses:
        200:
          description: Data inpassing
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/InpassingGetItem"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
    post:
      tags:
        - Inpassing
      summary: Menambahkan data inpassing baru
      security:
        - Bearer: []
      requestBody:
        $ref: "#/components/requestBodies/InpassingPostBody"
      responses:
        200:
          description: Jika sukses akan mengembalikan ID inpassing yang dibuat
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NewUUIDResponse"
        400:
          $ref: "#/components/responses/BadRequest"
        401:
          $ref: "#/components/responses/Unauthorized"
        409:
          $ref: "#/components/responses/Duplicate"
        500:
          $ref: "#/components/responses/GeneralError"
  /inpassing/{id}:
    get:
      tags:
        - Inpassing
      summary: Detail inpassing
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID inpassing
          schema:
            type: string
            format: uuid
      responses:
        200:
          description: Detail inpassing
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/InpassingGetDetail"
        401:
          $ref: "#/components/responses/Unauthorized"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
    delete:
      tags:
        - Inpassing
      summary: Menghapus data inpassing
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID inpassing
          schema:
            type: string
            format: uuid
      responses:
        204:
          description: Jika sukses tidak mengembalikan hasil apapun (response kosong)
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
    put:
      tags:
        - Inpassing
      summary: Mengubah data inpassing
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID inpassing
          schema:
            type: string
            format: uuid
      requestBody:
        $ref: "#/components/requestBodies/InpassingPostBody"
      responses:
        200:
          description: Jika sukses mengembalikan detail dari inpassing
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/InpassingGetDetail"
        400:
          $ref: "#/components/responses/BadRequest"
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
  /jabatan_fungsional:
    get:
      tags:
        - Jabatan Fungsional
      summary: List data jabatan fungsional
      parameters:
        - $ref: "#/components/parameters/id_sdm"
      security:
        - Bearer: []
      responses:
        200:
          description: Data jabatan fungsional
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/JabatanFungsionalGetItem"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
    post:
      tags:
        - Jabatan Fungsional
      summary: Menambahkan data jabatan fungsional baru
      description: User WS-BASIC akan membuat ajuan penambahan, sedangkan user WS-PRO akan langsung menambahkan data jabatan.
      security:
        - Bearer: []
      requestBody:
        $ref: "#/components/requestBodies/JabatanFungsionalPostBody"
      responses:
        200:
          description: Jika sukses akan mengembalikan ID riwayat jabatan fungsional yang dibuat (WS-PRO)
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NewUUIDResponse"
        204:
          description: Jika sukses tidak mengembalikan hasil apapun (WS-BASIC). Daftar ajuan dapat dilihat pada endpoint /jabatan_fungsional/ajuan.
        400:
          $ref: "#/components/responses/BadRequest"
        401:
          $ref: "#/components/responses/Unauthorized"
        409:
          $ref: "#/components/responses/Duplicate"
        500:
          $ref: "#/components/responses/GeneralError"
  /jabatan_fungsional/{id}:
    get:
      tags:
        - Jabatan Fungsional
      summary: Detail jabatan fungsional
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID riwayat jabatan fungsional
          schema:
            type: string
            format: uuid
      responses:
        200:
          description: Detail jabatan fungsional
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/JabatanFungsionalGetDetail"
        401:
          $ref: "#/components/responses/Unauthorized"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
    delete:
      tags:
        - Jabatan Fungsional
      summary: Menghapus data jabatan fungsional
      description: User WS-BASIC akan membuat ajuan penghapusan, sedangkan user WS-PRO akan langsung menghapus data jabatan.
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID riwayat jabatan fungsional
          schema:
            type: string
            format: uuid
      requestBody:
        $ref: "#/components/requestBodies/AjuanPddHapusPostBody"
      responses:
        204:
          description: Jika sukses tidak mengembalikan hasil apapun (response kosong)
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
    put:
      tags:
        - Jabatan Fungsional
      summary: Mengubah data jabatan fungsional
      description: User WS-BASIC akan membuat ajuan perubahan, sedangkan user WS-PRO akan langsung mengubah data jabatan.
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID riwayat jabatan fungsional
          schema:
            type: string
            format: uuid
      requestBody:
        $ref: "#/components/requestBodies/JabatanFungsionalPostBody"
      responses:
        200:
          description: Jika sukses mengembalikan detail dari jabatan fungsional (WS-PRO)
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/JabatanFungsionalGetDetail"
        204:
          description: Jika sukses tidak mengembalikan hasil apapun (WS-BASIC). Daftar ajuan dapat dilihat pada endpoint /jabatan_fungsional/ajuan.
        400:
          $ref: "#/components/responses/BadRequest"
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
  /jabatan_fungsional/ajuan:
    get:
      tags:
        - Jabatan Fungsional
      summary: List ajuan jabatan fungsional
      parameters:
        - $ref: "#/components/parameters/id_sdm"
      security:
        - Bearer: []
      responses:
        200:
          description: List data ajuan jabatan fungsional
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/AjuanPddGetItem"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
  /jabatan_fungsional/ajuan/{id}:
    get:
      tags:
        - Jabatan Fungsional
      summary: Detail ajuan jabatan fungsional
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID ajuan jabatan fungsional
          schema:
            type: string
            format: uuid
      responses:
        200:
          description: Detail ajuan jabatan fungsional
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AjuanPddGetDetail"
        401:
          $ref: "#/components/responses/Unauthorized"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
  /kepangkatan:
    get:
      tags:
        - Kepangkatan
      summary: List data kepangkatan
      parameters:
        - $ref: "#/components/parameters/id_sdm"
      security:
        - Bearer: []
      responses:
        200:
          description: Data kepangkatan
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/KepangkatanGetItem"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
  /kepangkatan/{id}:
    get:
      tags:
        - Kepangkatan
      summary: Detail kepangkatan
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID riwayat kepangkatan
          schema:
            type: string
            format: uuid
      responses:
        200:
          description: Detail kepangkatan
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/KepangkatanGetDetail"
        401:
          $ref: "#/components/responses/Unauthorized"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
  /penugasan:
    get:
      tags:
        - Penugasan
      summary: List data penugasan/penempatan
      parameters:
        - $ref: "#/components/parameters/id_sdm"
      security:
        - Bearer: []
      responses:
        200:
          description: Data penugasan/penempatan
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/PenugasanGetItem"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
  /penugasan/{id}:
    get:
      tags:
        - Penugasan
      summary: Detail penugasan/penempatan
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID penugasan/penempatan
          schema:
            type: string
            format: uuid
      responses:
        200:
          description: Detail penugasan/penempatan
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PenugasanGetDetail"
        401:
          $ref: "#/components/responses/Unauthorized"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
  /pengajaran:
    get:
      tags:
        - Pengajaran
      summary: List data pengajaran pada suatu semester
      description: Data bersumber dari PDDIKTI dan tidak dapat diubah di SISTER
      parameters:
        - $ref: "#/components/parameters/id_sdm"
        - $ref: "#/components/parameters/id_semester"
      security:
        - Bearer: []
      responses:
        200:
          description: Data pengajaran
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/PengajaranGetItem"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
  /pengajaran/{id}:
    get:
      tags:
        - Pengajaran
      summary: Detail pengajaran
      description: Data bersumber dari PDDIKTI dan tidak dapat diubah di SISTER
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID pengajaran
          schema:
            type: string
            format: uuid
      responses:
        200:
          description: Detail pengajaran
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PengajaranGetDetail"
        401:
          $ref: "#/components/responses/Unauthorized"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
  /pengajaran/{id}/bidang_ilmu:
    get:
      tags:
        - Pengajaran
      summary: Bidang ilmu pengajaran
      description: Data list bidang ilmu pengajaran.
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID bidang ilmu pengajaran
          schema:
            type: string
            format: uuid
      responses:
        200:
          description: Detail pengajaran
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DataPribadiInterestGetDetail"
        401:
          $ref: "#/components/responses/Unauthorized"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
    put:
      tags:
        - Pengajaran
      summary: Mengubah bidang ilmu pengajaran
      description: Data list bidang ilmu. Urutan dalam array menyatakan urutan data bidang ilmu pengajaran.
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID pengajaran
          schema:
            type: string
            format: uuid
      requestBody:
        $ref: "#/components/requestBodies/BidangIlmuPostBody"
      responses:
        200:
          description: Detail bidang ilmu pengajaran
          content:
            application/json:
              schema:
                $ref:  "#/components/schemas/DataPribadiInterestGetDetail"
        401:
          $ref: "#/components/responses/Unauthorized"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
  /kelas_kuliah/{id_kls}/dokumen:
    get:
      tags:
        - Kelas Kuliah
      summary: List dokumen pada suatu kelas kuliah
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id_kls
          required: true
          description: ID kelas kuliah
          schema:
            type: string
            format: uuid
      responses:
        200:
          description: Data dokumen kelas kuliah
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/DokumenDetail"
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
    post:
      tags:
        - Kelas Kuliah
      summary: Menambahkan dokumen pada suatu kelas kuliah
      description: Dokumen berupa tautan. Kelas kuliah harus diselenggarakan oleh perguruan tinggi pemilik token.
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id_kls
          required: true
          description: ID kelas kuliah
          schema:
            type: string
            format: uuid
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id_jenis_dokumen:
                  description: ID jenis dokumen
                  example: 3
                  type: integer
                tautan:
                  description: Tautan dokumen
                  example: https://kampus.ac.id/files/RPS-ALGORITMA.pdf
                  type: string
                nama:
                  description: Nama dokumen. Jika dikosongkan diambil dari nama file pada tautan.
                  example: RPS Algoritma dan Pemrograman
                  type: string
                keterangan:
                  description: Keterangan dokumen
                  type: string
              required:
                - id_jenis_dokumen
                - tautan
      responses:
        200:
          description: Jika sukses akan mengembalikan ID dokumen yang dibuat
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NewUUIDResponse"
        400:
          $ref: "#/components/responses/BadRequest"
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
  /kelas_kuliah/{id_kls}/dokumen/{id_dok}:
    delete:
      tags:
        - Kelas Kuliah
      summary: Menghapus dokumen dari suatu kelas kuliah
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id_kls
          required: true
          description: ID kelas kuliah
          schema:
            type: string
            format: uuid
        - in: path
          name: id_dok
          required: true
          description: ID dokumen
          schema:
            type: string
            format: uuid
      responses:
        204:
          description: Berhasil menghapus dokumen dari kelas kuliah
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
  /bimbingan_mahasiswa:
    get:
      tags:
        - Bimbingan Mahasiswa
      summary: List data bimbingan mahasiswa berdasarkan semester
      description: Data bersumber dari PDDIKTI dan tidak dapat diubah di SISTER
      parameters:
        - $ref: "#/components/parameters/id_sdm"
        - $ref: "#/components/parameters/id_semester"
      security:
        - Bearer: []
      responses:
        200:
          description: Data bimbingan mahasiswa
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/BimbinganMahasiswaGetItem"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
  /bimbingan_mahasiswa/{id}:
    get:
      tags:
        - Bimbingan Mahasiswa
      summary: Detail bimbingan mahasiswa
      description: Data bersumber dari PDDIKTI dan tidak dapat diubah di SISTER
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID aktivitas mahasiswa
          schema:
            type: string
            format: uuid
      responses:
        200:
          description: Detail bimbingan mahasiswa
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BimbinganMahasiswaGetDetail"
        401:
          $ref: "#/components/responses/Unauthorized"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
  /bimbingan_mahasiswa/{id}/bidang_ilmu:
    get:
      tags:
        - Bimbingan Mahasiswa
      summary: Bidang ilmu bimbingan mahasiswa
      description: Data list bidang ilmu.
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID aktivitas mahasiswa
          schema:
            type: string
            format: uuid
      responses:
        200:
          description: Detail bimbingan mahasiswa
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DataPribadiInterestGetDetail"
        401:
          $ref: "#/components/responses/Unauthorized"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
    put:
      tags:
        - Bimbingan Mahasiswa
      summary: Mengubah bidang ilmu bimbingan mahasiswa
      description: Data list bidang ilmu. Urutan dalam array menyatakan urutan data bidang ilmu bimbingan mahasiswa.
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID aktivitas mahasiswa
          schema:
            type: string
            format: uuid
      requestBody:
        $ref: "#/components/requestBodies/BidangIlmuPostBody"
      responses:
        200:
          description: Detail bidang ilmu bimbingan mahasiswa
          content:
            application/json:
              schema:
                $ref:  "#/components/schemas/DataPribadiInterestGetDetail"
        401:
          $ref: "#/components/responses/Unauthorized"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
  /pengujian_mahasiswa:
    get:
      tags:
        - Pengujian Mahasiswa
      summary: List data pengujian mahasiswa berdasarkan semester
      description: Data bersumber dari PDDIKTI dan tidak dapat diubah di SISTER
      parameters:
        - $ref: "#/components/parameters/id_sdm"
        - $ref: "#/components/parameters/id_semester"
      security:
        - Bearer: []
      responses:
        200:
          description: Data pengujian mahasiswa
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/PengujianMahasiswaGetItem"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
  /pengujian_mahasiswa/{id}:
    get:
      tags:
        - Pengujian Mahasiswa
      summary: Detail pengujian mahasiswa
      description: Data bersumber dari PDDIKTI dan tidak dapat diubah di SISTER
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID aktivitas mahasiswa
          schema:
            type: string
            format: uuid
      responses:
        200:
          description: Detail pengujian mahasiswa
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PengujianMahasiswaGetDetail"
        401:
          $ref: "#/components/responses/Unauthorized"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
  /pengujian_mahasiswa/{id}/bidang_ilmu:
    get:
      tags:
        - Pengujian Mahasiswa
      summary: Bidang ilmu pengujian mahasiswa
      description: Data list bidang ilmu.
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID aktivitas mahasiswa
          schema:
            type: string
            format: uuid
      responses:
        200:
          description: Detail bidang ilmu pengujian mahasiswa
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DataPribadiInterestGetDetail"
        401:
          $ref: "#/components/responses/Unauthorized"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
    put:
      tags:
        - Pengujian Mahasiswa
      summary: Mengubah bidang ilmu bimbingan mahasiswa
      description: Data list bidang ilmu. Urutan dalam array menyatakan urutan data bidang ilmu pengujian mahasiswa.
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID aktivitas mahasiswa
          schema:
            type: string
            format: uuid
      requestBody:
        $ref: "#/components/requestBodies/BidangIlmuPostBody"
      responses:
        200:
          description: Detail bidang ilmu pengujian mahasiswa
          content:
            application/json:
              schema:
                $ref:  "#/components/schemas/DataPribadiInterestGetDetail"
        401:
          $ref: "#/components/responses/Unauthorized"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
  /anggota_profesi:
    get:
      tags:
        - Anggota Profesi
      summary: List data anggota profesi
      parameters:
        - $ref: "#/components/parameters/id_sdm"
      security:
        - Bearer: []
      responses:
        200:
          description: Data anggota profesi
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/AsosiasiProfesiGetItem"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
    post:
      tags:
        - Anggota Profesi
      summary: Menambahkan data anggota profesi baru
      security:
        - Bearer: []
      requestBody:
        $ref: "#/components/requestBodies/AsosiasiProfesiPostBody"
      responses:
        200:
          description: Jika sukses akan mengembalikan ID anggota profesi yang dibuat
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NewUUIDResponse"
        400:
          $ref: "#/components/responses/BadRequest"
        401:
          $ref: "#/components/responses/Unauthorized"
        409:
          $ref: "#/components/responses/Duplicate"
        500:
          $ref: "#/components/responses/GeneralError"
  /anggota_profesi/{id}:
    get:
      tags:
        - Anggota Profesi
      summary: Detail anggota profesi
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          example: "e8ccbcb0-4292-4f6e-b749-7dd0e5a78f14"
          description: ID anggota organisasi profesi
          schema:
            type: string
            format: uuid
      responses:
        200:
          description: Detail anggota profesi
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AsosiasiProfesiGetDetail"
        401:
          $ref: "#/components/responses/Unauthorized"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
    delete:
      tags:
        - Anggota Profesi
      summary: Menghapus data anggota profesi
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          example: "e8ccbcb0-4292-4f6e-b749-7dd0e5a78f14"
          description: ID anggota organisasi profesi
          schema:
            type: string
            format: uuid
      responses:
        204:
          description: Jika sukses tidak mengembalikan hasil apapun (response kosong)
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
    put:
      tags:
        - Anggota Profesi
      summary: Mengubah data anggota profesi
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          example: "e8ccbcb0-4292-4f6e-b749-7dd0e5a78f14"
          description: ID anggota organisasi profesi
          schema:
            type: string
            format: uuid
      requestBody:
        $ref: "#/components/requestBodies/AsosiasiProfesiPostBody"
      responses:
        200:
          description: Jika sukses mengembalikan detail dari anggota profesi
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AsosiasiProfesiGetDetail"
        400:
          $ref: "#/components/responses/BadRequest"
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
  /detasering:
    get:
      tags:
        - Detasering
      summary: List data detasering
      parameters:
        - $ref: "#/components/parameters/id_sdm"
      security:
        - Bearer: []
      responses:
        200:
          description: Data detasering
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/DetaseringGetItem"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
    post:
      tags:
        - Detasering
      summary: Menambahkan data detasering baru
      security:
        - Bearer: []
      requestBody:
        $ref: "#/components/requestBodies/DetaseringPostBody"
      responses:
        200:
          description: Jika sukses akan mengembalikan ID detasering yang dibuat
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NewUUIDResponse"
        400:
          $ref: "#/components/responses/BadRequest"
        401:
          $ref: "#/components/responses/Unauthorized"
        409:
          $ref: "#/components/responses/Duplicate"
        500:
          $ref: "#/components/responses/GeneralError"
  /detasering/{id}:
    get:
      tags:
        - Detasering
      summary: Detail detasering
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID detasering
          schema:
            type: string
            format: uuid
      responses:
        200:
          description: Detail detasering
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DetaseringGetDetail"
        401:
          $ref: "#/components/responses/Unauthorized"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
    delete:
      tags:
        - Detasering
      summary: Menghapus data detasering
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID detasering
          schema:
            type: string
            format: uuid
      responses:
        204:
          description: Jika sukses tidak mengembalikan hasil apapun (response kosong)
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
    put:
      tags:
        - Detasering
      summary: Mengubah data detasering
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID detasering
          schema:
            type: string
            format: uuid
      requestBody:
        $ref: "#/components/requestBodies/DetaseringPostBody"
      responses:
        200:
          description: Jika sukses mengembalikan detail dari detasering
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DetaseringGetDetail"
        400:
          $ref: "#/components/responses/BadRequest"
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
  /orasi_ilmiah:
    get:
      tags:
        - Orasi Ilmiah
      summary: List data orasi ilmiah
      parameters:
        - $ref: "#/components/parameters/id_sdm"
      security:
        - Bearer: []
      responses:
        200:
          description: Data orasi ilmiah
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/PembicaraGetItem"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
    post:
      tags:
        - Orasi Ilmiah
      summary: Menambahkan data orasi ilmiah baru
      security:
        - Bearer: []
      requestBody:
        $ref: "#/components/requestBodies/PembicaraPostBody"
      responses:
        200:
          description: Jika sukses akan mengembalikan ID orasi ilmiah yang dibuat
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NewUUIDResponse"
        400:
          $ref: "#/components/responses/BadRequest"
        401:
          $ref: "#/components/responses/Unauthorized"
        409:
          $ref: "#/components/responses/Duplicate"
        500:
          $ref: "#/components/responses/GeneralError"
  /orasi_ilmiah/{id}:
    get:
      tags:
        - Orasi Ilmiah
      summary: Detail orasi ilmiah
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID orasi ilmiah
          schema:
            type: string
            format: uuid
      responses:
        200:
          description: Detail orasi ilmiah
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PembicaraGetDetail"
        401:
          $ref: "#/components/responses/Unauthorized"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
    delete:
      tags:
        - Orasi Ilmiah
      summary: Menghapus data orasi ilmiah
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID orasi ilmiah
          schema:
            type: string
            format: uuid
      responses:
        204:
          description: Jika sukses tidak mengembalikan hasil apapun (response kosong)
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
    put:
      tags:
        - Orasi Ilmiah
      summary: Mengubah data orasi ilmiah
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID orasi ilmiah
          schema:
            type: string
            format: uuid
      requestBody:
        $ref: "#/components/requestBodies/PembicaraPostBody"
      responses:
        200:
          description: Jika sukses mengembalikan detail dari orasi ilmiah
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PembicaraGetDetail"
        400:
          $ref: "#/components/responses/BadRequest"
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
  /bahan_ajar:
    get:
      tags:
        - Bahan Ajar
      summary: List data bahan ajar
      parameters:
        - $ref: "#/components/parameters/id_sdm"
      security:
        - Bearer: []
      responses:
        200:
          description: Data bahan ajar
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/BahanAjarGetItem"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
    post:
      tags:
        - Bahan Ajar
      summary: Menambahkan data bahan ajar baru
      security:
        - Bearer: []
      requestBody:
        $ref: "#/components/requestBodies/BahanAjarPostBody"
      responses:
        200:
          description: Jika sukses akan mengembalikan ID bahan ajar yang dibuat
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NewUUIDResponse"
        400:
          $ref: "#/components/responses/BadRequest"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
  /bahan_ajar/{id}:
    get:
      tags:
        - Bahan Ajar
      summary: Detail bahan ajar
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          example: "574934c7-3441-4a53-8251-4586b311cc74"
          description: ID riwayat bahan ajar
          schema:
            type: string
            format: uuid
      responses:
        200:
          description: Detail bahan ajar
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BahanAjarGetDetail"
        401:
          $ref: "#/components/responses/Unauthorized"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
    delete:
      tags:
        - Bahan Ajar
      summary: Menghapus data bahan ajar
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          example: "574934c7-3441-4a53-8251-4586b311cc74"
          description: ID riwayat bahan ajar
          schema:
            type: string
            format: uuid
      responses:
        204:
          description: Jika sukses tidak mengembalikan hasil apapun (response kosong)
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
    put:
      tags:
        - Bahan Ajar
      summary: Mengubah data bahan ajar
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          example: "574934c7-3441-4a53-8251-4586b311cc74"
          description: ID riwayat bahan ajar
          schema:
            type: string
            format: uuid
      requestBody:
        $ref: "#/components/requestBodies/BahanAjarPostBody"
      responses:
        200:
          description: Jika sukses mengembalikan detail dari bahan ajar
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BahanAjarGetDetail"
        400:
          $ref: "#/components/responses/BadRequest"
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
  /bimbing_dosen:
    get:
      tags:
        - Bimbingan Dosen
      summary: List data pembimbingan dosen
      description: Menampilkan data pembimbingan untuk seorang SDM, baik sebagai pembimbing maupun bimbingan. Data bersumber dari PDDIKTI dan tidak dapat diubah di SISTER.
      parameters:
        - $ref: "#/components/parameters/id_sdm"
      security:
        - Bearer: []
      responses:
        200:
          description: Data pembimbingan dosen
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/BimbingDosenGetItem"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
  /bimbing_dosen/{id}:
    get:
      tags:
        - Bimbingan Dosen
      summary: Detail pembimbingan dosen
      description: Data bersumber dari PDDIKTI dan tidak dapat diubah di SISTER
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID pembimbingan dosen
          schema:
            type: string
            format: uuid
      responses:
        200:
          description: Detail pembimbingan dosen
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BimbingDosenGetDetail"
        401:
          $ref: "#/components/responses/Unauthorized"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
  /tugas_tambahan:
    get:
      tags:
        - Tugas Tambahan
      summary: List data tugas tambahan
      parameters:
        - $ref: "#/components/parameters/id_sdm"
      security:
        - Bearer: []
      responses:
        200:
          description: Data tugas tambahan
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/TugasTambahanGetItem"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
    post:
      tags:
        - Tugas Tambahan
      summary: Menambahkan data tugas tambahan baru
      security:
        - Bearer: []
      requestBody:
        $ref: "#/components/requestBodies/TugasTambahanPostBody"
      responses:
        200:
          description: Jika sukses akan mengembalikan ID tugas tambahan yang dibuat
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NewUUIDResponse"
        400:
          $ref: "#/components/responses/BadRequest"
        401:
          $ref: "#/components/responses/Unauthorized"
        409:
          $ref: "#/components/responses/Duplicate"
        500:
          $ref: "#/components/responses/GeneralError"
  /tugas_tambahan/{id}:
    get:
      tags:
        - Tugas Tambahan
      summary: Detail tugas tambahan
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID tugas tambahan
          schema:
            type: string
            format: uuid
      responses:
        200:
          description: Detail tugas tambahan
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TugasTambahanGetDetail"
        401:
          $ref: "#/components/responses/Unauthorized"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
    delete:
      tags:
        - Tugas Tambahan
      summary: Menghapus data tugas tambahan
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID tugas tambahan
          schema:
            type: string
            format: uuid
      responses:
        204:
          description: Jika sukses tidak mengembalikan hasil apapun (response kosong)
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
    put:
      tags:
        - Tugas Tambahan
      summary: Mengubah data tugas tambahan
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID tugas tambahan
          schema:
            type: string
            format: uuid
      requestBody:
        $ref: "#/components/requestBodies/TugasTambahanPostBody"
      responses:
        200:
          description: Jika sukses mengembalikan detail dari tugas tambahan
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TugasTambahanGetDetail"
        400:
          $ref: "#/components/responses/BadRequest"
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
  /penelitian:
    get:
      tags:
        - Penelitian
      summary: List data penelitian
      parameters:
        - $ref: "#/components/parameters/id_sdm"
        - $ref: "#/components/parameters/per_page"
        - $ref: "#/components/parameters/page"
      security:
        - Bearer: []
      responses:
        200:
          description: Data penelitian
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/LitabmasGetItem"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
    post:
      tags:
        - Penelitian
      summary: Menambahkan data penelitian baru
      security:
        - Bearer: []
      requestBody:
        $ref: "#/components/requestBodies/LitabmasPostBody"
      responses:
        200:
          description: Jika sukses akan mengembalikan ID penelitian yang dibuat
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NewUUIDResponse"
        400:
          $ref: "#/components/responses/BadRequest"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
  /penelitian/{id}:
    get:
      tags:
        - Penelitian
      summary: Detail penelitian
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID penelitian
          schema:
            type: string
            format: uuid
      responses:
        200:
          description: Detail penelitian
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LitabmasGetDetail"
        401:
          $ref: "#/components/responses/Unauthorized"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
    delete:
      tags:
        - Penelitian
      summary: Menghapus data penelitian
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID penelitian
          schema:
            type: string
            format: uuid
      responses:
        204:
          description: Jika sukses tidak mengembalikan hasil apapun (response kosong)
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
    put:
      tags:
        - Penelitian
      summary: Mengubah data penelitian
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID penelitian
          schema:
            type: string
            format: uuid
      requestBody:
        $ref: "#/components/requestBodies/LitabmasPostBody"
      responses:
        200:
          description: Jika sukses mengembalikan detail dari penelitian
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LitabmasGetDetail"
        400:
          $ref: "#/components/responses/BadRequest"
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
  /penelitian/{id}/bidang_ilmu:
    get:
      tags:
        - Penelitian
      summary: Bidang ilmu penelitian
      description: Data list bidang ilmu.
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID penelitian
          schema:
            type: string
            format: uuid
      responses:
        200:
          description: Detail bidang ilmu penelitian
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DataPribadiInterestGetDetail"
        401:
          $ref: "#/components/responses/Unauthorized"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
    put:
      tags:
        - Penelitian
      summary: Mengubah bidang ilmu penelitian
      description: Data list bidang ilmu. Urutan dalam array menyatakan urutan data bidang ilmu penelitian.
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID penelitian
          schema:
            type: string
            format: uuid
      requestBody:
        $ref: "#/components/requestBodies/BidangIlmuPostBody"
      responses:
        200:
          description: Detail bidang ilmu penelitian
          content:
            application/json:
              schema:
                $ref:  "#/components/schemas/DataPribadiInterestGetDetail"
        401:
          $ref: "#/components/responses/Unauthorized"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
  /publikasi:
    get:
      tags:
        - Publikasi
      summary: List data publikasi
      parameters:
        - $ref: "#/components/parameters/id_sdm"
        - $ref: "#/components/parameters/per_page"
        - $ref: "#/components/parameters/page"
      security:
        - Bearer: []
      responses:
        200:
          description: Data publikasi
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/PublikasiGetItem"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
    post:
      tags:
        - Publikasi
      summary: Menambahkan data publikasi baru
      security:
        - Bearer: []
      requestBody:
        $ref: "#/components/requestBodies/PublikasiPostBody"
      responses:
        200:
          description: Jika sukses akan mengembalikan ID publikasi yang dibuat
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NewUUIDResponse"
        400:
          $ref: "#/components/responses/BadRequest"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
  /publikasi/{id}:
    get:
      tags:
        - Publikasi
      summary: Detail publikasi
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID publikasi
          schema:
            type: string
            format: uuid
      responses:
        200:
          description: Detail publikasi
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PublikasiGetDetail"
        401:
          $ref: "#/components/responses/Unauthorized"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
    delete:
      tags:
        - Publikasi
      summary: Menghapus data publikasi
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID publikasi
          schema:
            type: string
            format: uuid
      responses:
        204:
          description: Jika sukses tidak mengembalikan hasil apapun (response kosong)
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
    put:
      tags:
        - Publikasi
      summary: Mengubah data publikasi
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID publikasi
          schema:
            type: string
            format: uuid
      requestBody:
        $ref: "#/components/requestBodies/PublikasiPostBody"
      responses:
        200:
          description: Jika sukses mengembalikan detail dari publikasi
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PublikasiGetDetail"
        400:
          $ref: "#/components/responses/BadRequest"
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
  /publikasi/{id}/bidang_ilmu:
    get:
      tags:
        - Publikasi
      summary: Bidang ilmu publikasi
      description: Data list bidang ilmu publikasi.
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID publikasi
          schema:
            type: string
            format: uuid
      responses:
        200:
          description: Detail bidang ilmu publikasi
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DataPribadiInterestGetDetail"
        401:
          $ref: "#/components/responses/Unauthorized"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
    put:
      tags:
        - Publikasi
      summary: Mengubah bidang ilmu publikasi
      description: Data list bidang ilmu. Urutan dalam array menyatakan urutan data bidang ilmu publikasi.
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID publikasi
          schema:
            type: string
            format: uuid
      requestBody:
        $ref: "#/components/requestBodies/BidangIlmuPostBody"
      responses:
        200:
          description: Detail bidang ilmu publikasi
          content:
            application/json:
              schema:
                $ref:  "#/components/schemas/DataPribadiInterestGetDetail"
        401:
          $ref: "#/components/responses/Unauthorized"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
  /pengabdian:
    get:
      tags:
        - Pengabdian
      summary: List data pengabdian
      parameters:
        - $ref: "#/components/parameters/id_sdm"
        - $ref: "#/components/parameters/per_page"
        - $ref: "#/components/parameters/page"
      security:
        - Bearer: []
      responses:
        200:
          description: Data pengabdian
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/LitabmasGetItem"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
    post:
      tags:
        - Pengabdian
      summary: Menambahkan data pengabdian baru
      security:
        - Bearer: []
      requestBody:
        $ref: "#/components/requestBodies/LitabmasPostBody"
      responses:
        200:
          description: Jika sukses akan mengembalikan ID pengabdian yang dibuat
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NewUUIDResponse"
        400:
          $ref: "#/components/responses/BadRequest"
        401:
          $ref: "#/components/responses/Unauthorized"
        409:
          $ref: "#/components/responses/Duplicate"
        500:
          $ref: "#/components/responses/GeneralError"
  /pengabdian/{id}:
    get:
      tags:
        - Pengabdian
      summary: Detail pengabdian
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID pengabdian
          schema:
            type: string
            format: uuid
      responses:
        200:
          description: Detail pengabdian
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LitabmasGetDetail"
        401:
          $ref: "#/components/responses/Unauthorized"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
    delete:
      tags:
        - Pengabdian
      summary: Menghapus data pengabdian
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID pengabdian
          schema:
            type: string
            format: uuid
      responses:
        204:
          description: Jika sukses tidak mengembalikan hasil apapun (response kosong)
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
    put:
      tags:
        - Pengabdian
      summary: Mengubah data pengabdian
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID pengabdian
          schema:
            type: string
            format: uuid
      requestBody:
        $ref: "#/components/requestBodies/LitabmasPostBody"
      responses:
        200:
          description: Jika sukses mengembalikan detail dari pengabdian
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LitabmasGetDetail"
        400:
          $ref: "#/components/responses/BadRequest"
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
  /pengabdian/{id}/bidang_ilmu:
    get:
      tags:
        - Pengabdian
      summary: Bidang ilmu pengabdian
      description: Data list bidang ilmu.
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID pengabdian
          schema:
            type: string
            format: uuid
      responses:
        200:
          description: Detail bidang ilmu pengabdian
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DataPribadiInterestGetDetail"
        401:
          $ref: "#/components/responses/Unauthorized"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
    put:
      tags:
        - Pengabdian
      summary: Mengubah bidang ilmu pengabdian
      description: Data list bidang ilmu. Urutan dalam array menyatakan urutan data bidang ilmu pengabdian.
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID pengabdian
          schema:
            type: string
            format: uuid
      requestBody:
        $ref: "#/components/requestBodies/BidangIlmuPostBody"
      responses:
        200:
          description: Detail bidang ilmu pengabdian
          content:
            application/json:
              schema:
                $ref:  "#/components/schemas/DataPribadiInterestGetDetail"
        401:
          $ref: "#/components/responses/Unauthorized"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
  /pembicara:
    get:
      tags:
        - Pembicara
      summary: List data pembicara
      parameters:
        - $ref: "#/components/parameters/id_sdm"
      security:
        - Bearer: []
      responses:
        200:
          description: Data pembicara
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/PembicaraGetItem"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
    post:
      tags:
        - Pembicara
      summary: Menambahkan data pembicara baru
      security:
        - Bearer: []
      requestBody:
        $ref: "#/components/requestBodies/PembicaraPostBody"
      responses:
        200:
          description: Jika sukses akan mengembalikan ID pembicara yang dibuat
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NewUUIDResponse"
        400:
          $ref: "#/components/responses/BadRequest"
        401:
          $ref: "#/components/responses/Unauthorized"
        409:
          $ref: "#/components/responses/Duplicate"
        500:
          $ref: "#/components/responses/GeneralError"
  /pembicara/{id}:
    get:
      tags:
        - Pembicara
      summary: Detail pembicara
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID pembicara
          schema:
            type: string
            format: uuid
      responses:
        200:
          description: Detail pembicara
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PembicaraGetDetail"
        401:
          $ref: "#/components/responses/Unauthorized"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
    delete:
      tags:
        - Pembicara
      summary: Menghapus data pembicara
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID pembicara
          schema:
            type: string
            format: uuid
      responses:
        204:
          description: Jika sukses tidak mengembalikan hasil apapun (response kosong)
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
    put:
      tags:
        - Pembicara
      summary: Mengubah data pembicara
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID pembicara
          schema:
            type: string
            format: uuid
      requestBody:
        $ref: "#/components/requestBodies/PembicaraPostBody"
      responses:
        200:
          description: Jika sukses mengembalikan detail dari pembicara
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PembicaraGetDetail"
        400:
          $ref: "#/components/responses/BadRequest"
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
  /jabatan_struktural:
    get:
      tags:
        - Jabatan Struktural
      summary: List data jabatan struktural
      parameters:
        - $ref: "#/components/parameters/id_sdm"
      security:
        - Bearer: []
      responses:
        200:
          description: Data jabatan struktural
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/JabatanStrukturalGetItem"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
    post:
      tags:
        - Jabatan Struktural
      summary: Menambahkan data jabatan struktural baru
      security:
        - Bearer: []
      requestBody:
        $ref: "#/components/requestBodies/JabatanStrukturalPostBody"
      responses:
        200:
          description: Jika sukses akan mengembalikan ID riwayat jabatan struktural yang dibuat
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NewUUIDResponse"
        400:
          $ref: "#/components/responses/BadRequest"
        401:
          $ref: "#/components/responses/Unauthorized"
        409:
          $ref: "#/components/responses/Duplicate"
        500:
          $ref: "#/components/responses/GeneralError"
  /jabatan_struktural/{id}:
    get:
      tags:
        - Jabatan Struktural
      summary: Detail jabatan struktural
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID riwayat jabatan struktural
          schema:
            type: string
            format: uuid
      responses:
        200:
          description: Detail jabatan struktural
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/JabatanStrukturalGetDetail"
        401:
          $ref: "#/components/responses/Unauthorized"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
    delete:
      tags:
        - Jabatan Struktural
      summary: Menghapus data jabatan struktural
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID riwayat jabatan struktural
          schema:
            type: string
            format: uuid
      responses:
        204:
          description: Jika sukses tidak mengembalikan hasil apapun (response kosong)
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
    put:
      tags:
        - Jabatan Struktural
      summary: Mengubah data jabatan struktural
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID riwayat jabatan struktural
          schema:
            type: string
            format: uuid
      requestBody:
        $ref: "#/components/requestBodies/JabatanStrukturalPostBody"
      responses:
        200:
          description: Jika sukses mengembalikan detail dari riwayat jabatan struktural
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/JabatanStrukturalGetDetail"
        400:
          $ref: "#/components/responses/BadRequest"
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
  /pengelola_jurnal:
    get:
      tags:
        - Pengelola Jurnal
      summary: List data pengelola jurnal
      parameters:
        - $ref: "#/components/parameters/id_sdm"
      security:
        - Bearer: []
      responses:
        200:
          description: Data pengelola jurnal
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/PengelolaJurnalGetItem"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
    post:
      tags:
        - Pengelola Jurnal
      summary: Menambahkan data pengelola jurnal baru
      security:
        - Bearer: []
      requestBody:
        $ref: "#/components/requestBodies/PengelolaJurnalPostBody"
      responses:
        200:
          description: Jika sukses akan mengembalikan ID pengelola jurnal yang dibuat
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NewUUIDResponse"
        400:
          $ref: "#/components/responses/BadRequest"
        401:
          $ref: "#/components/responses/Unauthorized"
        409:
          $ref: "#/components/responses/Duplicate"
        500:
          $ref: "#/components/responses/GeneralError"
  /pengelola_jurnal/{id}:
    get:
      tags:
        - Pengelola Jurnal
      summary: Detail pengelola jurnal
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID pengelola jurnal
          schema:
            type: string
            format: uuid
      responses:
        200:
          description: Detail pengelola jurnal
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PengelolaJurnalGetDetail"
        401:
          $ref: "#/components/responses/Unauthorized"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
    delete:
      tags:
        - Pengelola Jurnal
      summary: Menghapus data pengelola jurnal
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID pengelola jurnal
          schema:
            type: string
            format: uuid
      responses:
        204:
          description: Jika sukses tidak mengembalikan hasil apapun (response kosong)
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
    put:
      tags:
        - Pengelola Jurnal
      summary: Mengubah data pengelola jurnal
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID pengelola jurnal
          schema:
            type: string
            format: uuid
      requestBody:
        $ref: "#/components/requestBodies/PengelolaJurnalPostBody"
      responses:
        200:
          description: Jika sukses mengembalikan detail dari pengelola jurnal
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PengelolaJurnalGetDetail"
        400:
          $ref: "#/components/responses/BadRequest"
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
  /penghargaan:
    get:
      tags:
        - Penghargaan
      summary: List data penghargaan
      parameters:
        - $ref: "#/components/parameters/id_sdm"
      security:
        - Bearer: []
      responses:
        200:
          description: Data penghargaan
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/PenghargaanGetItem"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
    post:
      tags:
        - Penghargaan
      summary: Menambahkan data penghargaan baru
      security:
        - Bearer: []
      requestBody:
        $ref: "#/components/requestBodies/PenghargaanPostBody"
      responses:
        200:
          description: Jika sukses akan mengembalikan ID penghargaan yang dibuat
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NewUUIDResponse"
        400:
          $ref: "#/components/responses/BadRequest"
        401:
          $ref: "#/components/responses/Unauthorized"
        409:
          $ref: "#/components/responses/Duplicate"
        500:
          $ref: "#/components/responses/GeneralError"
  /penghargaan/{id}:
    get:
      tags:
        - Penghargaan
      summary: Detail penghargaan
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID penghargaan
          schema:
            type: string
            format: uuid
      responses:
        200:
          description: Detail penghargaan
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PenghargaanGetDetail"
        401:
          $ref: "#/components/responses/Unauthorized"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
    delete:
      tags:
        - Penghargaan
      summary: Menghapus data penghargaan
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID penghargaan
          schema:
            type: string
            format: uuid
      responses:
        204:
          description: Jika sukses tidak mengembalikan hasil apapun (response kosong)
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
    put:
      tags:
        - Penghargaan
      summary: Mengubah data penghargaan
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID penghargaan
          schema:
            type: string
            format: uuid
      requestBody:
        $ref: "#/components/requestBodies/PenghargaanPostBody"
      responses:
        200:
          description: Jika sukses mengembalikan detail dari penghargaan
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PenghargaanGetDetail"
        400:
          $ref: "#/components/responses/BadRequest"
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
  /visiting_scientist:
    get:
      tags:
        - Visiting Scientist
      summary: List data visiting scientist
      parameters:
        - $ref: "#/components/parameters/id_sdm"
      security:
        - Bearer: []
      responses:
        200:
          description: Data visiting scientist
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/VisitingScientistGetItem"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
    post:
      tags:
        - Visiting Scientist
      summary: Menambahkan data visiting scientist baru
      security:
        - Bearer: []
      requestBody:
        $ref: "#/components/requestBodies/VisitingScientistPostBody"
      responses:
        200:
          description: Jika sukses akan mengembalikan ID visiting scientist yang dibuat
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NewUUIDResponse"
        400:
          $ref: "#/components/responses/BadRequest"
        401:
          $ref: "#/components/responses/Unauthorized"
        409:
          $ref: "#/components/responses/Duplicate"
        500:
          $ref: "#/components/responses/GeneralError"
  /visiting_scientist/{id}:
    get:
      tags:
        - Visiting Scientist
      summary: Detail visiting scientist
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID visiting scientist
          schema:
            type: string
            format: uuid
      responses:
        200:
          description: Detail visiting scientist
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/VisitingScientistGetDetail"
        401:
          $ref: "#/components/responses/Unauthorized"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
    delete:
      tags:
        - Visiting Scientist
      summary: Menghapus data visiting scientist
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID visiting scientist
          schema:
            type: string
            format: uuid
      responses:
        204:
          description: Jika sukses tidak mengembalikan hasil apapun (response kosong)
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
    put:
      tags:
        - Visiting Scientist
      summary: Mengubah data visiting scientist
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID visiting scientist
          schema:
            type: string
            format: uuid
      requestBody:
        $ref: "#/components/requestBodies/VisitingScientistPostBody"
      responses:
        200:
          description: Jika sukses mengembalikan detail dari visiting scientist
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/VisitingScientistGetDetail"
        400:
          $ref: "#/components/responses/BadRequest"
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
  /penunjang_lain:
    get:
      tags:
        - Penunjang Lain
      summary: List data penunjang lain
      parameters:
        - $ref: "#/components/parameters/id_sdm"
        - $ref: "#/components/parameters/per_page"
        - $ref: "#/components/parameters/page"
      security:
        - Bearer: []
      responses:
        200:
          description: Data penunjang lain
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/PenunjangLainGetItem"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
    post:
      tags:
        - Penunjang Lain
      summary: Menambahkan data penunjang baru
      security:
        - Bearer: []
      requestBody:
        $ref: "#/components/requestBodies/PenunjangLainPostBody"
      responses:
        200:
          description: Jika sukses akan mengembalikan ID penunjang yang dibuat
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NewUUIDResponse"
        400:
          $ref: "#/components/responses/BadRequest"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
  /penunjang_lain/{id}:
    get:
      tags:
        - Penunjang Lain
      summary: Detail penunjang lain
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID penunjang lain
          schema:
            type: string
            format: uuid
      responses:
        200:
          description: Detail penunjang lain
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PenunjangLainGetDetail"
        401:
          $ref: "#/components/responses/Unauthorized"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
    delete:
      tags:
        - Penunjang Lain
      summary: Menghapus data penunjang lain
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID penunjang lain
          schema:
            type: string
            format: uuid
      responses:
        204:
          description: Jika sukses tidak mengembalikan hasil apapun (response kosong)
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
    put:
      tags:
        - Penunjang Lain
      summary: Mengubah data penunjang lain
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID penunjang lain
          schema:
            type: string
            format: uuid
      requestBody:
        $ref: "#/components/requestBodies/PenunjangLainPostBody"
      responses:
        200:
          description: Jika sukses mengembalikan detail data penunjang lain
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PenunjangLainGetDetail"
        400:
          $ref: "#/components/responses/BadRequest"
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
  /kekayaan_intelektual:
    get:
      tags:
        - Kekayaan Intelektual
      summary: List data paten / kekayaan intelektual
      parameters:
        - $ref: "#/components/parameters/id_sdm"
        - $ref: "#/components/parameters/per_page"
        - $ref: "#/components/parameters/page"
      security:
        - Bearer: []
      responses:
        200:
          description: Data paten / kekayaan intelektual
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/HKIGetItem"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
    post:
      tags:
        - Kekayaan Intelektual
      summary: Menambahkan data paten / kekayaan intelektual baru
      security:
        - Bearer: []
      requestBody:
        $ref: "#/components/requestBodies/HKIPostBody"
      responses:
        200:
          description: Jika sukses akan mengembalikan ID paten / kekayaan intelektual yang dibuat
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NewUUIDResponse"
        400:
          $ref: "#/components/responses/BadRequest"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
  /kekayaan_intelektual/{id}:
    get:
      tags:
        - Kekayaan Intelektual
      summary: Detail paten / kekayaan intelektual
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID paten / kekayaan intelektual
          schema:
            type: string
            format: uuid
      responses:
        200:
          description: Detail paten / kekayaan intelektual
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HKIGetDetail"
        401:
          $ref: "#/components/responses/Unauthorized"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
    delete:
      tags:
        - Kekayaan Intelektual
      summary: Menghapus data paten / kekayaan intelektual
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID paten / kekayaan intelektual
          schema:
            type: string
            format: uuid
      responses:
        204:
          description: Jika sukses tidak mengembalikan hasil apapun (response kosong)
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
    put:
      tags:
        - Kekayaan Intelektual
      summary: Mengubah data paten / kekayaan intelektual
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID paten / kekayaan intelektual
          schema:
            type: string
            format: uuid
      requestBody:
        $ref: "#/components/requestBodies/HKIPostBody"
      responses:
        200:
          description: Jika sukses mengembalikan detail dari paten / kekayaan intelektual
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HKIGetDetail"
        400:
          $ref: "#/components/responses/BadRequest"
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
  /kekayaan_intelektual/{id}/bidang_ilmu:
    get:
      tags:
        - Kekayaan Intelektual
      summary: Bidang ilmu paten / kekayaan intelektual
      description: Data list bidang ilmu paten / kekayaan intelektual.
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID paten / kekayaan intelektual
          schema:
            type: string
            format: uuid
      responses:
        200:
          description: Detail bidang ilmu paten / kekayaan intelektual
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DataPribadiInterestGetDetail"
        401:
          $ref: "#/components/responses/Unauthorized"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
    put:
      tags:
        - Kekayaan Intelektual
      summary: Mengubah bidang ilmu paten / kekayaan intelektual
      description: Data list bidang ilmu. Urutan dalam array menyatakan urutan data bidang ilmu paten / kekayaan intelektual.
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID paten / kekayaan intelektual
          schema:
            type: string
            format: uuid
      requestBody:
        $ref: "#/components/requestBodies/BidangIlmuPostBody"
      responses:
        200:
          description: Detail bidang ilmu paten / kekayaan intelektual
          content:
            application/json:
              schema:
                $ref:  "#/components/schemas/DataPribadiInterestGetDetail"
        401:
          $ref: "#/components/responses/Unauthorized"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
  /pendidikan_formal:
    get:
      tags:
        - Pendidikan Formal
      summary: List data pendidikan formal
      parameters:
        - $ref: "#/components/parameters/id_sdm"
      security:
        - Bearer: []
      responses:
        200:
          description: Data pendidikan formal
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/PendidikanFormalGetItem"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
    post:
      tags:
        - Pendidikan Formal
      summary: Menambahkan data pendidikan formal baru
      description: User WS-BASIC akan membuat ajuan penambahan, sedangkan user WS-PRO akan langsung menambahkan data pendidikan.
      security:
        - Bearer: []
      requestBody:
        $ref: "#/components/requestBodies/PendidikanFormalPostBody"
      responses:
        200:
          description: Jika sukses akan mengembalikan ID riwayat pendidikan formal yang dibuat (WS-PRO)
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NewUUIDResponse"
        204:
          description: Jika sukses tidak mengembalikan hasil apapun (WS-BASIC). Daftar ajuan dapat dilihat pada endpoint /pendidikan_formal/ajuan.
        400:
          $ref: "#/components/responses/BadRequest"
        401:
          $ref: "#/components/responses/Unauthorized"
        409:
          $ref: "#/components/responses/Duplicate"
        500:
          $ref: "#/components/responses/GeneralError"
  /pendidikan_formal/{id}:
    get:
      tags:
        - Pendidikan Formal
      summary: Detail pendidikan formal
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID riwayat pendidikan formal
          schema:
            type: string
            format: uuid
      responses:
        200:
          description: Detail pendidikan formal
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PendidikanFormalGetDetail"
        401:
          $ref: "#/components/responses/Unauthorized"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
    delete:
      tags:
        - Pendidikan Formal
      summary: Menghapus data pendidikan formal
      description: User WS-BASIC akan membuat ajuan penghapusan, sedangkan user WS-PRO akan langsung menghapus data pendidikan.
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID riwayat pendidikan formal
          schema:
            type: string
            format: uuid
      requestBody:
        $ref: "#/components/requestBodies/AjuanPddHapusPostBody"
      responses:
        204:
          description: Jika sukses tidak mengembalikan hasil apapun (response kosong)
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
    put:
      tags:
        - Pendidikan Formal
      summary: Mengubah data pendidikan formal
      description: User WS-BASIC akan membuat ajuan perubahan, sedangkan user WS-PRO akan langsung mengubah data pendidikan.
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID riwayat pendidikan formal
          schema:
            type: string
            format: uuid
      requestBody:
        $ref: "#/components/requestBodies/PendidikanFormalPostBody"
      responses:
        200:
          description: Jika sukses mengembalikan detail dari pendidikan formal (WS-PRO)
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PendidikanFormalGetDetail"
        204:
          description: Jika sukses tidak mengembalikan hasil apapun (WS-BASIC). Daftar ajuan dapat dilihat pada endpoint /pendidikan_formal/ajuan.
        400:
          $ref: "#/components/responses/BadRequest"
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
  /pendidikan_formal/ajuan:
    get:
      tags:
        - Pendidikan Formal
      summary: List ajuan pendidikan formal
      parameters:
        - $ref: "#/components/parameters/id_sdm"
      security:
        - Bearer: []
      responses:
        200:
          description: List data ajuan pendidikan formal
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/AjuanPddGetItem"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
  /pendidikan_formal/ajuan/{id}:
    get:
      tags:
        - Pendidikan Formal
      summary: Detail ajuan pendidikan formal
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID ajuan pendidikan formal
          schema:
            type: string
            format: uuid
      responses:
        200:
          description: Detail ajuan pendidikan formal
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AjuanPddGetDetail"
        401:
          $ref: "#/components/responses/Unauthorized"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
  /diklat:
    get:
      tags:
        - Diklat
      summary: List data diklat
      parameters:
        - $ref: "#/components/parameters/id_sdm"
      security:
        - Bearer: []
      responses:
        200:
          description: Data diklat
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/DiklatGetItem"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
    post:
      tags:
        - Diklat
      summary: Menambahkan data diklat baru
      security:
        - Bearer: []
      requestBody:
        $ref: "#/components/requestBodies/DiklatPostBody"
      responses:
        200:
          description: Jika sukses akan mengembalikan ID diklat yang dibuat
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NewUUIDResponse"
        400:
          $ref: "#/components/responses/BadRequest"
        401:
          $ref: "#/components/responses/Unauthorized"
        409:
          $ref: "#/components/responses/Duplicate"
        500:
          $ref: "#/components/responses/GeneralError"
  /diklat/{id}:
    get:
      tags:
        - Diklat
      summary: Detail diklat
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID diklat
          schema:
            type: string
            format: uuid
      responses:
        200:
          description: Detail diklat
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DiklatGetDetail"
        401:
          $ref: "#/components/responses/Unauthorized"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
    delete:
      tags:
        - Diklat
      summary: Menghapus data diklat
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID diklat
          schema:
            type: string
            format: uuid
      responses:
        204:
          description: Jika sukses tidak mengembalikan hasil apapun (response kosong)
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
    put:
      tags:
        - Diklat
      summary: Mengubah data diklat
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID diklat
          schema:
            type: string
            format: uuid
      requestBody:
        $ref: "#/components/requestBodies/DiklatPostBody"
      responses:
        200:
          description: Jika sukses mengembalikan detail dari diklat
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DiklatGetDetail"
        400:
          $ref: "#/components/responses/BadRequest"
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
  /riwayat_pekerjaan:
    get:
      tags:
        - Riwayat Pekerjaan
      summary: List data riwayat pekerjaan
      parameters:
        - $ref: "#/components/parameters/id_sdm"
      security:
        - Bearer: []
      responses:
        200:
          description: Data riwayat pekerjaan
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/RiwayatPekerjaanGetItem"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
    post:
      tags:
        - Riwayat Pekerjaan
      summary: Menambahkan data riwayat pekerjaan baru
      security:
        - Bearer: []
      requestBody:
        $ref: "#/components/requestBodies/RiwayatPekerjaanPostBody"
      responses:
        200:
          description: Jika sukses akan mengembalikan ID riwayat pekerjaan yang dibuat
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NewUUIDResponse"
        400:
          $ref: "#/components/responses/BadRequest"
        401:
          $ref: "#/components/responses/Unauthorized"
        409:
          $ref: "#/components/responses/Duplicate"
        500:
          $ref: "#/components/responses/GeneralError"
  /riwayat_pekerjaan/{id}:
    get:
      tags:
        - Riwayat Pekerjaan
      summary: Detail riwayat pekerjaan
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          example: 574934c7-3441-4a53-8251-4586b311cc74
          description: ID riwayat pekerjaan
          schema:
            type: string
            format: uuid
      responses:
        200:
          description: Detail riwayat pekerjaan
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RiwayatPekerjaanGetDetail"
        401:
          $ref: "#/components/responses/Unauthorized"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
    delete:
      tags:
        - Riwayat Pekerjaan
      summary: Menghapus data riwayat pekerjaan
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          example: 574934c7-3441-4a53-8251-4586b311cc74
          description: ID riwayat pekerjaan
          schema:
            type: string
            format: uuid
      responses:
        204:
          description: Jika sukses tidak mengembalikan hasil apapun (response kosong)
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
    put:
      tags:
        - Riwayat Pekerjaan
      summary: Mengubah data riwayat pekerjaan
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          example: 574934c7-3441-4a53-8251-4586b311cc74
          description: ID riwayat pekerjaan
          schema:
            type: string
            format: uuid
      requestBody:
        $ref: "#/components/requestBodies/RiwayatPekerjaanPostBody"
      responses:
        200:
          description: Jika sukses mengembalikan detail dari riwayat pekerjaan
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RiwayatPekerjaanGetDetail"
        400:
          $ref: "#/components/responses/BadRequest"
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
  /sertifikasi_profesi:
    get:
      tags:
        - Sertifikasi Profesi
      summary: List data sertifikasi profesi
      parameters:
        - $ref: "#/components/parameters/id_sdm"
      security:
        - Bearer: []
      responses:
        200:
          description: Data sertifikasi profesi
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/SertifikasiProfesiGetItem"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
    post:
      tags:
        - Sertifikasi Profesi
      summary: Menambahkan data sertifikasi profesi baru
      security:
        - Bearer: []
      requestBody:
        $ref: "#/components/requestBodies/SertifikasiProfesiPostBody"
      responses:
        200:
          description: Jika sukses akan mengembalikan ID sertifikasi profesi yang dibuat
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NewUUIDResponse"
        400:
          $ref: "#/components/responses/BadRequest"
        401:
          $ref: "#/components/responses/Unauthorized"
        409:
          $ref: "#/components/responses/Duplicate"
        500:
          $ref: "#/components/responses/GeneralError"
  /sertifikasi_profesi/{id}:
    get:
      tags:
        - Sertifikasi Profesi
      summary: Detail sertifikasi profesi
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          example: "574934c7-3441-4a53-8251-4586b311cc74"
          description: ID riwayat sertifikasi profesi
          schema:
            type: string
            format: uuid
      responses:
        200:
          description: Detail sertifikasi profesi
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SertifikasiProfesiGetDetail"
        401:
          $ref: "#/components/responses/Unauthorized"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
    delete:
      tags:
        - Sertifikasi Profesi
      summary: Menghapus data sertifikasi profesi
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          example: "574934c7-3441-4a53-8251-4586b311cc74"
          description: ID riwayat sertifikasi profesi
          schema:
            type: string
            format: uuid
      responses:
        204:
          description: Jika sukses tidak mengembalikan hasil apapun (response kosong)
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
    put:
      tags:
        - Sertifikasi Profesi
      summary: Mengubah data sertifikasi profesi
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          example: "574934c7-3441-4a53-8251-4586b311cc74"
          description: ID riwayat sertifikasi profesi
          schema:
            type: string
            format: uuid
      requestBody:
        $ref: "#/components/requestBodies/SertifikasiProfesiPostBody"
      responses:
        200:
          description: Jika sukses mengembalikan detail dari sertifikasi profesi
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SertifikasiProfesiGetDetail"
        400:
          $ref: "#/components/responses/BadRequest"
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
  /sertifikasi_dosen:
    get:
      tags:
        - Sertifikasi Dosen
      summary: List data sertifikasi dosen
      parameters:
        - $ref: "#/components/parameters/id_sdm"
      security:
        - Bearer: []
      responses:
        200:
          description: Data sertifikasi dosen
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/SertifikasiDosenGetItem"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
  /sertifikasi_dosen/{id}:
    get:
      tags:
        - Sertifikasi Dosen
      summary: Detail sertifikasi dosen
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID riwayat sertifikasi dosen
          schema:
            type: string
            format: uuid
      responses:
        200:
          description: Detail sertifikasi dosen
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SertifikasiDosenGetDetail"
        401:
          $ref: "#/components/responses/Unauthorized"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
  /sertifikasi_dosen/ajuan:
    get:
      tags:
        - Sertifikasi Dosen
      summary: List ajuan sertifikasi dosen
      parameters:
        - $ref: "#/components/parameters/id_sdm"
      security:
        - Bearer: []
      responses:
        200:
          description: List data ajuan sertifikasi dosen
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/AjuanPddGetItem"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
  /sertifikasi_dosen/ajuan/{id}:
    get:
      tags:
        - Sertifikasi Dosen
      summary: Detail ajuan sertifikasi dosen
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID ajuan sertifikasi dosen
          schema:
            type: string
            format: uuid
      responses:
        200:
          description: Detail ajuan sertifikasi dosen
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AjuanPddGetDetail"
        401:
          $ref: "#/components/responses/Unauthorized"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
  /nilai_tes:
    get:
      tags:
        - Tes
      summary: List data nilai tes
      parameters:
        - $ref: "#/components/parameters/id_sdm"
      security:
        - Bearer: []
      responses:
        200:
          description: Data nilai tes
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/NilaiTesGetItem"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
  /nilai_tes/{id}:
    get:
      tags:
        - Tes
      summary: Detail nilai tes
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID nilai tes
          schema:
            type: string
            format: uuid
      responses:
        200:
          description: Detail nilai tes
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NilaiTesGetDetail"
        401:
          $ref: "#/components/responses/Unauthorized"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
  /nilai_tes/ajuan:
    get:
      tags:
        - Tes
      summary: List ajuan nilai tes
      parameters:
        - $ref: "#/components/parameters/id_sdm"
      security:
        - Bearer: []
      responses:
        200:
          description: List data nilai tes
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/AjuanPddGetItem"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
    post:
      tags:
        - Tes
      summary: Menambahkan ajuan nilai tes baru
      security:
        - Bearer: []
      requestBody:
        $ref: "#/components/requestBodies/NilaiTesPostBody"
      responses:
        200:
          description: Jika sukses akan mengembalikan ID nilai tes yang dibuat
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NewUUIDResponse"
        400:
          $ref: "#/components/responses/BadRequest"
        401:
          $ref: "#/components/responses/Unauthorized"
        409:
          $ref: "#/components/responses/Duplicate"
        500:
          $ref: "#/components/responses/GeneralError"
  /nilai_tes/ajuan/{id}:
    get:
      tags:
        - Tes
      summary: Detail ajuan nilai tes
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID ajuan nilai tes
          schema:
            type: string
            format: uuid
      responses:
        200:
          description: Detail ajuan nilai tes
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AjuanPddGetDetail"
        401:
          $ref: "#/components/responses/Unauthorized"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
    delete:
      tags:
        - Tes
      summary: Menghapus ajuan nilai tes
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID nilai tes
          schema:
            type: string
            format: uuid
      responses:
        204:
          description: Jika sukses tidak mengembalikan hasil apapun (response kosong)
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
    put:
      tags:
        - Tes
      summary: Mengubah ajuan nilai tes
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID nilai tes
          schema:
            type: string
            format: uuid
      requestBody:
        $ref: "#/components/requestBodies/NilaiTesPostBody"
      responses:
        200:
          description: Jika sukses mengembalikan detail dari nilai tes
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NilaiTesGetDetail"
        400:
          $ref: "#/components/responses/BadRequest"
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
  /beasiswa:
    get:
      tags:
        - Beasiswa
      summary: List data beasiswa
      parameters:
        - $ref: "#/components/parameters/id_sdm"
      security:
        - Bearer: []
      responses:
        200:
          description: Data beasiswa
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/BeasiswaGetItem"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
    post:
      tags:
        - Beasiswa
      summary: Menambahkan data beasiswa baru
      security:
        - Bearer: []
      requestBody:
        $ref: "#/components/requestBodies/BeasiswaPostBody"
      responses:
        200:
          description: Jika sukses akan mengembalikan ID beasiswa yang dibuat
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NewUUIDResponse"
        400:
          $ref: "#/components/responses/BadRequest"
        401:
          $ref: "#/components/responses/Unauthorized"
        409:
          $ref: "#/components/responses/Duplicate"
        500:
          $ref: "#/components/responses/GeneralError"
  /beasiswa/{id}:
    get:
      tags:
        - Beasiswa
      summary: Detail beasiswa
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID beasiswa
          schema:
            type: string
            format: uuid
      responses:
        200:
          description: Detail beasiswa
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BeasiswaGetDetail"
        401:
          $ref: "#/components/responses/Unauthorized"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
    delete:
      tags:
        - Beasiswa
      summary: Menghapus data beasiswa
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID beasiswa
          schema:
            type: string
            format: uuid
      responses:
        204:
          description: Jika sukses tidak mengembalikan hasil apapun (response kosong)
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
    put:
      tags:
        - Beasiswa
      summary: Mengubah data beasiswa
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID beasiswa
          schema:
            type: string
            format: uuid
      requestBody:
        $ref: "#/components/requestBodies/BeasiswaPostBody"
      responses:
        200:
          description: Jika sukses mengembalikan detail dari beasiswa
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BeasiswaGetDetail"
        400:
          $ref: "#/components/responses/BadRequest"
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
  /kesejahteraan:
    get:
      tags:
        - Kesejahteraan
      summary: List data kesejahteraan
      parameters:
        - $ref: "#/components/parameters/id_sdm"
      security:
        - Bearer: []
      responses:
        200:
          description: Data kesejahteraan
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/KesejahteraanGetItem"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
    post:
      tags:
        - Kesejahteraan
      summary: Menambahkan data kesejahteraan baru
      security:
        - Bearer: []
      requestBody:
        $ref: "#/components/requestBodies/KesejahteraanPostBody"
      responses:
        200:
          description: Jika sukses akan mengembalikan ID kesejahteraan yang dibuat
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NewUUIDResponse"
        400:
          $ref: "#/components/responses/BadRequest"
        401:
          $ref: "#/components/responses/Unauthorized"
        409:
          $ref: "#/components/responses/Duplicate"
        500:
          $ref: "#/components/responses/GeneralError"
  /kesejahteraan/{id}:
    get:
      tags:
        - Kesejahteraan
      summary: Detail kesejahteraan
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID kesejahteraan
          schema:
            type: string
            format: uuid
      responses:
        200:
          description: Detail kesejahteraan
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/KesejahteraanGetDetail"
        401:
          $ref: "#/components/responses/Unauthorized"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
    delete:
      tags:
        - Kesejahteraan
      summary: Menghapus data kesejahteraan
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID kesejahteraan
          schema:
            type: string
            format: uuid
      responses:
        204:
          description: Jika sukses tidak mengembalikan hasil apapun (response kosong)
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
    put:
      tags:
        - Kesejahteraan
      summary: Mengubah data kesejahteraan
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID kesejahteraan
          schema:
            type: string
            format: uuid
      requestBody:
        $ref: "#/components/requestBodies/KesejahteraanPostBody"
      responses:
        200:
          description: Jika sukses mengembalikan detail dari kesejahteraan
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/KesejahteraanGetDetail"
        400:
          $ref: "#/components/responses/BadRequest"
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
  /tunjangan:
    get:
      tags:
        - Tunjangan
      summary: List data tunjangan
      parameters:
        - $ref: "#/components/parameters/id_sdm"
      security:
        - Bearer: []
      responses:
        200:
          description: Data tunjangan
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/TunjanganGetItem"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
    post:
      tags:
        - Tunjangan
      summary: Menambahkan data tunjangan baru
      security:
        - Bearer: []
      requestBody:
        $ref: "#/components/requestBodies/TunjanganPostBody"
      responses:
        200:
          description: Jika sukses akan mengembalikan ID tunjangan yang dibuat
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NewUUIDResponse"
        400:
          $ref: "#/components/responses/BadRequest"
        401:
          $ref: "#/components/responses/Unauthorized"
        409:
          $ref: "#/components/responses/Duplicate"
        500:
          $ref: "#/components/responses/GeneralError"
  /tunjangan/{id}:
    get:
      tags:
        - Tunjangan
      summary: Detail tunjangan
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID tunjangan
          schema:
            type: string
            format: uuid
      responses:
        200:
          description: Detail tunjangan
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TunjanganGetDetail"
        401:
          $ref: "#/components/responses/Unauthorized"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
    delete:
      tags:
        - Tunjangan
      summary: Menghapus data tunjangan
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID tunjangan
          schema:
            type: string
            format: uuid
      responses:
        204:
          description: Jika sukses tidak mengembalikan hasil apapun (response kosong)
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
    put:
      tags:
        - Tunjangan
      summary: Mengubah data tunjangan
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID tunjangan
          schema:
            type: string
            format: uuid
      requestBody:
        $ref: "#/components/requestBodies/TunjanganPostBody"
      responses:
        200:
          description: Jika sukses mengembalikan detail dari tunjangan
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TunjanganGetDetail"
        400:
          $ref: "#/components/responses/BadRequest"
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
  /dokumen:
    get:
      tags:
        - Dokumen
      summary: List dokumen milik seorang SDM
      parameters:
        - $ref: "#/components/parameters/id_sdm"
      security:
        - Bearer: []
      responses:
        200:
          description: Data dokumen
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/DokumenDetail"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
    post:
      tags:
        - Dokumen
      summary: Mengunggah dokumen baru beserta metadatanya
      description: Dokumen dapat berupa unggahan atau tautan. Request harus dalam format multipart/form-data. Jika file dikosongkan, tautan harus diberikan.
      security:
        - Bearer: []
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                file:
                  description: File dokumen yang diunggah
                  type: string
                  format: binary
                id_sdm:
                  description: ID SDM, pemilik dokumen ini
                  type: string
                  format: uuid
                id_jenis_dokumen:
                  description: ID jenis dokumen
                  example: 3
                  type: integer
                nama:
                  description: Nama dokumen
                  example: Dokumen Pendukung Kegiatan XYZ
                  type: string
                tautan:
                  description: Tautan dokumen jika ada
                  example: https://kampus.ac.id/files/DOKUMEN1.pdf
                  type: string
                keterangan:
                  description: Keterangan dokumen
                  type: string
              required:
                - id_jenis_dokumen
      responses:
        200:
          description: Jika sukses akan mengembalikan ID dokumen yang dibuat
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NewUUIDResponse"
        400:
          $ref: "#/components/responses/BadRequest"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
  /dokumen/{id}:
    get:
      tags:
        - Dokumen
      summary: Metadata dokumen
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID dokumen
          schema:
            type: string
            format: uuid
      responses:
        200:
          description: Metadata dokumen
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DokumenDetail"
        401:
          $ref: "#/components/responses/Unauthorized"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
    delete:
      tags:
        - Dokumen
      summary: Menghapus dokumen
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID dokumen
          schema:
            type: string
            format: uuid
      responses:
        204:
          description: Jika sukses tidak mengembalikan hasil apapun (response kosong)
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
    post:
      tags:
        - Dokumen
      summary: Mengubah dokumen dan / atau metadatanya
      description: Dokumen dapat berupa unggahan atau tautan. Request harus dalam format multipart/form-data. Jika file dikosongkan, tautan harus diberikan. Menggunakan POST bukan PUT karena keterbatasan PHP.
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID dokumen
          schema:
            type: string
            format: uuid
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                file:
                  description: File dokumen baru untuk menimpa yang lama. Jika dikosongkan
                    hanya mengubah metadata.
                  type: string
                  format: binary
                id_jenis_dokumen:
                  description: ID jenis dokumen
                  example: 3
                  type: integer
                nama:
                  description: Nama dokumen
                  example: Dokumen Pendukung Kegiatan XYZ
                  type: string
                tautan:
                  description: Tautan dokumen jika ada
                  example: https://kampus.ac.id/files/DOKUMEN1.pdf
                  type: string
                keterangan:
                  description: Keterangan dokumen
                  type: string
      responses:
        200:
          description: Jika sukses akan mengembalikan metadata dokumen
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DokumenDetail"
        400:
          $ref: "#/components/responses/BadRequest"
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
  /dokumen/{id}/download:
    get:
      tags:
        - Dokumen
      summary: Mengunduh dokumen
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID dokumen
          schema:
            type: string
            format: uuid
      responses:
        200:
          description: File dokumen. Content-type response sesuai data media_type yang
            tersimpan di database.
          content:
            application/json:
              schema:
                type: string
                format: binary
        400:
          $ref: "#/components/responses/Unauthorized"
        401:
          $ref: "#/components/responses/Unauthorized"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
  /kolaborator_eksternal:
    get:
      tags:
        - Kolaborator Eksternal
      summary: Pencarian data kolaborator eksternal
      description: Pencarian data kolaborator eksternal yang mengandung nama atau NIK sesuai input. Jika keyword dikosongkan akan mengeluarkan data seluruh kolaborator.
      parameters:
        - in: query
          name: nama
          example: rizky
          required: false
          description: Keyword nama untuk pencarian
          schema:
            type: string
        - in: query
          name: nik
          example: "3271046504930002"
          required: false
          description: Keyword NIK untuk pencarian
          schema:
            type: string
      security:
        - Bearer: []
      responses:
        200:
          description: Data kolaborator eksternal
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/NonCivitasGetItem"
        401:
          $ref: "#/components/responses/Unauthorized"
        500:
          $ref: "#/components/responses/GeneralError"
    post:
      tags:
        - Kolaborator Eksternal
      summary: Menambahkan data kolaborator eksternal baru
      security:
        - Bearer: []
      requestBody:
        $ref: "#/components/requestBodies/NonCivitasPostBody"
      responses:
        200:
          description: Jika sukses akan mengembalikan ID kolaborator eksternal (id_orang) yang dibuat
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NewUUIDResponse"
        400:
          $ref: "#/components/responses/BadRequest"
        401:
          $ref: "#/components/responses/Unauthorized"
        409:
          $ref: "#/components/responses/Duplicate"
        500:
          $ref: "#/components/responses/GeneralError"
  /kolaborator_eksternal/{id}:
    get:
      tags:
        - Kolaborator Eksternal
      summary: Detail kolaborator eksternal
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID kolaborator eksternal (id_orang)
          schema:
            type: string
            format: uuid
      responses:
        200:
          description: Detail kolaborator eksternal
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NonCivitasGetDetail"
        401:
          $ref: "#/components/responses/Unauthorized"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
    delete:
      tags:
        - Kolaborator Eksternal
      summary: Menghapus data kolaborator eksternal
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID kolaborator eksternal (id_orang)
          schema:
            type: string
            format: uuid
      responses:
        204:
          description: Jika sukses tidak mengembalikan hasil apapun (response kosong)
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
    put:
      tags:
        - Kolaborator Eksternal
      summary: Mengubah data kolaborator eksternal
      security:
        - Bearer: []
      parameters:
        - in: path
          name: id
          required: true
          description: ID kolaborator eksternal (id_orang)
          schema:
            type: string
            format: uuid
      requestBody:
        $ref: "#/components/requestBodies/NonCivitasPostBody"
      responses:
        200:
          description: Jika sukses mengembalikan detail dari kolaborator eksternal
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NonCivitasGetDetail"
        400:
          $ref: "#/components/responses/BadRequest"
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        404:
          $ref: "#/components/responses/NotFound"
        500:
          $ref: "#/components/responses/GeneralError"
  /bkd/laporan_akhir_bkd:
      get:
        tags:
          - BKD
        summary: Laporan Akhir BKD
        security:
          - Bearer: []
        parameters:
          - $ref: "#/components/parameters/id_sdm"
        responses:
          200:
            description: Data Laporan Akhir BKD
            content:
              application/json:
                schema:
                  type: array
                  items:
                    type: object
                    properties:
                      id_reg_ptk:
                        type: uuid
                        description: ID Registrasi PTK
                        example: "00000000-0000-0000-0000-000000000000"
                      id_smt:
                        type: bpchar
                        description: ID Semester
                        example: "20221"
                      sks_kinerja_ajar:
                        type: numeric
                        description: SKS Kinerja Ajar
                        example: "11.5000"
                      sks_lebih_ajar:
                        type: numeric
                        description: SKS Lebih Ajar
                        example: "11.4375"
                      sks_kinerja_didik:
                        type: numeric
                        description: SKS Kinerja Didik
                        example: "0.0000"
                      sks_lebih_didik:
                        type: numeric
                        description: SKS Lebih Didik
                        example: "0.0000"
                      sks_kinerja_lit:
                        type: numeric
                        description: SKS Kinerja Lit
                        example: "0.4001"
                      sks_lebih_lit:
                        type: numeric
                        description: SKS Lebih Lit
                        example: "5.0000"
                      sks_kinerja_pengmas:
                        type: numeric
                        description: SKS Kinerja Pengmas
                        example: "2.2500"
                      sks_lebih_pengmas:
                        type: numeric
                        description: SKS Lebih Pengmas
                        example: "0.0000"
                      sks_kinerja_penunjang:
                        type: numeric
                        description: SKS Kinerja Penunjang
                        example: "0.5000"
                      sks_lebih_tunjang:
                        type: numeric
                        description: SKS Lebih Tunjang
                        example: "0.0000"
                      sks_kinerja:
                        type: numeric
                        description: SKS Kinerja
                        example: "14.6501"
                      sks_lebih:
                        type: numeric
                        description: SKS Lebih
                        example: "16.4375"
                      stat_kewajiban:
                        type: numeric
                        description: Status Kewajiban
                        example: "1"
                      stat_tugas:
                        type: bpchar
                        description: Status Tugas
                        example: "B"
                      stat_belajar:
                        type: bpchar
                        description: Status Belajar
                        example: "A"
                      id_jabfung:
                        type: numeric
                        description: ID Jabatan Fungsional
                        example: "43"
                      simpulan_asesor:
                        type: bpchar
                        description: Simpulan Asesor
                        example: "M"
          400:
            $ref: "#/components/responses/BadRequest"
          401:
            $ref: "#/components/responses/Unauthorized"
          404:
            $ref: "#/components/responses/NotFound"
          500:
            $ref: "#/components/responses/GeneralError"
  /bkd/pendidikan:
      get:
        tags:
          - BKD
        summary: List data BKD pendidikan berdasarkan semester
        security:
          - Bearer: []
        parameters:
          - $ref: "#/components/parameters/id_sdm"
          - in: query
            name: id_smt
            required: true
            description: ID semester dari [/referensi/semester](#get-/referensi/semester).
            example: "20201"
            schema:
              type: string
        responses:
          200:
            description: Data BKD pendidikan berdasarkan semester
            content:
              application/json:
                schema:
                  type: array
                  items:
                    type: object
                    properties:
                      nm_sdm:
                        type: string
                        description: Nama Dosen
                        example: FULAN SUBARKAH
                      nidn:
                        type: string
                        description: Nomor Induk Dosen Nasional
                        example: 2264101121
                      id_smt:
                        type: string
                        description: ID Semester
                        example: 20201
                      unsur:
                        type: string
                        description: Unsur BKD
                        example: Pendidikan
                      judul_keg:
                        type: string
                        description: Judul Kegiatan
                        example: Doktor
                      id_katgiat:
                        type: integer
                        description: ID Kategori Kegiatan
                        example: 100101
                      nm_kat:
                        type: string
                        description: Nama Kategori
                        example: Doktor
                      beban_sks:
                        type: number
                        description: Beban SKS
                        example: 12
                      nilai:
                        type: number
                        description: Nilai BKD
                        example: 12
          400:
            $ref: "#/components/responses/BadRequest"
          401:
            $ref: "#/components/responses/Unauthorized"
          404:
            $ref: "#/components/responses/NotFound"
          500:
            $ref: "#/components/responses/GeneralError"
  /bkd/ajar:
      get:
        tags:
          - BKD
        summary: List data BKD pengajaran berdasarkan semester
        security:
          - Bearer: []
        parameters:
          - $ref: "#/components/parameters/id_sdm"
          - in: query
            name: id_smt
            required: true
            description: ID semester dari [/referensi/semester](#get-/referensi/semester).
            example: "20201"
            schema:
              type: string
        responses:
          200:
            description: Data BKD pengajaran berdasarkan semester
            content:
              application/json:
                schema:
                  type: array
                  items:
                    type: object
                    properties:
                      nm_sdm:
                        type: string
                        description: Nama Dosen
                        example: FULAN SUBARKAH
                      nidn:
                        type: string
                        description: Nomor Induk Dosen Nasional
                        example: 2264101121
                      id_smt:
                        type: string
                        description: ID Semester
                        example: 20201
                      unsur:
                        type: string
                        description: Unsur BKD
                        example: Pendidikan
                      judul_keg:
                        type: string
                        description: Judul Kegiatan
                        example: Doktor
                      id_katgiat:
                        type: integer
                        description: ID Kategori Kegiatan
                        example: 100101
                      nm_kat:
                        type: string
                        description: Nama Kategori
                        example: Doktor
                      beban_sks:
                        type: number
                        description: Beban SKS
                        example: 12
                      nilai:
                        type: number
                        description: Nilai BKD
                        example: 12
          400:
            $ref: "#/components/responses/BadRequest"
          401:
            $ref: "#/components/responses/Unauthorized"
          404:
            $ref: "#/components/responses/NotFound"
          500:
            $ref: "#/components/responses/GeneralError"
  /bkd/tunjang:
      get:
        tags:
          - BKD
        summary: List data BKD penunjang berdasarkan semester
        security:
          - Bearer: []
        parameters:
          - $ref: "#/components/parameters/id_sdm"
          - in: query
            name: id_smt
            required: true
            description: ID semester dari [/referensi/semester](#get-/referensi/semester).
            example: "20201"
            schema:
              type: string
        responses:
          200:
            description: Data BKD penunjang berdasarkan semester
            content:
              application/json:
                schema:
                  type: array
                  items:
                    type: object
                    properties:
                      nm_sdm:
                        type: string
                        description: Nama Dosen
                        example: FULAN SUBARKAH
                      nidn:
                        type: string
                        description: Nomor Induk Dosen Nasional
                        example: 2264101121
                      id_smt:
                        type: string
                        description: ID Semester
                        example: 20201
                      unsur:
                        type: string
                        description: Unsur BKD
                        example: Pendidikan
                      judul_keg:
                        type: string
                        description: Judul Kegiatan
                        example: Doktor
                      id_katgiat:
                        type: integer
                        description: ID Kategori Kegiatan
                        example: 100101
                      nm_kat:
                        type: string
                        description: Nama Kategori
                        example: Doktor
                      beban_sks:
                        type: number
                        description: Beban SKS
                        example: 12
                      nilai:
                        type: number
                        description: Nilai BKD
                        example: 12
          400:
            $ref: "#/components/responses/BadRequest"
          401:
            $ref: "#/components/responses/Unauthorized"
          404:
            $ref: "#/components/responses/NotFound"
          500:
            $ref: "#/components/responses/GeneralError"
  /bkd/pengmas:
      get:
        tags:
          - BKD
        summary: List data BKD pengmas berdasarkan semester
        security:
          - Bearer: []
        parameters:
          - $ref: "#/components/parameters/id_sdm"
          - in: query
            name: id_smt
            required: true
            description: ID semester dari [/referensi/semester](#get-/referensi/semester).
            example: "20201"
            schema:
              type: string
        responses:
          200:
            description: Data BKD pengmas berdasarkan semester
            content:
              application/json:
                schema:
                  type: array
                  items:
                    type: object
                    properties:
                      nm_sdm:
                        type: string
                        description: Nama Dosen
                        example: FULAN SUBARKAH
                      nidn:
                        type: string
                        description: Nomor Induk Dosen Nasional
                        example: 2264101121
                      id_smt:
                        type: string
                        description: ID Semester
                        example: 20201
                      unsur:
                        type: string
                        description: Unsur BKD
                        example: Pendidikan
                      judul_keg:
                        type: string
                        description: Judul Kegiatan
                        example: Doktor
                      id_katgiat:
                        type: integer
                        description: ID Kategori Kegiatan
                        example: 100101
                      nm_kat:
                        type: string
                        description: Nama Kategori
                        example: Doktor
                      beban_sks:
                        type: number
                        description: Beban SKS
                        example: 12
                      nilai:
                        type: number
                        description: Nilai BKD
                        example: 12
          400:
            $ref: "#/components/responses/BadRequest"
          401:
            $ref: "#/components/responses/Unauthorized"
          404:
            $ref: "#/components/responses/NotFound"
          500:
            $ref: "#/components/responses/GeneralError"
  /bkd/penelitian:
      get:
        tags:
          - BKD
        summary: List data BKD penelitian berdasarkan semester
        security:
          - Bearer: []
        parameters:
          - $ref: "#/components/parameters/id_sdm"
          - in: query
            name: id_smt
            required: true
            description: ID semester dari [/referensi/semester](#get-/referensi/semester).
            example: "20201"
            schema:
              type: string
        responses:
          200:
            description: Data BKD penelitian berdasarkan semester
            content:
              application/json:
                schema:
                  type: array
                  items:
                    type: object
                    properties:
                      nm_sdm:
                        type: string
                        description: Nama Dosen
                        example: FULAN SUBARKAH
                      nidn:
                        type: string
                        description: Nomor Induk Dosen Nasional
                        example: 2264101121
                      id_smt:
                        type: string
                        description: ID Semester
                        example: 20201
                      unsur:
                        type: string
                        description: Unsur BKD
                        example: Pendidikan
                      judul_keg:
                        type: string
                        description: Judul Kegiatan
                        example: Doktor
                      id_katgiat:
                        type: integer
                        description: ID Kategori Kegiatan
                        example: 100101
                      nm_kat:
                        type: string
                        description: Nama Kategori
                        example: Doktor
                      beban_sks:
                        type: number
                        description: Beban SKS
                        example: 12
                      nilai:
                        type: number
                        description: Nilai BKD
                        example: 12
          400:
            $ref: "#/components/responses/BadRequest"
          401:
            $ref: "#/components/responses/Unauthorized"
          404:
            $ref: "#/components/responses/NotFound"
          500:
            $ref: "#/components/responses/GeneralError"
components:
  securitySchemes:
    Bearer:
      type: apiKey
      name: Authorization
      description: Token yang didapat dari [/authorize](#post-/authorize) (awali dengan `Bearer ` diikuti spasi)
      in: header
  parameters:
    page:
      in: query
      name: page
      required: false
      example: 1
      description: Page/Halaman
      default: 1
      schema:
        type: integer
        default: 1
    per_page:
      in: query
      name: per_page
      required: false
      example: 100
      description: Rows per Page/Jumlah data per halaman
      default: 100
      schema:
        type: integer
        default: 100
    id_sdm:
      in: query
      name: id_sdm
      required: true
      description: ID SDM
      example: "8fe6735c-6e28-43e7-9eb3-3ae092bbcd62"
      schema:
        type: string
        format: uuid
    id_sdm_path:
      in: path
      name: id_sdm
      required: true
      description: ID SDM
      example: "8fe6735c-6e28-43e7-9eb3-3ae092bbcd62"
      schema:
        type: string
        format: uuid
    id_semester:
      in: query
      name: id_semester
      description: ID semester dari [/referensi/semester](#get-/referensi/semester). Jika dikosongkan akan mengambil semua semester.
      example: "20201"
      schema:
        type: string
  responses:
    Unauthorized:
      description: Jika credential salah atau sudah expired
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ErrorResponse"
          example:
            message: Token sudah expired
            detail: null
    BadRequest:
      description: Jika input data tidak valid
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ErrorResponse"
          example:
            message: Input data tidak valid
            detail: ID SDM harus diisi
    Forbidden:
      description: Jika user tidak memiliki akses ke resource yang dimaksud, atau tidak diizinkan melakukan perubahan data
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ErrorResponse"
          example:
            message: Tidak dapat disimpan
            detail: "Data tidak bisa dihapus karena sedang digunakan untuk BKD / Pengajuan Angka Kredit"
    NotFound:
      description: Jika path endpoint API yang di-request tidak ada, atau data dengan ID tertentu tidak ditemukan / sudah dihapus
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ErrorResponse"
          example:
            message: Data tidak ditemukan
            detail: "ID 00000000-0000-0000-0000-000000000000 tidak ditemukan"
    Duplicate:
      description: Jika input data duplikat atau sudah ada
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ErrorResponse"
          example:
            message: Data yang di-input sudah ada (duplikat)
            detail: "Existing ID: 00000000-0000-0000-0000-000000000000"
    GeneralError:
      description: Jika terjadi error di server
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ErrorResponse"
          example:
            message: Gagal menyimpan ke database
            detail: "Undefined index 'id_sdm'"
  requestBodies:
    DataPribadiKeluargaPostBody:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/DataPribadiKeluargaPostBody"
      description: Data pokok keluarga. File dokumen terkait data ini diunggah di endpoint [/dokumen](#get-/dokumen).
    DataPribadiAlamatPostBody:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/DataPribadiAlamatPostBody"
      description: Data pokok alamat dan kontak. File dokumen terkait data ini diunggah di endpoint [/dokumen](#get-/dokumen).
    DataPribadiInterestPostBody:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/DataPribadiInterestPostBody"
      description: Data list bidang ilmu. Urutan dalam array menyatakan urutan data bidang ilmu milik SDM.
    DataPribadiLainPostBody:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/DataPribadiLainPostBody"
      description: Data pokok lain. File dokumen terkait data ini diunggah di endpoint [/dokumen](#get-/dokumen).
    BidangIlmuPostBody:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/DataPribadiInterestPostBody"
      description: Data list bidang ilmu. Urutan dalam array menyatakan urutan data bidang ilmu.
    InpassingPostBody:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/InpassingPostBody"
      description: Data inpassing. File dokumen terkait data ini diunggah di endpoint [/dokumen](#get-/dokumen).
    JabatanFungsionalPostBody:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/JabatanFungsionalPostBody"
      description: Data jabatan fungsional dosen. File dokumen terkait data ini diunggah di endpoint [/dokumen](#get-/dokumen).
    KepangkatanPostBody:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/KepangkatanPostBody"
      description: Data kepangkatan. File dokumen terkait data ini diunggah di endpoint [/dokumen](#get-/dokumen).
    DetaseringPostBody:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/DetaseringPostBody"
      description: Data detasering. File dokumen terkait data ini diunggah di endpoint [/dokumen](#get-/dokumen).
    PembicaraPostBody:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/PembicaraPostBody"
      description: Data orasi ilmiah. File dokumen terkait data ini diunggah di endpoint [/dokumen](#get-/dokumen).
    BahanAjarPostBody:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/BahanAjarPostBody"
      description: Data bahan ajar. File dokumen terkait data ini diunggah di endpoint [/dokumen](#get-/dokumen).
    TugasTambahanPostBody:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/TugasTambahanPostBody"
      description: Data tugas tambahan. File dokumen terkait data ini diunggah di endpoint [/dokumen](#get-/dokumen).
    LitabmasPostBody:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/LitabmasPostBody"
      description: Data penelitian/pengabdian. File dokumen terkait data ini diunggah di endpoint [/dokumen](#get-/dokumen).
    PublikasiPostBody:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/PublikasiPostBody"
      description: Data publikasi. File dokumen terkait data ini diunggah di endpoint [/dokumen](#get-/dokumen).
    HKIPostBody:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/HKIPostBody"
      description: Data paten / kekayaan intelektual. File dokumen terkait data ini diunggah di endpoint [/dokumen](#get-/dokumen).
    JabatanStrukturalPostBody:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/JabatanStrukturalPostBody"
      description: Data jabatan struktural. File dokumen terkait data ini diunggah di endpoint [/dokumen](#get-/dokumen).
    PengelolaJurnalPostBody:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/PengelolaJurnalPostBody"
      description: Data pengelola jurnal. File dokumen terkait data ini diunggah di endpoint [/dokumen](#get-/dokumen).
    PenghargaanPostBody:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/PenghargaanPostBody"
      description: Data penghargaan. File dokumen terkait data ini diunggah di endpoint [/dokumen](#get-/dokumen).
    VisitingScientistPostBody:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/VisitingScientistPostBody"
      description: Data visiting scientist. File dokumen terkait data ini diunggah di endpoint [/dokumen](#get-/dokumen).
    PenunjangLainPostBody:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/PenunjangLainPostBody"
      description: Data penunjang lain. File dokumen terkait data ini diunggah di endpoint [/dokumen](#get-/dokumen).
    SertifikasiProfesiPostBody:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/SertifikasiProfesiPostBody"
      description: Data sertifikasi profesi.
    NilaiTesPostBody:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/NilaiTesPostBody"
      description: Data nilai tes. File dokumen terkait data ini diunggah di endpoint [/dokumen](#get-/dokumen).
    PendidikanFormalPostBody:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/PendidikanFormalPostBody"
      description: Data pendidikan formal. File dokumen terkait data ini diunggah di endpoint [/dokumen](#get-/dokumen).
    DiklatPostBody:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/DiklatPostBody"
      description: Data diklat. File dokumen terkait data ini diunggah di endpoint [/dokumen](#get-/dokumen).
    RiwayatPekerjaanPostBody:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/RiwayatPekerjaanPostBody"
      description: Data riwayat pekerjaan.
    AsosiasiProfesiPostBody:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/AsosiasiProfesiPostBody"
      description: Data anggota profesi. File dokumen terkait data ini diunggah di endpoint [/dokumen](#get-/dokumen).
    NonCivitasPostBody:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/NonCivitasPostBody"
      description: Data kolaborator eksternal (non-civitas)
    BeasiswaPostBody:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/BeasiswaPostBody"
      description: Data beasiswa.
    KesejahteraanPostBody:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/KesejahteraanPostBody"
      description: Data kesejahteraan.
    TunjanganPostBody:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/TunjanganPostBody"
      description: Data tunjangan.
    AjuanPddHapusPostBody:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/AjuanPddHapusPostBody"
      description: Data pendukung ajuan hapus PDD.
  schemas:
    ErrorResponse:
      type: object
      properties:
        message:
          type: string
          description: Pesan error
          example: Data tidak ditemukan
        detail:
          type: string
          description: Penjelasan detail error atau pesan exception
          example: Data dengan ID 12345 tidak ditemukan
    NewUUIDResponse:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: ID object yang dibuat
          example: "574934c7-3441-4a53-8251-4586b311cc74"
    AuthParameter:
      type: object
      required:
        - username
        - password
        - id_pengguna
      properties:
        username:
          type: string
          description: Username dari man-akses
          example: knNcb8iOFtKOxY1N8mUfVY5mqArRyecX+RH+pLOndCE=
        password:
          type: string
          description: Password dari man-akses
          example: MycV1kHjaHWJ97zYzg4YiReNBpIj40ZVnxrFXWkmi0zooQDExe6sJ6HLHVoX8BJN
        id_pengguna:
          type: string
          description: ID pengguna
          example: "acecd7e5-330a-48e8-98d0-12cd46500408"
    AuthToken:
      type: object
      properties:
        token:
          type: string
          description: Bearer token untuk otorisasi web service
          example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZF90b2tlbiI6ImI3NWM4Yzk0MTEwMTlkZGJjOGMxZDE2ODUzY2QwMGI5IiwiaWRfcGVuZ2d1bmEiOiJhY2VjZDdlNS0zMzBhLTQ4ZTgtOThkMC0xMmNkNDY1MDA0MDgiLCJpYXQiOjE1MTYyMzkwMjJ9.MIMAHM-5iKx4h6YDpQrDtAOEdFtpXp3QUE041eeJ1BM
        role:
          type: string
          description: Nama role pengguna
          example: "Sister-WS Consumer Basic"
    ReferensiIntegerResult:
      type: object
      properties:
        id:
          type: integer
          description: ID objek
          example: 1
        nama:
          type: string
          description: Nama objek
          example: Nama Objek
    ReferensiUuidResult:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: ID objek
          example: "b2f68ea2-06c0-4a72-ac4f-cf8e3e3dd4dd"
        nama:
          type: string
          description: Nama objek
          example: Nama Objek
    ReferensiGelarAkademikResult:
      type: object
      properties:
        id:
          type: integer
          description: ID objek
          example: 1
        nama:
          type: string
          description: Nama objek
          example: Nama Objek
        singkatan:
          type: string
          description: Singkatan objek
          example: Singkatan Objek
    ReferensiProfilPtResult:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: ID PT
          example: "4a25fe6e-ed7f-4671-934c-46434701e184"
        kode_perguruan_tinggi:
          type: string
          description: Kode PT
          example: "006003"
        nama_perguruan_tinggi:
          type: string
          example: Akademi Komunitas Negeri Aceh Barat
        telepon:
          type: string
          example: "06557110271"
        faximile:
          type: string
          example: "06557110271"
        email:
          type: string
          example: info@aknacehbarat.ac.id
        website:
          type: string
          example: http://aknacehbarat.ac.id/
        jalan:
          type: string
          example: Jalan Iskandar Muda Komplek STTU Alue Penyareng
        dusun:
          type: string
          example: null
        rt:
          type: integer
          example: 99
        rw:
          type: integer
          example: 88
        kelurahan:
          type: string
          example:
        kode_pos:
          type: string
          example:
        id_wilayah:
          type: string
          example: "060612"
        nama_wilayah:
          type: string
          example: Kec. Meureubo
        lintang:
          type: number
          example: 4.1383730
        bujur:
          type: number
          example: 96.2106520
        sk_pendirian:
          type: string
          example: Permendikbud 155 Tahun 2014
        tanggal_sk_pendirian:
          type: string
          format: date
          example: "2014-10-17"
        id_status_milik:
          type: string
          example: 1
        nama_status_milik:
          type: string
          example: Pemerintah Pusat
        status_perguruan_tinggi:
          type: string
          example: A
        sk_izin_operasional:
          type: string
          format: nullable
        tanggal_izin_operasional:
          type: string
          format: nullable
    ReferensiUnitKerjaResult:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: ID objek
          example: "b2f68ea2-06c0-4a72-ac4f-cf8e3e3dd4dd"
        nama:
          type: string
          description: Nama unit kerja
          example: Nama Unit Kerja
        id_jenis_unit:
          type: integer
          enum:
                - 1
                - 2
                - 3
                - 4
                - 5
                - 6
                - 7
                - 8
          description: 1=Fakultas, 2=Jurusan, 3=Program Studi, 4=Laboratorium, 5=UPT, 6=Penyelenggara MKU, 7=Rektorat, 8=Unit Kerja
          example: 1
    ReferensiDetailUnitKerjaResult:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: ID objek
          example: "b2f68ea2-06c0-4a72-ac4f-cf8e3e3dd4dd"
        kode_unit:
          type: string
          description: Kode unit kerja
          example: Kode Unit Kerja
        nama:
          type: string
          description: Nama unit kerja
          example: Nama Unit Kerja
        id_jenis_unit:
          type: integer
          enum:
                - 1
                - 2
                - 3
                - 4
                - 5
                - 6
                - 7
                - 8
          description: 1=Fakultas, 2=Jurusan, 3=Program Studi, 4=Laboratorium, 5=UPT, 6=Penyelenggara MKU, 7=Rektorat, 8=Unit Kerja
          example: 1
        status_unit:
          type: string
          description: A=Aktif, B=Alih Bentuk, K=Alih Kelola, N=Non Aktif, H=Dihapus
          example: A
        tanggal_berdiri:
          type: string
          description: Tanggal berdirinya unit
          example: A
        sk_penyelenggara:
          type: string
          description: Nomor SK berdirinya unit
          example: Nomor SK berdirinya unit
        tanggal_sk_penyelenggara:
          type: string
          description: Tanggal SK penyelenggara unit
          example: A
        terhitung_mulai_tanggal_penyelenggara:
          type: string
          description: Terhitung mulai tanggal penyelenggara unit
          example: A
        terhitung_sampai_tanggal_penyelenggara:
          type: string
          description: Terhitung sampai tanggal penyelenggara unit
          example: A
        sks_lulus:
          type: integer
          description: SKS Lulus
          example: 144
        gelar_lulusan:
          type: string
          description: Gelar perolehan lulusan
          example: M.Eng
        waktu_data_update:
          type: string
          description: Waktu Data Update
          example: Waktu Data Update
        wilayah:
          type: array
          items:
            type: string
          description: Wilayah
          example: []
        jurusan:
          type: array
          items:
            type: string
          description: Jurusan
          example: []
    ReferensiMahasiswaResult:
      type: object
      properties:
        id_mahasiswa:
          type: string
          format: uuid
          description: ID mahasiswa
          example: b2f68ea2-06c0-4a72-ac4f-cf8e3e3dd4dd
        nama_mahasiswa:
          type: string
          description: Nama mahasiswa
          example: Nama Mahasiswa
        nim:
          type: string
          description: Nomor Induk Mahasiswa
          example: 2233443322
    ReferensiSdmResult:
      type: object
      properties:
        id_sdm:
          type: string
          format: uuid
          description: ID pegawai
          example: b2f68ea2-06c0-4a72-ac4f-cf8e3e3dd4dd
        nama_sdm:
          type: string
          description: Nama pegawai
          example: Nama Pegawai
        nidn:
          type: string
          description: Nomor Induk Dosen Nasional / Nomor Induk Tenaga Kependidikan Nasional
          example: 2233443322
        nip:
          type: string
          description: Nomor Induk Pegawai
          example: 190010101900101003
        nuptk:
          type: string
          description: Nomor Unik Pendidik dan Tenaga Kependidikan
          example: 238572673130039
        nama_status_aktif:
          type: string
          description: Status Aktif Dosen / Tenaga Kependidikan
          example: Aktif
        nama_status_pegawai:
          type: string
          description: Status Pegawai Dosen / Tenaga Kependidikan
          example: PNS
        jenis_sdm:
          type: string
          description: Jenis Pegawai, bisa Dosen / Tenaga Kependidikan
          example: Dosen
    ReferensiKategoriKegiatanListResult:
      type: object
      description: Struktur linear
      properties:
        id:
          type: integer
          description: ID kategori kegiatan
          example: 100100
        parent_id:
          type: integer
          nullable: true
          description: ID parent dari kategori kegiatan, `null` untuk kategori paling atas
          example: 100000
        nama:
          type: string
          description: Nama kategori kegiatan
          example: "Mengikuti pendidikan formal dan memperoleh gelar/sebutan/ijazah"
    ReferensiKategoriKegiatanTreeResult:
      type: object
      description: Struktur hirarki
      properties:
        id:
          type: integer
          description: ID kategori kegiatan
        nama:
          type: string
          description: Nama kategori kegiatan
        sub_kategori:
          type: array
          description: Sub kategori (rekursif)
          items:
            $ref: '#/components/schemas/ReferensiKategoriKegiatanTreeResult'
      example:
        id: 100000
        nama: Pendidikan
        sub_kategori:
          - id: 100100
            nama: "Mengikuti pendidikan formal dan memperoleh gelar/sebutan/ijazah"
            sub_kategori: []
          - id: 100200
            nama: "Mengikuti diklat prajabatan golongan III"
            sub_kategori: []
    ReferensiWilayahResult:
      type: object
      properties:
        id:
          type: string
          description: ID wilayah
          example: "061400  "
        nama:
          type: string
          description: Nama wilayah
          example: Kab. Aceh Tamiang
        id_induk_wilayah:
          type: string
          description: ID induk wilayah
          example: "060000  "
    DokumenDetail:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: ID dokumen
        nama:
          type: string
          description: Nama dokumen
          example: Dokumen Pendukung Kegiatan XYZ
        jenis_dokumen:
          type: string
          description: Jenis dokumen
          example: Laporan karya
        nama_file:
          type: string
          description: Nama file dokumen
          example: DOKUMEN1.pdf
        jenis_file:
          type: string
          description: Mime type dokumen
          example: application/pdf
        tanggal_upload:
          type: string
          format: datetime
          description: Waktu upload
        tautan:
          type: string
          description: Tautan dokumen jika ada
          example: https://kampus.ac.id/files/DOKUMEN1.pdf
        keterangan:
          type: string
          description: Keterangan dokumen
          example: null
    NonCivitasGetItem:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: ID kolaborator eksternal (id_orang)
        nama:
          type: string
          description: Nama lengkap
          example: Suharyanto
        kode_negara:
          type: string
          description: Kode negara (2 huruf)
          example: ID
        jenis_kelamin:
          type: string
          description: (L)aki-laki / (P)erempuan
          example: L
    NonCivitasGetDetail:
      allOf:
        - $ref: "#/components/schemas/NonCivitasGetItem"
        - properties:
            negara:
              type: string
              description: Nama negara
              example: Indonesia
            nik:
              type: string
              description: Nomor KTP atau nomor paspor
              example: null
            tempat_lahir:
              type: string
              description: Tempat lahir
              example: Jakarta
            tanggal_lahir:
              type: string
              format: date
              description: Tanggal lahir
              example: "1980-01-05"
            jalan:
              type: string
              description: Alamat jalan
              example: null
            rt:
              type: integer
              description: Alamat RT
              example: null
            rw:
              type: integer
              description: Alamat RW
              example: null
            dusun:
              type: string
              description: Alamat dusun
              example: null
            kelurahan:
              type: string
              description: Alamat desa/kelurahan
              example: null
            kode_pos:
              type: string
              description: Alamat kode pos
              example: null
            telepon_rumah:
              type: string
              description: Nomor telepon rumah
              example: null
            telepon_hp:
              type: string
              description: Nomor telepon HP
              example: null
            email:
              type: string
              format: email
              description: Alamat e-mail
    NonCivitasPostBody:
      type: object
      required:
        - nama
        - kode_negara
        - jenis_kelamin
      properties:
        nama:
          type: string
          description: Nama lengkap
          example: Suharyanto
          maxLength: 200
        kode_negara:
          type: string
          description: Kode negara (2 huruf), dari endpoint [/referensi/negara](#get-/referensi/negara)
          example: ID
        jenis_kelamin:
          type: string
          enum:
            - L
            - P
          description: Laki-laki / Perempuan
        nik:
          type: string
          description: Nomor KTP atau nomor paspor
          example: null
          maxLength: 20
        tempat_lahir:
          type: string
          description: Tempat lahir
          example: Jakarta
          maxLength: 32
        tanggal_lahir:
          type: string
          format: date
          description: Tanggal lahir
          example: "1980-01-05"
        jalan:
          type: string
          description: Alamat jalan
          example: null
          maxLength: 255
        rt:
          type: integer
          description: Alamat RT
          example: null
        rw:
          type: integer
          description: Alamat RW
          example: null
        dusun:
          type: string
          description: Alamat dusun
          example: null
          maxLength: 60
        kelurahan:
          type: string
          description: Alamat desa/kelurahan
          example: null
          maxLength: 60
        kode_pos:
          type: string
          description: Alamat kode pos
          example: null
          maxLength: 5
        telepon_rumah:
          type: string
          description: Nomor telepon rumah
          example: null
          maxLength: 20
        telepon_hp:
          type: string
          description: Nomor telepon HP
          example: null
          maxLength: 20
        email:
          type: string
          format: email
          description: Alamat e-mail
          maxLength: 60
    AsosiasiProfesiGetItem:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: ID anggota profesi
          example: "ce425d42-1831-4dcb-b7ed-ec9a4907e9bb"
        nama_organisasi:
          type: string
          description: Nama organisasi profesi
          example: Asosiasi Agribisnis Indonesia
        peran:
          type: string
          description: Peran dalam organisasi
          example: Sekretaris Eksekutif
        tanggal_mulai_keanggotaan:
          type: string
          format: date
          description: Tanggal mulai keanggotaan
          example: "2013-09-21"
        tanggal_selesai_keanggotaan:
          type: string
          format: date
          description: Tanggal selesai keanggotaan (opsional)
          example: "2017-03-01"
          nullable: true
        instansi_profesi:
          type: string
          description: Nama instansi profesi
          example: Instansi XYZ
    AsosiasiProfesiGetDetail:
      allOf:
        - $ref: "#/components/schemas/AsosiasiProfesiGetItem"
        - properties:
            id_sdm:
              type: string
              format: uuid
              description: ID SDM pemilik data ini
            id_kategori_kegiatan:
              type: integer
              description: ID kategori kegiatan
              example: 110801
            kategori_kegiatan:
              type: string
              description: Nama kategori kegiatan
              example: Tingkat nasional sebagai pengurus
            dokumen:
              type: array
              items:
                $ref: "#/components/schemas/DokumenDetail"
    AsosiasiProfesiPostBody:
      type: object
      required:
        - id_sdm
        - id_kategori_kegiatan
        - nama_organisasi
        - peran
        - tanggal_mulai_keanggotaan
      properties:
        id_sdm:
          type: string
          format: uuid
          description: ID SDM pemilik data anggota profesi ini
        id_kategori_kegiatan:
          type: integer
          description: ID kategori kegiatan
          example: 140304
        nama_organisasi:
          type: string
          description: Nama organisasi profesi
          example: Asosiasi Agribisnis Indonesia
          maxLength: 100
        peran:
          type: string
          description: Peran dalam organisasi
          example: Sekretaris Eksekutif
          maxLength: 30
        tanggal_mulai_keanggotaan:
          type: string
          format: date
          description: Tanggal mulai keanggotaan
          example: "2013-09-21"
        tanggal_selesai_keanggotaan:
          type: string
          format: date
          description: Tanggal selesai keanggotaan (opsional)
          example: "2017-03-01"
          nullable: true
        instansi_profesi:
          type: string
          description: Nama instansi profesi
          example: Instansi XYZ
          maxLength: 100
        dokumen:
          type: array
          description: ID dokumen pendukung
          items:
            type: string
            format: uuid
    PengajaranGetItem:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: ID pengajaran
        semester:
          type: string
          description: Nama semester
          example: "2020/2021 Ganjil"
        mata_kuliah:
          type: string
          description: Nama mata kuliah
          example: REKAYASA PERANGKAT LUNAK
        kelas:
          type: string
          description: Nama kelas
          example: "1"
        jumlah_mahasiswa:
          type: integer
          description: Jumlah mahasiswa peserta kelas
          nullable: true
          example: 40
        sks:
          type: number
          description: SKS substansi total
          example: 1.86
    PengajaranGetDetail:
      allOf:
        - $ref: "#/components/schemas/PengajaranGetItem"
        - properties:
            id_sdm:
              type: string
              format: uuid
              description: ID SDM pemilik data ini
            id_semester:
              type: string
              description: ID semester
              example: "20201"
            sks_tatap_muka:
              type: number
              description: SKS tatap muka persubstansi
              example: 0
            sks_praktik:
              type: number
              description: SKS praktik persubstansi
              example: 0
            sks_praktik_lapangan:
              type: number
              description: SKS praktik lapangan persubstansi
              example: 0
            sks_simulasi:
              type: number
              description: SKS simulasi persubstansi
              example: 0
            tatap_muka_rencana:
              type: integer
              description: Jumlah tatap muka direncanakan
              example: 10
            tatap_muka_realisasi:
              type: integer
              description: Jumlah tatap muka realisasi
              example: 10
            jenis_evaluasi:
              type: string
              description: Jenis evaluasi
              example: Evaluasi Akademik
            nama_substansi:
              type: string
              description: Nama substansi
              example: null
    BimbinganMahasiswaGetItem:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: ID aktivitas mahasiswa
        judul:
          type: string
          description: Judul aktivitas / bimbingan
          example: PENGEMBANGAN WEB SERVICE SISTER DIKTI
        jenis_bimbingan:
          type: string
          description: Jenis bimbingan
          example: Tugas akhir
        program_studi:
          type: string
          description: Program studi mahasiswa bimbingan
          example: Sistem Informasi
        semester:
          type: string
          description: Nama semester aktivitas
          example: "2019/2020 Genap"
    BimbinganMahasiswaGetDetail:
      allOf:
        - $ref: "#/components/schemas/BimbinganMahasiswaGetItem"
        - properties:
            lokasi:
              type: string
              description: Lokasi kegiatan
              example: Jakarta
            sk_penugasan:
              type: string
              description: Nomor SK penugasan
              example: 1234/SK/2019
            tanggal_sk_penugasan:
              type: string
              format: date
              description: Tanggal SK
              example: "2019-01-01"
            keterangan:
              type: string
              description: Keterangan aktivitas
              example: null
            komunal:
              type: boolean
              description: Apakah kegiatan komunal?
              example: false
            dosen:
              description: Daftar dosen dalam aktivitas pembimbingan ini
              type: array
              items:
                type: object
                properties:
                  id_sdm:
                    type: string
                    format: uuid
                    description: ID SDM
                  nama:
                    type: string
                    description: Nama dosen
                    example: FULAN SUBARKAH
                  kategori_kegiatan:
                    type: string
                    description: Kategori kegiatan (PAK)
                    example: "Membimbing dan ikut membimbing dalam menghasilkan disertasi, tesis, skripsi, dan laporan akhir studi yang sesuai dengan bidang penugasannya"
                  urutan:
                    type: integer
                    description: Urutan pembimbing / promotor
                    example: 1
            mahasiswa:
              description: Daftar mahasiswa dalam aktivitas pembimbingan ini
              type: array
              items:
                type: object
                properties:
                  nama:
                    type: string
                    description: Nama mahasiswa
                    example: RISKI MAULANA
                  nomor_induk:
                    type: string
                    description: Nomor induk mahasiswa
                    example: "764101121"
                  peran:
                    type: string
                    description: Peran dalam pembimbingan
                    example: Anggota
    PengujianMahasiswaGetItem:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: ID aktivitas mahasiswa
        judul:
          type: string
          description: Judul aktivitas / bimbingan
          example: PENGEMBANGAN WEB SERVICE SISTER DIKTI
        jenis_pengujian:
          type: string
          description: Jenis pengujian
          example: Tugas akhir
        program_studi:
          type: string
          description: Program studi mahasiswa bimbingan
          example: Sistem Informasi
        semester:
          type: string
          description: Nama semester aktivitas
          example: "2019/2020 Genap"
    PengujianMahasiswaGetDetail:
      allOf:
        - $ref: "#/components/schemas/PengujianMahasiswaGetItem"
        - properties:
            lokasi:
              type: string
              description: Lokasi kegiatan
              example: Jakarta
            sk_penugasan:
              type: string
              description: Nomor SK penugasan
              example: 1234/SK/2019
            tanggal_sk_penugasan:
              type: string
              format: date
              description: Tanggal SK
              example: "2019-01-01"
            keterangan:
              type: string
              description: Keterangan aktivitas
              example: null
            dosen:
              description: Daftar dosen dalam aktivitas pengujian ini
              type: array
              items:
                type: object
                properties:
                  id_sdm:
                    type: string
                    format: uuid
                    description: ID SDM
                  nama:
                    type: string
                    description: Nama dosen
                    example: FULAN SUBARKAH
                  kategori_kegiatan:
                    type: string
                    description: Kategori kegiatan (PAK)
                    example: "Bertugas sebagai penguji pada ujian akhir"
                  urutan:
                    type: integer
                    description: Urutan pembimbing / promotor
                    example: 1
            mahasiswa:
              description: Daftar mahasiswa dalam aktivitas pengujian ini
              type: array
              items:
                type: object
                properties:
                  nama:
                    type: string
                    description: Nama mahasiswa
                    example: RISKI MAULANA
                  nomor_induk:
                    type: string
                    description: Nomor induk mahasiswa
                    example: "764101121"
                  peran:
                    type: string
                    description: Peran dalam pembimbingan
                    example: Anggota
    DetaseringGetItem:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: ID detasering
        kategori_kegiatan:
          type: string
          description: Nama kategori kegiatan
          example: Detasering
        perguruan_tinggi:
          type: string
          description: Nama perguruan tinggi sasaran
          example: Universitas Djuanda
        bidang_tugas:
          type: string
          description: Bidang tugas
          example: "Penugasan Sistem Tertanam"
        sk_penugasan:
          type: string
          description: Nomor SK penugasan
          example: 1234/SK/2019
        tanggal_sk_penugasan:
          type: string
          format: date
          description: Tanggal SK
          example: "2019-01-01"
    DetaseringGetDetail:
      allOf:
        - $ref: "#/components/schemas/DetaseringGetItem"
        - properties:
            id_sdm:
              type: string
              format: uuid
              description: ID SDM pemilik data ini
            id_perguruan_tinggi:
              type: string
              format: uuid
              description: ID perguruan tinggi sasaran
              example: "828fb966-3733-430e-86ff-909b764e2523"
            id_kategori_kegiatan:
              type: integer
              description: ID kategori kegiatan
              example: 111201
            tanggal_mulai:
              type: string
              format: date
              description: Tanggal mulai
              nullable: true
              example: "2019-01-01"
            tanggal_selesai:
              type: string
              format: date
              description: Tanggal selesai
              nullable: true
              example: "2020-01-01"
            deskripsi_kegiatan:
              type: string
              description: Deskripsi kegiatan
              example: "Penugasan Tenaga Pengajar Pada Sekolah Vokasi Universitas Djuanda"
            metode_pelaksanaan:
              type: string
              description: Metode pelaksanaan
              example: "Tatap Muka"
            dokumen:
              type: array
              items:
                $ref: "#/components/schemas/DokumenDetail"
    DetaseringPostBody:
      type: object
      required:
        - id_sdm
        - id_kategori_kegiatan
        - id_perguruan_tinggi
        - sk_penugasan
        - tanggal_sk_penugasan
      properties:
        id_sdm:
          type: string
          format: uuid
          description: ID SDM pemilik data ini
        id_kategori_kegiatan:
          type: integer
          description: ID kategori kegiatan
          example: 111201
        id_perguruan_tinggi:
          type: string
          format: uuid
          description: ID perguruan tinggi sasaran atau ID SP Sasaran
          example: "828fb966-3733-430e-86ff-909b764e2523"
        tanggal_mulai:
          type: string
          format: date
          description: Tanggal mulai
          nullable: true
          example: "2019-01-01"
        tanggal_selesai:
          type: string
          format: date
          description: Tanggal selesai
          nullable: true
          example: "2020-01-01"
        bidang_tugas:
          type: string
          description: Bidang tugas
          example: "Penugasan Sistem Tertanam"
          maxLength: 100
        deskripsi_kegiatan:
          type: string
          description: Deskripsi kegiatan
          example: "Penugasan Tenaga Pengajar Pada Sekolah Vokasi Universitas Djuanda"
        metode_pelaksanaan:
          type: string
          description: Metode pelaksanaan
          example: "Tatap Muka"
          maxLength: 30
        sk_penugasan:
          type: string
          description: Nomor SK penugasan
          example: 1234/SK/2019
          maxLength: 80
        tanggal_sk_penugasan:
          type: string
          format: date
          description: Tanggal SK
          example: "2019-01-01"
        dokumen:
          type: array
          description: ID dokumen pendukung
          items:
            type: string
            format: uuid
    PembicaraGetItem:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: ID orasi ilmiah
        judul_makalah:
          type: string
          description: Judul makalah
          example: Plant Protection in Indonesia
        nama_pertemuan:
          type: string
          description: Nama pertemuan ilmiah
          example: Summer Course on Sustainable Tropical Agriculture
        penyelenggara:
          type: string
          description: Penyelenggara pertemuan
          example: Fakultas Pertanian IPB
        tanggal_pelaksanaan:
          type: string
          format: date
          description: Tanggal pelaksanaan
          nullable: true
          example: "2019-01-01"
    PembicaraGetDetail:
      allOf:
        - $ref: "#/components/schemas/PembicaraGetItem"
        - properties:
            id_sdm:
              type: string
              format: uuid
              description: ID SDM pemilik data ini
            id_kategori_pembicara:
              type: integer
              enum:
                - 1
                - 2
                - 3
              description: 1=Pembicara pada pertemuan ilmiah, 2=Pembicara kunci, 3=Pembicara/narasumber pada pelatihan/penyuluhan/ceramah
            kategori_pembicara:
              type: string
              description: Kategori pembicara
              enum:
                - Pembicara pada pertemuan ilmiah
                - Pembicara kunci
                - Pembicara/narasumber pada pelatihan/penyuluhan/ceramah
            id_kategori_kegiatan:
              type: integer
              description: ID kategori kegiatan
              example: 130301
            kategori_kegiatan:
              type: string
              description: Nama kategori kegiatan
              example: Terjadwal/terprogram dalam satu semester atau lebih (tingkat nasional)
            id_tingkat_pertemuan:
              type: string
              enum:
                - Lokal
                - Daerah
                - Nasional
                - Internasional
                - Lain-lain
              description: Tingkat pertemuan
            bahasa:
              type: string
              description: Bahasa pertemuan
              example: Inggris
            sk_penugasan:
              type: string
              description: Nomor SK penugasan
              example: 1234/SK/2019
            tanggal_sk_penugasan:
              type: string
              format: date
              description: Tanggal SK
              example: "2019-01-01"
            judul_litabmas:
              type: string
              description: Judul kegiatan penelitian/abdimas jika ada
              example: ""
            kategori_capaian_luaran:
              type: string
              description: Nama kategori capaian luaran
              example: Buku
            id_kategori_capaian_luaran:
              type: integer
              description: ID kategori capaian luaran
              example: 5
              nullable: true
            id_penelitian_pengabdian:
              type: string
              format: uuid
              description: ID litabmas
              nullable: true
            dokumen:
              type: array
              items:
                $ref: "#/components/schemas/DokumenDetail"
    PembicaraPostBody:
      type: object
      required:
        - id_sdm
        - id_kategori_kegiatan
        - id_kategori_pembicara
        - judul_makalah
        - nama_pertemuan
        - penyelenggara
        - tanggal_pelaksanaan
      properties:
        id_sdm:
          type: string
          format: uuid
          description: ID SDM pemilik data ini
        id_kategori_kegiatan:
          type: integer
          description: ID kategori kegiatan
          example: 110900
        id_kategori_capaian_luaran:
          type: integer
          description: ID kategori capaian luaran
          example: 5
          nullable: true
        id_penelitian_pengabdian:
          type: string
          format: uuid
          description: ID litabmas
          nullable: true
        id_kategori_pembicara:
          type: integer
          enum:
            - 1
            - 2
            - 3
          description: 1=Pembicara pada pertemuan ilmiah, 2=Pembicara kunci, 3=Pembicara/narasumber pada pelatihan/penyuluhan/ceramah
        judul_makalah:
          type: string
          description: Judul makalah
          example: Plant Protection in Indonesia
          maxLength: 500
        nama_pertemuan:
          type: string
          description: Nama pertemuan ilmiah
          example: Summer Course on Sustainable Tropical Agriculture
          maxLength: 160
        id_tingkat_pertemuan:
          type: string
          enum:
            - L
            - D
            - N
            - I
            - X
          description: L=Lokal, D=Daerah, N=Nasional, I=Internasional, X=Lain-lain
        penyelenggara:
          type: string
          description: Penyelenggara pertemuan
          example: Fakultas Pertanian IPB
          maxLength: 100
        tanggal_pelaksanaan:
          type: string
          format: date
          description: Tanggal pelaksanaan
          nullable: true
          example: "2019-01-01"
        bahasa:
          type: string
          description: Bahasa pertemuan
          example: Inggris
          maxLength: 20
        sk_penugasan:
          type: string
          description: Nomor SK penugasan
          example: 1234/SK/2019
          maxLength: 80
        tanggal_sk_penugasan:
          type: string
          format: date
          description: Tanggal SK
          example: "2019-01-01"
        dokumen:
          type: array
          description: ID dokumen pendukung
          items:
            type: string
            format: uuid
    BahanAjarGetItem:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: ID riwayat bahan ajar
          example: "e5b85d1e-64bf-4395-b6d8-97c4635fe176"
        judul:
          type: string
          description: Judul bahan ajar
          example: Bunga Rampai Pendidikan Anti Korupsi Untuk Mahasiswa
        isbn:
          type: string
          description: ISBN
          example: 978-3-16-148410-0
        nama_jenis:
          type: string
          description: Jenis bahan ajar (referensi)
          example: Diktat
        nama_penerbit:
          type: string
          description: Penerbit
          example: University Press
        tanggal_terbit:
          type: string
          format: date
          description: Tanggal terbit
          example: "2018-03-16"
    BahanAjarGetDetail:
      allOf:
        - $ref: "#/components/schemas/BahanAjarGetItem"
        - properties:
            sk_penugasan:
              type: string
              description: Nomor SK penugasan
              example: 1234/SK/2017
            tanggal_sk_penugasan:
              type: string
              format: date
              description: Tanggal SK
              example: "2017-01-17"
            judul_litabmas:
              type: string
              description: Judul kegiatan penelitian/abdimas jika ada
              example: Posdaya 2017
            kategori_capaian_luaran:
              type: string
              description: Nama kategori capaian luaran
              example: Buku
            id_kategori_capaian_luaran:
              type: integer
              description: ID kategori capaian luaran
              example: 5
              nullable: true
            id_kategori_kegiatan:
              type: integer
              description: ID kategori kegiatan
              example: 110801
            id_penelitian_pengabdian:
              type: string
              format: uuid
              description: ID litabmas
              nullable: true
            id_jenis_bahan_ajar:
              type: integer
              description: ID jenis bahan ajar
              example: 2
            penulis:
              description: Daftar seluruh penulis dalam satu larik, tidak dipisahkan per jenis
              type: array
              items:
                type: object
                properties:
                  nama:
                    type: string
                    description: Nama penulis
                    example: ANDI BUDIANTO
                  jenis:
                    type: string
                    enum:
                      - Dosen
                      - Mahasiswa
                      - Profesional/Mitra
                    description: Jenis penulis
                    example: Dosen
                  id_sdm:
                    type: string
                    format: uuid
                    nullable: true
                    description: ID Dosen, hanya berisi jika jenis dosen
                  id_peserta_didik:
                    type: string
                    format: uuid
                    example: NULL
                    nullable: true
                    description: ID mahasiswa peserta didik, hanya berisi jika jenis mahasiswa
                  nomor_induk_peserta_didik:
                    type: string
                    example: null
                    nullable: true
                    description: Nomor induk mahasiswa peserta didik, hanya berisi jika jenis mahasiswa
                  id_orang:
                    type: string
                    format: uuid
                    example: null
                    nullable: true
                    description: ID kolaborator luar, hanya berisi jika jenis lain
                  urutan:
                    type: integer
                    description: Urutan penulis
                    example: 1
                  afiliasi:
                    type: string
                    description: Afiliasi penulis
                    example: Departemen Ilmu Komputer, Universitas Bogor
                  peran:
                    type: string
                    description: Penulis, Editor, Penerjemah, atau Penemu/Inventor
                    example: Penulis
            dokumen:
              type: array
              items:
                $ref: "#/components/schemas/DokumenDetail"
    BahanAjarPostBody:
      type: object
      required:
        - id_kategori_kegiatan
        - id_jenis_bahan_ajar
        - judul
        - nama_penerbit
      properties:
        id_kategori_kegiatan:
          type: integer
          description: ID kategori kegiatan
          example: 110801
        id_kategori_capaian_luaran:
          type: integer
          description: ID kategori capaian luaran
          example: 5
          nullable: true
        id_penelitian_pengabdian:
          type: string
          format: uuid
          description: ID litabmas
          nullable: true
        id_jenis_bahan_ajar:
          type: integer
          description: ID jenis bahan ajar
          example: 2
        judul:
          type: string
          description: Judul bahan ajar
          example: Petunjuk Praktikum Evaluasi Nilai Gizi Tahun 2018
          maxLength: 500
        isbn:
          type: string
          description: ISBN
          example: 978-3-16-148410-0
          maxLength: 20
        nama_penerbit:
          type: string
          description: Penerbit
          example: University Press
          maxLength: 100
        tanggal_terbit:
          type: string
          format: date
          description: Tanggal terbit
          example: "2018-03-16"
        sk_penugasan:
          type: string
          description: Nomor SK penugasan
          example: 1234/SK/2017
          maxLength: 80
        tanggal_sk_penugasan:
          type: string
          format: date
          description: Tanggal SK
          example: "2017-01-17"
        dokumen:
          type: array
          description: ID dokumen pendukung
          items:
            type: string
            format: uuid
        penulis_dosen:
          type: array
          description: Data penulis SDM, dapat dicari pada endpoint [/referensi/sdm](#get-/referensi/sdm)
          items:
            type: object
            required:
              - id_sdm
            properties:
              id_sdm:
                type: string
                format: uuid
                description: ID Dosen, required,  dapat dicari pada endpoint [/referensi/sdm](#get-/referensi/sdm)
              no_urut:
                type: integer
                description: Urutan penulis
                example: 1
              afiliasi:
                type: string
                description: Afiliasi dosen
                example: Departemen Ilmu Komputer, Universitas Bogor
              peran:
                type: string
                enum:
                  - A
                  - B
                  - C
                  - D
                description: A=Penulis, B=Editor, C=Penerjemah, D=Penemu/Inventor
        penulis_mahasiswa:
          type: array
          description: Data penulis mahasiswa, dapat dicari pada endpoint [/referensi/mahasiswa_pddikti](#get-/referensi/mahasiswa_pddikti)
          items:
            type: object
            properties:
              id_peserta_didik:
                type: string
                format: uuid
                description: ID peserta didik (mahasiswa)
              nama:
                type: string
                description: Nama mahasiswa
                example: Fulan Darmawan
              no_induk:
                type: string
                description: Nomor induk mahasiswa
                example: 1212016053
              no_urut:
                type: integer
                description: Urutan penulis
                example: 1
              afiliasi:
                type: string
                description: Afiliasi dosen
                example: Departemen Ilmu Komputer, Universitas Bogor
              peran:
                type: string
                enum:
                  - A
                  - B
                  - C
                  - D
                description: A=Penulis, B=Editor, C=Penerjemah, D=Penemu/Inventor
        penulis_lain:
          type: array
          description: Data penulis eksternal, dapat dicari pada endpoint [/kolaborator_eksternal](#get-/kolaborator_eksternal)
          items:
            type: object
            properties:
              id_orang:
                type: string
                format: uuid
                description: ID orang
              no_urut:
                type: integer
                description: Urutan penulis
                example: 1
              afiliasi:
                type: string
                description: Afiliasi dosen
                example: Departemen Ilmu Komputer, Universitas Bogor
              peran:
                type: string
                enum:
                  - A
                  - B
                  - C
                  - D
                description: A=Penulis, B=Editor, C=Penerjemah, D=Penemu/Inventor
    BimbingDosenGetItem:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: ID pembimbingan dosen
        nama_pembimbing:
          type: string
          description: Nama pembimbing dalam kegiatan pembimbingan
          example: AGUS SUDARSONO
        nama_bimbingan:
          type: string
          description: Nama bimbingan dalam kegiatan pembimbingan
          example: FULAN SUBARKAH
        tanggal_mulai:
          type: string
          format: date
          description: Tanggal mulai pembimbingan
          example: "2020-06-01"
        tanggal_selesai:
          type: string
          format: date
          description: Tanggal selesai pembimbingan
          example: "2021-06-01"
    BimbingDosenGetDetail:
      allOf:
        - $ref: "#/components/schemas/BimbingDosenGetItem"
        - properties:
            jabatan_fungsional_pembimbing:
              type: string
              description: Jabatan fungsional pembimbing
              example: Profesor
            jabatan_fungsional_bimbingan:
              type: string
              description: Jabatan fungsional bimbingan
              example: Asisten Ahli
            bidang_keahlian_pembimbing:
              type: string
              description: Bidang keahlian pembimbing
              example: Computer Science
            bidang_keahlian_bimbingan:
              type: string
              description: Bidang keahlian bimbingan
              example: Software Engineering
            deskripsi_kegiatan:
              type: string
              description: Deskripsi kegiatan
              example: null
            jenis_bimbingan:
              type: string
              enum:
                - R
                - C
              description: Jenis pembimbingan (R=Reguler, C=Pencangkokan)
              example: R
            sk_penugasan:
              type: string
              description: Nomor SK penugasan
              example: 1234/SK/2020
            tanggal_sk_penugasan:
              type: string
              format: date
              description: Tanggal SK
              example: "2020-06-01"
            unit_kerja:
              type: string
              description: Unit kerja kegiatan
              example: Program Studi Ilmu Komputer, Fakultas MIPA
    TugasTambahanGetItem:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: ID tugas tambahan
        jenis_tugas:
          type: string
          description: Jenis tugas tambahan
          example: Pembantu Direktur I
        unit_kerja:
          type: string
          description: Unit kerja tempat bertugas
          example: Direktorat Sistem Informasi
        perguruan_tinggi:
          type: string
          description: Perguruan tinggi tempat bertugas
          example: Universitas Lampung
        tanggal_mulai_tugas:
          type: string
          format: date
          description: Tanggal mulai bertugas
          example: "2018-02-15"
        tanggal_selesai_tugas:
          type: string
          format: date
          description: Tanggal selesai bertugas (opsional)
          example: "2020-03-01"
          nullable: true
    TugasTambahanGetDetail:
      allOf:
        - $ref: "#/components/schemas/TugasTambahanGetItem"
        - properties:
            id_sdm:
              type: string
              format: uuid
              description: ID SDM pemilik data ini
            id_kategori_kegiatan:
              type: integer
              description: ID kategori kegiatan
              example: 111201
            id_jenis_tugas:
              type: integer
              description: ID jenis tugas tambahan dari [/referensi/jabatan_tugas_tambahan](#get-/referensi/jabatan_tugas_tambahan)
              example: 57
            id_perguruan_tinggi:
              type: string
              format: uuid
              description: ID perguruan tinggi
              example: "828fb966-3733-430e-86ff-909b764e2523"
            id_unit_kerja:
              type: string
              format: uuid
              description: ID unit kerja pada perguruan tinggi
              example: "08418295-f193-4534-a548-58bd91f64fb0"
            jumlah_jam:
              type: integer
              description: Jumlah jam diakui
              example: 40
            sk_penugasan:
              type: string
              description: Nomor SK penugasan
              example: 1234/SK/2019
            dokumen:
              type: array
              items:
                $ref: "#/components/schemas/DokumenDetail"
    TugasTambahanPostBody:
      type: object
      required:
        - id_sdm
        - id_kategori_kegiatan
        - id_jenis_tugas
        - id_perguruan_tinggi
        - jumlah_jam
        - sk_penugasan
        - tanggal_mulai_tugas
      properties:
        id_sdm:
          type: string
          format: uuid
          description: ID SDM pemilik data ini
        id_kategori_kegiatan:
          type: integer
          description: ID kategori kegiatan
          example: 111007
        id_jenis_tugas:
          type: integer
          description: ID jenis tugas tambahan dari [/referensi/jabatan_tugas_tambahan](#get-/referensi/jabatan_tugas_tambahan)
          example: 57
        id_perguruan_tinggi:
          type: string
          format: uuid
          description: ID perguruan tinggi
          example: "828fb966-3733-430e-86ff-909b764e2523"
        id_unit_kerja:
          type: string
          format: uuid
          description: ID unit kerja pada perguruan tinggi
          example: "08418295-f193-4534-a548-58bd91f64fb0"
        jumlah_jam:
          type: integer
          description: Jumlah jam diakui
          example: 40
        sk_penugasan:
          type: string
          description: Nomor SK penugasan
          example: 1234/SK/2019
          maxLength: 80
        tanggal_mulai_tugas:
          type: string
          format: date
          description: Tanggal mulai bertugas
          example: "2018-02-15"
        tanggal_selesai_tugas:
          type: string
          format: date
          description: Tanggal selesai bertugas (opsional)
          example: "2020-03-01"
          nullable: true
        dokumen:
          type: array
          description: ID dokumen pendukung
          items:
            type: string
            format: uuid
    LitabmasGetItem:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: ID penelitian/pengabdian
        judul:
          type: string
          description: Judul kegiatan
          example: Enhancing the Paddy Farmer Income Sustainability with Crop Insurance Policy
        bidang_keilmuan:
          type: array
          description: Bidang keilmuan
          items:
            type: string
          example: []
        tahun_pelaksanaan:
          type: integer
          description: Tahun pelaksanaan
          example: 2019
        lama_kegiatan:
          type: integer
          description: Lama pelaksanaan kegiatan (dalam tahun)
          example: 3
    LitabmasGetDetail:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: ID penelitian/pengabdian
        id_kategori_kegiatan:
          type: integer
          description: ID kategori kegiatan
          example: 120601
        judul:
          type: string
          description: Judul kegiatan
          example: Enhancing the Paddy Farmer Income Sustainability with Crop Insurance Policy
        id_afiliasi:
          type: string
          format: uuid
          description: ID perguruan tinggi / lembaga afiliasi litabmas
          example: "1850c92f-689c-45e4-9382-01219d35c534"
        afiliasi:
          type: string
          description: Nama perguruan tinggi / lembaga afiliasi litabmas
          example: Universitas Sumatera Utara
        id_kelompok_bidang:
          type: string
          format: uuid
          description: ID kelompok bidang litabmas
          example: "5d35a79a-d98f-488b-aafc-0cf4c5ad1f99"
        kelompok_bidang:
          type: string
          description: Nama kelompok bidang litabmas
          example: ILMU SOSIAL, POLITIK, HUMANIORA
        id_litabmas_sebelumnya:
          type: string
          format: uuid
          description: ID litabmas sebelumnya, untuk litabmas lanjutan
          example: "dc447fa4-9c76-4430-8c22-6e131a6ffe3d"
        litabmas_sebelumnya:
          type: string
          description: Judul litabmas sebelumnya, untuk litabmas lanjutan
          example: Enhancing the Paddy Farmer Income Sustainability with Crop Insurance Policy
        id_jenis_skim:
          type: string
          format: uuid
          description: ID skim kegiatan
          example: "10bbc6bb-244b-4321-9cdb-3faab8e4c7f9"
        jenis_skim:
          type: string
          description: Nama skim kegiatan
          example: Ipteks Bagi Masyarakat
        lokasi:
          type: string
          description: Lokasi kegiatan
          example: Sumatera Utara, Pulau Jawa, dan Nusa Tenggara Barat
        tahun_usulan:
          type: integer
          description: Tahun usulan
          example: 2018
        tahun_kegiatan:
          type: integer
          description: Tahun kegiatan
          example: 2019
        tahun_pelaksanaan:
          type: integer
          description: Tahun pelaksanaan
          example: 2019
        lama_kegiatan:
          type: integer
          description: Lama pelaksanaan kegiatan (dalam tahun)
          example: 3
        tahun_pelaksanaan_ke:
          type: integer
          description: Tahun pelaksanaan ke
          example: 2
        dana_dikti:
          type: number
          description: Dana dari DIKTI (Rp)
          example: 0
        dana_perguruan_tinggi:
          type: number
          description: Dana dari perguruan tinggi (Rp)
          example: 0
        dana_institusi_lain:
          type: number
          description: Dana dari institusi lain (Rp)
          example: 370850000
        in_kind:
          type: string
          description: In kind
          example: ""
        sk_penugasan:
          type: string
          description: Nomor SK penugasan
          example: 1234/SK/2019
        tanggal_sk_penugasan:
          type: string
          format: date
          description: Tanggal SK
          example: "2019-01-01"
        mitra_litabmas:
          type: array
          description: Mitra litabmas (dunia usaha/industri)
          items:
            type: object
            properties:
              id:
                type: string
                format: uuid
              nama:
                type: string
        anggota:
          description: Daftar seluruh anggota litabmas dalam satu larik, tidak dipisahkan per jenis
          type: array
          items:
            type: object
            properties:
              nama:
                type: string
                description: Nama penulis
                example: ANDI BUDIANTO
              jenis:
                type: string
                enum:
                  - Dosen
                  - Mahasiswa
                  - Profesional/Mitra
                description: Jenis penulis
                example: Dosen
              id_sdm:
                type: string
                format: uuid
                nullable: true
                description: ID Dosen, hanya berisi jika jenis dosen
              id_peserta_didik:
                type: string
                format: uuid
                example: null
                nullable: true
                description: ID mahasiswa peserta didik, hanya berisi jika jenis mahasiswa
              nomor_induk_peserta_didik:
                type: string
                example: null
                nullable: true
                description: Nomor induk mahasiswa peserta didik, hanya berisi jika jenis mahasiswa
              id_orang:
                type: string
                format: uuid
                example: null
                nullable: true
                description: ID kolaborator luar, hanya berisi jika jenis lain
              aktif:
                type: boolean
                description: Status aktif
                example: true
              peran:
                type: string
                description: Ketua, Anggota
                example: Ketua
        dokumen:
          type: array
          items:
            $ref: "#/components/schemas/DokumenDetail"
    LitabmasPostBody:
      type: object
      required:
        - id_kategori_kegiatan
        - judul
        - id_afiliasi
        - tahun_usulan
        - tahun_kegiatan
        - tahun_pelaksanaan
        - lama_kegiatan
        - tahun_pelaksanaan_ke
        - dana_dikti
        - dana_perguruan_tinggi
        - dana_institusi_lain
      properties:
        id_kategori_kegiatan:
          type: integer
          description: ID kategori kegiatan, dapat dicari pada endpoint [/referensi/kategori_kegiatan](#get-/referensi/kategori_kegiatan)
          example: 120601
        judul:
          type: string
          description: Judul kegiatan
          example: Enhancing the Paddy Farmer Income Sustainability with Crop Insurance Policy
          maxLength: 500
        id_afiliasi:
          type: string
          format: uuid
          description: ID perguruan tinggi / lembaga afiliasi litabmas
          example: "1850c92f-689c-45e4-9382-01219d35c534"
        id_kelompok_bidang:
          type: string
          format: uuid
          description: ID kelompok bidang litabmas, dapat dicari pada endpoint [/referensi/kelompok_bidang](#get-/referensi/kelompok_bidang)
          example: "5d35a79a-d98f-488b-aafc-0cf4c5ad1f99"
        id_litabmas_sebelumnya:
          type: string
          format: uuid
          description: ID litabmas sebelumnya, untuk litabmas lanjutan
          example: "dc447fa4-9c76-4430-8c22-6e131a6ffe3d"
        id_jenis_skim:
          type: string
          format: uuid
          description: ID skim kegiatan, dapat dicari pada endpoint [/referensi/skim_kegiatan](#get-/referensi/skim_kegiatan)
          example: "10bbc6bb-244b-4321-9cdb-3faab8e4c7f9"
        lokasi:
          type: string
          description: Lokasi kegiatan
          example: Sumatera Utara, Pulau Jawa, dan Nusa Tenggara Barat
          maxLength: 80
        tahun_usulan:
          type: integer
          description: Tahun usulan
          example: 2018
        tahun_kegiatan:
          type: integer
          description: Tahun kegiatan
          example: 2019
        tahun_pelaksanaan:
          type: integer
          description: Tahun pelaksanaan
          example: 2019
        lama_kegiatan:
          type: integer
          description: Lama pelaksanaan kegiatan (dalam tahun)
          example: 3
        tahun_pelaksanaan_ke:
          type: integer
          description: Tahun pelaksanaan ke
          example: 2
        dana_dikti:
          type: number
          description: Dana dari DIKTI (Rp). Isikan nol jika tidak ada.
          example: 0
        dana_perguruan_tinggi:
          type: number
          description: Dana dari perguruan tinggi (Rp). Isikan nol jika tidak ada.
          example: 0
        dana_institusi_lain:
          type: number
          description: Dana dari institusi lain (Rp). Isikan nol jika tidak ada.
          example: 370850000
        in_kind:
          type: string
          description: In kind
          example: ""
        sk_penugasan:
          type: string
          description: Nomor SK penugasan
          example: 1234/SK/2019
          maxLength: 80
        tanggal_sk_penugasan:
          type: string
          format: date
          description: Tanggal SK
          example: "2019-01-01"
        mitra_litabmas:
          type: array
          description: ID mitra litabmas (dunia usaha/industri), dapat dicari pada endpoint [/referensi/dudi](#get-/referensi/dudi)
          example: []
          items:
            type: string
            format: uuid
        anggota_dosen:
          type: array
          description: Data anggota SDM, dapat dicari pada endpoint [/referensi/sdm](#get-/referensi/sdm)
          items:
            type: object
            required:
              - id_sdm
            properties:
              id_sdm:
                type: string
                format: uuid
                description: ID Dosen, required, dapat dicari pada endpoint [/referensi/sdm](#get-/referensi/sdm)
              aktif:
                type: boolean
                description: Status aktif
                example: true
              peran:
                type: string
                enum:
                  - K
                  - A
                description: K=Ketua, A=Anggota
        anggota_mahasiswa:
          type: array
          description: Data anggota mahasiswa, dapat dicari pada endpoint [/referensi/mahasiswa_pddikti](#get-/referensi/mahasiswa_pddikti)
          items:
            type: object
            properties:
              id_peserta_didik:
                type: string
                format: uuid
                description: ID peserta didik (mahasiswa)
              nama:
                type: string
                description: Nama mahasiswa
                example: Fulan Darmawan
                maxLength: 200
              no_induk:
                type: string
                description: Nomor induk mahasiswa
                example: 1212016053
                maxLength: 24
              aktif:
                type: boolean
                description: Status aktif
                example: true
              peran:
                type: string
                enum:
                  - K
                  - A
                description: K=Ketua, A=Anggota
                example: A
        anggota_lain:
          type: array
          description: Data anggota eksternal, dapat dicari pada endpoint [/kolaborator_eksternal](#get-/kolaborator_eksternal)
          items:
            type: object
            properties:
              id_orang:
                type: string
                format: uuid
                description: ID orang
              aktif:
                type: boolean
                description: Status aktif
                example: true
              peran:
                type: string
                enum:
                  - K
                  - A
                description: K=Ketua, A=Anggota
                example: A
        dokumen:
          type: array
          description: ID dokumen pendukung
          items:
            type: string
            format: uuid
    PublikasiGetItem:
      allOf:
        - $ref: "#/components/schemas/HKIGetItem"
        - properties:
            asal_data:
              type: string
              description: Sumber data
              example: SINTA
    PublikasiGetDetail:
      allOf:
        - $ref: "#/components/schemas/HKIGetDetail"
        - properties:
            judul_artikel:
              type: string
              description: Judul artikel
              nullable: true
              example: ""
            judul_asli:
              type: string
              description: Judul asli, untuk karya terjemahan
              nullable: true
              example: ""
            nama_jurnal:
              type: string
              description: Nama jurnal
              nullable: true
              example: "International Journal of Engineering and Technology"
            halaman:
              type: string
              description: Halaman pada jurnal
              example: "1024-1031"
            edisi:
              type: string
              description: Edisi jurnal
            volume:
              type: integer
              description: Volume jurnal
              example: 5
            nomor:
              type: integer
              description: Nomor jurnal
              example: 1
            doi:
              type: string
              description: Nomor DOI
              example: "10.3923/jest.2014.245.265"
            issn:
              type: string
              description: Nomor ISSN
              example: null
            e_issn:
              type: string
              description: Nomor E-ISSN
              example: null
            seminar:
              type: boolean
              description: Penanda apakah publikasi ini merupakan seminar
              example: false
            prosiding:
              type: boolean
              description: Penanda apakah publikasi ini merupakan prosiding
              example: false
            asal_data:
              type: string
              description: Sumber data
              example: SINTA
    PublikasiPostBody:
      allOf:
        - $ref: "#/components/schemas/HKIPostBody"
        - properties:
            judul_artikel:
              type: string
              description: Judul artikel
              nullable: true
              example: ""
              maxLength: 500
            judul_asli:
              type: string
              description: Judul asli, untuk karya terjemahan
              nullable: true
              example: ""
              maxLength: 500
            nama_jurnal:
              type: string
              description: Nama jurnal
              nullable: true
              example: "HAYATI Journal of Bioscience"
              maxLength: 100
            halaman:
              type: string
              description: Halaman pada jurnal
              example: "1024-1031"
              maxLength: 15
            edisi:
              type: string
              description: Edisi jurnal
              maxLength: 15
            volume:
              type: integer
              description: Volume jurnal
            nomor:
              type: integer
              description: Nomor jurnal
            doi:
              type: string
              description: Nomor DOI
              maxLength: 100
            issn:
              type: string
              description: Nomor ISSN
              maxLength: 9
            e_issn:
              type: string
              description: Nomor E-ISSN
              maxLength: 9
            seminar:
              type: boolean
              description: Penanda apakah publikasi ini merupakan seminar
              example: false
            prosiding:
              type: boolean
              description: Penanda apakah publikasi ini merupakan prosiding
              example: false
    HKIGetItem:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: ID paten / kekayaan intelektual
        kategori_kegiatan:
          type: string
          description: Nama kategori kegiatan
          example: Menerjemahkan/menyadur buku ilmiah yang diterbitkan (ber ISBN)
        judul:
          type: string
          description: Judul kegiatan
          example: Enhancing the Paddy Farmer Income Sustainability with Crop Insurance Policy
        quartile:
          type: integer
          description: Quartile
          example: ""
        bidang_keilmuan:
          type: array
          description: Bidang keilmuan
          items:
            type: string
          example: []
        jenis_publikasi:
          type: string
          description: Jenis kekayaan intelektual
          example: Paten nasional
        tanggal:
          type: string
          format: date
          description: Tanggal terbit paten/KI
          example: "2019-01-01"
    HKIGetDetail:
      allOf:
        - $ref: "#/components/schemas/HKIGetItem"
        - properties:
            id_kategori_kegiatan:
              type: integer
              description: ID kategori kegiatan
              example: 111201
            id_jenis_publikasi:
              type: integer
              description: ID jenis publikasi dari endpoint [/referensi/jenis_publikasi](#get-/referensi/jenis_publikasi)
              example: 41
            kategori_capaian_luaran:
              type: string
              description: Nama kategori capaian luaran
              example: HKI
            id_kategori_capaian_luaran:
              type: integer
              description: ID kategori capaian luaran
              example: 4
              nullable: true
            judul_litabmas:
              type: string
              description: Judul kegiatan penelitian/abdimas jika ada
              example: Sustainable Agriculture
            id_litabmas:
              type: string
              format: uuid
              description: ID penelitian/pengabdian
              example: "d69d84f3-ebcd-4cdc-a125-4ec626224b53"
              nullable: true
            nomor_paten:
              type: string
              description: Nomor paten, untuk karya berjenis paten
              nullable: true
              example: IDP000063465
            pemberi_paten:
              type: string
              description: Negara / organisasi pemberi paten, untuk karya berjenis paten
              nullable: true
              example: Indonesia
            penerbit:
              type: string
              description: Penerbit untuk karya berjenis buku, atau penyelenggara untuk karya seni / naskah
              nullable: true
              example: null
            isbn:
              type: string
              description: ISBN untuk karya berjenis buku
              nullable: true
              example: null
            jumlah_halaman:
              type: integer
              description: Jumlah halaman untuk karya cetak
              nullable: true
              example: null
            tautan:
              type: string
              format: url
              description: Tautan eksternal
              example: https://example.org/
            keterangan:
              type: string
              description: Keterangan / petunjuk akses
              example: ""
            penulis:
              description: Daftar seluruh penulis dalam satu larik, tidak dipisahkan per jenis
              type: array
              items:
                type: object
                properties:
                  nama:
                    type: string
                    description: Nama penulis
                    example: ANDI BUDIANTO
                  jenis:
                    type: string
                    enum:
                      - Dosen
                      - Mahasiswa
                      - Profesional/Mitra
                    description: Jenis penulis
                    example: Dosen
                  id_sdm:
                    type: string
                    format: uuid
                    nullable: true
                    description: ID Dosen, hanya berisi jika jenis dosen
                  id_peserta_didik:
                    type: string
                    format: uuid
                    example: NULL
                    nullable: true
                    description: ID mahasiswa peserta didik, hanya berisi jika jenis mahasiswa
                  nomor_induk_peserta_didik:
                    type: string
                    example: null
                    nullable: true
                    description: Nomor induk mahasiswa peserta didik, hanya berisi jika jenis mahasiswa
                  id_orang:
                    type: string
                    format: uuid
                    example: null
                    nullable: true
                    description: ID kolaborator luar, hanya berisi jika jenis lain
                  urutan:
                    type: integer
                    description: Urutan penulis
                    example: 1
                  afiliasi:
                    type: string
                    description: Afiliasi penulis
                    example: Departemen Ilmu Komputer, Universitas Bogor
                  corresponding_author:
                    type: boolean
                    description: Flag penanda apakah penulis ini corresponding author atau bukan
                    example: true
                  peran:
                    type: string
                    description: Penulis, Editor, Penerjemah, atau Penemu/Inventor
                    example: Penulis
            dokumen:
              type: array
              items:
                $ref: "#/components/schemas/DokumenDetail"
    HKIPostBody:
      type: object
      required:
        - id_kategori_kegiatan
        - id_jenis_publikasi
        - judul
        - tanggal
      properties:
        id_kategori_kegiatan:
          type: integer
          description: ID kategori kegiatan
          example: 120402
        id_jenis_publikasi:
          type: integer
          description: ID jenis publikasi dari endpoint [/referensi/jenis_publikasi](#get-/referensi/jenis_publikasi)
          example: 41
        id_kategori_capaian_luaran:
          type: integer
          description: ID kategori capaian luaran
          example: 4
          nullable: true
        id_litabmas:
          type: string
          format: uuid
          description: ID penelitian/pengabdian
          example: "d69d84f3-ebcd-4cdc-a125-4ec626224b53"
          nullable: true
        judul:
          type: string
          description: Judul publikasi/paten/KI
          example: FORMULA INOKULAN UNTUK PENINGKATAN PRODUKSI KEDELAI PADA LAHAN KERING ASAM
          maxLength: 500
        tanggal:
          type: string
          format: date
          description: Tanggal terbit publikasi/paten/KI
          nullable: true
          example: "2019-01-01"
        nomor_paten:
          type: string
          description: Nomor paten, untuk karya berjenis paten
          nullable: true
          example: IDP000063465
          maxLength: 100
        pemberi_paten:
          type: string
          description: Negara / organisasi pemberi paten, untuk karya berjenis paten
          nullable: true
          example: Indonesia
          maxLength: 60
        penerbit:
          type: string
          description: Penerbit untuk karya berjenis buku, atau penyelenggara untuk karya seni / naskah
          nullable: true
          example: null
          maxLength: 100
        isbn:
          type: string
          description: ISBN untuk karya berjenis buku
          nullable: true
          example: null
          maxLength: 20
        jumlah_halaman:
          type: integer
          description: Jumlah halaman untuk karya cetak
          nullable: true
          example: null
        tautan:
          type: string
          format: url
          description: Tautan eksternal
          example: https://example.org/
          maxLength: 256
        keterangan:
          type: string
          description: Keterangan / petunjuk akses
          example: ""
          maxLength: 128
        dokumen:
          type: array
          description: ID dokumen pendukung
          items:
            type: string
            format: uuid
        urutan_corresponding_author:
          type: integer
          description: Corresponding author adalah penulis pada urutan ke-N
          nullable: true
          example: 1
        penulis_dosen:
          type: array
          description: Data penulis SDM, dapat dicari pada endpoint [/referensi/sdm](#get-/referensi/sdm)
          items:
            type: object
            required:
              - id_sdm
            properties:
              id_sdm:
                type: string
                format: uuid
                description: ID Dosen, required, dapat dicari pada endpoint [/referensi/sdm](#get-/referensi/sdm)
              no_urut:
                type: integer
                description: Urutan penulis
                example: 1
              afiliasi:
                type: string
                description: Afiliasi dosen
                example: Departemen Ilmu Komputer, Universitas Bogor
                maxLength: 200
              peran:
                type: string
                enum:
                  - A
                  - B
                  - C
                  - D
                description: A=Penulis, B=Editor, C=Penerjemah, D=Penemu/Inventor
        penulis_mahasiswa:
          type: array
          description: Data penulis mahasiswa, dapat dicari pada endpoint [/referensi/mahasiswa_pddikti](#get-/referensi/mahasiswa_pddikti)
          items:
            type: object
            properties:
              id_peserta_didik:
                type: string
                format: uuid
                description: ID peserta didik (mahasiswa)
              nama:
                type: string
                description: Nama mahasiswa
                example: Fulan Darmawan
                maxLength: 200
              no_induk:
                type: string
                description: Nomor induk mahasiswa
                example: 1212016053
                maxLength: 24
              no_urut:
                type: integer
                description: Urutan penulis
                example: 1
              afiliasi:
                type: string
                description: Afiliasi dosen
                example: Departemen Ilmu Komputer, Universitas Bogor
                maxLength: 200
              peran:
                type: string
                enum:
                  - A
                  - B
                  - C
                  - D
                description: A=Penulis, B=Editor, C=Penerjemah, D=Penemu/Inventor
        penulis_lain:
          type: array
          description: Data penulis eksternal, dapat dicari pada endpoint [/kolaborator_eksternal](#get-/kolaborator_eksternal)
          items:
            type: object
            properties:
              id_orang:
                type: string
                format: uuid
                description: ID orang
              no_urut:
                type: integer
                description: Urutan penulis
                example: 1
              afiliasi:
                type: string
                description: Afiliasi dosen
                example: Departemen Ilmu Komputer, Universitas Bogor
                maxLength: 200
              peran:
                type: string
                enum:
                  - A
                  - B
                  - C
                  - D
                description: A=Penulis, B=Editor, C=Penerjemah, D=Penemu/Inventor
    JabatanStrukturalGetItem:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: ID riwayat jabatan struktural
        jabatan:
          type: string
          description: Nama jabatan
          example: Anggota BPK
        sk_jabatan:
          type: string
          description: Nomor SK jabatan struktural
          example: 1234/SK/2019
        tanggal_mulai_jabatan:
          type: string
          format: date
          description: Tanggal mulai jabatan
          example: "2019-09-21"
        tanggal_selesai_jabatan:
          type: string
          format: date
          description: Tanggal selesai jabatan (opsional)
          example: null
          nullable: true
    JabatanStrukturalGetDetail:
      allOf:
        - $ref: "#/components/schemas/JabatanStrukturalGetItem"
        - properties:
            id_sdm:
              type: string
              format: uuid
              description: ID SDM pemilik data ini
            id_kategori_kegiatan:
              type: integer
              description: ID kategori kegiatan
              example: 111201
            kategori_kegiatan:
              type: string
              description: Nama kategori kegiatan
              example: Tingkat nasional sebagai pengurus
            id_jabatan_negara:
              type: integer
              description: ID jenis jabatan dari [/referensi/jabatan_negara](#get-/referensi/jabatan_negara)
              example: 103
            lokasi:
              type: string
              description: Lokasi penugasan
              example: Indonesia
            dokumen:
              type: array
              items:
                $ref: "#/components/schemas/DokumenDetail"
    JabatanStrukturalPostBody:
      type: object
      required:
        - id_sdm
        - id_kategori_kegiatan
        - id_jabatan_negara
        - sk_jabatan
        - tanggal_mulai_jabatan
        - lokasi
      properties:
        id_sdm:
          type: string
          format: uuid
          description: ID SDM pemilik data ini
        id_kategori_kegiatan:
          type: integer
          description: ID kategori kegiatan
          example: 130100
        id_jabatan_negara:
          type: integer
          description: ID jenis jabatan dari [/referensi/jabatan_negara](#get-/referensi/jabatan_negara)
          example: 103
        sk_jabatan:
          type: string
          description: Nomor SK jabatan struktural
          example: 1234/SK/2019
          maxLength: 80
        tanggal_mulai_jabatan:
          type: string
          format: date
          description: Tanggal mulai jabatan
          example: "2019-09-21"
        tanggal_selesai_jabatan:
          type: string
          format: date
          description: Tanggal selesai jabatan (opsional)
          example: null
          nullable: true
        lokasi:
          type: string
          description: Lokasi penugasan
          example: Indonesia
          maxLength: 80
        dokumen:
          type: array
          description: ID dokumen pendukung
          items:
            type: string
            format: uuid
    PengelolaJurnalGetItem:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: ID riwayat pengelola jurnal
        kategori_kegiatan:
          type: string
          description: Nama kategori kegiatan
          example: Sebagai editor/dewan penyunting/dewan redaksi jurnal ilmiah nasional
        media_publikasi:
          type: string
          description: Nama jurnal / media publikasi
          example: Jurnal Ilmiah Ilmu Manajemen
        sk_penugasan:
          type: string
          description: Nomor SK penugasan
          example: 1234/SK/2019
        tanggal_mulai:
          type: string
          format: date
          description: Tanggal mulai menjadi pengelola
          example: "2019-09-21"
        tanggal_selesai:
          type: string
          format: date
          description: Tanggal selesai menjadi pengelola
          example: null
          nullable: true
        peran:
          type: string
          description: Peran dalam jurnal
          example: Editor Pelaksana
        aktif:
          type: integer
          description: Status aktif (1 = ya / 0 = tidak)
          example: 1
    PengelolaJurnalGetDetail:
      allOf:
        - $ref: "#/components/schemas/PengelolaJurnalGetItem"
        - properties:
            id_sdm:
              type: string
              format: uuid
              description: ID SDM pemilik data ini
            id_kategori_kegiatan:
              type: integer
              description: ID kategori kegiatan
              example: 140602
            id_media_publikasi:
              type: string
              format: uuid
              description: ID media publikasi, dari endpoint [/referensi/media_publikasi](#get-/referensi/media_publikasi)
            dokumen:
              type: array
              items:
                $ref: "#/components/schemas/DokumenDetail"
    PengelolaJurnalPostBody:
      type: object
      required:
        - id_sdm
        - id_kategori_kegiatan
        - id_media_publikasi
        - peran
        - sk_penugasan
        - tanggal_mulai
        - aktif
      properties:
        id_sdm:
          type: string
          format: uuid
          description: ID SDM pemilik data ini
        id_kategori_kegiatan:
          type: integer
          description: ID kategori kegiatan
          example: 140602
        id_media_publikasi:
          type: string
          format: uuid
          description: ID media publikasi, dari endpoint [/referensi/media_publikasi](#get-/referensi/media_publikasi)
        peran:
          type: string
          description: Peran dalam jurnal
          example: Editor Pelaksana
          maxLength: 30
        sk_penugasan:
          type: string
          description: Nomor SK penugasan
          example: 1234/SK/2019
          maxLength: 80
        tanggal_mulai:
          type: string
          format: date
          description: Tanggal mulai menjadi pengelola
          example: "2019-09-21"
        tanggal_selesai:
          type: string
          format: date
          description: Tanggal selesai menjadi pengelola
          example: "2019-09-21"
          nullable: true
        aktif:
          type: integer
          description: Status aktif (1 = ya / 0 = tidak)
          example: 1
        dokumen:
          type: array
          description: ID dokumen pendukung
          items:
            type: string
            format: uuid
    PenghargaanGetItem:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: ID penghargaan
        jenis_penghargaan:
          type: string
          description: Jenis penghargaan
          example: Lainnya
        nama:
          type: string
          description: Nama penghargaan
          example: Satyalancana Karya Satya 10 tahun
        tahun:
          type: integer
          description: Tahun penghargaan
          example: 2019
        instansi_pemberi:
          type: string
          description: Instansi pemberi
          example: Presiden Republik Indonesia
    PenghargaanGetDetail:
      allOf:
        - $ref: "#/components/schemas/PenghargaanGetItem"
        - properties:
            id_sdm:
              type: string
              format: uuid
              description: ID SDM pemilik data ini
            id_kategori_kegiatan:
              type: integer
              description: ID kategori kegiatan
              example: 140803
            kategori_kegiatan:
              type: string
              description: Nama kategori kegiatan
              example: Penghargaan lainnya tingkat nasional
            tingkat_penghargaan:
              type: string
              description: Tingkat penghargaan
              example: Nasional
            id_tingkat_penghargaan:
              type: integer
              description: ID tingkat penghargaan dari endpoint [/referensi/tingkat_penghargaan](#get-/referensi/tingkat_penghargaan)
              example: 5
            id_jenis_penghargaan:
              type: integer
              description: ID jenis penghargaan dari endpoint [/referensi/jenis_penghargaan](#get-/referensi/jenis_penghargaan)
              example: 9
            dokumen:
              type: array
              items:
                $ref: "#/components/schemas/DokumenDetail"
    PenghargaanPostBody:
      type: object
      required:
        - id_sdm
        - id_kategori_kegiatan
        - id_tingkat_penghargaan
        - id_jenis_penghargaan
        - nama
        - tahun
        - instansi_pemberi
      properties:
        id_sdm:
          type: string
          format: uuid
          description: ID SDM pemilik data ini
        id_kategori_kegiatan:
          type: integer
          description: ID kategori kegiatan
          example: 140803
        id_tingkat_penghargaan:
          type: integer
          description: ID tingkat penghargaan dari endpoint [/referensi/tingkat_penghargaan](#get-/referensi/tingkat_penghargaan)
          example: 5
        id_jenis_penghargaan:
          type: integer
          description: ID jenis penghargaan dari endpoint [/referensi/jenis_penghargaan](#get-/referensi/jenis_penghargaan)
          example: 9
        nama:
          type: string
          description: Nama penghargaan
          example: Satyalancana Karya Satya 10 tahun
          maxLength: 160
        tahun:
          type: integer
          description: Tahun penghargaan
          example: 2019
        instansi_pemberi:
          type: string
          description: Instansi pemberi
          example: Presiden Republik Indonesia
          maxLength: 100
        dokumen:
          type: array
          description: ID dokumen pendukung
          items:
            type: string
            format: uuid
    VisitingScientistGetItem:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: ID visiting scientist
        perguruan_tinggi:
          type: string
          description: Nama perguruan tinggi pengundang
          example: Kasetsart University
        lama_kegiatan:
          type: string
          description: Lama kegiatan dalam hari
          example: 14
        tanggal:
          type: string
          format: date
          description: Tanggal pelaksanaan
          example: "2018-06-25"
    VisitingScientistGetDetail:
      allOf:
        - $ref: "#/components/schemas/VisitingScientistGetItem"
        - properties:
            id_sdm:
              type: string
              format: uuid
              description: ID SDM pemilik data ini
            id_kategori_kegiatan:
              type: integer
              description: ID kategori kegiatan
              example: 111306
            judul_litabmas:
              type: string
              description: Judul kegiatan penelitian/abdimas jika ada
              example: null
            id_penelitian_pengabdian:
              type: string
              format: uuid
              description: ID litabmas
              nullable: true
            kategori_capaian_luaran:
              type: string
              description: Nama kategori capaian luaran
              example: Visiting Scientist
            id_kategori_capaian_luaran:
              type: integer
              description: ID kategori capaian luaran
              example: 7
              nullable: true
            id_perguruan_tinggi:
              type: string
              format: uuid
              description: ID perguruan tinggi pengundang. Berisi `null` untuk perguruan tinggi luar negeri.
              nullable: true
              example: null
            kegiatan_penting:
              type: string
              description: Kegiatan penting yang dilakukan di perguruan tinggi pengundang
              example: Kuliah Tamu dan Diskusi Kolaborasi Penelitian
            sk_penugasan:
              type: string
              description: Nomor SK penugasan
              example: 1234/SK/2018
            tanggal_sk_penugasan:
              type: string
              format: date
              description: Tanggal SK
              example: "2018-01-01"
    VisitingScientistPostBody:
      type: object
      required:
        - id_sdm
        - id_kategori_kegiatan
        - lama_kegiatan
        - tanggal
      properties:
        id_sdm:
          type: string
          format: uuid
          description: ID SDM pemilik data ini
        id_kategori_kegiatan:
          type: integer
          description: ID kategori kegiatan
          example: 111306
        id_kategori_capaian_luaran:
          type: integer
          description: ID kategori capaian luaran
          example: 7
          nullable: true
        id_penelitian_pengabdian:
          type: string
          format: uuid
          description: ID litabmas
          nullable: true
        id_perguruan_tinggi:
          type: string
          format: uuid
          description: ID perguruan tinggi pengundang. Isikan `null` untuk perguruan tinggi luar negeri.
          nullable: true
          example: "828fb966-3733-430e-86ff-909b764e2523"
        perguruan_tinggi:
          type: string
          description: Nama perguruan tinggi pengundang. Diisi jika perguruan tinggi di luar negeri.
          nullable: true
          example: null
          maxLength: 100
        lama_kegiatan:
          type: integer
          description: Lama kegiatan dalam hari
          example: 14
        kegiatan_penting:
          type: string
          description: Kegiatan penting yang dilakukan di perguruan tinggi pengundang
          example: Kuliah Tamu dan Diskusi Kolaborasi Penelitian
        tanggal:
          type: string
          format: date
          description: Tanggal pelaksanaan
          example: "2018-06-25"
        sk_penugasan:
          type: string
          description: Nomor SK penugasan
          example: 1234/SK/2018
          maxLength: 80
        tanggal_sk_penugasan:
          type: string
          format: date
          description: Tanggal SK
          example: "2018-01-01"
    PenunjangLainGetItem:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: ID penunjang lain
        nama:
          type: string
          description: Nama kegiatan
          example: International Symposium in Veterinary Sciences (Indonesia and Japan Vet Schools)
        instansi:
          type: string
          description: Instansi kepanitiaan
          example: Institut Pertanian Bogor
        sk_penugasan:
          type: string
          description: Nomor SK penugasan
          example: 1234/SK/2019
        tanggal_mulai:
          type: string
          format: date
          description: Tanggal mulai kepanitiaan
          example: "2019-09-21"
        tanggal_selesai:
          type: string
          format: date
          description: Tanggal selesai kepanitiaan (opsional)
          example: "2020-01-15"
          nullable: true
        peran:
          type: string
          description: Peran dalam kegiatan
          example: Anggota
    PenunjangLainGetDetail:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: ID penunjang lain
        id_sdm:
          type: string
          format: uuid
          description: ID SDM pemilik data ini
        nama:
          type: string
          description: Nama kegiatan
          example: International Symposium in Veterinary Sciences (Indonesia and Japan Vet Schools)
        id_jenis_kepanitiaan:
          type: integer
          description: ID jenis kepanitiaan / jenis kegiatan
          example: 4
        jenis_kepanitiaan:
          type: string
          description: Jenis kepanitiaan
          example: Panitia pada pertemuan ilmiah
        instansi:
          type: string
          description: Instansi kepanitiaan
          example: Institut Pertanian Bogor
        tingkat:
          type: string
          enum:
            - Lokal
            - Daerah
            - Nasional
            - Internasional
          description: Tingkat kegiatan
        sk_penugasan:
          type: string
          description: Nomor SK penugasan
          example: 1234/SK/2019
        tanggal_mulai:
          type: string
          format: date
          description: Tanggal mulai kepanitiaan
          example: "2019-09-21"
        tanggal_selesai:
          type: string
          format: date
          description: Tanggal selesai kepanitiaan (opsional)
          example: "2020-01-15"
          nullable: true
        id_kategori_kegiatan:
          type: string
          description: ID kategori kegiatan
          example: 140102
        kategori_kegiatan:
          type: string
          description: Kategori kegiatan
          example: Sebagai anggota
        anggota_dosen:
          type: array
          description: Data anggota SDM, dapat dicari pada endpoint [/referensi/sdm](#get-/referensi/sdm)
          items:
            type: object
            properties:
              id_sdm:
                type: string
                format: uuid
                description: ID Dosen
              nama:
                type: string
                description: Nama dosen
                example: FAKHRUL ULUM
              peran:
                type: string
                description: Peran dalam kegiatan
                example: Anggota
        dokumen:
          type: array
          items:
            $ref: "#/components/schemas/DokumenDetail"
    PenunjangLainPostBody:
      type: object
      required:
        - id_kategori_kegiatan
        - nama
        - id_jenis_kepanitiaan
        - instansi
        - tingkat
        - sk_penugasan
        - tanggal_mulai
      properties:
        id_kategori_kegiatan:
          type: integer
          description: ID kategori kegiatan
          example: 140102
        nama:
          type: string
          description: Nama kegiatan
          example: International Symposium in Veterinary Sciences (Indonesia and Japan Vet Schools)
          maxLength: 80
        id_jenis_kepanitiaan:
          type: integer
          description: ID jenis kepanitiaan / jenis kegiatan
          example: 4
        instansi:
          type: string
          description: Instansi kepanitiaan
          example: Institut Pertanian Bogor
          maxLength: 100
        tingkat:
          type: string
          enum:
            - L
            - D
            - N
            - I
          description: L=Lokal, D=Daerah, N=Nasional, I=Internasional
        sk_penugasan:
          type: string
          description: Nomor SK penugasan
          example: 1234/SK/2019
          maxLength: 80
        tanggal_mulai:
          type: string
          format: date
          description: Tanggal mulai kepanitiaan
          example: "2019-09-21"
        tanggal_selesai:
          type: string
          format: date
          description: Tanggal selesai kepanitiaan (opsional)
          example: "2020-01-15"
          nullable: true
        anggota_dosen:
          type: array
          description: Data anggota SDM, dapat dicari pada endpoint [/referensi/sdm](#get-/referensi/sdm)
          items:
            type: object
            required:
              - id_sdm
            properties:
              id_sdm:
                type: string
                format: uuid
                description: ID Dosen, required, dapat dicari pada endpoint [/referensi/sdm](#get-/referensi/sdm)
              peran:
                type: string
                description: Peran dalam kegiatan
                example: Anggota Komite
        dokumen:
          type: array
          description: ID dokumen pendukung
          items:
            type: string
            format: uuid
    SertifikasiProfesiGetItem:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: ID riwayat sertifikasi profesi
          example: "e5b85d1e-64bf-4395-b6d8-97c4635fe176"
        jenis_sertifikasi:
          type: string
          description: Jenis Sertifikasi
          example: Sertifikasi Profesi
        bidang_studi:
          type: string
          description: Bidang Studi sertifikasi
          example: Gizi Masyarakat dan Sumber Daya Keluarga
        sk_sertifikasi:
          type: string
          description: Nomor SK
          example: "91105111076"
        id_lembaga_sertifikasi:
          type: integer
          description: ID Lembaga Sertifikasi
          example: null
        nama_lembaga_sertifikasi:
          type: string
          description: Nama Lembaga Sertifikasi
          example: null
        terhitung_mulai_tanggal:
          type: string
          description: Terhitung mulai tanggal sertifikasi
          example: "2019-09-21"
        terhitung_sampai_tanggal:
          type: string
          description: Terhitung sampai tanggal sertifikasi
          example: "2023-09-21"
        nomor_registrasi:
          type: string
          description: Nomor Registrasi
          example: "20100200300610"
        tahun_sertifikasi:
          type: integer
          description: Tahun diperolehnya sertifikasi
          example: 2024
    SertifikasiProfesiGetDetail:
      allOf:
        - $ref: "#/components/schemas/SertifikasiProfesiGetItem"
        - properties:
            id_sdm:
              type: string
              format: uuid
              description: ID SDM pemilik data sertifikasi profesi ini
            id_jenis_sertifikasi:
              type: integer
              description: ID Jenis Sertifikasi
              example: 100
            id_bidang_studi:
              type: integer
              description: ID Bidang Studi
              example: 99
            dokumen:
              type: array
              items:
                $ref: "#/components/schemas/DokumenDetail"
    SertifikasiProfesiPostBody:
      type: object
      required:
        - id_sdm
        - id_jenis_sertifikasi
        - id_bidang_studi
        - sk_sertifikasi
        - tahun_sertifikasi
        - terhitung_mulai_tanggal
        - terhitung_sampai_tanggal
      properties:
        id_sdm:
          type: string
          format: uuid
          description: ID SDM
        id_jenis_sertifikasi:
          type: integer
          description: ID Jenis Sertifikasi. Isikan `100` untuk sertifikasi profesi.
          example: 100
        id_bidang_studi:
          type: integer
          description: ID Bidang Studi, dari [/referensi/bidang_studi](#get-/referensi/bidang_studi)
          example: 99
        id_lembaga_sertifikasi:
          type: integer
          description: ID Lembaga Sertifikasi, dari [/referensi/lembaga_sertifikasi](#get-/referensi/lembaga_sertifikasi)
          example: 0
        tahun_sertifikasi:
          type: integer
          description: Tahun sertifikasi profesi
          example: 2020
        terhitung_mulai_tanggal:
          type: string
          description: Terhitung Mulai Tanggal Sertifikasi
          example: "2019-01-01"
        terhitung_sampai_tanggal:
          type: string
          description: Terhitung Sampai Tanggal Sertifikasi
          example: "2023-01-01"
        sk_sertifikasi:
          type: string
          description: Nomor SK
          example: "91105111076"
          maxLength: 80
        nomor_registrasi:
          type: string
          description: Nomor Registrasi
          example: "20100200300610"
          maxLength: 14
        dokumen:
          type: array
          description: ID dokumen pendukung
          items:
            type: string
            format: uuid
    SertifikasiDosenGetItem:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: ID riwayat sertifikasi dosen
        jenis_sertifikasi:
          type: string
          description: Jenis Sertifikasi
          example: Sertifikasi Profesi
        bidang_studi:
          type: string
          description: Bidang Studi sertifikasi
          example: Ilmu Komputer
        tahun_sertifikasi:
          type: integer
          description: Tahun sertifikasi dosen
          example: 2020
        sk_sertifikasi:
          type: string
          description: Nomor SK
          example: "200010250080"
        nomor_registrasi:
          type: string
          description: Nomor Registrasi
          example: "20100200303341"
    SertifikasiDosenGetDetail:
      allOf:
        - $ref: "#/components/schemas/SertifikasiDosenGetItem"
        - properties:
            id_sdm:
              type: string
              format: uuid
              description: ID SDM pemilik data ini
            id_bidang_studi:
              type: integer
              description: ID Bidang Studi
              example: 123
            nomor_peserta:
              type: string
              description: Nomor peserta
              example: "0031038602"
            dokumen:
              type: array
              items:
                $ref: "#/components/schemas/DokumenDetail"
    NilaiTesGetItem:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: ID nilai tes
        jenis_tes:
          type: string
          description: Jenis tes
          example: IELTS
        nama:
          type: string
          description: Nama tes
          example: IELTS Academic
        penyelenggara:
          type: string
          description: Penyelenggara tes
          example: British Council
        tahun:
          type: integer
          description: Tahun tes
          example: 2019
        skor:
          type: number
          description: Skor yang diperoleh (tidak boleh melebihi maksimum dari jenis tes)
          example: 6.50
    NilaiTesGetDetail:
      allOf:
        - $ref: "#/components/schemas/NilaiTesGetItem"
        - properties:
            id_sdm:
              type: string
              format: uuid
              description: ID SDM pemilik data ini
            id_jenis_tes:
              type: integer
              description: ID jenis tes, dari [/referensi/jenis_tes](#get-/referensi/jenis_tes)
              example: 11
            tanggal:
              type: string
              format: date
              description: Tanggal tes
              nullable: true
              example: "2019-09-14"
            dokumen:
              type: array
              items:
                $ref: "#/components/schemas/DokumenDetail"
    NilaiTesPostBody:
      type: object
      required:
        - id_sdm
        - id_jenis_tes
        - nama
        - penyelenggara
        - tanggal
        - tahun
        - skor
      properties:
        id_sdm:
          type: string
          format: uuid
          description: ID SDM pemilik data ini
        id_jenis_tes:
          type: integer
          description: ID jenis tes, dari [/referensi/jenis_tes](#get-/referensi/jenis_tes)
          example: 11
        nama:
          type: string
          description: Nama tes
          example: IELTS Academic
          maxLength: 50
        penyelenggara:
          type: string
          description: Penyelenggara tes
          example: British Council
          maxLength: 100
        tanggal:
          type: string
          format: date
          description: Tanggal tes
          nullable: true
          example: "2019-09-14"
        tahun:
          type: integer
          description: Tahun tes
          example: 2019
        skor:
          type: number
          description: Skor yang diperoleh (tidak boleh melebihi maksimum dari jenis tes)
          example: 6.50
        dokumen:
          type: array
          description: ID dokumen pendukung
          items:
            type: string
            format: uuid
    PendidikanFormalGetItem:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: ID riwayat pendidikan formal
        jenjang_pendidikan:
          type: string
          description: Jenjang pendidikan
          example: S3
        gelar_akademik:
          type: string
          description: Gelar akademik
          example: "Ph.D"
        bidang_studi:
          type: string
          description: Bidang studi
          example: Biologi (dan Bioteknologi Umum)
        nama_perguruan_tinggi:
          type: string
          description: Nama perguruan tinggi
          example: James Cook University
        tahun_lulus:
          type: integer
          description: Tahun lulus
          example: 2019
        jenis_ajuan:
          type: integer
          description: Jenis Ajuan
          example: Klaim
    PendidikanFormalGetDetail:
      allOf:
        - $ref: "#/components/schemas/PendidikanFormalGetItem"
        - properties:
            kategori_kegiatan:
              type: string
              description: Nama kategori kegiatan
              example: Magister (S2)/sederajat
            id_sdm:
              type: string
              format: uuid
              description: ID SDM pemilik data ini
            id_program_studi:
              type: string
              format: uuid
              nullable: true
              description: ID program studi dari [/referensi/unit_kerja](#get-/referensi/unit_kerja). Berisi `null` jika mengisikan program studi dan perguruan tinggi manual.
              example: null
            nama_program_studi:
              type: string
              nullable: true
              description: Nama program studi
              example: Medical and Molecular Science
            id_jenjang_pendidikan:
              type: integer
              nullable: true
              description: ID jenjang studi
              example: 40
            id_gelar_akademik:
              type: integer
              description: ID gelar akademik dari [/referensi/gelar_akademik](#get-/referensi/gelar_akademik)
              example: 25149
            id_bidang_studi:
              type: integer
              description: ID bidang studi dari [/referensi/bidang_studi](#get-/referensi/bidang_studi)
              example: 113
            tahun_masuk:
              type: integer
              description: Tahun masuk
              example: 2014
            tanggal_lulus:
              type: string
              format: date
              description: Tanggal kelulusan
              example: "2019-01-01"
            nomor_induk:
              type: string
              description: Nomor induk ketika menjadi mahasiswa
              example: "12910210"
            jumlah_semester:
              type: integer
              description: Jumlah semester yang ditempuh
              example: 10
            jumlah_sks:
              type: integer
              description: Jumlah SKS sampai lulus
              example: 12
            ipk:
              type: number
              description: IPK saat lulus
              example: 4.00
            sk_penyetaraan:
              type: string
              description: Nomor SK penyetaraan
              example: "2005/Belmawa/Kep/IJLN/2019"
            tanggal_sk_penyetaraan:
              type: string
              format: date
              description: Tanggal SK penyetaraan
              example: "2019-07-08"
            nomor_ijazah:
              type: string
              description: Nomor ijazah
              nullable: true
              example: null
            judul_tugas_akhir:
              type: string
              description: Judul tesis/disertasi
              nullable: true
              example: "Characterisation of Oyster Allergens for Improved Diagnosis of Mollusc Allergy"
            jenis_ajuan:
              type: string
              description: Jenis Ajuan
              example: Klaim
            dokumen:
              type: array
              items:
                $ref: "#/components/schemas/DokumenDetail"
    PendidikanFormalPostBody:
      type: object
      required:
        - id_sdm
        - id_bidang_studi
        - tahun_masuk
        - tahun_lulus
        - tanggal_lulus
        - nomor_induk
        - jumlah_sks
        - ipk
      properties:
        id_sdm:
          type: string
          format: uuid
          description: ID SDM pemilik data ini
        id_program_studi:
          type: string
          format: uuid
          nullable: true
          description: ID program studi dari [/referensi/unit_kerja](#get-/referensi/unit_kerja). Diisi `null` jika ingin mengisikan program studi dan perguruan tinggi manual.
          example: null
        nama_program_studi:
          type: string
          nullable: true
          description: Nama program studi jika mengisikan manual. Diisi `null` jika memilih dari ID program studi tertentu.
          example: Medical and Molecular Science
          maxLength: 100
        nama_perguruan_tinggi:
          type: string
          nullable: true
          description: Nama perguruan tinggi jika mengisikan manual. Diisi `null` jika memilih dari ID program studi tertentu.
          example: James Cook University
          maxLength: 100
        id_jenjang_pendidikan:
          type: integer
          nullable: true
          description: ID jenjang studi jika mengisikan manual. Diisi `null` jika memilih dari ID program studi tertentu.
          example: 40
        id_gelar_akademik:
          type: integer
          description: ID gelar akademik dari [/referensi/gelar_akademik](#get-/referensi/gelar_akademik)
          example: 25149
        id_bidang_studi:
          type: integer
          description: ID bidang studi dari [/referensi/bidang_studi](#get-/referensi/bidang_studi)
          example: 113
        tahun_masuk:
          type: integer
          description: Tahun masuk
          example: 2014
        tahun_lulus:
          type: integer
          description: Tahun lulus
          example: 2019
        tanggal_lulus:
          type: string
          format: date
          description: Tanggal kelulusan
          example: "2019-01-01"
        nomor_induk:
          type: string
          description: Nomor induk ketika menjadi mahasiswa
          example: "12910210"
          maxLength: 24
        jumlah_semester:
          type: integer
          description: Jumlah semester yang ditempuh
          example: 10
        jumlah_sks:
          type: integer
          description: Jumlah SKS sampai lulus
          example: 12
        ipk:
          type: number
          description: IPK saat lulus
          example: 4.00
        sk_penyetaraan:
          type: string
          description: Nomor SK penyetaraan
          example: "2005/Belmawa/Kep/IJLN/2019"
          maxLength: 80
        tanggal_sk_penyetaraan:
          type: string
          format: date
          description: Tanggal SK penyetaraan
          example: "2019-07-08"
        nomor_ijazah:
          type: string
          description: Nomor ijazah
          nullable: true
          example: null
          maxLength: 80
        judul_tugas_akhir:
          type: string
          description: Judul tesis/disertasi
          nullable: true
          example: "Characterisation of Oyster Allergens for Improved Diagnosis of Mollusc Allergy"
          maxLength: 500
        dokumen:
          type: array
          description: "ID dokumen pendukung. Dokumen Wajib : Ijazah, SK Penyetaraan Ijasah (PT luar negeri), Transkrip Nilai"
          items:
            type: string
            format: uuid
    DiklatGetItem:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: ID diklat
        jenis_diklat:
          type: string
          description: Jenis diklat
          example: Applied Approach
        nama:
          type: string
          description: Nama diklat
          example: Program Applied Approach (AA) untuk dosen muda
        penyelenggara:
          type: string
          description: Penyelenggara diklat
          example: Pengembangan Program Akademik (PPA) IPB
        tahun:
          type: integer
          description: Tahun penyelenggaraan
          example: 2018
    DiklatGetDetail:
      allOf:
        - $ref: "#/components/schemas/DiklatGetItem"
        - properties:
            id_sdm:
              type: string
              format: uuid
              description: ID SDM pemilik data ini
            id_kategori_kegiatan:
              type: integer
              description: ID kategori kegiatan
              example: 111307
            id_jenis_diklat:
              type: integer
              description: ID jenis diklat dari [/referensi/jenis_diklat](#get-/referensi/jenis_diklat)
              example: 21
            peran:
              type: string
              description: Peran dalam diklat
              example: Peserta
            tingkat:
              type: integer
              enum:
                - 1
                - 2
                - 3
                - 4
              description: 1=Lokal, 2=Regional, 3=Nasional, 4=Internasional
            jumlah_jam:
              type: integer
              description: Jumlah jam diklat
              example: 48
            no_sertifikat:
              type: string
              description: Nomor sertifikat
              example: 0000989/TMK/UT/XII/2018.13
            tanggal_sertifikat:
              type: string
              format: date
              description: Tanggal sertifikat
              nullable: true
              example: "2018-01-01"
            lokasi:
              type: string
              description: Lokasi kegiatan
              example: IPB Bogor
            tanggal_mulai:
              type: string
              format: date
              description: Tanggal mulai
              example: "2018-01-15"
            tanggal_selesai:
              type: string
              format: date
              description: Tanggal selesai
              example: "2018-02-01"
            sk_penugasan:
              type: string
              description: Nomor SK penugasan
              example: 1234/SK/2018
            tanggal_sk_penugasan:
              type: string
              format: date
              description: Tanggal SK
              example: "2018-01-01"
            dokumen:
              type: array
              items:
                $ref: "#/components/schemas/DokumenDetail"
    DiklatPostBody:
      type: object
      required:
        - id_sdm
        - id_kategori_kegiatan
        - id_jenis_diklat
        - nama
        - penyelenggara
        - tingkat
        - tahun
        - tanggal_mulai
        - tanggal_selesai
      properties:
        id_sdm:
          type: string
          format: uuid
          description: ID SDM pemilik data ini
        id_kategori_kegiatan:
          type: integer
          description: ID kategori kegiatan
          example: 111306
        id_jenis_diklat:
          type: integer
          description: ID jenis diklat dari [/referensi/jenis_diklat](#get-/referensi/jenis_diklat)
          example: 23
        nama:
          type: string
          description: Nama diklat
          example: Pelatihan Asesor Kompetensi
          maxLength: 160
        penyelenggara:
          type: string
          description: Penyelenggara diklat
          example: Sakasakti Training and Assessment
          maxLength: 100
        peran:
          type: string
          description: Peran dalam diklat
          example: Peserta
          maxLength: 30
        tingkat:
          type: integer
          enum:
            - 1
            - 2
            - 3
            - 4
          description: 1=Lokal, 2=Regional, 3=Nasional, 4=Internasional
        jumlah_jam:
          type: integer
          description: Jumlah jam diklat
          example: 40
        no_sertifikat:
          type: string
          description: Nomor sertifikat
          example: 1358.XXXI.0216
          maxLength: 80
        tanggal_sertifikat:
          type: string
          format: date
          description: Tanggal sertifikat
          nullable: true
          example: "2016-02-18"
        tahun:
          type: integer
          description: Tahun penyelenggaraan
          example: 2016
        lokasi:
          type: string
          description: Lokasi kegiatan
          example: IPB Bogor
          maxLength: 20
        tanggal_mulai:
          type: string
          format: date
          description: Tanggal mulai
          example: "2016-02-15"
        tanggal_selesai:
          type: string
          format: date
          description: Tanggal selesai
          example: "2016-02-18"
        sk_penugasan:
          type: string
          description: Nomor SK penugasan
          example: null
          maxLength: 80
        tanggal_sk_penugasan:
          type: string
          format: date
          description: Tanggal SK
          example: null
        dokumen:
          type: array
          description: ID dokumen pendukung
          items:
            type: string
            format: uuid
    RiwayatPekerjaanGetItem:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: ID riwayat pekerjaan
          example: 642c7d8c-22ab-4338-8290-7a1fbb24f5f9
        jenis_pekerjaan:
          type: string
          description: Jenis Pekerjaan
          example: Wirausaha
        nama_jabatan:
          type: string
          description: Nama Jabatan
          example: Tenaga Ahli
        instansi:
          type: string
          description: Instansi
          example: PT Sidomuncul
        divisi:
          type: string
          description: Divisi
          example: Divisi Lingkungan dan Proses
        mulai_bekerja:
          type: string
          format: date
          description: Tanggal mulai bekerja
          example: "2020-06-01"
        selesai_bekerja:
          type: string
          format: date
          description: Tanggal selesai bekerja
          example: "2020-06-01"
          nullable: true
        luar_negeri:
          type: boolean
          description: True = area pekerjaan di luar negeri, False = dalam negeri
          example: false
        bidang_usaha:
          type: string
          description: Bidang Usaha
          example: Pertanian Jagung
    RiwayatPekerjaanGetDetail:
      allOf:
        - $ref: "#/components/schemas/RiwayatPekerjaanGetItem"
        - properties:
            id_sdm:
              type: string
              format: uuid
              description: ID SDM pemilik data riwayat pekerjaan ini
            id_bidang_usaha:
              type: integer
              description: ID Bidang Usaha
              example: 1300000
            id_jenis_pekerjaan:
              type: integer
              description: ID Jenis Pekerjaan
              example: 14
            deskripsi_kerja:
              type: string
              description: Deskripsi kerja
              example: Mengevaluasi sistem pengolahan limbah cair
              nullable: true
            dokumen:
              type: array
              items:
                $ref: "#/components/schemas/DokumenDetail"
    RiwayatPekerjaanPostBody:
      type: object
      required:
        - id_sdm
        - id_bidang_usaha
        - id_jenis_pekerjaan
        - nama_jabatan
        - instansi
        - mulai_bekerja
      properties:
        id_sdm:
          type: string
          format: uuid
          description: ID SDM
        id_bidang_usaha:
          type: integer
          description: ID Bidang Usaha
          example: 1300000
        id_jenis_pekerjaan:
          type: integer
          description: ID Jenis Pekerjaan
          example: 14
        nama_jabatan:
          type: string
          description: Nama Jabatan
          example: Tenaga Ahli
          maxLength: 150
        instansi:
          type: string
          description: Instansi
          example: PT Sidomuncul
          maxLength: 100
        divisi:
          type: string
          description: Divisi
          example: Divisi Lingkungan dan Proses
          nullable: true
          maxLength: 100
        deskripsi_kerja:
          type: string
          description: Deskripsi kerja
          example: Mengevaluasi sistem pengolahan limbah cair
          nullable: true
          maxLength: 500
        mulai_bekerja:
          type: string
          format: date
          description: Tanggal mulai bekerja
          example: "2020-06-01"
        selesai_bekerja:
          type: string
          format: date
          description: Tanggal selesai bekerja
          nullable: true
          example: "2020-12-01"
        luar_negeri:
          type: boolean
          description: True = area pekerjaan di luar negeri, False = dalam negeri
          example: false
        dokumen:
          type: array
          description: ID dokumen pendukung
          items:
            type: string
            format: uuid
    BeasiswaGetItem:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: ID beasiswa
        jenis_beasiswa:
          type: string
          description: Jenis beasiswa
          example: Unggulan
        nama:
          type: string
          description: Nama beasiswa
          example: Beasiswa Unggulan Calon Dosen Kemendikbud
        tahun_mulai:
          type: integer
          description: Tahun mulai menerima beasiswa
          example: 2012
        tahun_selesai:
          type: integer
          description: Tahun selesai menerima beasiswa
          nullable: true
          example: 2014
        masih_menerima:
          type: boolean
          description: Apakah masih menerima beasiswa saat ini
          example: false
    BeasiswaGetDetail:
      allOf:
        - $ref: "#/components/schemas/BeasiswaGetItem"
        - properties:
            id_sdm:
              type: string
              format: uuid
              description: ID SDM pemilik data ini
            id_jenis_beasiswa:
              type: integer
              description: ID jenis beasiswa dari [/referensi/jenis_beasiswa](#get-/referensi/jenis_beasiswa)
              example: 4
    BeasiswaPostBody:
      type: object
      required:
        - id_sdm
        - id_jenis_beasiswa
        - nama
        - tahun_mulai
        - masih_menerima
      properties:
        id_sdm:
          type: string
          format: uuid
          description: ID SDM pemilik data ini
        id_jenis_beasiswa:
          type: integer
          description: ID jenis beasiswa dari [/referensi/jenis_beasiswa](#get-/referensi/jenis_beasiswa)
          example: 4
        nama:
          type: string
          description: Nama beasiswa
          example: Beasiswa Unggulan Calon Dosen Kemendikbud
          maxLength: 80
        tahun_mulai:
          type: integer
          description: Tahun mulai menerima beasiswa
          example: 2012
        tahun_selesai:
          type: integer
          description: Tahun selesai menerima beasiswa
          nullable: true
          example: 2014
        masih_menerima:
          type: boolean
          description: Apakah masih menerima beasiswa saat ini
          example: false
    KesejahteraanGetItem:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: ID kesejahteraan
        jenis_kesejahteraan:
          type: string
          description: Jenis kesejateraan
          example: Asuransi Kesejahteraan
        nama:
          type: string
          description: Nama layanan
          example: Takaful Fulmedicare Gold
        penyelenggara:
          type: string
          description: Penyelenggara layanan
          example: IPB
        tahun_mulai:
          type: integer
          description: Tahun mulai menerima layanan
          example: 2019
        tahun_selesai:
          type: integer
          description: Tahun selesai menerima layanan
          nullable: true
          example: null
    KesejahteraanGetDetail:
      allOf:
        - $ref: "#/components/schemas/KesejahteraanGetItem"
        - properties:
            id_sdm:
              type: string
              format: uuid
              description: ID SDM pemilik data ini
            id_jenis_kesejahteraan:
              type: integer
              description: ID jenis kesejahteraan dari [/referensi/jenis_kesejahteraan](#get-/referensi/jenis_kesejahteraan)
              example: 1
    KesejahteraanPostBody:
      type: object
      required:
        - id_sdm
        - id_jenis_kesejahteraan
        - nama
        - penyelenggara
        - tahun_mulai
      properties:
        id_sdm:
          type: string
          format: uuid
          description: ID SDM pemilik data ini
        id_jenis_kesejahteraan:
          type: integer
          description: ID jenis kesejahteraan dari [/referensi/jenis_kesejahteraan](#get-/referensi/jenis_kesejahteraan)
          example: 1
        nama:
          type: string
          description: Nama layanan
          example: Takaful Fulmedicare Gold
          maxLength: 50
        penyelenggara:
          type: string
          description: Penyelenggara layanan
          example: IPB
          maxLength: 100
        tahun_mulai:
          type: integer
          description: Tahun mulai menerima layanan
          example: 2019
        tahun_selesai:
          type: integer
          description: Tahun selesai menerima layanan
          nullable: true
          example: null
    TunjanganGetItem:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: ID tunjangan
        jenis_tunjangan:
          type: string
          description: Jenis tunjangan
          example: Lainnya
        nama:
          type: string
          description: Nama tunjangan
          example: Tunjangan Fungsional PLP Pelaksana Lanjutan
        instansi_pemberi:
          type: string
          description: Instansi pemberi tunjangan
          nullable: true
          example: Kementerian Riset, Teknologi dan Pendidikan Tinggi
        sumber_dana:
          type: string
          description: Sumber dana tunjangan
          nullable: true
          example: APBN
        tahun_mulai:
          type: integer
          description: Tahun mulai menerima tunjangan
          example: 2017
        tahun_selesai:
          type: integer
          description: Tahun selesai menerima tunjangan
          nullable: true
          example: null
        nominal:
          type: number
          description: Nominal tunjangan
          example: 450000
    TunjanganGetDetail:
      allOf:
        - $ref: "#/components/schemas/TunjanganGetItem"
        - properties:
            id_sdm:
              type: string
              format: uuid
              description: ID SDM pemilik data ini
            id_jenis_tunjangan:
              type: integer
              description: ID jenis tunjangan dari [/referensi/jenis_tunjangan](#get-/referensi/jenis_tunjangan)
              example: 99
    TunjanganPostBody:
      type: object
      required:
        - id_sdm
        - id_jenis_tunjangan
        - nama
        - tahun_mulai
        - nominal
      properties:
        id_sdm:
          type: string
          format: uuid
          description: ID SDM pemilik data ini
        id_jenis_tunjangan:
          type: integer
          description: ID jenis tunjangan dari [/referensi/jenis_tunjangan](#get-/referensi/jenis_tunjangan)
          example: 99
        nama:
          type: string
          description: Nama tunjangan
          example: Tunjangan Fungsional PLP Pelaksana Lanjutan
          maxLength: 50
        instansi_pemberi:
          type: string
          description: Instansi pemberi tunjangan
          nullable: true
          example: Kementerian Riset, Teknologi dan Pendidikan Tinggi
          maxLength: 100
        sumber_dana:
          type: string
          description: Sumber dana tunjangan
          nullable: true
          example: APBN
          maxLength: 30
        tahun_mulai:
          type: integer
          description: Tahun mulai menerima tunjangan
          example: 2017
        tahun_selesai:
          type: integer
          description: Tahun selesai menerima tunjangan
          nullable: true
          example: null
        nominal:
          type: number
          description: Nominal tunjangan
          example: 450000
    AjuanPddGetItem:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: ID ajuan
        id_data_master:
          type: string
          format: uuid
          nullable: true
          description: ID data master yang diajukan perubahan / penghapusannya. Berisi `null` jika ajuan data baru. Berisi ID SDM untuk ajuan data pokok.
        id_sdm:
          type: string
          format: uuid
          description: ID SDM yang datanya diajukan PDD
        tanggal_ajuan:
          type: string
          format: date-time
          description: Tanggal dan jam ajuan dibuat
          example: "2021-03-03 20:07:47"
        tanggal_verifikasi:
          type: string
          format: date-time
          nullable: true
          description: Tanggal dan jam ajuan diverifikasi (disetujui / ditolak / ditangguhkan). Berisi `null` jika data belum diproses.
          example: "2021-03-08 20:48:22"
        jenis_ajuan:
          type: string
          description: Jenis ajuan (Baru/Ubah/Hapus)
          example: Ubah
        keterangan:
          type: string
          nullable: true
          description: Keterangan verifikasi
          example: Data sesuai
        umur:
          type: integer
          nullable: true
          description: Umur ajuan (dalam hari)
          example: 5
        status:
          type: string
          description: Status ajuan
          example: Disetujui Subdit Kompetensi SDM Kemenristekdikti
          enum:
            - Draft
            - Diajukan
            - Disetujui Kepegawaian PT
            - Disetujui Tenaga LLDIKTI
            - Disetujui Subdit Kompetensi SDM Kemenristekdikti
            - Ditolak Kepegawaian PT
            - Ditolak Tenaga LLDIKTI
            - Ditolak Subdit Kompetensi SDM Kemenristekdikti
            - Ditangguhkan Kepegawaian PT
            - Ditangguhkan oleh Tenaga LLDIKTI
            - Ditangguhkan oleh Subdit Kompetensi SDM Kemenristekdikti
    AjuanPddGetDetail:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: ID ajuan
        id_data_master:
          type: string
          format: uuid
          nullable: true
          description: ID data master yang diajukan perubahan / penghapusannya. Berisi `null` jika ajuan data baru. Berisi ID SDM untuk ajuan data pokok.
        id_sdm:
          type: string
          format: uuid
          description: ID SDM pemilik data ajuan ini
        jenis_ajuan:
          type: string
          description: Jenis ajuan (Baru/Ubah/Hapus)
          example: Ubah
        detail_perubahan:
          type: object
          description: Detail data yang diubah. Berbentuk objek dengan format key `namakolom_lama` dan `namakolom_baru`. Ajuan data baru hanya berisi data baru. Ajuan hapus data hanya berisi data lama. Ajuan perubahan data dapat mengisi data lama dan baru. Jika data baru `null`, artinya data tidak berubah dari data lama.
          additionalProperties:
            type: string
          example:
            tahun_lulus_lama: "2012"
            tahun_lulus_baru: "2013"
            angka_kredit_lama: null
            angka_kredit_baru: "150.0"
        dokumen:
          type: array
          description: Dokumen pendukung
          items:
            $ref: "#/components/schemas/DokumenDetail"
    AjuanPddHapusPostBody:
      type: object
      required:
        - dokumen
      properties:
        dokumen:
          type: array
          description: ID dokumen pendukung ajuan hapus (termasuk screenshot data ganda)
          items:
            type: string
            format: uuid
    InpassingGetItem:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: ID inpassing
        pangkat_golongan:
          type: string
          description: Pangkat/golongan
          example: "IV/b (Pembina Tk. I)"
        sk:
          type: string
          description: Nomor SK inpassing
          example: 16261/A2.3/KP/2018
        tanggal_sk:
          type: string
          format: date
          description: Tanggal SK inpassing
          example: "2018-04-23"
        tanggal_mulai:
          type: string
          format: date
          description: Terhitung mulai tanggal
          example: "2018-04-01"
    InpassingGetDetail:
      allOf:
        - $ref: "#/components/schemas/InpassingGetItem"
        - properties:
            id_sdm:
              type: string
              format: uuid
              description: ID SDM pemilik data ini
            id_pangkat_golongan:
              type: integer
              description: ID golongan/pangkat, dari [/referensi/golongan_pangkat](#get-/referensi/golongan_pangkat)
              example: 14
            pangkat:
              type: string
              description: Nama pangkat
              example: Pembina Tk. I
            golongan:
              type: string
              description: Nama golongan
              example: "IV/b"
            angka_kredit:
              type: number
              description: Angka kredit
              example: 596.53
            masa_kerja_tahun:
              type: number
              description: Masa kerja dalam tahun
              example: 13
            masa_kerja_bulan:
              type: number
              description: Masa kerja dalam bulan
              example: 2
            dokumen:
              type: array
              items:
                $ref: "#/components/schemas/DokumenDetail"
    InpassingPostBody:
      type: object
      required:
        - id_sdm
        - id_pangkat_golongan
        - sk
        - tanggal_mulai
        - angka_kredit
        - masa_kerja_tahun
        - masa_kerja_bulan
      properties:
        id_sdm:
          type: string
          format: uuid
          description: ID SDM pemilik data ini
        id_pangkat_golongan:
          type: integer
          description: ID golongan/pangkat, dari [/referensi/golongan_pangkat](#get-/referensi/golongan_pangkat)
          example: 14
        sk:
          type: string
          description: Nomor SK inpassing
          example: 16261/A2.3/KP/2018
          maxLength: 80
        tanggal_sk:
          type: string
          format: date
          description: Tanggal SK inpassing
          example: "2018-04-23"
        tanggal_mulai:
          type: string
          format: date
          description: Terhitung mulai tanggal
          example: "2018-04-01"
        angka_kredit:
          type: number
          description: Angka kredit
          example: 596.53
        masa_kerja_tahun:
          type: number
          description: Masa kerja dalam tahun
          example: 13
        masa_kerja_bulan:
          type: number
          description: Masa kerja dalam bulan
          example: 2
        dokumen:
          type: array
          description: ID dokumen pendukung
          items:
            type: string
            format: uuid
    JabatanFungsionalGetItem:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: ID riwayat jabatan fungsional
        jabatan_fungsional:
          type: string
          description: Jabatan fungsional beserta angka kreditnya
          example: "Asisten Ahli (150.00)"
        sk:
          type: string
          description: Nomor SK jabatan
          example: 47/IT3/KP.01.00/2020
        tanggal_mulai:
          type: string
          format: date
          description: TMT jabatan
          example: "2020-03-01"
    JabatanFungsionalGetDetail:
      allOf:
        - $ref: "#/components/schemas/JabatanFungsionalGetItem"
        - properties:
            id_sdm:
              type: string
              format: uuid
              description: ID SDM pemilik data ini
            id_jabatan_fungsional:
              type: integer
              description: ID jenis jabatan fungsional, dari [/referensi/jabatan_fungsional](#get-/referensi/jabatan_fungsional)
              example: 41
            angka_kredit:
              type: number
              description: Angka kredit jabatan
              example: 150.0
            kelebihan_pengajaran:
              type: number
              nullable: true
              description: Kelebihan angka kredit pengajaran
              example: 5.50
            kelebihan_penelitian:
              type: number
              nullable: true
              description: Kelebihan angka kredit penelitian
              example: null
            kelebihan_pengabdian:
              type: number
              nullable: true
              description: Kelebihan angka kredit pengabdian
              example: null
            kelebihan_penunjang:
              type: number
              nullable: true
              description: Kelebihan angka kredit penunjang
              example: null
            dokumen:
              type: array
              items:
                $ref: "#/components/schemas/DokumenDetail"
    JabatanFungsionalPostBody:
      type: object
      required:
        - id_sdm
        - id_jabatan_fungsional
        - sk
        - tanggal_mulai
      properties:
        id_sdm:
          type: string
          format: uuid
          description: ID SDM pemilik data ini
        id_jabatan_fungsional:
          type: integer
          description: ID jenis jabatan fungsional, dari [/referensi/jabatan_fungsional](#get-/referensi/jabatan_fungsional)
          example: 41
        sk:
          type: string
          description: Nomor SK jabatan
          example: 47/IT3/KP.01.00/2020
          maxLength: 80
        tanggal_mulai:
          type: string
          format: date
          description: TMT jabatan
          example: "2020-03-01"
        angka_kredit:
          type: number
          nullable: true
          description: Angka kredit jabatan ini
          example: 200.0
        kelebihan_pengajaran:
          type: number
          nullable: true
          description: Kelebihan angka kredit pengajaran
          example: 5.50
        kelebihan_penelitian:
          type: number
          nullable: true
          description: Kelebihan angka kredit penelitian
          example: null
        kelebihan_pengabdian:
          type: number
          nullable: true
          description: Kelebihan angka kredit pengabdian
          example: null
        kelebihan_penunjang:
          type: number
          nullable: true
          description: Kelebihan angka kredit penunjang
          example: null
        dokumen:
          type: array
          description: "ID dokumen pendukung. Dokumen wajib: SK jabatan fungsional"
          items:
            type: string
            format: uuid
    KepangkatanGetItem:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: ID riwayat kepangkatan
        pangkat_golongan:
          type: string
          description: Pangkat/golongan
          example: "III/c (Penata)"
        sk:
          type: string
          description: Nomor SK kepangkatan
          example: 53979/A3/KP/2020
        tanggal_mulai:
          type: string
          format: date
          description: Terhitung mulai tanggal
          example: "2020-04-01"
    KepangkatanGetDetail:
      allOf:
        - $ref: "#/components/schemas/KepangkatanGetItem"
        - properties:
            id_sdm:
              type: string
              format: uuid
              description: ID SDM pemilik data ini
            id_pangkat_golongan:
              type: integer
              description: ID golongan/pangkat, dari [/referensi/golongan_pangkat](#get-/referensi/golongan_pangkat)
              example: 11
            pangkat:
              type: string
              description: Nama pangkat
              example: Penata
            golongan:
              type: string
              description: Nama golongan
              example: "III/c"
            tanggal_sk:
              type: string
              format: date
              description: Tanggal SK kepangkatan
              example: "2020-06-29"
            masa_kerja_tahun:
              type: number
              description: Masa kerja golongan dalam tahun
              example: 6
            masa_kerja_bulan:
              type: number
              description: Masa kerja golongan dalam bulan
              example: 0
            dokumen:
              type: array
              items:
                $ref: "#/components/schemas/DokumenDetail"
    KepangkatanPostBody:
      type: object
      required:
        - id_sdm
        - id_pangkat_golongan
        - sk
        - tanggal_mulai
        - masa_kerja_tahun
        - masa_kerja_bulan
      properties:
        id_sdm:
          type: string
          format: uuid
          description: ID SDM pemilik data ini
        id_pangkat_golongan:
          type: integer
          description: ID golongan/pangkat, dari [/referensi/golongan_pangkat](#get-/referensi/golongan_pangkat)
          example: 11
        sk:
          type: string
          description: Nomor SK kepangkatan
          example: 53979/A3/KP/2020
          maxLength: 80
        tanggal_sk:
          type: string
          format: date
          description: Tanggal SK kepangkatan
          example: "2020-06-29"
        tanggal_mulai:
          type: string
          format: date
          description: Terhitung mulai tanggal
          example: "2020-04-01"
        masa_kerja_tahun:
          type: number
          description: Masa kerja golongan dalam tahun
          example: 6
        masa_kerja_bulan:
          type: number
          description: Masa kerja golongan dalam bulan
          example: 0
        dokumen:
          type: array
          description: "ID dokumen pendukung. Dokumen wajib: SK pangkat/inpassing"
          items:
            type: string
            format: uuid
    PenugasanGetItem:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: ID penugasan/penempatan
        status_kepegawaian:
          type: string
          description: Status kepegawaian
          example: PNS
        ikatan_kerja:
          type: string
          description: Ikatan kerja
          example: Dosen Tetap
        unit_kerja:
          type: string
          description: Nama unit kerja di perguruan tinggi
          example: Ilmu Komputer
        jenjang_pendidikan:
          type: string
          description: Jenjang pendidikan unit kerja
          example: S1
        perguruan_tinggi:
          type: string
          description: Nama perguruan tinggi
          example: Universitas Jakarta
        tanggal_mulai:
          type: string
          format: date
          description: TMT penempatan
          example: "2018-03-01"
        tanggal_keluar:
          type: string
          format: date
          nullable: true
          description: Tanggal keluar jika SDM sudah keluar
          example: null
    PenugasanGetDetail:
      allOf:
        - $ref: "#/components/schemas/PenugasanGetItem"
        - properties:
            id_sdm:
              type: string
              format: uuid
              description: ID SDM pemilik data ini
            surat_tugas:
              type: string
              description: Nomor surat tugas
              example: 4321/A2.1/KP/2018
            tanggal_surat_tugas:
              type: string
              format: date
              description: Tanggal surat tugas
              example: "2018-02-28"
            jenis_keluar:
              type: string
              description: Keterangan keluar
              nullable: true
              example: null
            id_jenis_keluar:
              type: string
              description: ID jenis keluar jika SDM sudah keluar, dari [/referensi/jenis_keluar](#get-/referensi/jenis_keluar)
              nullable: true
              example: null
            id_status_kepegawaian:
              type: integer
              description: ID status kepegawaian dari [/referensi/status_kepegawaian](#get-/referensi/status_kepegawaian)
              example: 1
            id_ikatan_kerja:
              type: string
              description: ID ikatan kerja dari [/referensi/ikatan_kerja](#get-/referensi/ikatan_kerja)
              example: "A"
            id_perguruan_tinggi:
              type: string
              format: uuid
              description: ID perguruan tinggi dari [/referensi/perguruan_tinggi](#get-/referensi/perguruan_tinggi)
              example: "828fb966-3733-430e-86ff-909b764e2523"
            id_unit_kerja:
              type: string
              format: uuid
              description: ID unit kerja di perguruan tinggi dari [/referensi/unit_kerja](#get-/referensi/unit_kerja)
              example: "c6228784-0b80-4e0a-b72d-d3203e44d907"
    DataPribadiProfilGetDetail:
      type: object
      properties:
        nama:
          type: string
          description: Nama SDM (tanpa gelar)
          example: FULAN SUBARKAH
        jenis_kelamin:
          type: string
          description: Jenis kelamin
          enum:
            - L
            - P
          example: L
        tempat_lahir:
          type: string
          description: Tempat lahir
          example: Depok
        tanggal_lahir:
          type: string
          format: date
          description: Tanggal lahir
          example: "1985-04-01"
    DataPribadiKependudukanGetDetail:
      type: object
      properties:
        nik:
          type: string
          description: Nomor KTP
          example: "3276051404850002"
        agama:
          type: string
          description: Agama
          example: Islam
        id_agama:
          type: integer
          description: ID agama dari [/referensi/agama](#get-/referensi/agama)
          example: 1
        kewarganegaraan:
          type: string
          description: Kewarganegaran
          example: Indonesia
        kode_negara:
          type: string
          description: Kode negara kewarganegaraan (2 huruf) dari [/referensi/negara](#get-/referensi/negara)
          example: "ID"
    DataPribadiKeluargaGetDetail:
      type: object
      properties:
        status_kawin:
          type: string
          enum:
            - Belum Kawin
            - Kawin
            - Cerai
          description: Status kawin
          example: Kawin
        id_status_kawin:
          type: integer
          enum:
            - 0
            - 1
            - 2
          description: Kode status kawin (0=Belum kawin, 1=Kawin, 2=Cerai)
          example: 1
        nama_pasangan:
          type: string
          description: Nama suami/istri
          nullable: true
          example: HANDAYANI
        nip_pasangan:
          type: string
          description: NIP suami/istri jika ada
          nullable: true
          example: null
        pekerjaan_pasangan:
          type: string
          description: Pekerjaan suami/istri
          nullable: true
          example: Tidak bekerja
        id_pekerjaan_pasangan:
          type: integer
          description: ID pekerjaan suami/istri, dari [/referensi/jenis_pekerjaan](#get-/referensi/jenis_pekerjaan). Berisikan 0 jika kosong.
          example: 1
    DataPribadiKeluargaPostBody:
      type: object
      required:
        - id_status_kawin
        - dokumen
      properties:
        id_status_kawin:
          type: integer
          enum:
            - 0
            - 1
            - 2
          description: Status kawin (0=Belum kawin, 1=Kawin, 2=Cerai)
          example: 1
        nama_pasangan:
          type: string
          description: Nama suami/istri
          nullable: true
          example: HANDAYANI
          maxLength: 200
        nip_pasangan:
          type: string
          description: NIP suami/istri jika ada
          nullable: true
          example: null
          maxLength: 18
        id_pekerjaan_pasangan:
          type: integer
          description: ID pekerjaan suami/istri, dari [/referensi/jenis_pekerjaan](#get-/referensi/jenis_pekerjaan). Isikan 0 jika kosong.
          example: 1
        dokumen:
          type: array
          description: "ID dokumen pendukung. Dokumen wajib: Kartu Keluarga"
          items:
            type: string
            format: uuid
    DataPribadiAlamatGetDetail:
      type: object
      properties:
        email:
          type: string
          description: E-mail
          example: "fulan@kampus.ac.id"
        alamat:
          type: string
          description: Alamat tempat tinggal
          example: "Jl. Perjuangan No. 123"
        rt:
          type: integer
          description: Nomor RT
          example: 2
        rw:
          type: integer
          description: Nomor RW
          example: 12
        dusun:
          type: string
          description: Nama dusun
          example: null
        kelurahan:
          type: string
          description: Nama desa/kelurahan
          example: Cisalak
        kota_kabupaten:
          type: string
          description: Nama kota/kabupaten
          example: "Kab. Bogor"
        id_kota_kabupaten:
          type: string
          description: ID kota/kabupaten, dari [/referensi/wilayah](#get-/referensi/wilayah) dengan filter kabupaten
          example: "020500"
        kode_pos:
          type: string
          description: Kode pos
          example: "16780"
        telepon_rumah:
          type: string
          description: Nomor telepon rumah
          example: null
        telepon_hp:
          type: string
          description: Nomor telepon HP
          example: "081315612211"
    DataPribadiAlamatPostBody:
      type: object
      properties:
        email:
          type: string
          description: E-mail
          example: "fulan@kampus.ac.id"
          maxLength: 60
        alamat:
          type: string
          description: Alamat tempat tinggal
          example: "Jl. Perjuangan No. 123"
          maxLength: 255
        rt:
          type: integer
          description: Nomor RT
          example: 2
        rw:
          type: integer
          description: Nomor RW
          example: 12
        dusun:
          type: string
          description: Nama dusun
          example: null
          maxLength: 60
        kelurahan:
          type: string
          description: Nama desa/kelurahan
          example: Cisalak
          maxLength: 60
        id_kota_kabupaten:
          type: string
          description: ID kota/kabupaten, dari [/referensi/wilayah](#get-/referensi/wilayah) dengan filter kabupaten
          example: "020500"
        kode_pos:
          type: string
          description: Kode pos
          example: "16780"
          maxLength: 5
        telepon_rumah:
          type: string
          description: Nomor telepon rumah
          example: null
          maxLength: 20
        telepon_hp:
          type: string
          description: Nomor telepon HP
          example: "081315612211"
          maxLength: 20
        dokumen:
          type: array
          description: "ID dokumen pendukung. Dokumen wajib: KTP"
          items:
            type: string
            format: uuid
    DataPribadiLainGetDetail:
      type: object
      properties:
        npwp:
          type: string
          description: Nomor NPWP
          example: "546961234123000"
        nama_wp:
          type: string
          description: Nama wajib pajak
          example: "Fulan Subarkah"
    DataPribadiLainPostBody:
      type: object
      properties:
        npwp:
          type: string
          description: Nomor NPWP
          example: "546961234123000"
          maxLength: 15
        nama_wp:
          type: string
          description: Nama wajib pajak
          example: "Fulan Subarkah"
          maxLength: 200
        dokumen:
          type: array
          description: "ID dokumen pendukung. Dokumen wajib: NPWP"
          items:
            type: string
            format: uuid
    DataPribadiKepegawaianGetDetail:
      type: object
      properties:
        nip:
          type: string
          description: NIP
          example: "198504012018031001"
        sk_cpns:
          type: string
          description: Nomor SK CPNS
          example: "12234/A2.1/KP/2018"
        tanggal_sk_cpns:
          type: string
          format: date
          description: SK CPNS terhitung mulai tanggal
          example: "2018-03-01"
        sk_tmmd:
          type: string
          description: Nomor SK TMMD
          example: "12234/A2.1/KP/2018"
        tmmd:
          type: string
          format: date
          description: Tanggal mulai menjadi dosen
          example: "2018-03-01"
        id_sumber_gaji:
          type: integer
          description: ID sumber gaji, dari [/referensi/sumber_gaji](#get-/referensi/sumber_gaji)
          example: 99
        sumber_gaji:
          type: string
          description: Sumber gaji
          example: Lainnya
        nidn:
          type: string
          description: Nomor induk dosen nasional
          example: "0014042001"
        nuptk:
          type: string
          description: Nomor Unik Pendidik dan Tenaga Kependidikan
          example: 238572673130039
    DataPribadiInterestGetDetail:
      type: array
      description: "Daftar bidang ilmu SDM"
      items:
        type: object
        properties:
          urutan:
            type: integer
            description: Urutan
            example: 1
          id_kelompok_bidang:
            type: string
            description: ID kelompok bidang dari [/referensi/kelompok_bidang](#get-/referensi/kelompok_bidang)
            example: "0091be9c-dc29-4d9e-a22f-df768b0cb649"
          kelompok_bidang:
            type: string
            description: Nama kelompok bidang
            example: ILMU EKONOMI - ILMU MANAJEMEN -- Manajemen
    DataPribadiInterestPostBody:
      type: array
      description: "Array berisi ID kelompok bidang dari [/referensi/kelompok_bidang](#get-/referensi/kelompok_bidang) dengan tipe IPTEK"
      items:
        type: string
        description: ID kelompok bidang
        format: uuid
