REST API untuk Sistem Pendaftaran KKN UNSOED
API Key harus disertakan pada setiap request melalui header x-api-key
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"
Endpoint untuk mengelola pendaftaran KKN mahasiswa.
{
"email": "mahasiswa@mhs.unsoed.ac.id"
}
{
"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"
}
}
]
}
{
"email": "mahasiswa@mhs.unsoed.ac.id",
"kuota_id": 123,
"kondisi_kkn_id": 1,
"no_hp": "081234567890"
}
{
"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"
}
}
{
"status": 400,
"message": "Pendaftaran gagal, silakan cek kembali kuota yang dipilih, syarat IPK dan SKS."
}
{
"status": 500,
"message": "Pendaftaran gagal. Hanya bisa 1 kali daftar."
}
| Nama | Tipe | Lokasi | Deskripsi |
|---|---|---|---|
| id | string | path | ID pendaftaran KKN |
{
"status": 200,
"message": "Pendaftaran KKN berhasil difinalisasi.",
"data": {
"id": "uuid-here",
"finalisasi": true
}
}
{
"status": 400,
"message": "Pendaftaran KKN gagal difinalisasi, pastikan semua syarat terpenuhi: SKS, IPK dan Dokumen Pendukung"
}
| Nama | Tipe | Lokasi | Deskripsi |
|---|---|---|---|
| id | string | path | ID pendaftaran KKN |
{
"status": 200,
"message": "Pendaftaran KKN berhasil dihapus.",
"errors": {}
}
{
"status": 500,
"message": "Pendaftaran KKN gagal dihapus.",
"errors": {}
}
{
"semester_id": 202401,
"page": 1, // optional, default: 1
"per_page": 50 // optional, default: 50
}
{
"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
}
}
{
"status": 400,
"message": "Parameter semester_id is required."
}
Endpoint untuk mendapatkan data master kecamatan.
| Nama | Tipe | Required | Default | Deskripsi |
|---|---|---|---|---|
| page | integer | Optional | 1 | Halaman yang diminta |
| per_page | integer | Optional | 50 | Jumlah data per halaman (max: 1000) |
GET https://soa.unsoed.ac.id/kkn/v1/kecamatan/index?page=2&per_page=100
{
"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
}
}
Endpoint untuk mendapatkan informasi gelombang/batch KKN.
{
"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
}
]
}
Endpoint untuk mendapatkan data kondisi/status KKN mahasiswa.
{
"status": 200,
"data": [
{
"id": 1,
"nama_kondisi_kkn": "Reguler",
"keterangan": "KKN reguler biasa"
},
{
"id": 2,
"nama_kondisi_kkn": "Susulan",
"keterangan": "KKN susulan"
}
]
}
Endpoint untuk mendapatkan informasi kuota KKN.
{
"kodefak": "01"
}
{
"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"
}
}
]
}
Endpoint untuk mengelola dokumen pendaftaran KKN.
| Nama | Tipe | Lokasi | Deskripsi |
|---|---|---|---|
| id | string | path | ID pendaftaran KKN |
{
"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"
}
}
]
}
/files/dokumen/{document_id}.{extension}| Nama | Tipe | Lokasi | Deskripsi |
|---|---|---|---|
| id | string | path | ID dokumen pendaftaran |
Content-Type: multipart/form-data file_dokumen: [PDF file]
{
"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"
}
}
{
"status": 400,
"message": "File tidak valid atau melebihi ukuran maksimal"
}
| Nama | Tipe | Lokasi | Deskripsi |
|---|---|---|---|
| id | string | path | ID dokumen pendaftaran |
File binary dengan headers:
Content-Type: application/pdf Content-Disposition: attachment; filename="document.pdf" [PDF file binary data]
{
"status": 404,
"message": "File tidak ditemukan"
}
Endpoint untuk registrasi akun pengguna baru (mahasiswa atau pegawai).
@mhs.unsoed.ac.id → Registrasi Mahasiswa@unsoed.ac.id → Registrasi Pegawai/Dosen{
"email": "mahasiswa@mhs.unsoed.ac.id"
}
atau
{
"email": "dosen@unsoed.ac.id"
}
{
"status": 200,
"message": "Registrasi berhasil"
}
atau
{
"status": 200,
"message": "Update biodata berhasil"
}
Endpoint untuk mengelola pendaftaran DPL KKN.
{
"email": "dosen@unsoed.ac.id"
}
{
"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"
}
}
]
}
{
"email": "dosen@unsoed.ac.id",
"gelombang_kkn_id": 1,
"fungsional_id": 1,
"golongan_id": 1,
"status_pegawai_id": 1
}
{
"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
}
}
{
"status": 400,
"message": "Validation error",
"errors": {
"gelombang_kkn_id": ["Gelombang KKN harus diisi"]
}
}
| Nama | Tipe | Lokasi | Deskripsi |
|---|---|---|---|
| id | integer | path | ID pendaftaran DPL |
{
"status": 200,
"message": "Pendaftaran DPL berhasil dihapus",
"errors": {}
}
{
"status": 500,
"message": "Pendaftaran DPL gagal dihapus (sudah disetujui)",
"errors": {}
}
Endpoint untuk mendapatkan informasi kelompok KKN mahasiswa.
{
"email": "mahasiswa@unsoed.ac.id"
}
{
"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"
}
]
}
| 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 |
{
"status": 400,
"message": "Parameter email is required"
}
{
"status": 400,
"message": "Invalid email format"
}
{
"status": 404,
"message": "Mahasiswa dengan email tersebut tidak ditemukan"
}
{
"status": 200,
"data": []
}
{
"email": "dosen@unsoed.ac.id"
}
{
"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"
}
]
}
| 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 |
{
"status": 400,
"message": "Parameter email is required"
}
{
"status": 400,
"message": "Invalid email format"
}
{
"status": 404,
"message": "DPL tidak ditemukan"
}
{
"status": 500,
"message": "Terjadi kesalahan sistem"
}
{
"status": 200,
"data": []
}
{
"email": "mahasiswa@unsoed.ac.id",
"kelompok_kkn_id": 1
}
{
"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"
}
}
{
"status": 400,
"message": "Parameter email is required"
}
{
"status": 400,
"message": "Parameter kelompok_kkn_id is required"
}
{
"status": 400,
"message": "Invalid email format"
}
{
"status": 404,
"message": "Mahasiswa dengan email tersebut tidak ditemukan"
}
{
"status": 404,
"message": "Kelompok tidak ditemukan atau Anda bukan anggota kelompok ini"
}
{
"status": 500,
"message": "Terjadi kesalahan sistem"
}
{
"email": "dosen@unsoed.ac.id",
"kelompok_kkn_id": 1
}
{
"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"
}
}
{
"status": 400,
"message": "Parameter email is required"
}
{
"status": 400,
"message": "Parameter kelompok_kkn_id is required"
}
{
"status": 400,
"message": "Invalid email format"
}
{
"status": 404,
"message": "DPL tidak ditemukan"
}
{
"status": 404,
"message": "Kelompok tidak ditemukan atau Anda tidak membimbing kelompok ini"
}
{
"status": 500,
"message": "Terjadi kesalahan sistem"
}
Endpoint untuk mendapatkan data master jabatan fungsional pegawai.
{
"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"
}
]
}
Endpoint untuk mendapatkan data master golongan kepangkatan pegawai.
{
"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"
}
]
}
Endpoint untuk mendapatkan data master status kepegawaian.
{
"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"
}
]
}
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
}
}
| 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 |
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
}
}
Saat terjadi error, response akan berisi:
{
"status": 400,
"message": "Descriptive error message",
"errors": {
"field_name": [
"Error message 1",
"Error message 2"
]
}
}