KKN API Documentation

REST API untuk Sistem Pendaftaran KKN UNSOED

Base URL: https://soa.unsoed.ac.id/kkn/v1

Daftar Isi

Authentication

Semua endpoint API memerlukan API Key Authentication

API Key harus disertakan pada setiap request melalui header x-api-key

Cara Penggunaan

Tambahkan header x-api-key pada setiap request:

x-api-key: your_api_key_here

Contoh dengan curl:

curl -X GET "https://soa.unsoed.ac.id/kkn/v1/kondisi-kkn/index" \
  -H "x-api-key: your_api_key_here"

Pendaftaran KKN

Endpoint untuk mengelola pendaftaran KKN mahasiswa.

POST /v1/pendaftaran-kkn/list
Mendapatkan daftar pendaftaran KKN berdasarkan email mahasiswa yang login.

Request Body

{
  "email": "mahasiswa@mhs.unsoed.ac.id"
}

Response 200

{
  "status": 200,
  "data": [
    {
      "pendaftaran_kkn_id": "uuid-here",
      "kuota_kkn_id": 123,
      "finalisasi": false,
      "nim": "H1D020001",
      "email_mahasiswa": "mahasiswa@mhs.unsoed.ac.id",
      "nama_mahasiswa": "John Doe",
      "kuota_kkn": {
        "id": 123,
        "kode_fak": "01",
        "jenis_kkn": "Reguler",
        "negara": "-",
        "kecamatan_id": "3301010",
        "kecamatan": "Cilongok",
        "kuota": 50,
        "terisi": 25
      },
      "gelombang_kkn": {
        "id": 1,
        "semester_id": 202401,
        "nama_gelombang_kkn": "Gelombang 1"
      }
    }
  ]
}
POST /v1/pendaftaran-kkn/create
Membuat pendaftaran KKN baru untuk mahasiswa.
Aturan Bisnis:
  • Mahasiswa hanya bisa mendaftar 1 kali
  • IPK minimal 2.0
  • SKS minimal 90
  • Fakultas harus sesuai dengan kuota
  • Kuota harus tersedia
  • Dalam rentang waktu pendaftaran gelombang

Request Body

{
  "email": "mahasiswa@mhs.unsoed.ac.id",
  "kuota_id": 123,
  "kondisi_kkn_id": 1,
  "no_hp": "081234567890"
}

Response Success 200

{
  "status": 200,
  "message": "Pendaftaran berhasil.",
  "data": {
    "id": "uuid-here",
    "kuota_kkn_id": 123,
    "nim": "H1D020001",
    "ipk": 3.5,
    "total_sks": 120,
    "kondisi_kkn_id": 1,
    "no_hp": "081234567890",
    "tgl_daftar": "2024-01-15 10:30:00"
  }
}

Response Error 400

{
  "status": 400,
  "message": "Pendaftaran gagal, silakan cek kembali kuota yang dipilih, syarat IPK dan SKS."
}

Response Error 500

{
  "status": 500,
  "message": "Pendaftaran gagal. Hanya bisa 1 kali daftar."
}
GET /v1/pendaftaran-kkn/finalisasi/{id}
Finalisasi pendaftaran KKN setelah semua syarat terpenuhi.
Syarat Finalisasi:
  • Foto sudah diupload
  • Semua dokumen pendukung sudah diupload
  • IPK dan SKS memenuhi syarat

Parameters

Nama Tipe Lokasi Deskripsi
id string path ID pendaftaran KKN

Response Success 200

{
  "status": 200,
  "message": "Pendaftaran KKN berhasil difinalisasi.",
  "data": {
    "id": "uuid-here",
    "finalisasi": true
  }
}

Response Error 400

{
  "status": 400,
  "message": "Pendaftaran KKN gagal difinalisasi, pastikan semua syarat terpenuhi: SKS, IPK dan Dokumen Pendukung"
}
POST /v1/pendaftaran-kkn/hapus/{id}
Menghapus pendaftaran KKN (hanya jika belum difinalisasi).

