📚 BestWest Notification API

API Endpoint'leri ve Kullanım Kılavuzu

🏥 Health Check
GET /api/health
API servisinin durumunu kontrol eder.
curl -X GET http://localhost:3000/api/health
{ "status": "ok", "timestamp": "2024-01-15T10:30:00.000Z", "uptime": 3600, "environment": "development", "services": { "database": "ok", "redis": "ok" } }
📱 Bildirimler (Notifications)
GET /api/notifications?contact_id=UUID
Bir kullanıcının tüm bildirimlerini getirir.
Parametre Tip Zorunlu Açıklama
contact_id UUID Evet Kullanıcının contact ID'si
type String Hayır Bildirim türü (general, survey, announcement, vb.)
is_read Boolean Hayır Okunma durumu (true/false)
priority String Hayır Öncelik (low, normal, high, urgent)
curl -X GET "http://localhost:3000/api/notifications?contact_id=UUID"
POST /api/notifications/send
Tek bir kullanıcıya bildirim gönderir.
Parametre Tip Zorunlu Açıklama
contactId UUID Evet Alıcının contact ID'si
title String Evet Bildirim başlığı (1-200 karakter)
body String Evet Bildirim içeriği (1-1000 karakter)
type String Hayır Bildirim türü (varsayılan: general)
priority String Hayır Öncelik (varsayılan: normal)
data Object Hayır Ek veri
sendPush Boolean Hayır Push notification gönder (varsayılan: true)
curl -X POST http://localhost:3000/api/notifications/send \ -H "Content-Type: application/json" \ -d '{ "contactId": "UUID", "title": "Yeni Bildirim", "body": "Bu bir test bildirimidir", "type": "general", "priority": "normal", "data": { "action": "test" }, "sendPush": true }'
POST /api/notifications/bulk
Birden fazla kullanıcıya toplu bildirim gönderir.
Parametre Tip Zorunlu Açıklama
contactIds Array[UUID] Evet Alıcı contact ID'leri (1-1000 arası)
title String Evet Bildirim başlığı
body String Evet Bildirim içeriği
curl -X POST http://localhost:3000/api/notifications/bulk \ -H "Content-Type: application/json" \ -d '{ "contactIds": ["UUID1", "UUID2", "UUID3"], "title": "Toplu Bildirim", "body": "Bu bir toplu bildirimdir", "type": "announcement", "priority": "high" }'
GET /api/notifications/summary/:contact_id
Kullanıcının bildirim özetini getirir.
curl -X GET "http://localhost:3000/api/notifications/summary/UUID"
PUT /api/notifications/:id/read
Bildirimi okunmuş/okunmamış olarak işaretler.
Parametre Tip Zorunlu Açıklama
is_read Boolean Evet Okunma durumu (true/false)
curl -X PUT http://localhost:3000/api/notifications/UUID/read \ -H "Content-Type: application/json" \ -d '{ "is_read": true }'
PUT /api/notifications/mark-all-read/:contact_id
Kullanıcının tüm bildirimlerini okunmuş olarak işaretler.
curl -X PUT http://localhost:3000/api/notifications/mark-all-read/UUID
DELETE /api/notifications/:id
Bildirimi siler.
curl -X DELETE http://localhost:3000/api/notifications/UUID
GET /api/notifications/history/:contactId
Kullanıcının bildirim geçmişini getirir.
Parametre Tip Zorunlu Açıklama
limit Number Hayır Maksimum kayıt sayısı (varsayılan: 20)
curl -X GET "http://localhost:3000/api/notifications/history/UUID?limit=20"
📊 Anketler (Surveys)
GET /api/notifications/surveys
Aktif anketleri listeler.
Parametre Tip Zorunlu Açıklama
contact_id UUID Hayır Kullanıcının katılabileceği anketleri filtreler
is_active Boolean Hayır Aktif anketleri filtreler
curl -X GET "http://localhost:3000/api/notifications/surveys?contact_id=UUID"
POST /api/notifications/surveys
Yeni anket oluşturur.
curl -X POST http://localhost:3000/api/notifications/surveys \ -H "Content-Type: application/json" \ -d '{ "title": "Müşteri Memnuniyet Anketi", "description": "Hizmetimizi değerlendirin", "questions": [ { "question": "Hizmetimizden memnun musunuz?", "type": "yes_no", "required": true }, { "question": "Puanınız nedir?", "type": "rating", "required": true }, { "question": "Hangi özellikleri kullanıyorsunuz?", "type": "multiple_choice", "options": ["Mobil", "Web", "Telefon"], "required": false } ], "target_audience": "all", "starts_at": "2024-01-15T00:00:00Z", "ends_at": "2024-01-30T23:59:59Z" }'
POST /api/notifications/surveys/{id}/respond
Anket cevabı gönderir.
curl -X POST http://localhost:3000/api/notifications/surveys/UUID/respond \ -H "Content-Type: application/json" \ -d '{ "contact_id": "UUID", "responses": { "0": true, "1": 4, "2": ["Mobil", "Web"] } }'
GET /api/notifications/surveys/{id}/responses
Anket cevaplarını getirir.
curl -X GET "http://localhost:3000/api/notifications/surveys/UUID/responses"
📢 Duyurular (Announcements)
GET /api/notifications/announcements
Yayınlanmış duyuruları listeler.
curl -X GET "http://localhost:3000/api/notifications/announcements"
POST /api/notifications/announcements
Yeni duyuru oluşturur.
curl -X POST http://localhost:3000/api/notifications/announcements \ -H "Content-Type: application/json" \ -d '{ "title": "Sistem Bakım Duyurusu", "content": "Sistem bakımı nedeniyle hizmet kesintisi yaşanacaktır.", "category": "maintenance", "target_audience": "all", "published_at": "2024-01-15T10:00:00Z", "expires_at": "2024-01-16T10:00:00Z" }'
👥 Kişiler (Contacts)
GET /api/contacts
Contact listesini getirir.
Parametre Tip Zorunlu Açıklama
account_id UUID Hayır Account ID ile filtrele
search String Hayır İsim, soyisim veya email ile ara
page Number Hayır Sayfa numarası (varsayılan: 1)
limit Number Hayır Sayfa başına kayıt (varsayılan: 20)
curl -X GET "http://localhost:3000/api/contacts?account_id=UUID&search=test&page=1&limit=20"
GET /api/contacts/:contact_id
Belirli bir contact'ın detaylarını getirir.
curl -X GET "http://localhost:3000/api/contacts/UUID"
POST /api/contacts/tokens
Contact için push token kaydeder.
Parametre Tip Zorunlu Açıklama
contact_id UUID Evet Contact ID
token String Evet Push token (ExponentPushToken[...])
platform String Evet Platform (ios, android, web)
curl -X POST http://localhost:3000/api/contacts/tokens \ -H "Content-Type: application/json" \ -d '{ "contact_id": "UUID", "token": "ExponentPushToken[xxxxxxxxxxxxxxxxxxxxxx]", "platform": "ios" }'
GET /api/contacts/tokens/:contact_id
Contact'ın push tokenlarını getirir.
Parametre Tip Zorunlu Açıklama
platform String Hayır Platform filtresi (ios, android, web)
curl -X GET "http://localhost:3000/api/contacts/tokens/UUID?platform=ios"
DELETE /api/contacts/tokens
Contact'ın push tokenlarını siler.
Parametre Tip Zorunlu Açıklama
contact_id UUID Evet Contact ID
platform String Hayır Belirli platform tokenlarını sil
curl -X DELETE http://localhost:3000/api/contacts/tokens \ -H "Content-Type: application/json" \ -d '{ "contact_id": "UUID", "platform": "ios" }'
🚗 Transferler (Transfers)
GET /api/transfers
Transfer listesini getirir.
Parametre Tip Zorunlu Açıklama
contact_id UUID Hayır Belirli contact'ın transferleri
status String Hayır Durum filtresi (pending, approved, rejected, vb.)
account_id UUID Hayır Account ID ile filtrele
page Number Hayır Sayfa numarası (varsayılan: 1)
limit Number Hayır Sayfa başına kayıt (varsayılan: 20)
curl -X GET "http://localhost:3000/api/transfers?contact_id=UUID&status=pending&page=1&limit=20"
GET /api/transfers/:transfer_id
Belirli bir transfer'ın detaylarını getirir.
curl -X GET "http://localhost:3000/api/transfers/UUID"
POST /api/transfers
Yeni transfer talebi oluşturur.
Parametre Tip Zorunlu Açıklama
contact_id UUID Evet Talep eden contact ID
account_id UUID Evet Account ID
pickup_location String Evet Alınacak konum
destination String Evet Hedef konum
request_date Date Hayır Transfer tarihi (YYYY-MM-DD)
request_time Time Hayır Transfer saati (HH:MM)
priority String Hayır Öncelik (normal, high, urgent)
total_passenger_count Number Hayır Toplam yolcu sayısı (varsayılan: 1)
is_airport_transfer Boolean Hayır Havalimanı transferi mi?
flight_code String Hayır Uçuş kodu
special_requirements String Hayır Özel gereksinimler
curl -X POST http://localhost:3000/api/transfers \ -H "Content-Type: application/json" \ -d '{ "contact_id": "UUID", "account_id": "UUID", "pickup_location": "Atatürk Havalimanı", "destination": "Taksim Meydanı", "request_date": "2024-01-20", "request_time": "10:00:00", "priority": "normal", "total_passenger_count": 2, "is_airport_transfer": true, "flight_code": "TK123", "special_requirements": "Tekerlekli sandalye erişimi" }'
PUT /api/transfers/:transfer_id/status
Transfer durumunu günceller.
Parametre Tip Zorunlu Açıklama
new_status String Evet Yeni durum (pending, approved, rejected, in_progress, completed, cancelled)
reason String Hayır Durum değişikliği sebebi
curl -X PUT http://localhost:3000/api/transfers/UUID/status \ -H "Content-Type: application/json" \ -d '{ "new_status": "approved", "reason": "Transfer onaylandı" }'
GET /api/transfers/:transfer_id/notifications
Transfer ile ilgili bildirimleri getirir.
curl -X GET "http://localhost:3000/api/transfers/UUID/notifications"

