Tekne Takip API

Çok kullanıcılı tekne izleme ve takip sistemi

Versiyon 1.0.0

Temel URL

https://1t1t.xyz/api/v1

Tüm API istekleri yukarıdaki temel URL'ye yapılmalıdır. Tüm yanıtlar JSON formatındadır.

Kimlik Doğrulama

API, kimlik doğrulama için JWT token kullanır. Token'ı Authorization header'ında gönderin:

Authorization: Bearer jwt_token_buraya
POST /auth/login
Kullanıcı girişi yapın ve JWT token alın

İstek Gövdesi:

{ "email": "kullanici@example.com", "password": "sifreniz" }

Yanıt:

{ "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", "expires_in": 3600, "user": { "user_id": 1, "username": "ahmet_yilmaz", "email": "kullanici@example.com" } }
POST /auth/register
Yeni kullanıcı hesabı oluşturun

İstek Gövdesi:

{ "username": "ahmet_yilmaz", "email": "kullanici@example.com", "password": "guvenli_sifre", "first_name": "Ahmet", "last_name": "Yılmaz", "phone": "+905551234567" }

Kullanıcılar

GET /user/profile
Mevcut kullanıcının profil bilgilerini getir

🔒 Kimlik Doğrulama Gerekli

Bu endpoint Authorization header'ında geçerli JWT token gerektirir.

PUT /user/profile
Kullanıcı profil bilgilerini güncelle

İstek Gövdesi:

{ "first_name": "Ahmet", "last_name": "Yılmaz", "phone": "+905551234567", "language": "tr", "timezone": "Europe/Istanbul", "notification_email": true, "notification_sms": false, "notification_push": true }

Tekneler

GET /boats
Mevcut kullanıcının erişebileceği tekneleri listele

Sorgu Parametreleri:

Parametre Tip Gerekli Açıklama
status string opsiyonel Tekne durumuna göre filtrele: active, inactive
type string opsiyonel Tekne tipine göre filtrele: motor, yelken, balik, yat, jetski
POST /boats
Sisteme yeni tekne ekle

İstek Gövdesi:

{ "boat_name": "Deniz Kaşifi", "imei": "123456789012345", "boat_type": "motor", "length_m": 12.5, "model": "Sunseeker Manhattan 52", "year_built": 2020, "license_number": "TR-12345", "description": "Lüks motor yat" }
GET /boats/{boat_id}
Belirli bir teknenin detaylı bilgilerini getir
GET /boats/{boat_id}/status
Teknenin mevcut durumu ve konumunu getir

Yanıt:

{ "boat_id": 1, "boat_name": "Deniz Kaşifi", "last_update": "2024-01-15T14:30:25.123Z", "location": { "latitude": 41.0082, "longitude": 28.9784, "speed_kmh": 15.6, "heading": 245.8 }, "engine": { "status": "running", "rpm": 2800, "temperature_c": 85 }, "fuel_level_percent": 68, "battery_level_percent": 92, "in_safe_zone": true, "device_status": "online" }

Takip ve GPS Verileri

POST /tracking/gps
IoT cihazından GPS verisi gönder

İstek Gövdesi:

{ "imei": "123456789012345", "timestamp": "2024-01-15T14:30:25.123Z", "latitude": 41.0082, "longitude": 28.9784, "altitude": 5.2, "speed_kmh": 15.6, "heading": 245.8, "satellites": 8, "hdop": 1.2, "signal_strength": -65, "battery_voltage": 12.8 }
POST /tracking/canbus
IoT cihazından CAN Bus verisi gönder

İstek Gövdesi:

{ "imei": "123456789012345", "timestamp": "2024-01-15T14:30:25.123Z", "engine_rpm": 2800, "engine_temp_c": 85, "engine_oil_pressure": 4.2, "fuel_level_percent": 68, "fuel_flow_lh": 12.5, "engine_hours": 1247.3, "coolant_temp_c": 78, "alternator_voltage": 14.2, "battery_voltage": 12.8, "water_temp_c": 18, "depth_m": 15.5 }
GET /boats/{boat_id}/history
Geçmiş GPS takip verilerini getir

Sorgu Parametreleri:

Parametre Tip Gerekli Açıklama
start_date datetime gerekli Başlangıç tarihi (ISO 8601 format)
end_date datetime gerekli Bitiş tarihi (ISO 8601 format)
limit integer opsiyonel Maksimum kayıt sayısı (varsayılan: 1000)

Güvenli Bölgeler

GET /boats/{boat_id}/safe-zones
Bir teknenin tüm güvenli bölgelerini getir
POST /boats/{boat_id}/safe-zones
Yeni güvenli bölge oluştur

İstek Gövdesi (Dairesel Bölge):

{ "zone_name": "Ev Limanı", "zone_type": "marina", "center_lat": 41.0082, "center_lng": 28.9784, "radius_meters": 500, "alert_on_exit": true, "alert_on_enter": false }

İstek Gövdesi (Çokgen Bölge):

{ "zone_name": "Balık Avlama Alanı", "zone_type": "fishing", "coordinates": [ { "lat": 41.0082, "lng": 28.9784 }, { "lat": 41.0092, "lng": 28.9794 }, { "lat": 41.0088, "lng": 28.9804 }, { "lat": 41.0078, "lng": 28.9794 } ], "alert_on_exit": true, "alert_on_enter": false }
DELETE /boats/{boat_id}/safe-zones/{zone_id}
Güvenli bölgeyi sil

Alarmlar

GET /alerts
Kullanıcının tekneleri için alarmları getir

Sorgu Parametreleri:

Parametre Tip Gerekli Açıklama
boat_id integer opsiyonel Belirli tekneye göre filtrele
status string opsiyonel active, resolved
severity string opsiyonel info, warning, critical, emergency
PUT /alerts/{alert_id}/resolve
Alarmı çözüldü olarak işaretle

Tekne Paylaşımı

POST /boats/{boat_id}/share
Tekneyi başka kullanıcıyla paylaş

İstek Gövdesi:

{ "target_email": "arkadas@example.com", "permission_level": "viewer", "expires_days": 30, "can_view_location": true, "can_view_history": true, "can_receive_alerts": true }
POST /invite/accept/{invitation_token}
Tekne paylaşım davetini kabul et
GET /boats/{boat_id}/permissions
Tekneye erişimi olan kullanıcıları listele

Yetki Seviyeleri

Sistem tekne erişimi için dört seviyeli yetki sistemi destekler:

Seviye Konum Görme Geçmiş Görme Alarm Alma Cihaz Kontrolü Bölge Yönetimi Paylaşım
SAHİP
YÖNETİCİ
GÖRÜNTÜLEYİCİ
MİSAFİR

Hata Yönetimi

API standart HTTP durum kodlarını kullanır ve hata bilgilerini JSON formatında döner:

Yaygın Hata Yanıtları:

  • 200 Başarılı
  • 201 Oluşturuldu
  • 400 Hatalı İstek - Geçersiz parametreler
  • 401 Yetkisiz - Geçersiz veya eksik token
  • 403 Yasaklı - Yetersiz izinler
  • 404 Bulunamadı - Kaynak mevcut değil
  • 429 Çok Fazla İstek - Hız limiti aşıldı
  • 500 Sunucu Hatası

Hata Yanıt Formatı:

{ "error": { "code": 400, "message": "Geçersiz istek parametreleri", "details": "'imei' alanı zorunludur ve 15 haneli olmalıdır" } }