Parameters

Nama Tipe Lokasi Deskripsi
id string path ID pendaftaran KKN

Response Success 200

{
  "status": 200,
  "message": "Pendaftaran KKN berhasil dihapus.",
  "errors": {}
}

Response Error 500

{
  "status": 500,
  "message": "Pendaftaran KKN gagal dihapus.",
  "errors": {}
}
POST /v1/pendaftaran-kkn/list-by-semester
Mendapatkan semua pendaftaran KKN berdasarkan semester dengan pagination (untuk admin).

Request Body

{
  "semester_id": 202401,
  "page": 1,        // optional, default: 1
  "per_page": 50    // optional, default: 50
}

Response 200

{
  "status": 200,
  "data": [
    {
      "pendaftaran_kkn_id": "uuid-here",
      "semester_id": 202401,
      "nim": "H1D020001",
      "email_mahasiswa": "mahasiswa@mhs.unsoed.ac.id",
      "nama_mahasiswa": "John Doe",
      "kode_prog_studi": "D4TI",
      "nama_prog_studi": "D4 Teknik Informatika",
      "kode_fak": "01",
      "kecamatan_id": "3301010",
      "nama_kecamatan": "Cilongok"
    }
  ],
  "pagination": {
    "total_count": 250,
    "page_count": 5,
    "current_page": 1,
    "per_page": 50
  }
}

Response Error 400

{
  "status": 400,
  "message": "Parameter semester_id is required."
}

Master Kecamatan

Endpoint untuk mendapatkan data master kecamatan.

GET /v1/kecamatan/index
Mendapatkan daftar semua kecamatan dengan pagination.

Query Parameters

Nama Tipe Required Default Deskripsi
page integer Optional 1 Halaman yang diminta
per_page integer Optional 50 Jumlah data per halaman (max: 1000)

Request Example

GET https://soa.unsoed.ac.id/kkn/v1/kecamatan/index?page=2&per_page=100

Response 200

{
  "status": 200,
  "data": [
    {
      "kecamatan_id": "3301010",
      "nama_kecamatan": "Cilongok"
    },
    {
      "kecamatan_id": "3301020",
      "nama_kecamatan": "Purwokerto Utara"
    },
    {
      "kecamatan_id": "3301030",
      "nama_kecamatan": "Purwokerto Timur"
    }
  ],
  "pagination": {
    "total_count": 150,
    "page_count": 2,
    "current_page": 2,
    "per_page": 100
  }
}

Gelombang KKN

Endpoint untuk mendapatkan informasi gelombang/batch KKN.

GET /v1/gelombang-kkn/list
Mendapatkan daftar gelombang KKN yang sedang aktif.

Response 200

{
  "status": 200,
  "data": [
    {
      "id": 1,
      "semester_id": 202401,
      "nama_gelombang_kkn": "Gelombang 1",
      "keterangan": "Periode Januari - Juni 2024",
      "tgl_awal_daftar": "2024-01-01",
      "tgl_akhir_daftar": "2024-01-31",
      "is_aktif": true
    }
  ]
}

Kondisi KKN

Endpoint untuk mendapatkan data kondisi/status KKN mahasiswa.

GET /v1/kondisi-kkn/index
Mendapatkan daftar semua kondisi KKN.

Response 200

{
  "status": 200,
  "data": [
    {
      "id": 1,
      "nama_kondisi_kkn": "Reguler",
      "keterangan": "KKN reguler biasa"
    },
    {
      "id": 2,
      "nama_kondisi_kkn": "Susulan",
      "keterangan": "KKN susulan"
    }
  ]
}

Kuota KKN

Endpoint untuk mendapatkan informasi kuota KKN.

POST /v1/kuota-kkn/list
Mendapatkan daftar kuota KKN berdasarkan kode fakultas.

