API Explorer
Beranda
/api/adminsuper/beranda/totaladminstaf - Total admin & staf ✔GET
Contoh Request
GET /api/adminsuper/beranda/totaladminstaf
Headers:
Origin: https://admin.kapal.id
Authorization: Bearer <access_token>
Accept: application/json
Contoh Response (200)
{
"success": true,
"message": "Berhasil mengambil daftar jumlah admin dan staf",
"data": [
{
"admin": 11,
"staf": 3
}
]
}
Contoh Response Error (401 Unauthorized)
{
"success": false,
"statusCode": 401,
"message": "Access token tidak ditemukan",
"error": "Unauthorized"
}
Contoh Response Error (403 Forbidden)
{
"success": false,
"statusCode": 403,
"message": "Akun tidak aktif",
"error": "Forbidden"
}
Master Data
/api/adminsuper/master/pelabuhan - Daftar
pelabuhan
✔
/api/adminsuper/master/pelabuhan - Buat
pelabuhan
✔
/api/adminsuper/master/pelabuhan/:idPelabuhan -
Detail pelabuhan
✔
/api/adminsuper/master/pelabuhan/:idPelabuhan -
Update (PUT)
✔
/api/adminsuper/master/pelabuhan/:idPelabuhan -
Update (PATCH)
✔
/api/adminsuper/master/pelabuhan/:idPelabuhan -
Hapus pelabuhan
✔
GET
Contoh Request
GET /api/adminsuper/master/pelabuhan
Headers:
Origin: https://admin.kapal.id
Authorization: Bearer <access_token>
Accept: application/json
Contoh Response (200)
{
"success": true,
"message": "Berhasil mengambil daftar pelabuhan",
"data": [
{
"id_pelabuhan": 1,
"kode": "SMG",
"nama": "Pelabuhan Tanjung Emas",
"kota": "Semarang",
"provinsi": "Jawa Tengah"
}
]
}
Contoh Response Error (401 Unauthorized)
{
"success": false,
"statusCode": 401,
"message": "Access token tidak ditemukan",
"error": "Unauthorized"
}
Contoh Response Error (403 Forbidden)
{
"success": false,
"statusCode": 403,
"message": "Hanya pengguna dengan peran ADMIN atau STAFF yang dapat mengakses",
"error": "Forbidden"
}
POST
Contoh Payload
POST /api/adminsuper/master/pelabuhan
Headers:
Origin: https://admin.kapal.id
Authorization: Bearer <access_token>
Content-Type: application/json
Accept: application/json
Body:
{
"kode": "SMG",
"nama": "Pelabuhan Tanjung Emas",
"kota": "Semarang",
"provinsi": "Jawa Tengah"
}
Contoh Response (201)
{
"success": true,
"message": "Pelabuhan berhasil dibuat",
"data": {
"id_pelabuhan": 1,
"kode": "SMG",
"nama": "Pelabuhan Tanjung Emas",
"kota": "Semarang",
"provinsi": "Jawa Tengah"
}
}
Contoh Response Error (400 Bad Request)
{
"success": false,
"statusCode": 400,
"message": [
"Kode pelabuhan wajib diisi",
"Nama pelabuhan wajib diisi"
],
"error": "Bad Request"
}
Contoh Response Error (409 Conflict)
{
"success": false,
"statusCode": 409,
"message": "Kode pelabuhan sudah digunakan",
"error": "Conflict"
}
GET
Contoh Request
GET /api/adminsuper/master/pelabuhan/1
Headers:
Origin: https://admin.kapal.id
Authorization: Bearer <access_token>
Accept: application/json
Contoh Response (200)
{
"success": true,
"message": "Berhasil mengambil detail pelabuhan",
"data": {
"id_pelabuhan": 1,
"kode": "SMG",
"nama": "Pelabuhan Tanjung Emas",
"kota": "Semarang",
"provinsi": "Jawa Tengah"
}
}
Contoh Response Error (404 Not Found)
{
"success": false,
"statusCode": 404,
"message": "Pelabuhan tidak ditemukan",
"error": "Not Found"
}
PUT
Contoh Payload
PUT /api/adminsuper/master/pelabuhan/1
Headers:
Origin: https://admin.kapal.id
Authorization: Bearer <access_token>
Content-Type: application/json
Accept: application/json
Body:
{
"kode": "SMG",
"nama": "Pelabuhan Tanjung Emas",
"kota": "Semarang",
"provinsi": "Jawa Tengah"
}
Contoh Response (200)
{
"success": true,
"message": "Pelabuhan berhasil diperbarui",
"data": {
"id_pelabuhan": 1,
"kode": "SMG",
"nama": "Pelabuhan Tanjung Emas",
"kota": "Semarang",
"provinsi": "Jawa Tengah"
}
}
Contoh Response Error (400 Bad Request)
{
"success": false,
"statusCode": 400,
"message": "Tidak ada data yang diperbarui",
"error": "Bad Request"
}
Contoh Response Error (409 Conflict)
{
"success": false,
"statusCode": 409,
"message": "Kode pelabuhan sudah digunakan",
"error": "Conflict"
}
Contoh Response Error (404 Not Found)
{
"success": false,
"statusCode": 404,
"message": "Pelabuhan tidak ditemukan",
"error": "Not Found"
}
PATCH
Contoh Payload
PATCH /api/adminsuper/master/pelabuhan/1
Headers:
Origin: https://admin.kapal.id
Authorization: Bearer <access_token>
Content-Type: application/json
Accept: application/json
Body:
{
"kota": "Semarang"
}
Contoh Response (200)
{
"success": true,
"message": "Pelabuhan berhasil diperbarui",
"data": {
"id_pelabuhan": 1,
"kode": "SMG",
"nama": "Pelabuhan Tanjung Emas",
"kota": "Semarang",
"provinsi": "Jawa Tengah"
}
}
Contoh Response Error (400 Bad Request)
{
"success": false,
"statusCode": 400,
"message": "Tidak ada data yang diperbarui",
"error": "Bad Request"
}
Contoh Response Error (404 Not Found)
{
"success": false,
"statusCode": 404,
"message": "Pelabuhan tidak ditemukan",
"error": "Not Found"
}
DELETE
Contoh Request
DELETE /api/adminsuper/master/pelabuhan/1
Headers:
Origin: https://admin.kapal.id
Authorization: Bearer <access_token>
Accept: application/json
Contoh Response (200)
{
"success": true,
"message": "Pelabuhan berhasil dihapus",
"data": {
"id_pelabuhan": 1
}
}
Contoh Response Error (404 Not Found)
{
"success": false,
"statusCode": 404,
"message": "Pelabuhan tidak ditemukan",
"error": "Not Found"
}
Contoh Response Error (409 Conflict)
{
"success": false,
"statusCode": 409,
"message": "Pelabuhan tidak dapat dihapus karena masih digunakan",
"error": "Conflict"
}
/api/adminsuper/master/kapal - Daftar kapal
✔
/api/adminsuper/master/kapal - Buat kapal
✔
/api/adminsuper/master/kapal/:idKapal - Detail
kapal
✔
/api/adminsuper/master/kapal/:idKapal - Update
(PUT)
✔
/api/adminsuper/master/kapal/:idKapal - Update
(PATCH)
✔
/api/adminsuper/master/kapal/:idKapal - Hapus
kapal
✔
GET
Contoh Request
GET /api/adminsuper/master/kapal
Headers:
Origin: https://admin.kapal.id
Authorization: Bearer <access_token>
Accept: application/json
Contoh Response (200)
{
"success": true,
"message": "Berhasil mengambil daftar kapal",
"data": [
{
"id_kapal": 1,
"nama_kapal": "KMP Nusantara"
}
]
}
Contoh Response Error (401 Unauthorized)
{
"success": false,
"statusCode": 401,
"message": "Access token tidak ditemukan",
"error": "Unauthorized"
}
Contoh Response Error (403 Forbidden)
{
"success": false,
"statusCode": 403,
"message": "Akun tidak aktif",
"error": "Forbidden"
}
POST
Contoh Payload
POST /api/adminsuper/master/kapal
Headers:
Origin: https://admin.kapal.id
Authorization: Bearer <access_token>
Content-Type: application/json
Accept: application/json
Body:
{
"nama_kapal": "KMP Nusantara"
}
Contoh Response (201)
{
"success": true,
"message": "Kapal berhasil dibuat",
"data": {
"id_kapal": 1,
"nama_kapal": "KMP Nusantara"
}
}
Contoh Response Error (400 Bad Request)
{
"success": false,
"statusCode": 400,
"message": [
"Nama kapal wajib diisi"
],
"error": "Bad Request"
}
Contoh Response Error (401 Unauthorized)
{
"success": false,
"statusCode": 401,
"message": "Access token tidak ditemukan",
"error": "Unauthorized"
}
Contoh Response Error (403 Forbidden)
{
"success": false,
"statusCode": 403,
"message": "Hanya pengguna dengan peran ADMIN atau STAFF yang dapat mengakses",
"error": "Forbidden"
}
GET
Contoh Request
GET /api/adminsuper/master/kapal/1
Headers:
Origin: https://admin.kapal.id
Authorization: Bearer <access_token>
Accept: application/json
Contoh Response (200)
{
"success": true,
"message": "Berhasil mengambil detail kapal",
"data": {
"id_kapal": 1,
"nama_kapal": "KMP Nusantara"
}
}
Contoh Response Error (404 Not Found)
{
"success": false,
"statusCode": 404,
"message": "Kapal tidak ditemukan",
"error": "Not Found"
}
Contoh Response Error (401 Unauthorized)
{
"success": false,
"statusCode": 401,
"message": "Access token tidak ditemukan",
"error": "Unauthorized"
}
Contoh Response Error (403 Forbidden)
{
"success": false,
"statusCode": 403,
"message": "Hanya pengguna dengan peran ADMIN atau STAFF yang dapat mengakses",
"error": "Forbidden"
}
PUT
Contoh Payload
PUT /api/adminsuper/master/kapal/1
Headers:
Origin: https://admin.kapal.id
Authorization: Bearer <access_token>
Content-Type: application/json
Accept: application/json
Body:
{
"nama_kapal": "KMP Nusantara"
}
Contoh Response (200)
{
"success": true,
"message": "Kapal berhasil diperbarui",
"data": {
"id_kapal": 1,
"nama_kapal": "KMP Nusantara"
}
}
Contoh Response Error (400 Bad Request)
{
"success": false,
"statusCode": 400,
"message": "Tidak ada data yang diperbarui",
"error": "Bad Request"
}
Contoh Response Error (404 Not Found)
{
"success": false,
"statusCode": 404,
"message": "Kapal tidak ditemukan",
"error": "Not Found"
}
Contoh Response Error (401 Unauthorized)
{
"success": false,
"statusCode": 401,
"message": "Access token tidak ditemukan",
"error": "Unauthorized"
}
Contoh Response Error (403 Forbidden)
{
"success": false,
"statusCode": 403,
"message": "Hanya pengguna dengan peran ADMIN atau STAFF yang dapat mengakses",
"error": "Forbidden"
}
PATCH
Contoh Payload
PATCH /api/adminsuper/master/kapal/1
Headers:
Origin: https://admin.kapal.id
Authorization: Bearer <access_token>
Content-Type: application/json
Accept: application/json
Body:
{
"nama_kapal": "KMP Nusantara"
}
Contoh Response (200)
{
"success": true,
"message": "Kapal berhasil diperbarui",
"data": {
"id_kapal": 1,
"nama_kapal": "KMP Nusantara"
}
}
Contoh Response Error (400 Bad Request)
{
"success": false,
"statusCode": 400,
"message": "Tidak ada data yang diperbarui",
"error": "Bad Request"
}
Contoh Response Error (404 Not Found)
{
"success": false,
"statusCode": 404,
"message": "Kapal tidak ditemukan",
"error": "Not Found"
}
Contoh Response Error (401 Unauthorized)
{
"success": false,
"statusCode": 401,
"message": "Access token tidak ditemukan",
"error": "Unauthorized"
}
Contoh Response Error (403 Forbidden)
{
"success": false,
"statusCode": 403,
"message": "Hanya pengguna dengan peran ADMIN atau STAFF yang dapat mengakses",
"error": "Forbidden"
}
DELETE
Contoh Request
DELETE /api/adminsuper/master/kapal/1
Headers:
Origin: https://admin.kapal.id
Authorization: Bearer <access_token>
Accept: application/json
Contoh Response (200)
{
"success": true,
"message": "Kapal berhasil dihapus",
"data": {
"id_kapal": 1
}
}
Contoh Response Error (404 Not Found)
{
"success": false,
"statusCode": 404,
"message": "Kapal tidak ditemukan",
"error": "Not Found"
}
Contoh Response Error (409 Conflict)
{
"success": false,
"statusCode": 409,
"message": "Kapal tidak dapat dihapus karena masih digunakan",
"error": "Conflict"
}
Contoh Response Error (401 Unauthorized)
{
"success": false,
"statusCode": 401,
"message": "Access token tidak ditemukan",
"error": "Unauthorized"
}
Contoh Response Error (403 Forbidden)
{
"success": false,
"statusCode": 403,
"message": "Hanya pengguna dengan peran ADMIN atau STAFF yang dapat mengakses",
"error": "Forbidden"
}
/api/adminsuper/master/kelas-penumpang - Daftar
kelas penumpang
✔
/api/adminsuper/master/kelas-penumpang - Buat
kelas penumpang
✔
/api/adminsuper/master/kelas-penumpang/:idKelasPenumpang
- Detail kelas penumpang
✔
/api/adminsuper/master/kelas-penumpang/:idKelasPenumpang
- Update (PUT)
✔
/api/adminsuper/master/kelas-penumpang/:idKelasPenumpang
- Update (PATCH)
✔
/api/adminsuper/master/kelas-penumpang/:idKelasPenumpang
- Hapus kelas penumpang
✔
GET
Contoh Request
GET /api/adminsuper/master/kelas-penumpang
Headers:
Origin: https://admin.kapal.id
Authorization: Bearer <access_token>
Accept: application/json
Contoh Response (200)
{
"success": true,
"message": "Berhasil mengambil daftar kelas penumpang",
"data": [
{
"id_kelas": 1,
"kode": "EKO",
"nama": "Ekonomi",
"deskripsi": "Kelas penumpang ekonomi"
}
]
}
Contoh Response Error (401 Unauthorized)
{
"success": false,
"statusCode": 401,
"message": "Access token tidak ditemukan",
"error": "Unauthorized"
}
Contoh Response Error (403 Forbidden)
{
"success": false,
"statusCode": 403,
"message": "Akun tidak aktif",
"error": "Forbidden"
}
POST
Contoh Payload
POST /api/adminsuper/master/kelas-penumpang
Headers:
Origin: https://admin.kapal.id
Authorization: Bearer <access_token>
Content-Type: application/json
Accept: application/json
Body:
{
"kode": "EKO",
"nama": "Ekonomi",
"deskripsi": "Kelas penumpang ekonomi"
}
Contoh Response (201)
{
"success": true,
"message": "Kelas penumpang berhasil dibuat",
"data": {
"id_kelas": 1,
"kode": "EKO",
"nama": "Ekonomi",
"deskripsi": "Kelas penumpang ekonomi"
}
}
Contoh Response Error (400 Bad Request)
{
"success": false,
"statusCode": 400,
"message": [
"Kode kelas wajib diisi",
"Nama kelas wajib diisi"
],
"error": "Bad Request"
}
Contoh Response Error (409 Conflict)
{
"success": false,
"statusCode": 409,
"message": "Kode kelas sudah digunakan",
"error": "Conflict"
}
Contoh Response Error (401 Unauthorized)
{
"success": false,
"statusCode": 401,
"message": "Access token tidak ditemukan",
"error": "Unauthorized"
}
Contoh Response Error (403 Forbidden)
{
"success": false,
"statusCode": 403,
"message": "Hanya pengguna dengan peran ADMIN atau STAFF yang dapat mengakses",
"error": "Forbidden"
}
GET
Contoh Request
GET /api/adminsuper/master/kelas-penumpang/1
Headers:
Origin: https://admin.kapal.id
Authorization: Bearer <access_token>
Accept: application/json
Contoh Response (200)
{
"success": true,
"message": "Berhasil mengambil detail kelas penumpang",
"data": {
"id_kelas": 1,
"kode": "EKO",
"nama": "Ekonomi",
"deskripsi": "Kelas penumpang ekonomi"
}
}
Contoh Response Error (404 Not Found)
{
"success": false,
"statusCode": 404,
"message": "Kelas penumpang tidak ditemukan",
"error": "Not Found"
}
Contoh Response Error (401 Unauthorized)
{
"success": false,
"statusCode": 401,
"message": "Access token tidak ditemukan",
"error": "Unauthorized"
}
Contoh Response Error (403 Forbidden)
{
"success": false,
"statusCode": 403,
"message": "Hanya pengguna dengan peran ADMIN atau STAFF yang dapat mengakses",
"error": "Forbidden"
}
PUT
Contoh Payload
PUT /api/adminsuper/master/kelas-penumpang/1
Headers:
Origin: https://admin.kapal.id
Authorization: Bearer <access_token>
Content-Type: application/json
Accept: application/json
Body:
{
"kode": "EKO",
"nama": "Ekonomi",
"deskripsi": "Update deskripsi"
}
Contoh Response (200)
{
"success": true,
"message": "Kelas penumpang berhasil diperbarui",
"data": {
"id_kelas": 1,
"kode": "EKO",
"nama": "Ekonomi",
"deskripsi": "Update deskripsi"
}
}
Contoh Response Error (400 Bad Request)
{
"success": false,
"statusCode": 400,
"message": "Tidak ada data yang diperbarui",
"error": "Bad Request"
}
Contoh Response Error (409 Conflict)
{
"success": false,
"statusCode": 409,
"message": "Kode kelas sudah digunakan",
"error": "Conflict"
}
Contoh Response Error (404 Not Found)
{
"success": false,
"statusCode": 404,
"message": "Kelas penumpang tidak ditemukan",
"error": "Not Found"
}
Contoh Response Error (401 Unauthorized)
{
"success": false,
"statusCode": 401,
"message": "Access token tidak ditemukan",
"error": "Unauthorized"
}
Contoh Response Error (403 Forbidden)
{
"success": false,
"statusCode": 403,
"message": "Hanya pengguna dengan peran ADMIN atau STAFF yang dapat mengakses",
"error": "Forbidden"
}
PATCH
Contoh Payload
PATCH /api/adminsuper/master/kelas-penumpang/1
Headers:
Origin: https://admin.kapal.id
Authorization: Bearer <access_token>
Content-Type: application/json
Accept: application/json
Body:
{
"deskripsi": "Update deskripsi"
}
Contoh Response (200)
{
"success": true,
"message": "Kelas penumpang berhasil diperbarui",
"data": {
"id_kelas": 1,
"kode": "EKO",
"nama": "Ekonomi",
"deskripsi": "Update deskripsi"
}
}
Contoh Response Error (400 Bad Request)
{
"success": false,
"statusCode": 400,
"message": "Tidak ada data yang diperbarui",
"error": "Bad Request"
}
Contoh Response Error (404 Not Found)
{
"success": false,
"statusCode": 404,
"message": "Kelas penumpang tidak ditemukan",
"error": "Not Found"
}
Contoh Response Error (401 Unauthorized)
{
"success": false,
"statusCode": 401,
"message": "Access token tidak ditemukan",
"error": "Unauthorized"
}
Contoh Response Error (403 Forbidden)
{
"success": false,
"statusCode": 403,
"message": "Hanya pengguna dengan peran ADMIN atau STAFF yang dapat mengakses",
"error": "Forbidden"
}
DELETE
Contoh Request
DELETE /api/adminsuper/master/kelas-penumpang/1
Headers:
Origin: https://admin.kapal.id
Authorization: Bearer <access_token>
Accept: application/json
Contoh Response (200)
{
"success": true,
"message": "Kelas penumpang berhasil dihapus",
"data": {
"id_kelas": 1
}
}
Contoh Response Error (404 Not Found)
{
"success": false,
"statusCode": 404,
"message": "Kelas penumpang tidak ditemukan",
"error": "Not Found"
}
Contoh Response Error (409 Conflict)
{
"success": false,
"statusCode": 409,
"message": "Kelas penumpang tidak dapat dihapus karena masih digunakan",
"error": "Conflict"
}
Contoh Response Error (401 Unauthorized)
{
"success": false,
"statusCode": 401,
"message": "Access token tidak ditemukan",
"error": "Unauthorized"
}
Contoh Response Error (403 Forbidden)
{
"success": false,
"statusCode": 403,
"message": "Hanya pengguna dengan peran ADMIN atau STAFF yang dapat mengakses",
"error": "Forbidden"
}
/api/adminsuper/master/kelas-kamar - Daftar
kelas kamar
✔
/api/adminsuper/master/kelas-kamar - Buat kelas
kamar
✔
/api/adminsuper/master/kelas-kamar/:idKamar -
Detail kelas kamar
✔
/api/adminsuper/master/kelas-kamar/:idKamar -
Update (PUT)
✔
/api/adminsuper/master/kelas-kamar/:idKamar -
Update (PATCH)
✔
/api/adminsuper/master/kelas-kamar/:idKamar -
Hapus kelas kamar
✔
GET
Contoh Request
GET /api/adminsuper/master/kelas-kamar
Headers:
Origin: https://admin.kapal.id
Authorization: Bearer <access_token>
Accept: application/json
Contoh Response (200)
{
"success": true,
"message": "Berhasil mengambil daftar kelas kamar",
"data": [
{
"id_kamar": 1,
"kode": "VIP",
"nama": "VIP",
"kapasitas_tidur": 2
}
]
}
Contoh Response Error (401 Unauthorized)
{
"success": false,
"statusCode": 401,
"message": "Access token tidak ditemukan",
"error": "Unauthorized"
}
Contoh Response Error (403 Forbidden)
{
"success": false,
"statusCode": 403,
"message": "Akun tidak aktif",
"error": "Forbidden"
}
POST
Contoh Payload
POST /api/adminsuper/master/kelas-kamar
Headers:
Origin: https://admin.kapal.id
Authorization: Bearer <access_token>
Content-Type: application/json
Accept: application/json
Body:
{
"kode": "VIP",
"nama": "VIP",
"kapasitas_tidur": 2
}
Contoh Response (201)
{
"success": true,
"message": "Kelas kamar berhasil dibuat",
"data": {
"id_kamar": 1,
"kode": "VIP",
"nama": "VIP",
"kapasitas_tidur": 2
}
}
Contoh Response Error (400 Bad Request)
{
"success": false,
"statusCode": 400,
"message": [
"Kode kelas kamar wajib diisi",
"Nama kelas kamar wajib diisi"
],
"error": "Bad Request"
}
Contoh Response Error (409 Conflict)
{
"success": false,
"statusCode": 409,
"message": "Kode kelas sudah digunakan",
"error": "Conflict"
}
Contoh Response Error (401 Unauthorized)
{
"success": false,
"statusCode": 401,
"message": "Access token tidak ditemukan",
"error": "Unauthorized"
}
Contoh Response Error (403 Forbidden)
{
"success": false,
"statusCode": 403,
"message": "Hanya pengguna dengan peran ADMIN atau STAFF yang dapat mengakses",
"error": "Forbidden"
}
GET
Contoh Request
GET /api/adminsuper/master/kelas-kamar/1
Headers:
Origin: https://admin.kapal.id
Authorization: Bearer <access_token>
Accept: application/json
Contoh Response (200)
{
"success": true,
"message": "Berhasil mengambil detail kelas kamar",
"data": {
"id_kamar": 1,
"kode": "VIP",
"nama": "VIP",
"kapasitas_tidur": 2
}
}
Contoh Response Error (404 Not Found)
{
"success": false,
"statusCode": 404,
"message": "Kelas kamar tidak ditemukan",
"error": "Not Found"
}
Contoh Response Error (401 Unauthorized)
{
"success": false,
"statusCode": 401,
"message": "Access token tidak ditemukan",
"error": "Unauthorized"
}
Contoh Response Error (403 Forbidden)
{
"success": false,
"statusCode": 403,
"message": "Hanya pengguna dengan peran ADMIN atau STAFF yang dapat mengakses",
"error": "Forbidden"
}
PUT
Contoh Payload
PUT /api/adminsuper/master/kelas-kamar/1
Headers:
Origin: https://admin.kapal.id
Authorization: Bearer <access_token>
Content-Type: application/json
Accept: application/json
Body:
{
"kode": "VIP",
"nama": "VIP",
"kapasitas_tidur": 3
}
Contoh Response (200)
{
"success": true,
"message": "Kelas kamar berhasil diperbarui",
"data": {
"id_kamar": 1,
"kode": "VIP",
"nama": "VIP",
"kapasitas_tidur": 3
}
}
Contoh Response Error (400 Bad Request)
{
"success": false,
"statusCode": 400,
"message": "Tidak ada data yang diperbarui",
"error": "Bad Request"
}
Contoh Response Error (409 Conflict)
{
"success": false,
"statusCode": 409,
"message": "Kode kelas sudah digunakan",
"error": "Conflict"
}
Contoh Response Error (404 Not Found)
{
"success": false,
"statusCode": 404,
"message": "Kelas kamar tidak ditemukan",
"error": "Not Found"
}
Contoh Response Error (401 Unauthorized)
{
"success": false,
"statusCode": 401,
"message": "Access token tidak ditemukan",
"error": "Unauthorized"
}
Contoh Response Error (403 Forbidden)
{
"success": false,
"statusCode": 403,
"message": "Hanya pengguna dengan peran ADMIN atau STAFF yang dapat mengakses",
"error": "Forbidden"
}
PATCH
Contoh Payload
PATCH /api/adminsuper/master/kelas-kamar/1
Headers:
Origin: https://admin.kapal.id
Authorization: Bearer <access_token>
Content-Type: application/json
Accept: application/json
Body:
{
"kapasitas_tidur": 3
}
Contoh Response (200)
{
"success": true,
"message": "Kelas kamar berhasil diperbarui",
"data": {
"id_kamar": 1,
"kode": "VIP",
"nama": "VIP",
"kapasitas_tidur": 3
}
}
Contoh Response Error (400 Bad Request)
{
"success": false,
"statusCode": 400,
"message": "Tidak ada data yang diperbarui",
"error": "Bad Request"
}
Contoh Response Error (404 Not Found)
{
"success": false,
"statusCode": 404,
"message": "Kelas kamar tidak ditemukan",
"error": "Not Found"
}
Contoh Response Error (401 Unauthorized)
{
"success": false,
"statusCode": 401,
"message": "Access token tidak ditemukan",
"error": "Unauthorized"
}
Contoh Response Error (403 Forbidden)
{
"success": false,
"statusCode": 403,
"message": "Hanya pengguna dengan peran ADMIN atau STAFF yang dapat mengakses",
"error": "Forbidden"
}
DELETE
Contoh Request
DELETE /api/adminsuper/master/kelas-kamar/1
Headers:
Origin: https://admin.kapal.id
Authorization: Bearer <access_token>
Accept: application/json
Contoh Response (200)
{
"success": true,
"message": "Kelas kamar berhasil dihapus",
"data": {
"id_kamar": 1
}
}
Contoh Response Error (404 Not Found)
{
"success": false,
"statusCode": 404,
"message": "Kelas kamar tidak ditemukan",
"error": "Not Found"
}
Contoh Response Error (409 Conflict)
{
"success": false,
"statusCode": 409,
"message": "Kelas kamar tidak dapat dihapus karena masih digunakan",
"error": "Conflict"
}
Contoh Response Error (401 Unauthorized)
{
"success": false,
"statusCode": 401,
"message": "Access token tidak ditemukan",
"error": "Unauthorized"
}
Contoh Response Error (403 Forbidden)
{
"success": false,
"statusCode": 403,
"message": "Hanya pengguna dengan peran ADMIN atau STAFF yang dapat mengakses",
"error": "Forbidden"
}
/api/adminsuper/master/jenis-kendaraan - Daftar
jenis kendaraan
✔
/api/adminsuper/master/jenis-kendaraan - Buat
jenis kendaraan
✔
/api/adminsuper/master/jenis-kendaraan/:idJenis
- Detail jenis kendaraan
✔
/api/adminsuper/master/jenis-kendaraan/:idJenis
- Update (PUT)
✔
/api/adminsuper/master/jenis-kendaraan/:idJenis
- Update (PATCH)
✔
/api/adminsuper/master/jenis-kendaraan/:idJenis
- Hapus jenis kendaraan
✔
GET
Contoh Request
GET /api/adminsuper/master/jenis-kendaraan
Headers:
Origin: https://admin.kapal.id
Authorization: Bearer <access_token>
Accept: application/json
Contoh Response (200)
{
"success": true,
"message": "Berhasil mengambil daftar jenis kendaraan",
"data": [
{
"id_jenis": 1,
"nama": "Motor",
"golongan": "Golongan I"
}
]
}
Contoh Response Error (401 Unauthorized)
{
"success": false,
"statusCode": 401,
"message": "Access token tidak ditemukan",
"error": "Unauthorized"
}
Contoh Response Error (403 Forbidden)
{
"success": false,
"statusCode": 403,
"message": "Akun tidak aktif",
"error": "Forbidden"
}
POST
Contoh Payload
POST /api/adminsuper/master/jenis-kendaraan
Headers:
Origin: https://admin.kapal.id
Authorization: Bearer <access_token>
Content-Type: application/json
Accept: application/json
Body:
{
"nama": "Motor",
"golongan": "Golongan I"
}
Contoh Response (201)
{
"success": true,
"message": "Jenis kendaraan berhasil dibuat",
"data": {
"id_jenis": 1,
"nama": "Motor",
"golongan": "Golongan I"
}
}
Contoh Response Error (400 Bad Request)
{
"success": false,
"statusCode": 400,
"message": [
"Nama jenis kendaraan wajib diisi"
],
"error": "Bad Request"
}
Contoh Response Error (401 Unauthorized)
{
"success": false,
"statusCode": 401,
"message": "Access token tidak ditemukan",
"error": "Unauthorized"
}
Contoh Response Error (403 Forbidden)
{
"success": false,
"statusCode": 403,
"message": "Hanya pengguna dengan peran ADMIN atau STAFF yang dapat mengakses",
"error": "Forbidden"
}
GET
Contoh Request
GET /api/adminsuper/master/jenis-kendaraan/1
Headers:
Origin: https://admin.kapal.id
Authorization: Bearer <access_token>
Accept: application/json
Contoh Response (200)
{
"success": true,
"message": "Berhasil mengambil detail jenis kendaraan",
"data": {
"id_jenis": 1,
"nama": "Motor",
"golongan": "Golongan I"
}
}
Contoh Response Error (404 Not Found)
{
"success": false,
"statusCode": 404,
"message": "Jenis kendaraan tidak ditemukan",
"error": "Not Found"
}
Contoh Response Error (401 Unauthorized)
{
"success": false,
"statusCode": 401,
"message": "Access token tidak ditemukan",
"error": "Unauthorized"
}
Contoh Response Error (403 Forbidden)
{
"success": false,
"statusCode": 403,
"message": "Hanya pengguna dengan peran ADMIN atau STAFF yang dapat mengakses",
"error": "Forbidden"
}
PUT
Contoh Payload
PUT /api/adminsuper/master/jenis-kendaraan/1
Headers:
Origin: https://admin.kapal.id
Authorization: Bearer <access_token>
Content-Type: application/json
Accept: application/json
Body:
{
"nama": "Motor",
"golongan": "Golongan II"
}
Contoh Response (200)
{
"success": true,
"message": "Jenis kendaraan berhasil diperbarui",
"data": {
"id_jenis": 1,
"nama": "Motor",
"golongan": "Golongan II"
}
}
Contoh Response Error (400 Bad Request)
{
"success": false,
"statusCode": 400,
"message": "Tidak ada data yang diperbarui",
"error": "Bad Request"
}
Contoh Response Error (404 Not Found)
{
"success": false,
"statusCode": 404,
"message": "Jenis kendaraan tidak ditemukan",
"error": "Not Found"
}
Contoh Response Error (401 Unauthorized)
{
"success": false,
"statusCode": 401,
"message": "Access token tidak ditemukan",
"error": "Unauthorized"
}
Contoh Response Error (403 Forbidden)
{
"success": false,
"statusCode": 403,
"message": "Hanya pengguna dengan peran ADMIN atau STAFF yang dapat mengakses",
"error": "Forbidden"
}
PATCH
Contoh Payload
PATCH /api/adminsuper/master/jenis-kendaraan/1
Headers:
Origin: https://admin.kapal.id
Authorization: Bearer <access_token>
Content-Type: application/json
Accept: application/json
Body:
{
"golongan": "Golongan II"
}
Contoh Response (200)
{
"success": true,
"message": "Jenis kendaraan berhasil diperbarui",
"data": {
"id_jenis": 1,
"nama": "Motor",
"golongan": "Golongan II"
}
}
Contoh Response Error (400 Bad Request)
{
"success": false,
"statusCode": 400,
"message": "Tidak ada data yang diperbarui",
"error": "Bad Request"
}
Contoh Response Error (404 Not Found)
{
"success": false,
"statusCode": 404,
"message": "Jenis kendaraan tidak ditemukan",
"error": "Not Found"
}
Contoh Response Error (401 Unauthorized)
{
"success": false,
"statusCode": 401,
"message": "Access token tidak ditemukan",
"error": "Unauthorized"
}
Contoh Response Error (403 Forbidden)
{
"success": false,
"statusCode": 403,
"message": "Hanya pengguna dengan peran ADMIN atau STAFF yang dapat mengakses",
"error": "Forbidden"
}
DELETE
Contoh Request
DELETE /api/adminsuper/master/jenis-kendaraan/1
Headers:
Origin: https://admin.kapal.id
Authorization: Bearer <access_token>
Accept: application/json
Contoh Response (200)
{
"success": true,
"message": "Jenis kendaraan berhasil dihapus",
"data": {
"id_jenis": 1
}
}
Contoh Response Error (404 Not Found)
{
"success": false,
"statusCode": 404,
"message": "Jenis kendaraan tidak ditemukan",
"error": "Not Found"
}
Contoh Response Error (409 Conflict)
{
"success": false,
"statusCode": 409,
"message": "Jenis kendaraan tidak dapat dihapus karena masih digunakan",
"error": "Conflict"
}
Contoh Response Error (401 Unauthorized)
{
"success": false,
"statusCode": 401,
"message": "Access token tidak ditemukan",
"error": "Unauthorized"
}
Contoh Response Error (403 Forbidden)
{
"success": false,
"statusCode": 403,
"message": "Hanya pengguna dengan peran ADMIN atau STAFF yang dapat mengakses",
"error": "Forbidden"
}
Jadwal
/api/adminsuper/jadwal - Daftar jadwal ✔GET
Contoh Request
GET /api/adminsuper/jadwal
Headers:
Origin: https://admin.kapal.id
Authorization: Bearer <access_token>
Accept: application/json
Contoh Response (200)
{
"success": true,
"message": "Berhasil mengambil daftar jadwal",
"data": [
{
"id_jadwal": 123,
"id_rute": 7,
"id_kapal": 2,
"waktu_berangkat": "2026-01-08T08:00:00.000Z",
"waktu_tiba": "2026-01-09T15:00:00.000Z",
"status": "DIJADWALKAN",
"rute": {
"id_rute": 7,
"id_pelabuhan_asal": 1,
"id_pelabuhan_tujuan": 2,
"nama_rute": "Semarang - Pontianak"
},
"kapal": {
"id_kapal": 2,
"nama_kapal": "Kapal Merdeka"
}
}
]
}
Contoh Response Error (401 Unauthorized)
{
"success": false,
"statusCode": 401,
"message": "Access token tidak ditemukan",
"error": "Unauthorized"
}
Contoh Response Error (403 Forbidden)
{
"success": false,
"statusCode": 403,
"message": "Hanya pengguna dengan peran ADMIN atau STAFF yang dapat mengakses",
"error": "Forbidden"
}
POST
Contoh Request
POST /api/adminsuper/jadwal
Headers:
Origin: https://admin.kapal.id
Authorization: Bearer <access_token>
Content-Type: application/json
Accept: application/json
Body:
{
"id_pelabuhan_asal": 1,
"id_pelabuhan_tujuan": 2,
"id_kapal": 2,
"waktu_berangkat": "2026-01-08T08:00",
"waktu_tiba": "2026-01-09T15:00",
"status": "DIJADWALKAN"
}
Contoh Response (201)
{
"success": true,
"message": "Jadwal berhasil dibuat",
"data": {
"id_jadwal": 124,
"id_rute": 7,
"id_kapal": 2,
"waktu_berangkat": "2026-01-08T08:00:00.000Z",
"waktu_tiba": "2026-01-09T15:00:00.000Z",
"status": "DIJADWALKAN",
"rute": {
"id_rute": 7,
"id_pelabuhan_asal": 1,
"id_pelabuhan_tujuan": 2,
"nama_rute": "Semarang - Pontianak"
},
"kapal": {
"id_kapal": 2,
"nama_kapal": "Kapal Merdeka"
}
}
}
Contoh Response Error (400 Bad Request)
{
"success": false,
"statusCode": 400,
"message": "Data jadwal tidak valid",
"error": "Bad Request"
}
Contoh Response Error (404 Not Found)
{
"success": false,
"statusCode": 404,
"message": "Data referensi tidak ditemukan",
"error": "Not Found"
}
Contoh Response Error (401 Unauthorized)
{
"success": false,
"statusCode": 401,
"message": "Access token tidak ditemukan",
"error": "Unauthorized"
}
Contoh Response Error (403 Forbidden)
{
"success": false,
"statusCode": 403,
"message": "Hanya pengguna dengan peran ADMIN atau STAFF yang dapat mengakses",
"error": "Forbidden"
}
GET
Contoh Request
GET /api/adminsuper/jadwal/123
Headers:
Origin: https://admin.kapal.id
Authorization: Bearer <access_token>
Accept: application/json
Contoh Response (200)
{
"success": true,
"message": "Berhasil mengambil detail jadwal",
"data": {
"id_jadwal": 123,
"id_rute": 7,
"id_kapal": 2,
"waktu_berangkat": "2026-01-08T08:00:00.000Z",
"waktu_tiba": "2026-01-09T15:00:00.000Z",
"status": "DIJADWALKAN",
"rute": {
"id_rute": 7,
"id_pelabuhan_asal": 1,
"id_pelabuhan_tujuan": 2,
"nama_rute": "Semarang - Pontianak"
},
"kapal": {
"id_kapal": 2,
"nama_kapal": "Kapal Merdeka"
}
}
}
Contoh Response Error (404 Not Found)
{
"success": false,
"statusCode": 404,
"message": "Jadwal tidak ditemukan",
"error": "Not Found"
}
Contoh Response Error (401 Unauthorized)
{
"success": false,
"statusCode": 401,
"message": "Access token tidak ditemukan",
"error": "Unauthorized"
}
Contoh Response Error (403 Forbidden)
{
"success": false,
"statusCode": 403,
"message": "Akun tidak aktif",
"error": "Forbidden"
}
PUT
Contoh Request
PUT /api/adminsuper/jadwal/123
Headers:
Origin: https://admin.kapal.id
Authorization: Bearer <access_token>
Content-Type: application/json
Accept: application/json
Body:
{
"id_pelabuhan_asal": 1,
"id_pelabuhan_tujuan": 2,
"id_kapal": 2,
"waktu_berangkat": "2026-01-08T08:00",
"waktu_tiba": "2026-01-09T15:00",
"status": "DIBUKA"
}
Contoh Response (200)
{
"success": true,
"message": "Jadwal berhasil diperbarui",
"data": {
"id_jadwal": 123,
"id_rute": 7,
"id_kapal": 2,
"waktu_berangkat": "2026-01-08T08:00:00.000Z",
"waktu_tiba": "2026-01-09T15:00:00.000Z",
"status": "DIBUKA",
"rute": {
"id_rute": 7,
"id_pelabuhan_asal": 1,
"id_pelabuhan_tujuan": 2,
"nama_rute": "Semarang - Pontianak"
},
"kapal": {
"id_kapal": 2,
"nama_kapal": "Kapal Merdeka"
}
}
}
Contoh Response Error (400 Bad Request)
{
"success": false,
"statusCode": 400,
"message": "Data jadwal tidak valid",
"error": "Bad Request"
}
Contoh Response Error (404 Not Found)
{
"success": false,
"statusCode": 404,
"message": "Jadwal tidak ditemukan",
"error": "Not Found"
}
Contoh Response Error (401 Unauthorized)
{
"success": false,
"statusCode": 401,
"message": "Access token tidak ditemukan",
"error": "Unauthorized"
}
Contoh Response Error (403 Forbidden)
{
"success": false,
"statusCode": 403,
"message": "Hanya pengguna dengan peran ADMIN atau STAFF yang dapat mengakses",
"error": "Forbidden"
}
PATCH
Contoh Request
PATCH /api/adminsuper/jadwal/123
Headers:
Origin: https://admin.kapal.id
Authorization: Bearer <access_token>
Content-Type: application/json
Accept: application/json
Body:
{
"status": "DITUTUP"
}
Contoh Response (200)
{
"success": true,
"message": "Jadwal berhasil diperbarui",
"data": {
"id_jadwal": 123,
"id_rute": 7,
"id_kapal": 2,
"waktu_berangkat": "2026-01-08T08:00:00.000Z",
"waktu_tiba": "2026-01-09T15:00:00.000Z",
"status": "DITUTUP",
"rute": {
"id_rute": 7,
"id_pelabuhan_asal": 1,
"id_pelabuhan_tujuan": 2,
"nama_rute": "Semarang - Pontianak"
},
"kapal": {
"id_kapal": 2,
"nama_kapal": "Kapal Merdeka"
}
}
}
Contoh Response Error (400 Bad Request)
{
"success": false,
"statusCode": 400,
"message": "Tidak ada data yang diperbarui",
"error": "Bad Request"
}
Contoh Response Error (404 Not Found)
{
"success": false,
"statusCode": 404,
"message": "Jadwal tidak ditemukan",
"error": "Not Found"
}
Contoh Response Error (401 Unauthorized)
{
"success": false,
"statusCode": 401,
"message": "Access token tidak ditemukan",
"error": "Unauthorized"
}
DELETE
Contoh Request
DELETE /api/adminsuper/jadwal/123
Headers:
Origin: https://admin.kapal.id
Authorization: Bearer <access_token>
Accept: application/json
Contoh Response (200)
{
"success": true,
"message": "Jadwal berhasil dihapus",
"data": {
"id_jadwal": 123
}
}
Contoh Response Error (404 Not Found)
{
"success": false,
"statusCode": 404,
"message": "Jadwal tidak ditemukan",
"error": "Not Found"
}
Contoh Response Error (409 Conflict)
{
"success": false,
"statusCode": 409,
"message": "Jadwal tidak dapat dihapus karena masih digunakan",
"error": "Conflict"
}
Contoh Response Error (401 Unauthorized)
{
"success": false,
"statusCode": 401,
"message": "Access token tidak ditemukan",
"error": "Unauthorized"
}
Contoh Response Error (403 Forbidden)
{
"success": false,
"statusCode": 403,
"message": "Hanya pengguna dengan peran ADMIN atau STAFF yang dapat mengakses",
"error": "Forbidden"
}
Tarif
/api/adminsuper/tarif - Daftar tarif ✔GET
Contoh Request
GET /api/adminsuper/tarif?id_jadwal=123
Headers:
Origin: https://admin.kapal.id
Authorization: Bearer <access_token>
Accept: application/json
Contoh Response (200)
{
"success": true,
"message": "Berhasil mengambil daftar tarif",
"data": [
{
"id_tarif": 10,
"id_jadwal": 123,
"id_kelas_penumpang": 1,
"id_kelas_kamar": null,
"id_jenis_kendaraan": null,
"harga": 125000,
"tipe_tarif": "DEWASA",
"catatan": null,
"kuota_tarif": {
"kuota_awal": 300,
"kuota_sisa": 120,
"updated_at": "2026-01-07T10:12:00.000Z"
},
"jadwal": {
"id_jadwal": 123,
"waktu_berangkat": "2026-01-08T08:00:00.000Z",
"waktu_tiba": "2026-01-09T15:00:00.000Z",
"rute": {
"id_rute": 7,
"nama_rute": "Semarang - Pontianak"
},
"kapal": {
"id_kapal": 2,
"nama_kapal": "Kapal Merdeka"
}
},
"kelas_penumpang": {
"id_kelas": 1,
"kode": "EKONOMI",
"nama": "Ekonomi",
"deskripsi": null
},
"kelas_kamar": null,
"jenis_kendaraan": null
}
]
}
Contoh Response Error (400 Bad Request)
{
"success": false,
"statusCode": 400,
"message": "Parameter tidak valid",
"error": "Bad Request"
}
Contoh Response Error (401 Unauthorized)
{
"success": false,
"statusCode": 401,
"message": "Access token tidak ditemukan",
"error": "Unauthorized"
}
Contoh Response Error (403 Forbidden)
{
"success": false,
"statusCode": 403,
"message": "Hanya pengguna dengan peran ADMIN atau STAFF yang dapat mengakses",
"error": "Forbidden"
}
POST
Contoh Request
POST /api/adminsuper/tarif
Headers:
Origin: https://admin.kapal.id
Authorization: Bearer <access_token>
Content-Type: application/json
Accept: application/json
Body:
{
"id_jadwal": 123,
"id_kelas_penumpang": 1,
"harga": 125000,
"tipe_tarif": "DEWASA",
"kuota_awal": 300,
"kuota_sisa": 300,
"catatan": "Tarif dewasa"
}
Contoh Response (201)
{
"success": true,
"message": "Tarif berhasil dibuat",
"data": {
"id_tarif": 11,
"id_jadwal": 123,
"id_kelas_penumpang": 1,
"id_kelas_kamar": null,
"id_jenis_kendaraan": null,
"harga": 125000,
"tipe_tarif": "DEWASA",
"catatan": "Tarif dewasa",
"kuota_tarif": {
"kuota_awal": 300,
"kuota_sisa": 300,
"updated_at": "2026-01-07T10:12:00.000Z"
},
"jadwal": {
"id_jadwal": 123,
"waktu_berangkat": "2026-01-08T08:00:00.000Z",
"waktu_tiba": "2026-01-09T15:00:00.000Z",
"rute": {
"id_rute": 7,
"nama_rute": "Semarang - Pontianak"
},
"kapal": {
"id_kapal": 2,
"nama_kapal": "Kapal Merdeka"
}
},
"kelas_penumpang": {
"id_kelas": 1,
"kode": "EKONOMI",
"nama": "Ekonomi",
"deskripsi": null
},
"kelas_kamar": null,
"jenis_kendaraan": null
}
}
Contoh Response Error (400 Bad Request)
{
"success": false,
"statusCode": 400,
"message": "Data tarif tidak valid",
"error": "Bad Request"
}
Contoh Response Error (404 Not Found)
{
"success": false,
"statusCode": 404,
"message": "Data referensi tidak ditemukan",
"error": "Not Found"
}
Contoh Response Error (401 Unauthorized)
{
"success": false,
"statusCode": 401,
"message": "Access token tidak ditemukan",
"error": "Unauthorized"
}
Contoh Response Error (403 Forbidden)
{
"success": false,
"statusCode": 403,
"message": "Akun tidak aktif",
"error": "Forbidden"
}
GET
Contoh Request
GET /api/adminsuper/tarif/11
Headers:
Origin: https://admin.kapal.id
Authorization: Bearer <access_token>
Accept: application/json
Contoh Response (200)
{
"success": true,
"message": "Berhasil mengambil detail tarif",
"data": {
"id_tarif": 11,
"id_jadwal": 123,
"id_kelas_penumpang": 1,
"id_kelas_kamar": null,
"id_jenis_kendaraan": null,
"harga": 125000,
"tipe_tarif": "DEWASA",
"catatan": "Tarif dewasa",
"kuota_tarif": {
"kuota_awal": 300,
"kuota_sisa": 120,
"updated_at": "2026-01-07T10:12:00.000Z"
},
"jadwal": {
"id_jadwal": 123,
"waktu_berangkat": "2026-01-08T08:00:00.000Z",
"waktu_tiba": "2026-01-09T15:00:00.000Z",
"rute": {
"id_rute": 7,
"nama_rute": "Semarang - Pontianak"
},
"kapal": {
"id_kapal": 2,
"nama_kapal": "Kapal Merdeka"
}
},
"kelas_penumpang": {
"id_kelas": 1,
"kode": "EKONOMI",
"nama": "Ekonomi",
"deskripsi": null
},
"kelas_kamar": null,
"jenis_kendaraan": null
}
}
Contoh Response Error (404 Not Found)
{
"success": false,
"statusCode": 404,
"message": "Tarif tidak ditemukan",
"error": "Not Found"
}
Contoh Response Error (401 Unauthorized)
{
"success": false,
"statusCode": 401,
"message": "Access token tidak ditemukan",
"error": "Unauthorized"
}
Contoh Response Error (403 Forbidden)
{
"success": false,
"statusCode": 403,
"message": "Hanya pengguna dengan peran ADMIN atau STAFF yang dapat mengakses",
"error": "Forbidden"
}
PUT
Contoh Request
PUT /api/adminsuper/tarif/11
Headers:
Origin: https://admin.kapal.id
Authorization: Bearer <access_token>
Content-Type: application/json
Accept: application/json
Body:
{
"id_jadwal": 123,
"id_kelas_penumpang": 1,
"harga": 130000,
"tipe_tarif": "DEWASA",
"kuota_awal": 300,
"kuota_sisa": 180,
"catatan": "Tarif dewasa (update)"
}
Contoh Response (200)
{
"success": true,
"message": "Tarif berhasil diperbarui",
"data": {
"id_tarif": 11,
"id_jadwal": 123,
"id_kelas_penumpang": 1,
"id_kelas_kamar": null,
"id_jenis_kendaraan": null,
"harga": 130000,
"tipe_tarif": "DEWASA",
"catatan": "Tarif dewasa (update)",
"kuota_tarif": {
"kuota_awal": 300,
"kuota_sisa": 180,
"updated_at": "2026-01-07T10:12:00.000Z"
},
"jadwal": {
"id_jadwal": 123,
"waktu_berangkat": "2026-01-08T08:00:00.000Z",
"waktu_tiba": "2026-01-09T15:00:00.000Z",
"rute": {
"id_rute": 7,
"nama_rute": "Semarang - Pontianak"
},
"kapal": {
"id_kapal": 2,
"nama_kapal": "Kapal Merdeka"
}
},
"kelas_penumpang": {
"id_kelas": 1,
"kode": "EKONOMI",
"nama": "Ekonomi",
"deskripsi": null
},
"kelas_kamar": null,
"jenis_kendaraan": null
}
}
Contoh Response Error (400 Bad Request)
{
"success": false,
"statusCode": 400,
"message": "Data tarif tidak valid",
"error": "Bad Request"
}
Contoh Response Error (404 Not Found)
{
"success": false,
"statusCode": 404,
"message": "Tarif tidak ditemukan",
"error": "Not Found"
}
PATCH
Contoh Request
PATCH /api/adminsuper/tarif/11
Headers:
Origin: https://admin.kapal.id
Authorization: Bearer <access_token>
Content-Type: application/json
Accept: application/json
Body:
{
"harga": 120000,
"kuota_sisa": 110,
"catatan": null
}
Contoh Response (200)
{
"success": true,
"message": "Tarif berhasil diperbarui",
"data": {
"id_tarif": 11,
"id_jadwal": 123,
"id_kelas_penumpang": 1,
"id_kelas_kamar": null,
"id_jenis_kendaraan": null,
"harga": 120000,
"tipe_tarif": "DEWASA",
"catatan": null,
"kuota_tarif": {
"kuota_awal": 300,
"kuota_sisa": 110,
"updated_at": "2026-01-07T10:12:00.000Z"
},
"jadwal": {
"id_jadwal": 123,
"waktu_berangkat": "2026-01-08T08:00:00.000Z",
"waktu_tiba": "2026-01-09T15:00:00.000Z",
"rute": {
"id_rute": 7,
"nama_rute": "Semarang - Pontianak"
},
"kapal": {
"id_kapal": 2,
"nama_kapal": "Kapal Merdeka"
}
},
"kelas_penumpang": {
"id_kelas": 1,
"kode": "EKONOMI",
"nama": "Ekonomi",
"deskripsi": null
},
"kelas_kamar": null,
"jenis_kendaraan": null
}
}
Contoh Response Error (400 Bad Request)
{
"success": false,
"statusCode": 400,
"message": "Data tarif tidak valid",
"error": "Bad Request"
}
Contoh Response Error (404 Not Found)
{
"success": false,
"statusCode": 404,
"message": "Tarif tidak ditemukan",
"error": "Not Found"
}
DELETE
Contoh Request
DELETE /api/adminsuper/tarif/11
Headers:
Origin: https://admin.kapal.id
Authorization: Bearer <access_token>
Accept: application/json
Contoh Response (200)
{
"success": true,
"message": "Tarif berhasil dihapus",
"data": {
"id_tarif": 11
}
}
Contoh Response Error (404 Not Found)
{
"success": false,
"statusCode": 404,
"message": "Tarif tidak ditemukan",
"error": "Not Found"
}
Contoh Response Error (401 Unauthorized)
{
"success": false,
"statusCode": 401,
"message": "Access token tidak ditemukan",
"error": "Unauthorized"
}
Contoh Response Error (403 Forbidden)
{
"success": false,
"statusCode": 403,
"message": "Hanya pengguna dengan peran ADMIN atau STAFF yang dapat mengakses",
"error": "Forbidden"
}
Kelola Pengguna
/api/adminsuper/kelola-pengguna/admin - Daftar admin ✔GET
Contoh Request
GET /api/adminsuper/kelola-pengguna/admin
Headers:
Origin: https://admin.kapal.id
Authorization: Bearer <access_token>
Accept: application/json
Contoh Response (200)
{
"success": true,
"message": "Berhasil mengambil daftar admin",
"data": [
{
"public_id": "uuid-1",
"username": "admin1",
"nama_lengkap": "Admin Satu",
"nomor_hp": "+6281234567890",
"email": "admin1@kapal.com",
"peran": "ADMIN",
"aktif": true
}
]
}
Contoh Response Error (401 Unauthorized)
{
"success": false,
"statusCode": 401,
"message": "Access token tidak ditemukan",
"error": "Unauthorized"
}
Contoh Response Error (403 Forbidden)
{
"success": false,
"statusCode": 403,
"message": "Origin tidak diizinkan",
"error": "Forbidden"
}
POST
Contoh Payload
POST /api/adminsuper/kelola-pengguna/admin
Headers:
Origin: https://admin.kapal.id
Authorization: Bearer <access_token>
Content-Type: application/json
Accept: application/json
Body:
{
"nama_lengkap": "Admin Baru",
"username": "adminbaru",
"email": "adminbaru@kapal.com",
"nomor_hp": "+628111111111",
"password": "K4taSandi@baru",
"peran": "ADMIN",
"aktif": true
}
Contoh Response (201)
{
"success": true,
"message": "Admin berhasil dibuat",
"data": {
"public_id": "uuid-baru",
"username": "adminbaru",
"nama_lengkap": "Admin Baru",
"nomor_hp": "+628111111111",
"email": "adminbaru@kapal.com",
"peran": "ADMIN",
"aktif": true
}
}
Contoh Response Error (400 Bad Request)
{
"success": false,
"statusCode": 400,
"message": [
"password must be longer than or equal to 12 characters",
"password must match /(?=.*\\d)(?=.*[^A-Za-z0-9]).+/"
],
"error": "Bad Request"
}
Contoh Response Error (409 Conflict)
{
"success": false,
"statusCode": 409,
"message": "Username sudah digunakan",
"error": "Conflict"
}
GET
Contoh Request
GET /api/adminsuper/kelola-pengguna/admin/uuid-1
Headers:
Origin: https://admin.kapal.id
Authorization: Bearer <access_token>
Accept: application/json
Contoh Response (200)
{
"success": true,
"data": {
"public_id": "uuid-1",
"username": "admin1",
"nama_lengkap": "Admin Satu",
"nomor_hp": "+6281234567890",
"email": "admin1@kapal.com",
"peran": "ADMIN",
"aktif": true
}
}
Contoh Response Error (404 Not Found)
{
"success": false,
"statusCode": 404,
"message": "Admin tidak ditemukan",
"error": "Not Found"
}
PUT
Contoh Payload
PUT /api/adminsuper/kelola-pengguna/admin/uuid-1
Headers:
Origin: https://admin.kapal.id
Authorization: Bearer <access_token>
Content-Type: application/json
Accept: application/json
Body:
{
"nama_lengkap": "Admin Satu Update",
"username": "admin1",
"email": "admin1@kapal.com",
"nomor_hp": "+6281234567890",
"peran": "ADMIN",
"aktif": true
}
Contoh Response (200)
{
"success": true,
"message": "Admin berhasil diperbarui",
"data": {
"public_id": "uuid-1",
"username": "admin1",
"nama_lengkap": "Admin Satu Update",
"nomor_hp": "+6281234567890",
"email": "admin1@kapal.com",
"peran": "ADMIN",
"aktif": true
}
}
Contoh Response Error (404 Not Found)
{
"success": false,
"statusCode": 404,
"message": "Admin tidak ditemukan",
"error": "Not Found"
}
Contoh Response Error (409 Conflict)
{
"success": false,
"statusCode": 409,
"message": "Email sudah digunakan",
"error": "Conflict"
}
PATCH
Contoh Payload
PATCH /api/adminsuper/kelola-pengguna/admin/uuid-1
Headers:
Origin: https://admin.kapal.id
Authorization: Bearer <access_token>
Content-Type: application/json
Accept: application/json
Body:
{
"nama_lengkap": "Admin Satu (parsial)",
"aktif": true
}
Contoh Response (200)
{
"success": true,
"message": "Admin berhasil diperbarui",
"data": {
"public_id": "uuid-1",
"username": "admin1",
"nama_lengkap": "Admin Satu (parsial)",
"nomor_hp": "+6281234567890",
"email": "admin1@kapal.com",
"peran": "ADMIN",
"aktif": true
}
}
Contoh Response Error (404 Not Found)
{
"success": false,
"statusCode": 404,
"message": "Admin tidak ditemukan",
"error": "Not Found"
}
DELETE
Contoh Request
DELETE /api/adminsuper/kelola-pengguna/admin/uuid-1
Headers:
Origin: https://admin.kapal.id
Authorization: Bearer <access_token>
Accept: application/json
Contoh Response (200)
{
"success": true,
"message": "Admin berhasil dihapus",
"data": {
"public_id": "uuid-1",
"username": "admin1",
"nama_lengkap": "Admin Satu",
"nomor_hp": "+6281234567890",
"email": "admin1@kapal.com",
"peran": "ADMIN",
"aktif": true
}
}
Contoh Response Error (400 Bad Request)
{
"success": false,
"statusCode": 400,
"message": "Tidak dapat menghapus akun sendiri",
"error": "Bad Request"
}
Contoh Response Error (409 Conflict)
{
"success": false,
"statusCode": 409,
"message": "Admin tidak dapat dihapus karena masih terhubung dengan pemesanan",
"error": "Conflict"
}
Autentikasi
/api/auth/adminsuper/login - Login admin
✔
/api/auth/adminsuper/me - Ambil profil sesi
✔
/api/auth/adminsuper/refresh/exchange - Tukar
refresh token
✔
/api/auth/adminsuper/refresh/revoke/:id - Cabut
refresh token
✔
/api/auth/adminsuper/logout - Logout admin
✔
POST
Contoh Payload (valid)
{
"identifier": "admin01",
"password": "S3cretP@ss"
}
Contoh Payload (tidak valid)
{
"identifier": "",
"password": ""
}
Contoh Response (200 OK)
{
"success": true,
"message": "Login berhasil",
"data": {
"accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"user": {
"id": "8a5cb04a-8b33-4181-8418-dbfcab25dfdd",
"username": "admin01",
"email": "admin@example.com",
"peran": "ADMIN",
"aktif": true
},
"session": {
"accessTokenExpiresIn": 900
}
}
}
Contoh Response (400 Bad Request)
{
"success": false,
"statusCode": 400,
"message": "Data login tidak valid",
"error": "Bad Request"
}
Contoh Response (401 Unauthorized)
{
"success": false,
"statusCode": 401,
"message": "Email atau password salah",
"error": "Unauthorized"
}
Contoh Response (403 Forbidden)
{
"success": false,
"statusCode": 403,
"message": "Akun tidak aktif",
"error": "Forbidden"
}
Contoh Response (429 Too Many Requests)
{
"success": false,
"statusCode": 429,
"message": "Terlalu banyak percobaan login, coba lagi nanti",
"error": "Too Many Requests"
}
GET
Contoh Payload
GET /api/auth/adminsuper/me
Headers:
Origin: https://admin.kapal.id
Cookie: __Host-RFTID=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.refreshTokenHere;
__Host-RFTID-CSRF=abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abcd
X-CSRF-Token: abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abcd
Body: (tidak ada)
Contoh Response (200 OK)
{
"success": true,
"message": "Session valid",
"data": {
"user": {
"id": "8a5cb04a-8b33-4181-8418-dbfcab25dfdd",
"username": "admin01",
"email": "admin@example.com",
"nama": "Admin Super",
"nomor_telepon": "081234567890",
"peran": "ADMIN",
"aktif": true
},
"session": {
"refreshTokenExpiresIn": 604800
}
}
}
Contoh Response (401 Unauthorized)
{
"success": false,
"statusCode": 401,
"message": "Unauthorized",
"error": "Unauthorized"
}
Contoh Response (403 Forbidden)
{
"success": false,
"statusCode": 403,
"message": "Origin tidak diizinkan",
"error": "Forbidden"
}
POST
Contoh Payload
POST /api/auth/adminsuper/refresh/exchange
Headers:
Origin: https://admin.kapal.id
Cookie: __Host-RFTID=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.refreshTokenHere;
__Host-RFTID-CSRF=498a1f8b8c6a4d1abf2e9f7c3c6d4123456789abcdef0123456789abcdef
X-CSRF-Token: 498a1f8b8c6a4d1abf2e9f7c3c6d4123456789abcdef0123456789abcdef
Body: (tidak ada)
Contoh Response (200 OK)
HTTP/1.1 200 OK
Set-Cookie: __Host-RFTID=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.newRefreshToken;
Path=/; HttpOnly; Secure; SameSite=Lax
Set-Cookie: __Host-RFTID-CSRF=9c2d4a1f7b2c4d6e8f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2;
Path=/; Secure; SameSite=Lax
{
"success": true,
"message": "Token diperbarui",
"data": {
"accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.newAccessToken",
"user": {
"id": "8a5cb04a-8b33-4181-8418-dbfcab25dfdd",
"username": "admin01",
"email": "admin@example.com",
"peran": "ADMIN",
"aktif": true
},
"session": {
"accessTokenExpiresIn": 900,
"refreshTokenExpiresIn": 604800
}
}
}
Contoh Response (401 Unauthorized)
{
"success": false,
"statusCode": 401,
"message": "Unauthorized",
"error": "Unauthorized"
}
Contoh Response (403 Forbidden)
{
"success": false,
"statusCode": 403,
"message": "Origin tidak diizinkan",
"error": "Forbidden"
}
POST
Contoh Payload
POST /api/auth/adminsuper/refresh/revoke/12
Headers:
Origin: https://admin.kapal.id
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.currentAccessToken
Cookie: __Host-RFTID=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.refreshTokenHere;
__Host-RFTID-CSRF=498a1f8b8c6a4d1abf2e9f7c3c6d4123456789abcdef0123456789abcdef
X-CSRF-Token: 498a1f8b8c6a4d1abf2e9f7c3c6d4123456789abcdef0123456789abcdef
Body: (tidak ada)
Contoh Response (200 OK)
HTTP/1.1 200 OK
{
"success": true,
"message": "Refresh token dicabut"
}
Contoh Response (401 Unauthorized)
{
"success": false,
"statusCode": 401,
"message": "Unauthorized",
"error": "Unauthorized"
}
Contoh Response (403 Forbidden)
{
"success": false,
"statusCode": 403,
"message": "Tidak diizinkan",
"error": "Forbidden"
}
Contoh Response (404 Not Found)
{
"success": false,
"statusCode": 404,
"message": "Refresh token tidak ditemukan",
"error": "Not Found"
}
POST
Contoh Payload
POST /api/auth/adminsuper/logout
Headers:
Origin: https://admin.kapal.id
Cookie: __Host-RFTID=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.refreshTokenHere;
__Host-RFTID-CSRF=1f2a3b4c5d6e7f8090a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2
X-CSRF-Token: 1f2a3b4c5d6e7f8090a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2
Body: (tidak ada)
Contoh Response (200 OK)
HTTP/1.1 200 OK
Set-Cookie: __Host-RFTID=""; Path=/; HttpOnly; Secure; SameSite=Lax; Max-Age=0
Set-Cookie: __Host-RFTID-CSRF=""; Path=/; Secure; SameSite=Lax; Max-Age=0
{
"success": true,
"message": "Logout berhasil"
}
Contoh Response (401 Unauthorized)
{
"success": false,
"statusCode": 401,
"message": "Unauthorized",
"error": "Unauthorized"
}
Contoh Response (403 Forbidden)
{
"success": false,
"statusCode": 403,
"message": "Origin tidak diizinkan",
"error": "Forbidden"
}
/api/pelanggan/auth/register - Registrasi
pelanggan
✔
POST
Contoh Request
POST /api/pelanggan/auth/register
Headers:
Origin: http://localhost:5173
Content-Type: application/json
Accept: application/json
X-Device-Id: kapal-id-perangkat-abc-123
User-Agent: Mozilla/5.0 (contoh user agent)
Body:
{
"namaLengkap": "Budi Santoso",
"email": "budi@mail.com",
"username": "budii",
"nomorHp": "08123456789",
"kataSandi": "budi1234",
"konfirmasiKataSandi": "budi1234"
}
Contoh Response (201 Created)
{
"success": true,
"message": "Registrasi berhasil",
"data": {
"id": "2d8f0a27-1c3d-4d5e-8f90-0123456789ab",
"nama": "Budi Santoso",
"email": "budi@mail.com",
"username": "budii",
"nomor_hp": "+628123456789",
"aktif": true
}
}
Contoh Response Error (400 Bad Request)
{
"success": false,
"statusCode": 400,
"message": "Data registrasi tidak valid",
"error": "Bad Request"
}
Contoh Response Error (409 Conflict)
{
"success": false,
"statusCode": 409,
"message": "Email atau username sudah digunakan",
"error": "Conflict"
}
Contoh Response Error (429 Too Many Requests —
spam)
{
"success": false,
"statusCode": 429,
"message": "Terlalu banyak permintaan, coba lagi nanti",
"error": "Too Many Requests"
}
Contoh Response Error (429 Too Many Requests — kuota 5/24
jam)
{
"success": false,
"statusCode": 429,
"message": "Registrasi sedang dibatasi, coba lagi nanti",
"error": "Too Many Requests"
}
Contoh Response Error (403 Forbidden)
{
"success": false,
"statusCode": 403,
"message": "Origin tidak diizinkan",
"error": "Forbidden"
}
Contoh Response Error (500 Internal Server Error)
{
"success": false,
"statusCode": 500,
"message": "Terjadi kesalahan pada server",
"error": "Internal Server Error"
}
/api/pelanggan/auth/me - Cek sesi pelanggan
(refresh cookie + CSRF)
GET
Contoh Request
GET /api/pelanggan/auth/me
Headers:
Origin: http://localhost:5173
Accept: application/json
X-CSRF-Token: <csrf_token_dari_cookie>
Cookie: __Host-RFTID=<refresh_token_plain>; __Host-RFTID-CSRF=<csrf_token_dari_cookie>
Contoh Response (200 OK)
{
"success": true,
"message": "Session valid",
"data": {
"user": {
"id": "2d8f0a27-1c3d-4d5e-8f90-0123456789ab",
"username": "budii",
"email": "budi@mail.com",
"nama": "Budi Santoso",
"aktif": true
},
"session": {
"refreshTokenExpiresIn": 604799
}
}
}
Contoh Response Error (401 Unauthorized)
{
"success": false,
"statusCode": 401,
"message": "Refresh token tidak valid",
"error": "Unauthorized"
}
Contoh Response Error (403 Forbidden — akun tidak
aktif)
{
"success": false,
"statusCode": 403,
"message": "Akun pelanggan tidak aktif",
"error": "Forbidden"
}
Contoh Response Error (401 Unauthorized — token lama
terdeteksi; semua sesi dicabut)
{
"success": false,
"statusCode": 401,
"message": "Refresh token tidak valid",
"error": "Unauthorized"
}
Contoh Response Error (500 Internal Server Error)
{
"success": false,
"statusCode": 500,
"message": "Terjadi kesalahan pada server",
"error": "Internal Server Error"
}
/api/pelanggan/auth/logout - Logout pelanggan
POST
Contoh Request
POST /api/pelanggan/auth/logout
Headers:
Origin: http://localhost:5173
Accept: application/json
Cookie: RFTID=<refresh_token>; RFTID_CSRF=<csrf_token>
X-CSRF-Token: <csrf_token>
Body: (tidak ada)
Contoh Response (200 OK)
HTTP/1.1 200 OK
Set-Cookie: RFTID=; Path=/; HttpOnly; Secure; SameSite=Lax; Max-Age=0
Set-Cookie: RFTID_CSRF=; Path=/; Secure; SameSite=Lax; Max-Age=0
{
"success": true,
"message": "Logout berhasil",
"data": { "logout": true }
}
Contoh Response (401 Unauthorized)
{
"success": false,
"statusCode": 401,
"message": "Unauthorized",
"error": "Unauthorized"
}
Contoh Response (403 Forbidden)
{
"success": false,
"statusCode": 403,
"message": "Origin tidak diizinkan",
"error": "Forbidden"
}
Contoh Response (429 Too Many Requests)
{
"success": false,
"statusCode": 429,
"message": "Terlalu banyak permintaan, coba lagi nanti",
"error": "Too Many Requests"
}
Contoh Response (500 Internal Server Error)
{
"success": false,
"statusCode": 500,
"message": "Terjadi kesalahan pada server",
"error": "Internal Server Error"
}
/api/pelanggan/auth/login - Login pelanggan
✔
POST
Contoh Request (sesuai UI pelanggan)
POST /api/pelanggan/auth/login
Headers:
Origin: http://localhost:5173
Content-Type: application/json
Accept: application/json
X-Device-Id: kapal-id-perangkat-abc-123
User-Agent: Mozilla/5.0 (contoh user agent)
Body:
{
"identitas": "budi@mail.com",
"kataSandi": "budi1234"
}
Contoh Request (alternatif key)
POST /api/pelanggan/auth/login
Headers:
Origin: http://localhost:5173
Content-Type: application/json
Accept: application/json
X-Device-Id: kapal-id-perangkat-abc-123
User-Agent: Mozilla/5.0 (contoh user agent)
Body:
{
"identifier": "budii",
"password": "budi1234"
}
Contoh Response (200 OK)
HTTP/1.1 200 OK
Set-Cookie: __Host-RFTID=refreshTokenPlainDisini; Path=/; HttpOnly; Secure; SameSite=Lax
Set-Cookie: __Host-RFTID-CSRF=csrfTokenDisini; Path=/; Secure; SameSite=Lax
{
"success": true,
"message": "Login berhasil",
"data": {
"accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"user": {
"id": "2d8f0a27-1c3d-4d5e-8f90-0123456789ab",
"username": "budii",
"email": "budi@mail.com",
"nama": "Budi Santoso",
"aktif": true
},
"session": {
"accessTokenExpiresIn": 900,
"refreshTokenExpiresIn": 604800
}
}
}
Contoh Response Error (400 Bad Request)
{
"success": false,
"statusCode": 400,
"message": "Data login tidak valid",
"error": "Bad Request"
}
Contoh Response Error (401 Unauthorized)
{
"success": false,
"statusCode": 401,
"message": "Email/username atau password salah",
"error": "Unauthorized"
}
Contoh Response Error (403 Forbidden)
{
"success": false,
"statusCode": 403,
"message": "Akun tidak aktif",
"error": "Forbidden"
}
Contoh Response Error (429 Too Many Requests)
{
"success": false,
"statusCode": 429,
"message": "Terlalu banyak percobaan login, coba lagi nanti",
"error": "Too Many Requests"
}
Contoh Response Error (500 Internal Server Error)
{
"success": false,
"statusCode": 500,
"message": "Terjadi kesalahan pada server",
"error": "Internal Server Error"
}
Pencarian Pelanggan
/api/pelanggan/pencarian/tiket - Pencarian
tiket publik
✔
GET
Contoh Request
GET /api/pelanggan/pencarian/tiket?pelabuhanAsal=SMG&pelabuhanTujuan=PNK&tanggalBerangkat=2026-01-16&pulangPergi=true&tanggalPulang=2026-01-20&jumlahPenumpang=2&jenisTiket=PENUMPANG,KENDARAAN&kelasPenumpang=EKO&kelasKamar=VIP&jenisKendaraan=1 Headers: Origin: http://localhost:5173 X-API-KEY:X-Device-Id: Accept: application/json
Contoh Response (200)
{
"success": true,
"message": "Berhasil mengambil hasil pencarian tiket",
"data": {
"parameter": {
"pelabuhanAsal": "SMG",
"pelabuhanTujuan": "PNK",
"tanggalBerangkat": "2026-01-16",
"tanggalPulang": "2026-01-20",
"pulangPergi": true,
"jumlahPenumpang": 2,
"jenisTiket": ["PENUMPANG", "KENDARAAN"],
"kelasPenumpang": "EKO",
"kelasKamar": "VIP",
"jenisKendaraan": "1"
},
"asal": {
"id_pelabuhan": 1,
"kode": "SMG",
"nama": "Pelabuhan Tanjung Emas",
"kota": "Semarang",
"provinsi": "Jawa Tengah"
},
"tujuan": {
"id_pelabuhan": 7,
"kode": "PNK",
"nama": "Pelabuhan Pontianak",
"kota": "Pontianak",
"provinsi": "Kalimantan Barat"
},
"hasilBerangkat": [
{
"idJadwal": "101",
"waktuBerangkat": "2026-01-16T08:00:00.000Z",
"waktuTiba": "2026-01-16T20:30:00.000Z",
"status": "DIBUKA",
"rute": {
"idRute": "11",
"namaRute": "Semarang - Pontianak",
"pelabuhanAsal": {
"idPelabuhan": "1",
"kode": "SMG",
"nama": "Pelabuhan Tanjung Emas",
"kota": "Semarang",
"provinsi": "Jawa Tengah"
},
"pelabuhanTujuan": {
"idPelabuhan": "7",
"kode": "PNK",
"nama": "Pelabuhan Pontianak",
"kota": "Pontianak",
"provinsi": "Kalimantan Barat"
}
},
"kapal": {
"idKapal": "4",
"namaKapal": "KMP Nusantara Jaya"
},
"tarif": [
{
"idTarif": "5001",
"harga": 285000,
"tipeTarif": "DEWASA",
"catatan": "Ekonomi",
"kuotaTarif": {
"kuotaAwal": 800,
"kuotaSisa": 214,
"updatedAt": "2026-01-10T03:18:00.000Z"
},
"kelasPenumpang": {
"idKelas": "1",
"kode": "EKO",
"nama": "Ekonomi"
},
"kelasKamar": null,
"jenisKendaraan": null
}
]
}
],
"hasilPulang": [
{
"idJadwal": "102",
"waktuBerangkat": "2026-01-20T09:00:00.000Z",
"waktuTiba": "2026-01-20T21:30:00.000Z",
"status": "DIBUKA",
"rute": {
"idRute": "12",
"namaRute": "Pontianak - Semarang",
"pelabuhanAsal": {
"idPelabuhan": "7",
"kode": "PNK",
"nama": "Pelabuhan Pontianak",
"kota": "Pontianak",
"provinsi": "Kalimantan Barat"
},
"pelabuhanTujuan": {
"idPelabuhan": "1",
"kode": "SMG",
"nama": "Pelabuhan Tanjung Emas",
"kota": "Semarang",
"provinsi": "Jawa Tengah"
}
},
"kapal": {
"idKapal": "4",
"namaKapal": "KMP Nusantara Jaya"
},
"tarif": [
{
"idTarif": "6001",
"harga": 295000,
"tipeTarif": "DEWASA",
"catatan": "Ekonomi",
"kuotaTarif": {
"kuotaAwal": 800,
"kuotaSisa": 180,
"updatedAt": "2026-01-10T03:18:00.000Z"
},
"kelasPenumpang": {
"idKelas": "1",
"kode": "EKO",
"nama": "Ekonomi"
},
"kelasKamar": null,
"jenisKendaraan": null
}
]
}
]
}
}
Contoh Response (200, hasil kosong)
{
"success": true,
"message": "Berhasil mengambil hasil pencarian tiket",
"data": {
"parameter": {
"pelabuhanAsal": "XXX",
"pelabuhanTujuan": "YYY",
"tanggalBerangkat": "2026-01-16"
},
"asal": null,
"tujuan": null,
"hasilBerangkat": [],
"hasilPulang": []
}
}
Contoh Response Error (400 Bad Request)
{
"success": false,
"statusCode": 400,
"message": "Data pencarian tidak valid",
"error": "Bad Request"
}
Contoh Response Error (401 Unauthorized)
{
"success": false,
"statusCode": 401,
"message": "API key tidak valid",
"error": "Unauthorized"
}
Contoh Response Error (403 Forbidden)
{
"success": false,
"statusCode": 403,
"message": "Origin tidak diizinkan",
"error": "Forbidden"
}
Contoh Response Error (429 Too Many Requests)
{
"success": false,
"statusCode": 429,
"message": "Terlalu banyak permintaan, silakan coba lagi nanti",
"error": "Too Many Requests"
}
/api/pelanggan/pencarian/tiket/kota-asal -
Daftar kota asal
✔
GET
Contoh Request
GET /api/pelanggan/pencarian/tiket/kota-asal Headers: Origin: http://localhost:5173 X-API-KEY:X-Device-Id: Accept: application/json
Contoh Response (200)
{
"success": true,
"message": "Berhasil mengambil daftar kota asal",
"data": [
{
"id_pelabuhan": 1,
"kode": "SMG",
"nama": "Pelabuhan Tanjung Emas",
"kota": "Semarang",
"provinsi": "Jawa Tengah"
}
]
}
Contoh Response Error (403 Forbidden)
{
"success": false,
"statusCode": 403,
"message": "Origin tidak diizinkan",
"error": "Forbidden"
}
Contoh Response Error (401 Unauthorized)
{
"success": false,
"statusCode": 401,
"message": "API key tidak valid",
"error": "Unauthorized"
}
Contoh Response Error (429 Too Many Requests)
{
"success": false,
"statusCode": 429,
"message": "Terlalu banyak permintaan, silakan coba lagi nanti",
"error": "Too Many Requests"
}
/api/pelanggan/pencarian/tiket/kota-tujuan -
Daftar kota tujuan
✔
GET
Contoh Request
GET /api/pelanggan/pencarian/tiket/kota-tujuan Headers: Origin: http://localhost:5173 X-API-KEY:X-Device-Id: Accept: application/json
Contoh Response (200)
{
"success": true,
"message": "Berhasil mengambil daftar kota tujuan",
"data": [
{
"id_pelabuhan": 7,
"kode": "PNK",
"nama": "Pelabuhan Pontianak",
"kota": "Pontianak",
"provinsi": "Kalimantan Barat"
}
]
}
Contoh Response Error (403 Forbidden)
{
"success": false,
"statusCode": 403,
"message": "Origin tidak diizinkan",
"error": "Forbidden"
}
Contoh Response Error (401 Unauthorized)
{
"success": false,
"statusCode": 401,
"message": "API key tidak valid",
"error": "Unauthorized"
}
Contoh Response Error (429 Too Many Requests)
{
"success": false,
"statusCode": 429,
"message": "Terlalu banyak permintaan, silakan coba lagi nanti",
"error": "Too Many Requests"
}
/api/pelanggan/pencarian/tiket/kelas-penumpang
- Daftar kelas penumpang
✔
GET
Contoh Request
GET /api/pelanggan/pencarian/tiket/kelas-penumpang Headers: Origin: http://localhost:5173 X-API-KEY:X-Device-Id: Accept: application/json
Contoh Response (200)
{
"success": true,
"message": "Berhasil mengambil daftar kelas penumpang",
"data": [
{
"id_kelas": 1,
"kode": "EKO",
"nama": "Ekonomi"
}
]
}
Contoh Response Error (403 Forbidden)
{
"success": false,
"statusCode": 403,
"message": "Origin tidak diizinkan",
"error": "Forbidden"
}
Contoh Response Error (401 Unauthorized)
{
"success": false,
"statusCode": 401,
"message": "API key tidak valid",
"error": "Unauthorized"
}
Contoh Response Error (429 Too Many Requests)
{
"success": false,
"statusCode": 429,
"message": "Terlalu banyak permintaan, silakan coba lagi nanti",
"error": "Too Many Requests"
}
/api/pelanggan/pencarian/tiket/kelas-kamar -
Daftar kelas kamar
✔
GET
Contoh Request
GET /api/pelanggan/pencarian/tiket/kelas-kamar Headers: Origin: http://localhost:5173 X-API-KEY:X-Device-Id: Accept: application/json
Contoh Response (200)
{
"success": true,
"message": "Berhasil mengambil daftar kelas kamar",
"data": [
{
"id_kamar": 2,
"kode": "VIP",
"nama": "VIP Room 1",
"kapasitas_tidur": 1
}
]
}
Contoh Response Error (403 Forbidden)
{
"success": false,
"statusCode": 403,
"message": "Origin tidak diizinkan",
"error": "Forbidden"
}
Contoh Response Error (401 Unauthorized)
{
"success": false,
"statusCode": 401,
"message": "API key tidak valid",
"error": "Unauthorized"
}
Contoh Response Error (429 Too Many Requests)
{
"success": false,
"statusCode": 429,
"message": "Terlalu banyak permintaan, silakan coba lagi nanti",
"error": "Too Many Requests"
}
/api/pelanggan/pencarian/tiket/jenis-kendaraan
- Daftar jenis kendaraan
✔
GET
Contoh Request
GET /api/pelanggan/pencarian/tiket/jenis-kendaraan Headers: Origin: http://localhost:5173 X-API-KEY:X-Device-Id: Accept: application/json
Contoh Response (200)
{
"success": true,
"message": "Berhasil mengambil daftar jenis kendaraan",
"data": [
{
"id_jenis": 3,
"nama": "Motor",
"golongan": "Gol 2"
}
]
}
Contoh Response Error (403 Forbidden)
{
"success": false,
"statusCode": 403,
"message": "Origin tidak diizinkan",
"error": "Forbidden"
}
Contoh Response Error (401 Unauthorized)
{
"success": false,
"statusCode": 401,
"message": "API key tidak valid",
"error": "Unauthorized"
}
Contoh Response Error (429 Too Many Requests)
{
"success": false,
"statusCode": 429,
"message": "Terlalu banyak permintaan, silakan coba lagi nanti",
"error": "Too Many Requests"
}
/api/pelanggan/cuaca/semarang - Daftar lokasi
cuaca Semarang (publik)
✔
GET
Contoh Request
GET /api/pelanggan/cuaca/semarang
Headers:
Origin: http://localhost:5173
X-API-KEY: <public_cuaca_api_key>
X-Device-Id: <id_perangkat_opsional>
Accept: application/json
Contoh Response (200)
{
"success": true,
"message": "Berhasil mengambil daftar lokasi cuaca Semarang",
"data": [
{
"kode": "33.74.01.1001",
"nama": "Karanganyar",
"jenis": "KELURAHAN",
"provinsi": "JAWA TENGAH",
"kota": "SEMARANG"
}
]
}
Contoh Response (200, hasil kosong)
{
"success": true,
"message": "Berhasil mengambil daftar lokasi cuaca Semarang",
"data": []
}
Contoh Response Error (401 Unauthorized)
{
"success": false,
"statusCode": 401,
"message": "API key tidak valid",
"error": "Unauthorized"
}
Contoh Response Error (403 Forbidden)
{
"success": false,
"statusCode": 403,
"message": "Origin tidak diizinkan",
"error": "Forbidden"
}
Contoh Response Error (405 Method Not Allowed)
{
"success": false,
"statusCode": 405,
"message": "Metode tidak diizinkan",
"error": "Method Not Allowed"
}
Contoh Response Error (429 Too Many Requests)
{
"success": false,
"statusCode": 429,
"message": "Terlalu banyak permintaan, silakan coba lagi nanti",
"error": "Too Many Requests"
}
Contoh Response Error (500 Internal Server Error)
{
"success": false,
"statusCode": 500,
"message": "Terjadi kesalahan pada server",
"error": "Internal Server Error"
}
Pengaturan
/api/adminsuper/setting/keamananakun - Keamanan akun (daftar sesi) ✔GET
Contoh Request
GET /api/adminsuper/setting/keamananakun Headers: Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.currentAccessToken Body: (tidak ada)
Contoh Response (200 OK)
{
"success": true,
"message": "Berhasil mengambil sesi keamanan akun",
"data": {
"session_1": {
"id": "333",
"ip": "::ffff:127.0.0.1",
"device": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36",
"user": {
"id": "8a5cb04a-8b33-4181-8418-dbfcab25dfdd"
}
},
"session_2": {
"id": "334",
"ip": "::ffff:127.0.0.1",
"device": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36",
"user": {
"id": "8a5cb04a-8b33-4181-8418-dbfcab25dfdd"
}
}
}
}
Contoh Response (401 Unauthorized)
{
"success": false,
"statusCode": 401,
"message": "Access token tidak ditemukan",
"error": "Unauthorized"
}
Contoh Response (403 Forbidden)
{
"success": false,
"statusCode": 403,
"message": "Akun tidak aktif",
"error": "Forbidden"
}