Temel Bilgiler

Base URL: http://localhost:3000
Version: v2.0.0
Content-Type: application/json
Response Format: { "success": boolean, "data": any, "error": object }

Authentication (Kimlik Doğrulama)

Not: Tüm API endpoint'leri JWT token authentication gerektirir. Token'ı Authorization header'ında gönderin:

Authorization: Bearer YOUR_JWT_TOKEN
POST /api/auth/login
Kullanıcı girişi yapar ve JWT token döner
Request Body:
{
  "email": "admin@bestwest.com",
  "password": "admin123",
  "role": "admin"
}
Response:
{
  "success": true,
  "data": {
    "message": "Login successful",
    "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
    "user": {
      "id": "1",
      "email": "admin@bestwest.com",
      "role": "admin"
    }
  }
}
GET /api/auth/verify
JWT token'ın geçerliliğini kontrol eder
Headers:
  • Authorization: Bearer YOUR_TOKEN
Response:
{
  "success": true,
  "data": {
    "message": "Token valid",
    "user": {
      "id": "1",
      "email": "admin@bestwest.com",
      "role": "admin",
      "iat": 1753665373,
      "exp": 1753751773
    }
  }
}
POST /api/auth/refresh
JWT token'ı yeniler (24 saat geçerlilik süresi)
Headers:
  • Authorization: Bearer YOUR_TOKEN
Response:
{
  "success": true,
  "data": {
    "message": "Token refreshed successfully",
    "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
    "user": {
      "id": "1",
      "email": "admin@bestwest.com",
      "role": "admin"
    }
  }
}
POST /api/auth/register
Yeni kullanıcı kaydı (test amaçlı)
Request Body:
{
  "email": "newuser@example.com",
  "password": "password123",
  "role": "user"
}

Authentication Notları

  • Token Süresi: 24 saat
  • Yenileme: /api/auth/refresh endpoint'i ile
  • Roller: admin, driver, user
  • Test Kullanıcıları:
    • Admin: admin@bestwest.com / admin123
    • Driver: driver@bestwest.com / driver123
    • User: user@bestwest.com / user123

Transfer Requests (Talepler)

GET /api/transfer-requests
Transfer taleplerini listeler (sayfalama ve filtreleme desteği)
Query Parameters:
  • page - Sayfa numarası (default: 1)
  • limit - Sayfa başına kayıt (default: 20)
  • status - pending, approved, rejected, cancelled
  • account_id - Firma ID'si
  • is_airport_transfer - true/false
  • priority - normal, high, urgent
GET /api/transfer-requests/:id
Belirli bir transfer talebinin detayını getirir
POST /api/transfer-requests
Yeni transfer talebi oluşturur (Otomatik olarak ana transfer tablosuna da kaydedilir)
Request Body:
{
  "request_date": "2024-01-15",
  "request_time": "14:30",
  "pickup_location": "Havalimanı Terminal 1",
  "destination": "Merkez Otel",
  "total_passenger_count": 2,
  "special_requirements": "Wheelchair",
  "notes": "Uçuş gecikmesi olabilir",
  "is_airport_transfer": true,
  "flight_code": "TK1234",
  "requester_contact_id": "contact-uuid",
  "account_id": "account-uuid",
  "estimated_distance_km": 45,
  "estimated_duration_minutes": 60,
  "passengers": [
    {
      "passenger_name": "Ahmet",
      "passenger_surname": "Yılmaz",
      "passenger_phone": "+905551234567",
      "passenger_email": "ahmet@example.com",
      "special_needs": "Wheelchair"
    }
  ]
}
Otomatik İşlem:
  • Transfer talebi oluşturulur
  • Ana transfer tablosuna otomatik kayıt eklenir (rezervasyon durumunda)
  • Yolcu bilgileri kopyalanır
  • Status otomatik olarak 'transferred' yapılır
POST /api/transfer-requests/:id/approve
Transfer talebini onaylar ve transfer oluşturur (Manuel onay için)
Request Body:
{
  "approved_by": "admin-user-id",
  "notes": "Onay notu (opsiyonel)"
}
Not: Transfer talepleri artık otomatik olarak ana transfer tablosuna kaydedilir
POST /api/transfer-requests/:id/reject
Transfer talebini reddeder
Request Body:
{
  "rejected_reason": "Red sebebi",
  "rejected_by": "admin-user-id"
}
GET /api/transfer-requests/stats/dashboard
Transfer talep istatistiklerini getirir

Transfers (Ana Transferler)

GET /api/transfers
Onaylanmış transferleri listeler
Query Parameters:
  • status - beklemede, atandı, yolda, tamamlandı, iptal
  • driver_id - Sürücü ID'si
  • customer_id - Müşteri ID'si
  • transfer_date - YYYY-MM-DD formatında
  • payment_status - bekliyor, ödendi, geciken
GET /api/transfers/driver/:driver_id
Belirli bir sürücünün transferlerini getirir
PATCH /api/transfers/:id/status
Transfer durumunu günceller (sürücü kullanımı)
Request Body:
{
  "status": "yolda",
  "notes": "Güncelleme notu (opsiyonel)"
}
PATCH /api/transfers/:id/assign-driver
Transfere sürücü atar
Request Body:
{
  "driver_id": "driver-uuid",
  "vehicle_id": "vehicle-uuid",
  "assignment_id": "assignment-uuid"
}
GET /api/transfers/stats/dashboard
Transfer istatistiklerini getirir

Admin Endpoints

GET /api/admin/dashboard
Admin dashboard istatistikleri (birleşik veriler)
GET /api/admin/transfer-requests
Admin için tüm transfer talepleri
GET /api/admin/transfers
Admin için tüm transferler
GET /api/admin/drivers
Tüm sürücüleri listeler

Response Örnekleri

Başarılı Response:

{
  "success": true,
  "data": {
    // API'ye özel veri
  },
  "meta": {
    "total": 100,
    "page": 1,
    "limit": 20,
    "totalPages": 5
  }
}

Hata Response:

{
  "success": false,
  "error": {
    "message": "Hata mesajı",
    "details": ["Detaylı hata bilgileri"],
    "stack": "Stack trace (sadece development)"
  }
}