Request Body

{
  "kodefak": "01"
}

Response 200

{
  "status": 200,
  "data": [
    {
      "kuota_id": 123,
      "kode_fak": "01",
      "nama_fak": "Fakultas Teknik",
      "jenis_kkn": "Reguler",
      "negara": "-",
      "kecamatan": "Cilongok",
      "kuota": 50,
      "terisi": 25,
      "gelombang": {
        "id": 1,
        "nama": "Gelombang 1",
        "tanggal_awal_daftar": "2024-01-01",
        "tanggal_akhir_daftar": "2024-01-31"
      }
    }
  ]
}

Dokumen Pendaftaran KKN

Endpoint untuk mengelola dokumen pendaftaran KKN.

GET /v1/dokumen-pendaftaran-kkn/index/{id}
Mendapatkan daftar dokumen untuk pendaftaran KKN tertentu.

Parameters

Nama Tipe Lokasi Deskripsi
id string path ID pendaftaran KKN

Response 200

{
  "status": 200,
  "data": [
    {
      "dokumen_pendaftaran_kkn_id": "doc-uuid",
      "nama_file": "doc-uuid.pdf",
      "tanggal_upload": "2024-01-15 10:30:00",
      "jenis_dokumen": {
        "id": 1,
        "nama_jenis_dokumen": "KRS"
      }
    }
  ]
}
POST /v1/dokumen-pendaftaran-kkn/upload/{id}
Upload dokumen pendaftaran KKN.
Ketentuan File:
  • Format: PDF only
  • Ukuran maksimal: 10 MB
  • File disimpan di: /files/dokumen/
  • Nama file: {document_id}.{extension}

Parameters

Nama Tipe Lokasi Deskripsi
id string path ID dokumen pendaftaran

Request (multipart/form-data)

Content-Type: multipart/form-data

file_dokumen: [PDF file]

Response Success 200

{
  "status": 200,
  "message": "File berhasil diupload",
  "data": {
    "id": "doc-uuid",
    "nama_file": "doc-uuid.pdf",
    "ekstensi": "pdf",
    "tgl_upload": "2024-01-15 10:30:00",
    "pendaftaran_kkn_id": "pendaftaran-uuid"
  }
}

Response Error 400

{
  "status": 400,
  "message": "File tidak valid atau melebihi ukuran maksimal"
}
GET /v1/dokumen-pendaftaran-kkn/download/{id}
Download file dokumen pendaftaran.

Parameters

Nama Tipe Lokasi Deskripsi
id string path ID dokumen pendaftaran

Response Success 200

File binary dengan headers:

Content-Type: application/pdf
Content-Disposition: attachment; filename="document.pdf"

[PDF file binary data]

Response Error 404

{
  "status": 404,
  "message": "File tidak ditemukan"
}

Registrasi Akun

Endpoint untuk registrasi akun pengguna baru (mahasiswa atau pegawai).

POST /v1/registrasi/akun
Registrasi akun baru atau update biodata pengguna.
Catatan:
  • Email @mhs.unsoed.ac.id → Registrasi Mahasiswa
  • Email @unsoed.ac.id → Registrasi Pegawai/Dosen
  • Data profile diambil dari API eksternal UNSOED

Request Body

{
  "email": "mahasiswa@mhs.unsoed.ac.id"
}

atau

{
  "email": "dosen@unsoed.ac.id"
}

Response Success 200

{
  "status": 200,
  "message": "Registrasi berhasil"
}

atau

{
  "status": 200,
  "message": "Update biodata berhasil"
}

Pendaftaran DPL (Dosen Pembimbing Lapangan)

Endpoint untuk mengelola pendaftaran DPL KKN.

GET /v1/pendaftaran-dpl/list
Mendapatkan daftar pendaftaran DPL berdasarkan email dosen.

Request Body

{
  "email": "dosen@unsoed.ac.id"
}

Response 200

