MaxiFilo REST API
Filo yönetimi, servis talepleri ve evrak işlemleri için RESTful API
https://uat-api.maxifilo.com.tr/api
API Açıklaması
MaxiFilo REST API, araç filosu yönetimi, servis talep takibi, evrak ve fatura işlemlerini programatik olarak gerçekleştirmenizi sağlar. Token tabanlı kimlik doğrulama kullanır.
REST Mimarisi
- HTTP metodları: GET (okuma), POST (oluşturma/güncelleme)
- JSON request/response formatı
- Bearer token ile yetkilendirme
- RESTful URL yapısı:
/v1/kaynak/alt_kaynak
JSON Response Formatı
Başarılı yanıtlar data objesi içerir. Hata durumunda error veya message alanı döner. Sayfalama için meta.pagination kullanılır.
Authentication
API erişimi için önce POST /v1/token ile access token alın. Sonraki tüm isteklerde Authorization: Bearer {access_token} header'ı kullanın.
/v1/token
Auth: Gerekmez
Kullanıcı adı ve şifre ile access token alır.
{
"kullanici_adi": "test",
"sifre": "Test_123123"
}
{
"data": {
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGc...",
"refresh_token": "eyJ0eXAiOiJKV1QiLCJhbGc...",
"expires_in": 28800,
"token_type": "Bearer",
"cari_id": 123,
"kullanici_id": 456
}
}
JWT payload: cari_id, kullanici_id, type (access/refresh), exp. Action log kayıtları kullanici_id'yi token'dan alır — request body'den değil.
/v1/token/refresh
Auth: Gerekmez
Refresh token ile yeni access token alır.
{
"refresh_token": "{{refresh_token}}"
}
Authorization: Bearer {access_token}
Ortak Endpoint
Kimlik doğrulaması gerektirmeyen ortak servisler.
/v1/health
Sunucu sağlık kontrolü. API'nin ayakta olduğunu doğrulamak için kullanılır. Monitoring ve load balancer sağlık kontrollerinde kullanılabilir.
Yok Bearer token gerekmez.
200 OK — Sunucu çalışıyor
Tanımlar
Sistemdeki referans verilerini (dropdown, filtre vb.) almak için kullanılan endpoint'ler. Tüm tanım endpoint'leri Bearer Token gerektirir ve aynı response formatını kullanır.
/v1/tanimlar/talep_turleri
Servis talebinin türünü belirten tanımlar (Bakım, Hasar, Arıza vb.). SERVIS_BOLUM tablosundan beslenir. Dosya arama filtresinde talep_turu_id olarak kullanılır.
Bearer Token Zorunlu
{
"data": [
{
"id": "BAKIM",
"name": "Bakım"
},
{
"id": "HASAR",
"name": "Hasar"
},
{
"id": "ARIZA",
"name": "Arıza"
}
]
}401 Unauthorized — Token eksik veya geçersiz
/v1/tanimlar/surecler
Talep süreç durumları (Araç Bekliyor, Onayda, vb.). SUREC tablosundan beslenir. Dosya aramada surec_id filtresi olarak kullanılır.
Bearer Token Zorunlu
{
"data": [
{
"id": 1,
"name": "Araç Bekliyor"
},
{
"id": 2,
"name": "Onayda"
}
]
}401 Unauthorized
/v1/tanimlar/servis_bolumleri
Servis bölümleri listesi. Talep türlerinden farklı olarak servis içi organizasyonel sınıflandırma için kullanılır.
Bearer Token Zorunlu
401 Unauthorized
/v1/tanimlar/servisler
Servis (cari) listesi. CARI tablosundan CARI_TURU = ALIM, DURUM = 1. Yanıt: id, name, servis_vkn (talep create'te kullanılır), il_id, il, ilce_id, ilce, adres, tel, ceptel, mail.
Bearer Token Zorunlu
401 Unauthorized
/v1/tanimlar/yakit_turleri
Araç yakıt türleri (Benzin, Dizel, LPG, Elektrik vb.). Yanıt: id, name, sort_code. Araç create/update eşleştirmesi sort_code üzerinden yapılır.
Bearer Token Zorunlu
401 Unauthorized
/v1/tanimlar/vites_turleri
Vites türleri (Manuel, Otomatik, Yarı Otomatik). VITES tablosundan. Dosya detayında araç bilgisi olarak kullanılır.
Bearer Token Zorunlu
401 Unauthorized
/v1/tanimlar/hizmet_turleri
Hizmet türleri listesi. HIZMET tablosundan. Servis hizmet sınıflandırması için kullanılır.
Bearer Token Zorunlu
401 Unauthorized
/v1/tanimlar/evrak_turleri
Evrak türleri (Ekspertiz Raporu, Fatura, vb.). Evraklar ve fotoğraflar endpoint'lerindeki evrak_tipi_id ile eşleştirilir.
Bearer Token Zorunlu
401 Unauthorized
/v1/tanimlar/resim_turleri
Fotoğraf/resim türleri kategorileri. EVRAK tablosundan (EVRAK_BOLUM_ID=1). Fotoğraflar endpoint'inde sınıflandırma için kullanılır.
Bearer Token Zorunlu
401 Unauthorized
/v1/tanimlar/markalar
Araç marka listesi. MARKA tablosundan.
/v1/tanimlar/modeller?marka_id=1
Markaya göre model listesi. marka_id query parametresi zorunlu. Yanıt: id, name, marka_id, tsrb_kodu (araç create/update'te aynen gönderilir).
/v1/tanimlar/segmentler
Araç segment listesi.
/v1/tanimlar/model_yillari
Model yılı listesi. Yanıt: id, name, model_yili
/v1/tanimlar/katalog_iscilikler
Web popup_katalog_iscilik.php ile aynı liste. Token cari_id + genel kayıtlar (CARI_ID null/0/-1).
Opsiyonel: q veya arama (kod/ad arama). Yanıt: id, kod, ad, grup, fiyat
Dosya Endpointleri
Servis dosyası arama, detay, oluşturma, güncelleme, evrak/fotoğraf, talep notu, ekspertiz, süreç ve fatura işlemleri. Tüm endpoint'ler Bearer Token gerektirir. Token'daki cari_id ile filo kapsamı belirlenir. Okuma (listeleme) işlemleri /v1/dosya/... altında; yazma ve iş akışı endpoint'leri /v1/talep/... path'i ile aynı controller'lara yönlenir.
| Alan | Tip | Açıklama |
|---|---|---|
| servis_bolum | string | Zorunlu — ARIZA, BAKIM, CAM, HASAR, LASTIK, RUCU, YOLYARDIM |
| servis_vkn | string | Zorunlu — Servis cari TCK/VKN. CARI.TCK ile aranır; bulunamazsa Servis bulunamadı. |
| servis_id | — | Gönderilmez — yanıtta döner |
| plaka | string | Zorunlu — Min 4 karakter. Token cari_id kapsamında ARAC tablosundan marka/model/yıl ve araç bilgileri otomatik alınır; araç yoksa 422 — Araç bulunamadı. |
| talep | string | Zorunlu — Şikayet / talep açıklaması |
| demand_id | string | Zorunlu — Ziraat FYS demand_id → SYSTEM_SHARED_TALEP_ID |
| demand_code | string | Zorunlu — Ziraat FYS demand_code → SYSTEM_SHARED_CODE |
| maintenance_quote_id | string | Zorunlu — Ziraat FYS maintenance_quote_id → MAINTENANCE_QUOTE_ID |
| quote_id / quota_id | — | Gönderilmez — oluşturulan talep id quote_id'dir |
| km | string | Opsiyonel — JSON'da string gönderin (örn. "194452.85"); ondalık kısım atılır, tam sayı km olarak kaydedilir |
| yakit_turu / vites_turu / sasi_no / motor_no | mixed | Gönderilmez — plakadan ARAC kaydından doldurulur |
| surucu_ad / surucu_soyad / surucu_tel / surucu_mail | string | Opsiyonel |
| tahmini_teslim_tarih / talep_edilen_teslim_tarih | date | YYYY-MM-DD — bugünden önce olamaz (oluşturma) |
| tahmini_teslim_saat / talep_edilen_teslim_saat | string | Opsiyonel — örn. 14:00 |
| cekici_talebi / arac_serviste / ikame_talebi | int/bool | 0 veya 1 (ikame_var da kabul edilir) |
| bakim_periyot | number | Opsiyonel — BAKIM taleplerinde; null geçilebilir |
| fatura_cari_id / sube_id | int | Opsiyonel — fatura_cari_id yoksa token cari_id kullanılır |
| iletisim_ad / iletisim_soyad / iletisim_tel / iletisim_il_id / iletisim_ilce_id / iletisim_adres | mixed | Opsiyonel — iletişim bilgileri |
| randevu_id | int | Opsiyonel — randevudan dönüştürme |
| Alan | Tip | Açıklama |
|---|---|---|
| sigorta_tipi_id | int | 1 veya 2 için ek validasyon |
| kaza_ihbar_turu_id / hasar_sekli_id | int | Zorunlu (HASAR) |
| hasar_tarih / hasar_saat | date / string | Zorunlu (HASAR) |
| hasar_il_id / hasar_ilce_id | int | Zorunlu (HASAR) |
| hasar_muallak | number / string | Zorunlu (HASAR) — 45000, 45.000, 45000 TL |
| ehliyet_yeterli | int | Zorunlu (HASAR) — 1 = evet |
| sigorta_sekli / sigorta_dosya_no / sigorta_firma_id | mixed | sigorta_tipi_id = 2 (Trafik) için zorunlu |
| police_no / police_bas_tarih / police_bit_tarih | mixed | Trafik sigortası için zorunlu |
| sigortali_tck / sigortali_ad / sigortali_soyad / sigortali_tel | string | Trafik sigortası için zorunlu |
| eksper / eksper_tel / eksper_mail | string | Opsiyonel |
| kusur_orani / rucu / rucu_oran / rucu_aciklama | mixed | Opsiyonel |
/v1/dosya/ara
Servis taleplerini filtreleyerek arar. Token'daki cari_id ile yetkili filo kapsamındaki talepler döner. Tarih filtreleri çift (başlangıç + bitiş) olarak uygulanır.
Bearer Token Zorunlu
| Parametre | Tip | Açıklama |
|---|---|---|
| talep_tarihi_baslangic | date | Talep tarihi başlangıç (YYYY-MM-DD) |
| talep_tarihi_bitis | date | Talep tarihi bitiş |
| teslim_tarihi_baslangic | date | Teslim edildi tarihi başlangıç |
| teslim_tarihi_bitis | date | Teslim edildi tarihi bitiş |
| tahmini_teslim_tarihi_baslangic | date | Tahmini teslim tarihi başlangıç |
| tahmini_teslim_tarihi_bitis | date | Tahmini teslim tarihi bitiş |
| arac_gelis_tarihi_baslangic | date | Araç servise geliş tarihi başlangıç |
| arac_gelis_tarihi_bitis | date | Araç servise geliş tarihi bitiş |
| dosya_no | string | Dosya numarası (LIKE arama) |
| plaka | string | Araç plakası (LIKE arama) |
| surec_id | int | Süreç ID (tanimlar/surecler'den) |
| servis_id | int | Servis (cari) ID |
| talep_turu_id | string | Talep türü (BAKIM, HASAR, ARIZA vb.) |
| page | int | Sayfa no (default: 1) |
| page_size | int | Sayfa boyutu (default: 20, max: 100) |
{
"data": [
{
"id": 269,
"dosya_no": "123123123",
"arac": {
"plaka": "41ZN123",
"marka": "AUDI",
"model": "A1 1.2 TFSI",
"km": 45000,
"talep_tarihi": "2025-01-15",
"tahmini_teslim_tarihi": "2025-01-25"
},
"servis": {
"servis_id": 10,
"servis_adi": "RAK Otomotiv"
},
"surec_id": 3,
"surec_adi": "Araç Bekliyor",
"talep_turu_id": "ARIZA"
}
],
"meta": {
"pagination": {
"page": 1,
"page_size": 20,
"total_count": 45,
"total_pages": 3
}
}
}401 Unauthorized — 403 Forbidden (Geçerli filo kimliği yok) — 400 Bad Request
/v1/dosya/detay/{id}
Tek bir servis talebinin tüm detayını getirir. Araç bilgileri, servis, sürücü, şikayetler, yedek parçalar, işçilikler, talep notları dahil.
{id} — Dosya ID (numara) veya dosya_no (string)
Bearer Token Zorunlu
id, dosya_no, talep_tarihi, arac_gelis_tarihi, tahmini_teslim_tarihi, teslim_tarihi, arac (plaka, marka, model, km, sasi_no, motor_no, yakit_turu, vites_turu), servis, talep_tipi, talep_sureci, surucu, sikayet_talep, cekici_talebi, ikame_var, yedek_parcalar (parca_kodu, parca_adi, adet, fiyat, iskonto, tedarikci_adi vb.), iscilikler, talep_notlari (id, system_shared_id, talep_notu, tarih, ekleyen)
401 Unauthorized — 403 Forbidden — 404 Not Found — 422 Validation Error (geçersiz id)
/v1/dosya/evraklar/{id}
Talep numarasına ait evrakları (PDF, resim vb.) base64 formatında döner. EVRAK_BOLUM_ID ≠ 1 olanlar (ekspertiz raporu, fatura örneği vb. belgeler). Sayfalama: page, page_size (default 50, max 100).
{id} — Talep ID veya dosya_no
evrak_adi, evrak_tipi_id, evrak_tipi_adi, uzanti, base64
İkili veri metin olarak taşınır. Decode ile orijinal dosyaya dönüştürülebilir:
// Tarayıcı (JavaScript) var binary = atob(base64String); // Node.js var buffer = Buffer.from(base64String, 'base64'); // Python import base64 binary = base64.b64decode(base64_string)
401 Unauthorized — 404 Not Found — 422 Validation Error
/v1/dosya/fotograflar/{id}
Talep numarasına ait fotoğrafları base64 formatında döner. EVRAK_BOLUM_ID=1 (resim türü). Evraklar endpoint'i ile aynı yapı. Sayfalama desteklenir.
{id} — Talep ID veya dosya_no
evrak_adi, evrak_tipi_id, evrak_tipi_adi, uzanti, base64
401 Unauthorized — 404 Not Found — 422 Validation Error
/v1/dosya/faturalar/{id}
Talep numarasına ait faturaları ve her faturaya bağlı evrakları (base64) döner. CARI_HAREKET tablosundan finans kalemleri 1,2 (fatura vb.). Sayfalama: page, page_size (default 20, max 100).
{id} — Talep ID veya dosya_no
{
"data": [
{
"id": 1001,
"kod": "CH001",
"fatura_no": "FTR2025001",
"fatura_tarih": "2025-01-20",
"tutar": 5250.50,
"kdv_tutar": 945.09,
"evraklar": [
{
"evrak_adi": "fatura.pdf",
"base64": "JVBERi0xLjQK..."
}
]
}
]
}401 Unauthorized — 404 Not Found — 422 Validation Error
/v1/talep/{id}
Token cari kapsamındaki tek dosyanın özet detayını döner. Tam detay için GET /v1/dosya/detay/{id} kullanın.
Yanıt: id, kod, dosya_no, surec_id, arac, servis, servis_bolum, surucu, talep, teslim tarihleri, ikame_talebi, cekici_talebi, arac_serviste
/v1/talep
Yeni servis talebi oluşturur. plaka ile token cari_id kapsamında ARAC kaydı aranır; bulunamazsa talep oluşturulmaz. servis_vkn zorunludur — ilgili cari aranır (yoksa Servis bulunamadı). bakim_periyot opsiyonel / null geçilebilir. Web talepKaydet ile aynı: açık plaka kontrolü, KM geçmişi, audit log, dosya sorumlusu atama, ikame talebi (ikame_talebi=1) ve randevu güncelleme dahil. E-posta gönderilmez.
HTTP 201 — oluşturulan talep detayı döner.
{
"servis_bolum": "BAKIM",
"servis_vkn": "0000000000",
"plaka": "34ABC123",
"talep": "Motor sesi geliyor.",
"km": "194452.85",
"tahmini_teslim_tarih": "2026-07-10",
"ikame_talebi": 0
}/v1/talep/{id}
Mevcut talebi günceller. kod alanı zorunludur (detay yanıtındaki kod değeri). servis_vkn gönderilirse ilgili cari aranır (yoksa Servis bulunamadı); gönderilmezse mevcut servis korunur. Plaka değişirse araç bilgileri yine ARAC tablosundan alınır. Teslim edilmiş talepler (surec_id >= 10) güncellenemez.
{
"kod": "abc123...",
"servis_bolum": "BAKIM",
"servis_vkn": "0000000000",
"plaka": "34ABC123",
"talep": "Güncellenmiş açıklama."
}/v1/talep/{id}/evraklar
POST — Yeni evrak yükler. Payload'daki shared_system_id TALEP_RESIM.SYSTEM_SHARED_ID olarak kaydedilir. Aynı shared_system_id bu talepte varsa dosya içeri alınmaz (durum: zaten_mevcut). Yeni kayıt için HTTP 201; yalnızca mevcut kayıtlar varsa HTTP 200.
DELETE — Gönderilen ID'leri siler (DB + disk). Body: evrak_ids dizisi.
| Alan | Tip | Açıklama |
|---|---|---|
| dosyalar | array | Zorunlu — en az bir dosya |
| dosyalar[].shared_system_id | string | Zorunlu — karşı sistem belge ID. Aynı ID tekrar gelirse kaydedilmez |
| dosyalar[].evrak_tipi_id | int | Zorunlu — evrak türü ID |
| dosyalar[].dosya_adi | string | Zorunlu — uzantı içermeli (pdf, jpg vb.) |
| dosyalar[].base64 | string | Zorunlu — düz base64 veya data:...;base64,... |
{
"dosyalar": [
{
"shared_system_id": "15",
"evrak_tipi_id": 11,
"dosya_adi": "ruhsat.pdf",
"base64": "JVBERi0xLj..."
}
]
}Yanıt: durum, mesaj, islenen_dosyalar[] (shared_system_id, evrak_tipi_id, dosya_adi, uzanti, durum: kabul_edildi / zaten_mevcut / reddedildi)
{
"durum": "basarili",
"mesaj": "Payload başarıyla alındı ve işleniyor.",
"islenen_dosyalar": [
{
"shared_system_id": "15",
"evrak_tipi_id": 11,
"dosya_adi": "ruhsat.pdf",
"uzanti": "pdf",
"durum": "kabul_edildi"
}
]
}DELETE body örneği:
{
"evrak_ids": [692, 693]
}/v1/talep/{id}/fotograflar
POST — Yeni fotoğraf yükler. Evrak ile aynı: shared_system_id zorunlu, aynı ID tekrar gelirse içeri alınmaz. TALEP.RESIM_VAR = 1 güncellenir. Yeni kayıt için HTTP 201.
DELETE — Gönderilen ID'leri siler (DB + disk). Body: resim_ids dizisi.
| Alan | Tip | Açıklama |
|---|---|---|
| dosyalar | array | Zorunlu |
| dosyalar[].shared_system_id | string | Zorunlu — karşı sistem belge ID. Aynı ID tekrar gelirse kaydedilmez |
| dosyalar[].resim_tipi_id | int | Zorunlu — /v1/tanimlar/resim_turleri |
| dosyalar[].dosya_adi | string | Zorunlu — jpg, png, webp vb. |
| dosyalar[].base64 | string | Zorunlu — düz base64 |
{
"dosyalar": [
{
"shared_system_id": "15",
"resim_tipi_id": 2,
"dosya_adi": "on_taraf.png",
"base64": "iVBORw0KGgo..."
}
]
}Yanıt evrak ile aynı yapı: durum, mesaj, islenen_dosyalar[] (shared_system_id, resim_tipi_id, dosya_adi, uzanti, durum).
DELETE body örneği:
{
"resim_ids": [690, 691]
}/v1/talep/{id}/notlar
GET /v1/talep/{id}/notlar — Talebe ait notları listeler. Her kayıtta Maxi id ve system_shared_id döner. system_shared_id Maxi not ID'sidir.
GET /v1/talep/{id}/notlar/{notId} — Tek not detayı.
POST /v1/talep/{id}/notlar — Yeni not kaydeder. Kayıt sonrası SYSTEM_SHARED_ID Maxi'nin kendi not ID'si olarak yazılır. HTTP 201.
PUT /v1/talep/{id}/notlar/{notId} — Not metnini günceller. system_shared_id boşsa Maxi ID yazılır.
Silme (DELETE) yok.
| Alan | Tip | Açıklama |
|---|---|---|
| talep_notu | string | Zorunlu (POST / PUT) — 2–255 karakter |
POST / PUT body:
{
"talep_notu": "ZFS talep notu"
}Yanıt öğesi: id (Maxi not ID), system_shared_id (Maxi not ID, string), talep_id, talep_notu, tarih, ekleyen
{
"id": 987654,
"system_shared_id": "987654",
"talep_id": 439,
"talep_notu": "ZFS talep notu",
"tarih": "2026-08-14 14:18",
"ekleyen": "Sistem"
}/v1/talep/{id}/ekspertiz
GET — Parça (PARCA) ve işçilik (ISCILIK) satırları + özet tutarlar. Her satırda system_shared_id, onay_durumu, durum döner.
PUT — Onay güncelleme. Gönderilen satırlarda onay_durumu ve system_shared_id güncellenir (DURUM=1). onay_durumu=0 (onaysız) veya payload’da olmayan satırlar ONAY_DURUMU=3 (red) + DURUM=1 yapılır. Diğer kalem alanları (fiyat, kod vb.) gönderilebilir; şu an işlenmez. POST kaydet ve DELETE kapatılmıştır.
Gelen tüm aktif kalemler onay_durumu=1 ise ve dosyada bekleyen bir ONAY_SURECI (DURUM_ID=4) varsa basamaklar otomatik onaylanır, süreç tamamlanır ve dosya Tamire Başlandı yapılır. Herhangi bir kalem onaylı değilse onay sürecine dokunulmaz.
Zorunlu (her satır): id, system_shared_id, onay_durumu. Opsiyonel: quote_id + diğer kalem alanları.
onay_durumu: 0=Onaysız, 1=Onay tamamlandı, 2=Onay bekliyor, 3=Red.
| Alan | Tip | Açıklama |
|---|---|---|
| quote_id | int | Opsiyonel — path {id} ile aynı olmalı |
| parcalar[].id / iscilikler[].id | int | Zorunlu — mevcut satır ID |
| parcalar[].system_shared_id / iscilikler[].system_shared_id | string | Zorunlu — SYSTEM_SHARED_ID |
| parcalar[].onay_durumu / iscilikler[].onay_durumu | int | Zorunlu — 0 / 1 / 2 / 3 |
parcalar[])| Alan | Tip | Açıklama |
|---|---|---|
| parca_kodu | string | Opsiyonel — şu an işlenmez |
| alt_parca_kodu | string | Opsiyonel |
| parca_adi | string | Opsiyonel |
| marka | string | Opsiyonel |
| adet | number | Opsiyonel |
| orjinal_fiyat | number | Opsiyonel |
| tedarik_fiyati | number | Opsiyonel |
| iskonto / kdv | number | Opsiyonel |
| tedarikci | int | Opsiyonel — 1=Servis, 2=Sigorta, 3=Filo, 4=Maxi |
iscilikler[])| Alan | Tip | Açıklama |
|---|---|---|
| iscilik_kodu | string | Opsiyonel — şu an işlenmez |
| iscilik_adi | string | Opsiyonel |
| adet | number | Opsiyonel |
| servis_fiyat / filo_fiyat | number | Opsiyonel |
| iskonto / kdv | number | Opsiyonel |
| katalog_iscilik_id | int | Opsiyonel |
{
"quote_id": 12345,
"parcalar": [{
"id": 696,
"system_shared_id": "1500",
"parca_kodu": "OEM001",
"alt_parca_kodu": "ALT001-GUN",
"parca_adi": "Kaput",
"marka": "Orijinal",
"adet": 1,
"orjinal_fiyat": 1300,
"tedarik_fiyati": 1100,
"iskonto": 10,
"kdv": 20,
"tedarikci": 1,
"onay_durumu": 1
}],
"iscilikler": [{
"id": 697,
"system_shared_id": "2681",
"iscilik_kodu": "IS001",
"iscilik_adi": "Boya",
"adet": 1,
"servis_fiyat": 450,
"filo_fiyat": 550,
"iskonto": 5,
"kdv": 20,
"katalog_iscilik_id": 1502,
"onay_durumu": 1
}]
}/v1/talep/{id}/surec/{islem}
Manuel süreç ilerletme — web TalepSurec.php ile aynı kurallar. Zorunlu body: kod. surec_alt için ek: surec_alt_id.
islem değerleri:
arac_serviste— KM + tahmini teslim tarihi zorunluyedek_parca_bekliyor,yedek_parca_tamamlandisurec_alt,arac_musteriye_verildi,arac_servise_tekrar_alindi
POST /v1/talep/439/surec/arac_serviste
{ "kod": "..." }/v1/talep/{id}/fatura
Talep fatura işlemleri — web TalepFatura.php ile aynı kurallar. Teslim şartı: surec_id >= 10. Mevcut CARI_HAREKET (HAREKET_ID=1) teslimde oluşmuş olmalıdır.
GET — Fatura bilgisi, cari hareketler, detay satırları ve ekspertiz özet tutarları.
POST — İlk fatura kaydı. Zorunlu body: kod, fatura_no (16 hane), fatura_tarih (YYYY-MM-DD veya DD.MM.YYYY). Opsiyonel: fatura_aciklama. Tutar ve KDV teslimde oluşmuş CARI_HAREKET / ekspertiz özetinden otomatik alınır (web modalındaki readonly alanlar gibi).
PUT — Mevcut faturayı güncelle: kod, fatura_no, fatura_tarih, fatura_aciklama. Kontrol edilmiş fatura düzenlenemez.
POST /v1/talep/{id}/fatura/ekspertizden-yeniden-olustur — CARI_HAREKET sil/yeniden oluştur (PARCA + ISCILIK). Body: kod.
Fatura belgesi (PDF/resim) — web popup_cari_hareket_resim_yukle. Teslim + fatura kaydı sonrası. Disk: img/maxifleet/cari_hareket/{yıl}/{cari_hareket_id}/
- GET /v1/talep/{id}/fatura/belgeler — Belge listesi + base64. Query:
cari_hareket_id(opsiyonel) - POST /v1/talep/{id}/fatura/belgeler — Yükle. Body:
kod,dosyalar[](dosya_adi,base64). jpg/png/pdf vb. - DELETE /v1/talep/{id}/fatura/belgeler — Body:
kod,belge_ids[] - GET /v1/dosya/faturalar/{talepNo} — Dosya bazlı fatura + ekler (base64)
POST /v1/talep/439/fatura
{
"kod": "...",
"fatura_no": "ABC1234567890123",
"fatura_tarih": "2026-06-28",
"fatura_aciklama": ""
}/v1/fatura-kontrol
Fatura kontrol / onay — web onay-islemleri/dosya-fatura ve FaturaKontrol.php. Token cari_id kapsamındaki, henüz kontrol edilmemiş (KONTROL_EDILDI = 0) cari hareket faturaları.
GET /v1/fatura-kontrol — Onay bekleyen liste. Sayfalama: page, page_size (varsayılan 50).
Query filtreleri: islem_no, talep_no, plaka, fatura_no, servis_id, finans_kalemi_id, kayit_tarih_baslangic / kayit_tarih_bitis, fatura_tarih_baslangic / fatura_tarih_bitis (YYYY-MM-DD).
POST /v1/fatura-kontrol/{id}/onayla — Faturayı kontrol edildi işaretle. {id} = CARI_HAREKET.ID (işlem no). Body gerekmez. kullanici_id JWT'den alınır.
GET /v1/fatura-kontrol?page=1&page_size=50&plaka=34MDK4983 POST /v1/fatura-kontrol/273/onayla
Araç Endpointleri
Filo araç listeleme, detay, oluşturma ve güncelleme. Bearer Token zorunludur. cari_id ve ruhsat sahibi token'dan alınır. Marka/model tsrb_kodu ile backend'de eşleştirilir. Tanım listeleri için Tanımlar bölümünü kullanın (segmentler, model_yillari, yakit_turleri, vites_turleri).
| Alan | Tip | Açıklama |
|---|---|---|
| cari_id / cari | int / string | Token'dan gelir, yanıtta döner |
| ruhsat_sahibi_id / ruhsat_sahibi | int / string | Her zaman token cari'si ile aynıdır (gönderilmez) |
| plaka | string | Zorunlu (oluşturma), min 3 karakter |
| tsrb_kodu | string | Zorunlu (oluşturma). /tanimlar/modeller yanıtındaki tsrb_kodu aynen gönderilir |
| marka_id / marka | int / string | Yanıtta döner (TSRB'den hesaplanır) |
| model_id / model | int / string | Yanıtta döner (TSRB'den hesaplanır) |
| segment_id / segment | int / string | Zorunlu (oluşturma). Varsayılan / belirtilmemiş: -3 |
| model_yili | int | Zorunlu (oluşturma) |
| yakit_sort_code / sort_code | string | Zorunlu (oluşturma). Tanımlardaki sort_code ile eşleşir (örn. R, D, H, BL, E, NONE) |
| yakit_id / yakit | int / string | Yanıtta döner (sort_code'dan çözülür) |
| vites_id / vites | int / string | Zorunlu (oluşturma) |
| sasi_no | string | Zorunlu (oluşturma) |
| motor_no | string | Zorunlu (oluşturma) |
| durum | int | Zorunlu (oluşturma): 0 = Pasif, 1 = Aktif |
| son_km | int | Zorunlu (oluşturma), 0 ve üzeri |
| tamamlanma_yuzdesi | float | Otomatik hesaplanır (create/update), yanıtta döner |
/v1/arac
Token cari kapsamındaki araçları listeler.
Query: plaka, durum (0/1), page, page_size
/v1/arac/{id}
Tek araç detayını getirir. Araç token cari kapsamında değilse 404 döner.
/v1/arac
Zorunlu alanlar: plaka, tsrb_kodu, model_yili, motor_no, sasi_no, durum, segment_id, yakit_sort_code, vites_id, son_km. tsrb_kodu = modeller tanımındaki değer (aynen). segment_id varsayılanı -3 (belirtilmemiş). Yakıt eşleştirmesi yakit_sort_code ile yapılır; NONE = belirtilmemiş. Ruhsat sahibi token cari_id'den otomatik doldurulur.
{
"plaka": "34ABC123",
"tsrb_kodu": "0031007",
"model_yili": 2022,
"motor_no": "CAX123456",
"sasi_no": "WVWZZZ1KZAW123456",
"durum": 1,
"segment_id": -3,
"yakit_sort_code": "D",
"vites_id": 1,
"son_km": 45000
}/v1/arac/{id}
Mevcut aracı günceller. Gönderilen alanlar güncellenir; gönderilmeyenler korunur. segment_id: -3 = belirtilmemiş (geçerli).
{
"tsrb_kodu": "0031007",
"son_km": 48000,
"durum": 1,
"segment_id": -3
}Global Response Formatı
{
"success": true,
"message": "İşlem başarılı",
"data": {},
"meta": {
"timestamp": "2025-02-26T12:00:00+00:00",
"pagination": { ... }
}
}
{
"error": {
"code": "UNAUTHORIZED",
"message": "Hata mesajı"
},
"meta": {
"timestamp": "2025-02-26T12:00:00+00:00"
}
}
HTTP Status Kodları
| Kod | Açıklama |
|---|---|
200 | OK - Başarılı |
201 | Created - Oluşturuldu |
400 | Bad Request - Geçersiz istek |
401 | Unauthorized - Yetkisiz (token eksik/geçersiz) |
404 | Not Found - Kaynak bulunamadı |
422 | Validation Error - Doğrulama hatası |
500 | Internal Server Error - Sunucu hatası |