👨‍💼 Admin Management

Admin kullanıcıları ve bildirimleri yönetimi

POST /api/admin/tokens
Admin kullanıcısının push token'ını kaydeder veya günceller.
Parametre Tip Zorunlu Açıklama
user_id UUID Evet Admin user ID
token String Evet Push token (ExponentPushToken[...])
platform String Evet Platform (ios, android, web, expo)
device_name String Hayır Cihaz adı
app_version String Hayır Uygulama versiyonu
curl -X POST http://localhost:3000/api/admin/tokens \ -H "Content-Type: application/json" \ -d '{ "user_id": "admin-user-uuid", "token": "ExponentPushToken[...]", "platform": "ios", "device_name": "iPhone 15", "app_version": "1.0.0" }'
GET /api/admin/tokens/:user_id
Admin kullanıcısının push token'larını getirir.
Parametre Tip Zorunlu Açıklama
platform String Hayır Platform filtresi (ios, android, web, expo)
curl -X GET "http://localhost:3000/api/admin/tokens/admin-user-uuid?platform=ios"
DELETE /api/admin/tokens
Admin kullanıcısının push token'ını siler.
Parametre Tip Zorunlu Açıklama
user_id UUID Evet Admin user ID
platform String Hayır Platform filtresi
curl -X DELETE http://localhost:3000/api/admin/tokens \ -H "Content-Type: application/json" \ -d '{ "user_id": "admin-user-uuid", "platform": "ios" }'
POST /api/admin/notifications/send
Admin kullanıcısına bildirim gönderir.
Parametre Tip Zorunlu Açıklama
user_id UUID Evet Admin user ID
title String Evet Bildirim başlığı
body String Evet Bildirim içeriği
type String Hayır Bildirim türü (general, admin_alert, transfer_update, announcement, reminder, alert)
priority String Hayır Öncelik (low, normal, high, urgent)
data Object Hayır Ek veri
sendPush Boolean Hayır Push notification gönderilsin mi (varsayılan: true)
curl -X POST http://localhost:3000/api/admin/notifications/send \ -H "Content-Type: application/json" \ -d '{ "user_id": "admin-user-uuid", "title": "Admin Test", "body": "Bu bir admin test bildirimidir", "type": "admin_alert", "priority": "high", "data": {"source": "admin_panel"} }'
POST /api/admin/notifications/bulk
Birden fazla admin kullanıcısına toplu bildirim gönderir.
Parametre Tip Zorunlu Açıklama
user_ids Array Evet Admin user ID'leri listesi
title String Evet Bildirim başlığı
body String Evet Bildirim içeriği
type String Hayır Bildirim türü
priority String Hayır Öncelik
data Object Hayır Ek veri
sendPush Boolean Hayır Push notification gönderilsin mi
curl -X POST http://localhost:3000/api/admin/notifications/bulk \ -H "Content-Type: application/json" \ -d '{ "user_ids": ["admin-user-1", "admin-user-2"], "title": "Toplu Admin Bildirimi", "body": "Bu bir toplu admin bildirimidir", "type": "announcement", "priority": "normal" }'
GET /api/admin/notifications/history/:user_id
Admin kullanıcısının bildirim geçmişini getirir.
Parametre Tip Zorunlu Açıklama
page Number Hayır Sayfa numarası (varsayılan: 1)
limit Number Hayır Sayfa başına kayıt (varsayılan: 20, max: 100)
curl -X GET "http://localhost:3000/api/admin/notifications/history/admin-user-uuid?page=1&limit=10"
GET /api/admin/users
Admin kullanıcılarının listesini getirir.
Parametre Tip Zorunlu Açıklama
page Number Hayır Sayfa numarası (varsayılan: 1)
limit Number Hayır Sayfa başına kayıt (varsayılan: 20, max: 100)
search String Hayır Email ile arama
curl -X GET "http://localhost:3000/api/admin/users?page=1&limit=10&search=admin@example.com"