{
  "status": 200,
  "data": [
    {
      "id": 1,
      "nip": "198001012005011001",
      "nama": "Dr. John Doe, M.Kom",
      "tgl_daftar": "2024-01-10",
      "disetujui": false,
      "fungsional": {
        "id": 1,
        "nama_fungsional": "Lektor"
      },
      "golongan": {
        "id": 1,
        "nama_golongan": "III/d"
      },
      "status_pegawai": {
        "id": 1,
        "nama_status_pegawai": "PNS"
      },
      "gelombang_kkn": {
        "id": 1,
        "semester_id": 202401,
        "nama_gelombang_kkn": "Gelombang 1"
      }
    }
  ]
}
POST /v1/pendaftaran-dpl/create
Mendaftar sebagai DPL untuk gelombang KKN tertentu.

Request Body

{
  "email": "dosen@unsoed.ac.id",
  "gelombang_kkn_id": 1,
  "fungsional_id": 1,
  "golongan_id": 1,
  "status_pegawai_id": 1
}

Response Success 200

{
  "status": 200,
  "message": "Pendaftaran DPL berhasil",
  "data": {
    "id": 1,
    "nip": "198001012005011001",
    "gelombang_kkn_id": 1,
    "fungsional_id": 1,
    "golongan_id": 1,
    "status_pegawai_id": 1,
    "tgl_daftar": "2024-01-15",
    "disetujui": false
  }
}

Response Error 400

{
  "status": 400,
  "message": "Validation error",
  "errors": {
    "gelombang_kkn_id": ["Gelombang KKN harus diisi"]
  }
}
POST /v1/pendaftaran-dpl/delete/{id}
Menghapus pendaftaran DPL (hanya jika belum disetujui).

Parameters

Nama Tipe Lokasi Deskripsi
id integer path ID pendaftaran DPL

Response Success 200

{
  "status": 200,
  "message": "Pendaftaran DPL berhasil dihapus",
  "errors": {}
}

Response Error 500

{
  "status": 500,
  "message": "Pendaftaran DPL gagal dihapus (sudah disetujui)",
  "errors": {}
}

Kelompok KKN

Endpoint untuk mendapatkan informasi kelompok KKN mahasiswa.

POST /v1/kelompok-kkn/list-by-email
Mendapatkan daftar kelompok KKN berdasarkan email mahasiswa, termasuk informasi ringkas tentang gelombang, jenis, negara, desa, dan kecamatan. Untuk informasi lengkap termasuk DPL dan anggota, gunakan endpoint detail-by-email.

Request Body

{
  "email": "mahasiswa@unsoed.ac.id"
}

Response Success 200

{
  "status": 200,
  "data": [
    {
      "kelompok_id": 1,
      "nama_kelompok": "Kelompok A1",
      "gelombang_kkn": {
        "id": 1,
        "semester_id": "20241",
        "nama_gelombang_kkn": "Gelombang 1 2024",
        "tgl_awal_daftar": "2024-01-01",
        "tgl_akhir_daftar": "2024-01-31",
        "is_aktif": true
      },
      "jenis_kkn": {
        "id": 1,
        "nama_jenis_kkn": "Reguler"
      },
      "negara": {
        "id": "ID",
        "nama_negara": "Indonesia"
      },
      "desa": {
        "id": 1,
        "nama_desa": "Desa Sokaraja",
        "kecamatan": {
          "id": "3302010",
          "nama_kecamatan": "Sokaraja"
        }
      },
      "jumlah_anggota": 12,
      "created_at": "2024-02-01 10:30:00"
    }
  ]
}

Response Data Fields

Field Tipe Deskripsi
kelompok_id integer ID kelompok KKN
nama_kelompok string Nama kelompok
gelombang_kkn object Informasi gelombang/periode KKN
jenis_kkn object Jenis KKN (Reguler, Tematik, dll). Nullable.
negara object Negara untuk KKN internasional. Nullable.
desa object Informasi desa dengan nested kecamatan. Nullable.
jumlah_anggota integer Total jumlah anggota dalam kelompok
created_at string Tanggal pembuatan kelompok

