Pendahuluan
Project Jahit adalah platform yang menghubungkan pelanggan dengan penjahit. API ini menyediakan endpoint untuk mengelola registrasi pengguna, pencarian penjahit, pemesanan jasa, manajemen galeri dan layanan penjahit, serta sistem rating.
Base URL
http://localhost:8000/api
Autentikasi
API ini menggunakan Laravel Sanctum untuk autentikasi. Token akan diberikan setelah login dan harus disertakan dalam header setiap permintaan ke endpoint yang terproteksi.
Format Header
Authorization: Bearer {token}
Role & Hak Akses
Sistem memiliki 3 role pengguna:
- admin - Administrator platform
- penjahit - Penjahit/Penyedia jasa
- pelanggan - Pelanggan/Pengguna jasa
Endpoint API
Endpoint Publik
Tes koneksi API
Response
{
"message": "API is working"
}
Mendapatkan semua spesialisasi penjahit
Mencari penjahit berdasarkan spesialisasi
Mendapatkan detail informasi penjahit
Autentikasi
Registrasi akun pelanggan baru
Headers
Content-Type: application/json
Request Body
{
"name": "John Doe",
"email": "john@example.com",
"password": "password123",
"password_confirmation": "password123",
"phone_number": "08123456789",
"address": "Jl. Example No. 123"
}
Validasi
- name - Wajib diisi, nama lengkap pengguna
- email - Wajib diisi, format email, harus unik
- password - Wajib diisi, minimal 8 karakter
- password_confirmation - Wajib diisi, harus sama dengan password
- phone_number - Wajib diisi, nomor telepon
- address - Wajib diisi, alamat lengkap
Response
{
"success": true,
"data": {
"user": {
"id": 1,
"name": "John Doe",
"email": "john@example.com",
"role": "pelanggan",
"phone_number": "08123456789",
"address": "Jl. Example No. 123",
"created_at": "2023-05-01T10:00:00.000000Z",
"updated_at": "2023-05-01T10:00:00.000000Z"
},
"token": "1|laravel_sanctum_token..."
},
"message": "Pendaftaran berhasil"
}
Error Response
{
"success": false,
"data": {
"email": ["Email sudah digunakan."],
"password": ["Password minimal harus 8 karakter."]
},
"message": "Validation Error."
}
Login sebagai pelanggan
Headers
Content-Type: application/json
Request Body
{
"email": "john@example.com",
"password": "password123"
}
Validasi
- email - Wajib diisi, format email
- password - Wajib diisi
Response
{
"success": true,
"data": {
"user": {
"id": 1,
"name": "John Doe",
"email": "john@example.com",
"role": "pelanggan",
"phone_number": "08123456789",
"address": "Jl. Example No. 123",
"created_at": "2023-05-01T10:00:00.000000Z",
"updated_at": "2023-05-01T10:00:00.000000Z"
},
"token": "1|laravel_sanctum_token..."
},
"message": "Login berhasil"
}
Error Response
{
"success": false,
"data": {
"error": "Email atau password tidak valid"
},
"message": "Authentication Error."
}
Registrasi akun penjahit baru
Headers
Content-Type: application/json
Request Body
{
"name": "John Doe",
"email": "tailor@example.com",
"password": "password123",
"password_confirmation": "password123",
"phone_number": "08123456789",
"address": "Jl. Example No. 123",
"shop_description": "Jasa jahit profesional dengan pelayanan terbaik",
"specializations": [1, 2, 3]
}
Validasi
- name - Wajib diisi, nama lengkap penjahit
- email - Wajib diisi, format email, harus unik
- password - Wajib diisi, minimal 8 karakter
- password_confirmation - Wajib diisi, harus sama dengan password
- phone_number - Wajib diisi, nomor telepon
- address - Wajib diisi, alamat lengkap
- shop_description - Wajib diisi, deskripsi toko/jasa
- specializations - Wajib diisi, array ID spesialisasi
Response
{
"success": true,
"data": {
"user": {
"id": 2,
"name": "John Doe",
"email": "tailor@example.com",
"role": "penjahit",
"phone_number": "08123456789",
"address": "Jl. Example No. 123",
"shop_description": "Jasa jahit profesional dengan pelayanan terbaik",
"created_at": "2023-05-01T10:00:00.000000Z",
"updated_at": "2023-05-01T10:00:00.000000Z",
"specializations": [
{
"id": 1,
"name": "Kemeja"
},
{
"id": 2,
"name": "Gaun"
},
{
"id": 3,
"name": "Celana"
}
]
},
"token": "1|laravel_sanctum_token..."
},
"message": "Pendaftaran berhasil"
}
Error Response
{
"success": false,
"data": {
"email": ["Email sudah digunakan."],
"specializations": ["Spesialisasi wajib diisi."]
},
"message": "Validation Error."
}
Login sebagai penjahit
Headers
Content-Type: application/json
Request Body
{
"email": "tailor@example.com",
"password": "password123"
}
Validasi
- email - Wajib diisi, format email
- password - Wajib diisi
Response
{
"success": true,
"data": {
"user": {
"id": 2,
"name": "John Doe",
"email": "tailor@example.com",
"role": "penjahit",
"phone_number": "08123456789",
"address": "Jl. Example No. 123",
"shop_description": "Jasa jahit profesional dengan pelayanan terbaik",
"created_at": "2023-05-01T10:00:00.000000Z",
"updated_at": "2023-05-01T10:00:00.000000Z"
},
"token": "1|laravel_sanctum_token..."
},
"message": "Login berhasil"
}
Error Response
{
"success": false,
"data": {
"error": "Email atau password tidak valid"
},
"message": "Authentication Error."
}
Login sebagai admin
Headers
Content-Type: application/json
Request Body
{
"email": "admin@example.com",
"password": "admin123"
}
Validasi
- email - Wajib diisi, format email
- password - Wajib diisi
Response
{
"success": true,
"data": {
"user": {
"id": 3,
"name": "Admin",
"email": "admin@example.com",
"role": "admin",
"created_at": "2023-05-01T10:00:00.000000Z",
"updated_at": "2023-05-01T10:00:00.000000Z"
},
"token": "1|laravel_sanctum_token..."
},
"message": "Login berhasil"
}
Error Response
{
"success": false,
"data": {
"error": "Email atau password tidak valid"
},
"message": "Authentication Error."
}
Logout pengguna (invalidasi token)
Headers
Authorization: Bearer {token}
Response
{
"success": true,
"data": {},
"message": "Berhasil logout"
}
Error Response
{
"success": false,
"data": {
"error": "Unauthenticated"
},
"message": "Error."
}
Mengirim ulang email verifikasi
Headers
Authorization: Bearer {token}
Response
{
"success": true,
"data": {},
"message": "Email verifikasi telah dikirim"
}
Profil
Mendapatkan informasi profil pengguna
Headers
Authorization: Bearer {token}
Response
{
"success": true,
"data": {
"id": 1,
"name": "John Doe",
"email": "john@example.com",
"role": "pelanggan",
"phone_number": "08123456789",
"address": "Jl. Example No. 123",
"profile_photo": "profile_photos/user1.jpg",
"created_at": "2023-05-01T10:00:00.000000Z",
"updated_at": "2023-05-01T10:00:00.000000Z"
},
"message": "Profil berhasil ditemukan"
}
Error Response
{
"success": false,
"data": {
"error": "Unauthenticated"
},
"message": "Error."
}
Mengupdate informasi profil pengguna
Headers
Authorization: Bearer {token}
Content-Type: application/json
Request Body
{
"name": "John Doe Updated",
"phone_number": "087654321",
"address": "Jl. Updated No. 456",
"shop_description": "Deskripsi toko yang diupdate" // khusus penjahit
}
Validasi
- name - Opsional, nama baru pengguna
- phone_number - Opsional, nomor telepon baru
- address - Opsional, alamat baru
- shop_description - Opsional, deskripsi toko baru (hanya untuk penjahit)
Response
{
"success": true,
"data": {
"id": 1,
"name": "John Doe Updated",
"email": "john@example.com",
"role": "pelanggan",
"phone_number": "087654321",
"address": "Jl. Updated No. 456",
"created_at": "2023-05-01T10:00:00.000000Z",
"updated_at": "2023-05-02T10:00:00.000000Z"
},
"message": "Profil berhasil diupdate"
}
Error Response
{
"success": false,
"data": {
"phone_number": ["Format nomor telepon tidak valid"]
},
"message": "Validation Error."
}
Mengupload foto profil
Headers
Authorization: Bearer {token}
Content-Type: multipart/form-data
Request Body
{
"profile_photo": [file]
}
Validasi
- profile_photo - Wajib diisi, file gambar, maksimal 2MB
Response
{
"success": true,
"data": {
"id": 1,
"name": "John Doe",
"profile_photo": "profile_photos/user1_updated.jpg"
},
"message": "Foto profil berhasil diupload"
}
Error Response
{
"success": false,
"data": {
"profile_photo": ["File harus berupa gambar dengan ukuran maksimal 2MB"]
},
"message": "Validation Error."
}
Pelanggan
Mendapatkan data dashboard pelanggan
Headers
Authorization: Bearer {token}
Response
{
"success": true,
"data": {
"user": {
"id": 1,
"name": "John Doe",
"email": "john@example.com",
"phone_number": "08123456789"
},
"bookings_count": {
"total": 5,
"ongoing": 2,
"completed": 3
},
"latest_bookings": [
{
"id": 3,
"transaction_code": "TRX-003",
"tailor_name": "Penjahit ABC",
"category": "Atasan",
"service_type": "Jahit Baru",
"status": "diproses",
"appointment_date": "2023-05-10"
}
]
},
"message": "Dashboard data retrieved successfully"
}
Error Response
{
"success": false,
"data": {
"error": "Unauthorized"
},
"message": "Error."
}
Mendapatkan semua booking yang dilakukan pelanggan
Headers
Authorization: Bearer {token}
Query Parameters
- status (optional) - Filter berdasarkan status (reservasi, dikonfirmasi, diproses, selesai, dibatalkan)
Response
{
"success": true,
"data": [
{
"id": 1,
"transaction_code": "TRX-001",
"customer_id": 1,
"tailor_id": 2,
"appointment_date": "2023-05-05",
"appointment_time": "10:00",
"service_type": "Jahit Baru",
"category": "Atasan",
"design_photo": "design_photos/design1.jpg",
"notes": "Mohon dibuat sesuai ukuran",
"status": "selesai",
"total_price": 150000,
"payment_status": "paid",
"payment_method": "Midtrans",
"completed_at": "2023-05-10T14:00:00.000000Z",
"created_at": "2023-05-01T10:00:00.000000Z",
"updated_at": "2023-05-10T14:00:00.000000Z",
"tailor": {
"id": 2,
"name": "Penjahit ABC",
"profile_photo": "profile_photos/tailor1.jpg",
"address": "Jl. Penjahit No. 123"
},
"rating": {
"id": 1,
"rating": 5,
"review": "Sangat puas dengan hasilnya"
}
}
],
"message": "Booking list retrieved successfully"
}
Error Response
{
"success": false,
"data": {
"error": "Unauthorized"
},
"message": "Error."
}
Mendapatkan booking pelanggan berdasarkan status
Headers
Authorization: Bearer {token}
Path Parameters
- status - Status booking (reservasi, dikonfirmasi, diproses, selesai, dibatalkan)
Response
{
"success": true,
"data": [
{
"id": 1,
"transaction_code": "TRX-001",
"tailor_name": "Penjahit ABC",
"tailor_photo": "profile_photos/tailor1.jpg",
"appointment_date": "2023-05-05",
"service_type": "Jahit Baru",
"category": "Atasan",
"payment_method": "Midtrans",
"payment_status": "paid"
}
],
"message": "Booking list retrieved successfully"
}
Error Response
{
"success": false,
"data": {
"error": "Invalid status"
},
"message": "Invalid status"
}
Membuat booking baru ke penjahit
Headers
Authorization: Bearer {token}
Content-Type: multipart/form-data
Path Parameters
- tailor - ID penjahit yang akan dibooking
Request Body
{
"appointment_date": "2023-05-15",
"appointment_time": "14:00",
"service_type": "Jahit Baru",
"category": "Atasan",
"design_photo": [file],
"notes": "Mohon dibuat sesuai ukuran",
"payment_method": "Midtrans"
}
Validasi
- appointment_date - Wajib diisi, format tanggal (YYYY-MM-DD), harus tanggal sekarang atau setelahnya
- appointment_time - Wajib diisi, format waktu (HH:MM)
- service_type - Wajib diisi, nilai valid: "Perbaikan", "Jahit Baru"
- category - Wajib diisi, nilai valid: "Atasan", "Bawahan", "Terusan"
- design_photo - Wajib diisi, file gambar, maksimal 2MB
- notes - Opsional, catatan tambahan
- payment_method - Wajib diisi, metode pembayaran
Response
{
"success": true,
"data": {
"booking": {
"id": 5,
"transaction_code": "TRX-005",
"customer_id": 1,
"tailor_id": 2,
"appointment_date": "2023-05-15",
"appointment_time": "14:00",
"service_type": "Jahit Baru",
"category": "Atasan",
"design_photo": "design_photos/design5.jpg",
"notes": "Mohon dibuat sesuai ukuran",
"status": "reservasi",
"payment_status": "unpaid",
"payment_method": "Midtrans",
"created_at": "2023-05-05T10:00:00.000000Z",
"updated_at": "2023-05-05T10:00:00.000000Z"
},
"message": "Booking berhasil dibuat",
"next_steps": {
"payment": "Silakan lakukan pembayaran untuk mengkonfirmasi booking",
"cancellation": "Anda dapat membatalkan booking sebelum melakukan pembayaran"
}
},
"message": "Booking berhasil dibuat"
}
Error Response
{
"success": false,
"data": {
"appointment": ["Jadwal tidak tersedia. Penjahit sudah memiliki booking pada tanggal yang sama"]
},
"message": "Error validasi."
}
Membatalkan booking
Headers
Authorization: Bearer {token}
Path Parameters
- booking - ID booking yang akan dibatalkan
Response
{
"success": true,
"data": {
"id": 5,
"status": "dibatalkan",
"updated_at": "2023-05-05T11:00:00.000000Z"
},
"message": "Booking berhasil dibatalkan."
}
Error Response
{
"success": false,
"data": {
"status": ["Booking tidak dapat dibatalkan karena sudah diproses"]
},
"message": "Error validasi."
}
Penjahit
Mendapatkan data dashboard penjahit
Headers
Authorization: Bearer {token}
Response
{
"success": true,
"data": {
"user": {
"id": 2,
"name": "Penjahit ABC",
"email": "tailor@example.com"
},
"stats": {
"total_bookings": 10,
"ongoing_bookings": 5,
"completed_bookings": 4,
"cancelled_bookings": 1,
"average_rating": 4.5
},
"recent_bookings": [
{
"id": 10,
"transaction_code": "TRX-010",
"customer_name": "John Doe",
"appointment_date": "2023-05-20",
"service_type": "Jahit Baru",
"status": "reservasi",
"created_at": "2023-05-10T10:00:00.000000Z"
}
],
"earnings": {
"this_month": 750000,
"last_month": 500000,
"total": 1250000
}
},
"message": "Dashboard data retrieved successfully"
}
Error Response
{
"success": false,
"data": {
"error": "Unauthorized"
},
"message": "Error."
}
Mendapatkan jadwal booking untuk bulan dan tahun tertentu
Headers
Authorization: Bearer {token}
Path Parameters
- month - Bulan (1-12)
- year - Tahun (format 4 digit, contoh: 2023)
Response
{
"success": true,
"data": {
"2023-05-01": {
"date": "2023-05-01",
"day": "01",
"day_name": "Senin",
"bookings": []
},
"2023-05-02": {
"date": "2023-05-02",
"day": "02",
"day_name": "Selasa",
"bookings": [
{
"id": 1,
"transaction_code": "TRX-001",
"customer_name": "John Doe",
"customer_phone": "08123456789",
"appointment_time": "10:00",
"service_type": "Jahit Baru",
"category": "Atasan",
"status": "dikonfirmasi"
}
]
}
},
"message": "Calendar data retrieved successfully"
}
Error Response
{
"success": false,
"data": {
"error": "Invalid date"
},
"message": "Invalid date"
}
Menerima booking dari pelanggan
Headers
Authorization: Bearer {token}
Content-Type: application/json
Path Parameters
- booking - ID booking yang akan diterima
Response
{
"success": true,
"data": {
"id": 5,
"status": "dikonfirmasi",
"accepted_at": "2023-05-05T14:00:00.000000Z",
"updated_at": "2023-05-05T14:00:00.000000Z"
},
"message": "Booking berhasil dikonfirmasi"
}
Error Response
{
"success": false,
"data": {
"error": "Booking tidak dapat dikonfirmasi karena status sudah berubah"
},
"message": "Error."
}
Menolak booking dari pelanggan
Headers
Authorization: Bearer {token}
Content-Type: application/json
Path Parameters
- booking - ID booking yang akan ditolak
Request Body
{
"rejection_reason": "Jadwal sudah penuh"
}
Validasi
- rejection_reason - Wajib diisi, alasan penolakan
Response
{
"success": true,
"data": {
"id": 5,
"status": "dibatalkan",
"rejection_reason": "Jadwal sudah penuh",
"rejected_at": "2023-05-05T14:00:00.000000Z",
"updated_at": "2023-05-05T14:00:00.000000Z"
},
"message": "Booking berhasil ditolak"
}
Error Response
{
"success": false,
"data": {
"rejection_reason": ["Alasan penolakan wajib diisi"]
},
"message": "Error validasi."
}
Mengubah status pembayaran booking menjadi paid
Headers
Authorization: Bearer {token}
Content-Type: application/json
Path Parameters
- booking - ID booking yang akan diubah status pembayarannya
Request Body
{
"payment_status": "paid"
}
Validasi
- payment_status - Wajib diisi, nilai valid: "paid" atau "success"
Response
{
"success": true,
"data": {
"id": 5,
"payment_status": "paid",
"updated_at": "2023-05-05T15:00:00.000000Z"
},
"message": "Status pembayaran berhasil diubah"
}
Error Response
{
"success": false,
"data": {
"error": "Unauthorized"
},
"message": "Unauthorized."
}
Memproses pembayaran akhir dan mengatur tanggal pengambilan
Headers
Authorization: Bearer {token}
Content-Type: application/json
Path Parameters
- booking - ID booking yang akan diproses pembayaran akhirnya
Request Body
{
"pickup_date": "2023-05-20"
}
Validasi
- pickup_date - Wajib diisi, format tanggal (YYYY-MM-DD), harus tanggal sekarang atau setelahnya
Response
{
"success": true,
"data": {
"id": 5,
"payment_status": "paid",
"pickup_date": "2023-05-20",
"updated_at": "2023-05-05T16:00:00.000000Z"
},
"message": "Pembayaran akhir berhasil diproses"
}
Error Response
{
"success": false,
"data": {
"error": "Invalid status",
"message": "Pembayaran hanya dapat dilakukan untuk pesanan yang sudah selesai"
},
"message": "Invalid status"
}
Mendapatkan semua booking penjahit
Headers
Authorization: Bearer {token}
Query Parameters
- status (optional) - Filter berdasarkan status (reservasi, dikonfirmasi, diproses, selesai, dibatalkan)
Response
{
"success": true,
"data": [
{
"id": 5,
"transaction_code": "TRX-005",
"customer_id": 1,
"appointment_date": "2023-05-15",
"appointment_time": "14:00",
"service_type": "Jahit Baru",
"category": "Atasan",
"status": "dikonfirmasi",
"total_price": 150000,
"payment_status": "paid",
"created_at": "2023-05-05T10:00:00.000000Z",
"updated_at": "2023-05-05T15:00:00.000000Z",
"customer": {
"id": 1,
"name": "John Doe",
"phone_number": "08123456789"
}
}
],
"message": "Booking list retrieved successfully"
}
Error Response
{
"success": false,
"data": {
"error": "Unauthorized"
},
"message": "Error."
}
Mendapatkan booking penjahit berdasarkan status
Headers
Authorization: Bearer {token}
Path Parameters
- status - Status booking (reservasi, dikonfirmasi, diproses, selesai, dibatalkan)
Response
{
"success": true,
"data": [
{
"id": 5,
"transaction_code": "TRX-005",
"customer_name": "John Doe",
"customer_phone": "08123456789",
"appointment_date": "2023-05-15",
"service_type": "Jahit Baru",
"payment_status": "paid"
}
],
"message": "Booking list retrieved successfully"
}
Error Response
{
"success": false,
"data": {
"error": "Invalid status"
},
"message": "Invalid status"
}
Mendapatkan semua layanan penjahit
Headers
Authorization: Bearer {token}
Response
{
"success": true,
"data": [
{
"id": 1,
"tailor_id": 2,
"name": "Jahit Kemeja",
"description": "Jasa jahit kemeja pria dan wanita",
"price": 150000,
"is_available": true,
"created_at": "2023-05-01T10:00:00.000000Z",
"updated_at": "2023-05-01T10:00:00.000000Z"
}
],
"message": "Services retrieved successfully"
}
Menambahkan layanan baru
Headers
Authorization: Bearer {token}
Content-Type: application/json
Request Body
{
"name": "Jahit Jas",
"description": "Jasa pembuatan jas pria berkualitas tinggi",
"price": 500000
}
Validasi
- name - Wajib diisi, nama layanan
- description - Wajib diisi, deskripsi layanan
- price - Wajib diisi, harga layanan (angka)
Response
{
"success": true,
"data": {
"id": 2,
"tailor_id": 2,
"name": "Jahit Jas",
"description": "Jasa pembuatan jas pria berkualitas tinggi",
"price": 500000,
"is_available": true,
"created_at": "2023-05-05T10:00:00.000000Z",
"updated_at": "2023-05-05T10:00:00.000000Z"
},
"message": "Service created successfully"
}
Error Response
{
"success": false,
"data": {
"price": ["Harga harus berupa angka"]
},
"message": "Validation Error."
}
Mendapatkan semua galeri penjahit
Headers
Authorization: Bearer {token}
Response
{
"success": true,
"data": [
{
"id": 1,
"tailor_id": 2,
"title": "Kemeja Batik",
"description": "Kemeja batik pesanan pelanggan",
"photo_path": "gallery_photos/kemeja_batik.jpg",
"created_at": "2023-05-01T10:00:00.000000Z",
"updated_at": "2023-05-01T10:00:00.000000Z"
}
],
"message": "Gallery items retrieved successfully"
}
Menambahkan item galeri baru
Headers
Authorization: Bearer {token}
Content-Type: multipart/form-data
Request Body
{
"title": "Jas Pernikahan",
"description": "Jas pernikahan custom pesanan pelanggan",
"photo": [file]
}
Validasi
- title - Wajib diisi, judul item galeri
- description - Wajib diisi, deskripsi item galeri
- photo - Wajib diisi, file gambar, maksimal 2MB
Response
{
"success": true,
"data": {
"id": 2,
"tailor_id": 2,
"title": "Jas Pernikahan",
"description": "Jas pernikahan custom pesanan pelanggan",
"photo_path": "gallery_photos/jas_pernikahan.jpg",
"created_at": "2023-05-05T10:00:00.000000Z",
"updated_at": "2023-05-05T10:00:00.000000Z"
},
"message": "Gallery item created successfully"
}
Error Response
{
"success": false,
"data": {
"photo": ["File harus berupa gambar dengan ukuran maksimal 2MB"]
},
"message": "Validation Error."
}
Admin
Mendapatkan data dashboard admin
Headers
Authorization: Bearer {token}
Response
{
"success": true,
"data": {
"stats": {
"total_users": {
"customers": 50,
"tailors": 20,
"admins": 2
},
"bookings": {
"total": 100,
"ongoing": 40,
"completed": 55,
"cancelled": 5
},
"revenue": {
"this_month": 5000000,
"last_month": 4500000,
"total": 15000000
},
"ratings": {
"average": 4.7,
"count": 75
}
},
"recent_bookings": [
{
"id": 10,
"transaction_code": "TRX-010",
"customer_name": "John Doe",
"tailor_name": "Penjahit ABC",
"service_type": "Jahit Baru",
"status": "diproses",
"total_price": 150000,
"created_at": "2023-05-10T10:00:00.000000Z"
}
],
"recent_users": [
{
"id": 70,
"name": "Jane Smith",
"role": "pelanggan",
"created_at": "2023-05-10T10:00:00.000000Z"
}
]
},
"message": "Dashboard data retrieved successfully"
}
Error Response
{
"success": false,
"data": {
"error": "Unauthorized access"
},
"message": "Error."
}
Mendapatkan semua data pelanggan
Headers
Authorization: Bearer {token}
Query Parameters
- search (optional) - Mencari berdasarkan nama atau email
Response
{
"success": true,
"data": [
{
"id": 1,
"name": "John Doe",
"email": "john@example.com",
"phone_number": "08123456789",
"address": "Jl. Example No. 123",
"profile_photo": "profile_photos/user1.jpg",
"created_at": "2023-05-01T10:00:00.000000Z",
"bookings_count": 5
}
],
"message": "Customers retrieved successfully"
}
Wallet & Withdrawal
Mendapatkan informasi wallet pengguna
Headers
Authorization: Bearer {token}
Response
{
"success": true,
"data": {
"balance": 1000000.00,
"transactions": [
{
"id": 1,
"type": "credit",
"amount": 500000.00,
"description": "Pembayaran booking #TRX-001",
"status": "success",
"created_at": "2024-05-03T10:00:00.000000Z",
"booking": {
"id": 1,
"transaction_code": "TRX-001",
"service_type": "jahit",
"category": "baju"
}
}
]
},
"message": "Wallet information retrieved successfully"
}
Error Response
{
"success": false,
"data": {
}
}
Mendapatkan semua data pelanggan
Headers
Authorization: Bearer {token}
Query Parameters
- search (optional) - Mencari berdasarkan nama atau email
Response
{
"success": true,
"data": [
{
"id": 1,
"name": "John Doe",
"email": "john@example.com",
"phone_number": "08123456789",
"address": "Jl. Example No. 123",
"profile_photo": "profile_photos/user1.jpg",
"created_at": "2023-05-01T10:00:00.000000Z",
"bookings_count": 5
}
],
"message": "Customers retrieved successfully"
}