API Aplikasi Mobile E-Silakan

Dokumentasi Lengkap RESTful API

Versi 1.0.0

Ringkasan API

URL Dasar

http://localhost:8000/api

Autentikasi

Bearer Token (Laravel Sanctum)

Format Respons

JSON dengan struktur yang konsisten

Total Endpoint

15+

🚀 Panduan Cepat

  1. Daftarkan pengguna: POST /api/register
  2. Login untuk mendapatkan token: POST /api/login
  3. Gunakan token di header: Authorization: Bearer {token}
  4. Akses endpoint yang dilindungi

🔐 Detail Autentikasi Bearer Token

Semua endpoint yang bertanda "Autentikasi: Diperlukan" memerlukan Bearer token yang didapat dari login.

Cara Mendapatkan Token:

  1. Lakukan POST request ke /api/login dengan email & password
  2. API akan mengembalikan token dalam format: "token": "1|abc123..."
  3. Simpan token ini untuk digunakan pada request selanjutnya

Cara Menggunakan Token:

Tambahkan header berikut pada setiap request ke endpoint yang dilindungi:

Authorization: Bearer 1|abc123...

Contoh lengkap header request:

Content-Type: application/json
Authorization: Bearer 1|abc123...

Contoh Lengkap dengan cURL:

1. Login untuk mendapatkan token:

curl -X POST http://localhost:8000/api/login \
  -H "Content-Type: application/json" \
  -d '{
    "email": "john@example.com",
    "password": "password123"
  }'

2. Gunakan token untuk mengakses endpoint yang dilindungi:

curl -X GET http://localhost:8000/api/profile \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 1|abc123def456..."

Format Respons Standar

{
  "success": true,
   "message": "Operasi berhasil diselesaikan",
   "data": {
     // Data respons di sini
   }
}

Endpoint Autentikasi

POST /api/register

Daftarkan akun pengguna baru

Body Permintaan:

{
  "name": "John Doe",
  "email": "john@example.com",
  "password": "password123",
  "password_confirmation": "password123"
}

Respons (201):

{
  "success": true,
   "message": "Pengguna berhasil didaftarkan",
  "data": {
    "user": { ... },
    "token": "1|abc123...",
    "token_type": "Bearer"
  }
}
POST /api/login

Autentikasi pengguna dan dapatkan token akses

Body Permintaan:

{
  "email": "john@example.com",
  "password": "password123"
}

Respons Sukses (200):

{
  "success": true,
  "message": "Login berhasil",
  "data": {
    "user": {
      "id": 1,
      "name": "John Doe",
      "email": "john@example.com"
    },
    "token": "1|abc123def456...",
    "token_type": "Bearer"
  }
}

💡 Penting: Simpan nilai token dari respons ini. Token inilah yang akan digunakan untuk mengakses endpoint yang memerlukan autentikasi.

GET /api/user

Dapatkan informasi pengguna yang diautentikasi

Autentikasi: Diperlukan

📝 Header yang diperlukan: Authorization: Bearer {token_dari_login}

POST /api/logout

Batalkan token akses saat ini

Autentikasi: Diperlukan

📝 Header yang diperlukan: Authorization: Bearer {token_dari_login}

POST /api/refresh-token

Perbarui token akses saat ini

Autentikasi: Diperlukan

📝 Header yang diperlukan: Authorization: Bearer {token_dari_login}

Manajemen Profil

GET /api/profile

Dapatkan informasi profil pengguna

Autentikasi: Diperlukan

📝 Header yang diperlukan: Authorization: Bearer {token_dari_login}

PUT /api/profile

Perbarui informasi profil pengguna

Body Permintaan:

{
  "name": "John Smith",
  "phone": "+1234567890",
  "bio": "Full-stack developer",
  "location": "San Francisco, USA",
  "website": "https://johnsmith.dev"
}
POST /api/profile/avatar

Unggah dan perbarui avatar pengguna

Content-Type: multipart/form-data

Persyaratan File: maks 2MB, jpeg/png/jpg/gif

DELETE /api/profile/avatar

Hapus avatar pengguna

Manajemen Pengguna

GET /api/users

Dapatkan daftar pengguna dengan paginasi

Parameter Query:

Parameter Tipe Deskripsi Default
per_page integer Jumlah pengguna per halaman 15
search string Kata kunci pencarian untuk nama atau email -
GET /api/users/{id}

Dapatkan informasi pengguna tertentu

PUT /api/users/{id}

Perbarui informasi pengguna tertentu

DELETE /api/users/{id}

Hapus pengguna tertentu

Utilitas Aplikasi Mobile

GET /api/health

Periksa status kesehatan API

Autentikasi: Tidak diperlukan

✅ Endpoint publik: Tidak memerlukan header Authorization

Respons:

{
  "status": "ok",
  "timestamp": "2025-09-07T11:34:43.000000Z",
  "version": "1.0.0"
}
GET /api/app/version

Periksa versi aplikasi dan status pemeliharaan

Respons:

{
  "version": "1.0.0",
  "minimum_version": "1.0.0",
  "force_update": false,
  "maintenance_mode": false
}
GET /api/app/settings

Dapatkan pengaturan konfigurasi aplikasi

Respons:

{
  "notifications_enabled": true,
  "theme": "auto",
  "language": "en",
  "privacy_policy_url": "http://localhost:8000/privacy",
  "terms_of_service_url": "http://localhost:8000/terms"
}

Kode Error & Status

Kode Status HTTP

Kode Status Deskripsi Penggunaan
200 OK Permintaan GET, PUT berhasil
201 Dibuat Permintaan POST berhasil
401 Tidak Diotorisasi Autentikasi diperlukan
404 Tidak Ditemukan Resource tidak ditemukan
422 Error Validasi Validasi permintaan gagal
500 Error Server Internal Error server

Format Respons Error

{
  "success": false,
   "message": "Deskripsi error",
   "error_code": "KODE_ERROR",
   "errors": {
     // Error validasi (jika ada)
   }
}

Kode Error Kustom

Kode Error Deskripsi
RESOURCE_NOT_FOUND Resource yang diminta tidak ada
METHOD_NOT_ALLOWED Metode HTTP tidak diizinkan untuk endpoint ini
VALIDATION_ERROR Validasi permintaan gagal
INTERNAL_ERROR Error server internal