Response Error 400 - Missing Parameter

{
  "status": 400,
  "message": "Parameter email is required"
}

Response Error 400 - Invalid Email Format

{
  "status": 400,
  "message": "Invalid email format"
}

Response Error 404 - Student Not Found

{
  "status": 404,
  "message": "Mahasiswa dengan email tersebut tidak ditemukan"
}

Response Success 200 - No Groups (Empty)

{
  "status": 200,
  "data": []
}
Informasi Tambahan:
  • Endpoint ini mengembalikan semua kelompok KKN dimana mahasiswa dengan email tersebut menjadi anggota
  • Response berisi informasi ringkas: gelombang, jenis, negara, desa, kecamatan, dan jumlah anggota
  • Untuk informasi lengkap DPL dan daftar anggota, gunakan endpoint detail-by-email dengan kelompok_kkn_id
  • Performa lebih cepat karena tidak loading relasi DPL dan anggota
  • Response time rata-rata: 50-100ms (2x lebih cepat dari sebelumnya)
POST /v1/dpl-kkn/list-kelompok
Mendapatkan daftar kelompok KKN yang dibimbing oleh DPL (Dosen Pembimbing Lapangan) berdasarkan email, termasuk informasi ringkas tentang gelombang, jenis, negara, desa, dan kecamatan. Untuk informasi lengkap termasuk DPL dan anggota, gunakan endpoint detail-by-dpl.

Request Body

{
  "email": "dosen@unsoed.ac.id"
}

Response Success 200

{
  "status": 200,
  "data": [
    {
      "kelompok_id": 1,
      "nama_kelompok": "Kelompok A1",
      "gelombang_kkn": {
        "id": 1,
        "semester_id": "20241",
        "nama_gelombang_kkn": "Gelombang 1 2024",
        "tgl_awal_daftar": "2024-01-01",
        "tgl_akhir_daftar": "2024-01-31",
        "is_aktif": true
      },
      "jenis_kkn": {
        "id": 1,
        "nama_jenis_kkn": "Reguler"
      },
      "negara": {
        "id": "ID",
        "nama_negara": "Indonesia"
      },
      "desa": {
        "id": 1,
        "nama_desa": "Desa Sokaraja",
        "kecamatan": {
          "id": "3302010",
          "nama_kecamatan": "Sokaraja"
        }
      },
      "jumlah_anggota": 12,
      "created_at": "2024-02-01 10:30:00"
    }
  ]
}

Response Data Fields

Field Tipe Deskripsi
kelompok_id integer ID kelompok KKN
nama_kelompok string Nama kelompok
gelombang_kkn object Informasi gelombang/periode KKN
jenis_kkn object Jenis KKN (Reguler, Tematik, dll). Nullable.
negara object Negara untuk KKN internasional. Nullable.
desa object Informasi desa dengan nested kecamatan. Nullable.
jumlah_anggota integer Total jumlah anggota dalam kelompok
created_at string Tanggal pembuatan kelompok

Response Error 400 - Missing Parameter

{
  "status": 400,
  "message": "Parameter email is required"
}

Response Error 400 - Invalid Email Format

{
  "status": 400,
  "message": "Invalid email format"
}

Response Error 404 - DPL Not Found

{
  "status": 404,
  "message": "DPL tidak ditemukan"
}

Response Error 500 - System Error

{
  "status": 500,
  "message": "Terjadi kesalahan sistem"
}

Response Success 200 - No Groups (Empty)

{
  "status": 200,
  "data": []
}
Informasi Tambahan:
  • Endpoint LIST ini mengembalikan informasi ringkas semua kelompok KKN dimana DPL dengan email tersebut ditugaskan sebagai pembimbing
  • Response tidak termasuk dpl_list dan anggota_list untuk performa optimal
  • Untuk mendapatkan data lengkap (daftar DPL, daftar anggota), gunakan endpoint detail-by-dpl
  • Hanya menampilkan summary: nama kelompok, gelombang, jenis KKN, negara, desa, dan jumlah anggota
  • Menggunakan eager loading untuk performa optimal - tidak ada N+1 query problem
  • Response time rata-rata: 80-150ms untuk DPL dengan 3-5 kelompok (lebih cepat dari versi sebelumnya)
  • Satu DPL dapat membimbing beberapa kelompok pada gelombang yang berbeda
POST /v1/kelompok-kkn/detail-by-email
Mendapatkan detail kelompok KKN tertentu berdasarkan email mahasiswa dan ID kelompok. Endpoint ini memvalidasi bahwa mahasiswa adalah anggota dari kelompok yang diminta.

Request Body

{
  "email": "mahasiswa@unsoed.ac.id",
  "kelompok_kkn_id": 1
}

Response Success 200

{
  "status": 200,
  "data": {
    "kelompok_id": 1,
    "nama_kelompok": "Kelompok A1",
    "gelombang_kkn": {
      "id": 1,
      "semester_id": "20241",
      "nama_gelombang_kkn": "Gelombang 1 2024",
      "tgl_awal_daftar": "2024-01-01",
      "tgl_akhir_daftar": "2024-01-31",
      "is_aktif": true
    },
    "jenis_kkn": {
      "id": 1,
      "nama_jenis_kkn": "Reguler"
    },
    "negara": {
      "id": "ID",
      "nama_negara": "Indonesia"
    },
    "desa": {
      "id": 1,
      "nama_desa": "Desa Sokaraja",
      "kecamatan": {
        "id": "3302010",
        "nama_kecamatan": "Sokaraja"
      }
    },
    "dpl_list": [
      {
        "dpl_kkn_id": "UUID-DPL-1",
        "nama": "Dr. John Doe",
        "nip": "198501012010121001",
        "nidn": "0001018501",
        "email_unsoed": "john.doe@unsoed.ac.id"
      }
    ],
    "anggota_list": [
      {
        "pendaftaran_kkn_id": "UUID-PENDAFTARAN-1",
        "nim": "C1G023019",
        "nama_mahasiswa": "Jane Smith",
        "email_mahasiswa": "jane.smith@unsoed.ac.id",
        "kode_fak": "03",
        "nama_fakultas": "Fakultas Teknik",
        "kode_prog_studi": "54321",
        "nama_prog_studi": "S1 Teknik Informatika",
        "jenis_kelamin": "Perempuan",
        "ipk": 3.75,
        "total_sks": 110,
        "no_hp": "081234567890",
        "finalisasi": true
      }
    ],
    "jumlah_anggota": 12,
    "created_at": "2024-02-01 10:30:00"
  }
}

Response Error 400 - Missing Parameter

{
  "status": 400,
  "message": "Parameter email is required"
}

Response Error 400 - Missing kelompok_kkn_id

{
  "status": 400,
  "message": "Parameter kelompok_kkn_id is required"
}

Response Error 400 - Invalid Email Format

{
  "status": 400,
  "message": "Invalid email format"
}

Response Error 404 - Student Not Found

{
  "status": 404,
  "message": "Mahasiswa dengan email tersebut tidak ditemukan"
}

Response Error 404 - Group Not Found or Access Denied

{
  "status": 404,
  "message": "Kelompok tidak ditemukan atau Anda bukan anggota kelompok ini"
}

Response Error 500 - System Error

{
  "status": 500,
  "message": "Terjadi kesalahan sistem"
}
Informasi Tambahan:
  • Endpoint ini memvalidasi bahwa mahasiswa adalah anggota dari kelompok yang diminta sebelum mengembalikan data
  • Mengembalikan error 404 jika kelompok tidak ditemukan atau mahasiswa bukan anggota
  • Response berupa single object (bukan array) karena hanya mengembalikan 1 kelompok
  • Data includes complete nested information: desa, kecamatan, all DPL, and all group members
POST /v1/dpl-kkn/detail-by-dpl
Mendapatkan detail kelompok KKN tertentu berdasarkan email DPL dan ID kelompok. Endpoint ini memvalidasi bahwa DPL membimbing kelompok yang diminta.

Request Body

{
  "email": "dosen@unsoed.ac.id",
  "kelompok_kkn_id": 1
}

Response Success 200

{
  "status": 200,
  "data": {
    "kelompok_id": 1,
    "nama_kelompok": "Kelompok A1",
    "gelombang_kkn": {
      "id": 1,
      "semester_id": "20241",
      "nama_gelombang_kkn": "Gelombang 1 2024",
      "tgl_awal_daftar": "2024-01-01",
      "tgl_akhir_daftar": "2024-01-31",
      "is_aktif": true
    },
    "jenis_kkn": {
      "id": 1,
      "nama_jenis_kkn": "Reguler"
    },
    "negara": {
      "id": "ID",
      "nama_negara": "Indonesia"
    },
    "desa": {
      "id": 1,
      "nama_desa": "Desa Sokaraja",
      "kecamatan": {
        "id": "3302010",
        "nama_kecamatan": "Sokaraja"
      }
    },
    "dpl_list": [
      {
        "dpl_kkn_id": "UUID-DPL-1",
        "nama": "Dr. John Doe",
        "nip": "198501012010121001",
        "nidn": "0001018501",
        "email_unsoed": "john.doe@unsoed.ac.id"
      },
      {
        "dpl_kkn_id": "UUID-DPL-2",
        "nama": "Prof. Jane Smith",
        "nip": "197501012008122001",
        "nidn": "0012017501",
        "email_unsoed": "jane.smith@unsoed.ac.id"
      }
    ],
    "anggota_list": [
      {
        "pendaftaran_kkn_id": "UUID-PENDAFTARAN-1",
        "nim": "C1G023019",
        "nama_mahasiswa": "Alice Johnson",
        "email_mahasiswa": "alice@unsoed.ac.id",
        "kode_fak": "03",
        "nama_fakultas": "Fakultas Teknik",
        "kode_prog_studi": "54321",
        "nama_prog_studi": "S1 Teknik Informatika",
        "jenis_kelamin": "Perempuan",
        "ipk": 3.75,
        "total_sks": 110,
        "no_hp": "081234567890",
        "finalisasi": true
      }
    ],
    "jumlah_anggota": 12,
    "created_at": "2024-02-01 10:30:00"
  }
}

Response Error 400 - Missing Parameter

{
  "status": 400,
  "message": "Parameter email is required"
}

Response Error 400 - Missing kelompok_kkn_id

{
  "status": 400,
  "message": "Parameter kelompok_kkn_id is required"
}

Response Error 400 - Invalid Email Format

{
  "status": 400,
  "message": "Invalid email format"
}

Response Error 404 - DPL Not Found

{
  "status": 404,
  "message": "DPL tidak ditemukan"
}

Response Error 404 - Group Not Found or Access Denied

{
  "status": 404,
  "message": "Kelompok tidak ditemukan atau Anda tidak membimbing kelompok ini"
}

Response Error 500 - System Error

{
  "status": 500,
  "message": "Terjadi kesalahan sistem"
}
Informasi Tambahan:
  • Endpoint ini memvalidasi bahwa DPL membimbing kelompok yang diminta sebelum mengembalikan data
  • Mengembalikan error 404 jika kelompok tidak ditemukan atau DPL tidak membimbing kelompok tersebut
  • Response berupa single object (bukan array) karena hanya mengembalikan 1 kelompok
  • Data includes ALL DPL assigned to the group (not just the querying DPL)
  • Complete nested information: desa, kecamatan, all DPL assignments, and all group members

Master Fungsional

Endpoint untuk mendapatkan data master jabatan fungsional pegawai.

GET /v1/fungsional/index
Mendapatkan daftar semua jabatan fungsional.

Response 200

{
  "status": 200,
  "data": [
    {
      "id": 1,
      "nama_fungsional": "Asisten Ahli"
    },
    {
      "id": 2,
      "nama_fungsional": "Lektor"
    },
    {
      "id": 3,
      "nama_fungsional": "Lektor Kepala"
    },
    {
      "id": 4,
      "nama_fungsional": "Profesor"
    }
  ]
}

Master Golongan

Endpoint untuk mendapatkan data master golongan kepangkatan pegawai.

GET /v1/golongan/index
Mendapatkan daftar semua golongan kepangkatan.

Response 200

{
  "status": 200,
  "data": [
    {
      "id": 1,
      "nama_golongan": "III/a"
    },
    {
      "id": 2,
      "nama_golongan": "III/b"
    },
    {
      "id": 3,
      "nama_golongan": "III/c"
    },
    {
      "id": 4,
      "nama_golongan": "III/d"
    },
    {
      "id": 5,
      "nama_golongan": "IV/a"
    }
  ]
}

Master Status Pegawai

Endpoint untuk mendapatkan data master status kepegawaian.

GET /v1/status-pegawai/index
Mendapatkan daftar semua status kepegawaian.

Response 200

{
  "status": 200,
  "data": [
    {
      "id": 1,
      "nama_status_pegawai": "PNS"
    },
    {
      "id": 2,
      "nama_status_pegawai": "CPNS"
    },
    {
      "id": 3,
      "nama_status_pegawai": "Honorer"
    },
    {
      "id": 4,
      "nama_status_pegawai": "Kontrak"
    }
  ]
}

Common Response Format & Error Codes

Standard Response Structure

Semua endpoint API mengikuti struktur response berikut:

{
  "status": 200,          // HTTP status code
  "message": "...",       // Optional message
  "data": {},             // Response data (varies by endpoint)
  "errors": {},           // Optional validation errors
  "pagination": {         // Optional pagination info (untuk list endpoint)
    "total_count": 100,
    "page_count": 2,
    "current_page": 1,
    "per_page": 50
  }
}

HTTP Status Codes

Code Meaning Deskripsi
200 OK Request berhasil diproses
400 Bad Request Request tidak valid atau validasi gagal
404 Not Found Resource tidak ditemukan
500 Internal Server Error Error pada server

Pagination Format

Endpoint yang mendukung pagination akan mengembalikan informasi berikut:

{
  "pagination": {
    "total_count": 250,      // Total jumlah data
    "page_count": 5,         // Total jumlah halaman
    "current_page": 1,       // Halaman saat ini
    "per_page": 50          // Jumlah data per halaman
  }
}

Error Response Format

Saat terjadi error, response akan berisi:

{
  "status": 400,
  "message": "Descriptive error message",
  "errors": {
    "field_name": [
      "Error message 1",
      "Error message 2"
    ]
  }
}

Aturan Bisnis Umum

Pendaftaran KKN Mahasiswa:

  • Mahasiswa hanya boleh mendaftar 1 kali per gelombang
  • IPK minimal: 2.0
  • SKS minimal: 90
  • Fakultas mahasiswa harus sesuai dengan kuota
  • Kuota harus masih tersedia
  • Pendaftaran harus dalam rentang waktu yang ditentukan

Dokumen Pendaftaran:

  • Format file: PDF only
  • Ukuran maksimal: 10 MB per file
  • Semua dokumen wajib harus diupload sebelum finalisasi

Pendaftaran DPL:

  • Hanya pegawai dengan email @unsoed.ac.id yang bisa mendaftar
  • Pendaftaran tidak bisa dihapus jika sudah disetujui