Aiten Entegrasyon API'si — Sefer Yönetimi
Bu referans, ERP, WMS veya kurum içi sistemlerin Aiten üzerinde sefer oluşturması, sefer durumunu izlemesi ve teslimat kanıtlarına erişmesi için sunulan REST API'yi tanımlar.
Taban URL: https://api.aiten.io
Veri biçimi: JSON (Content-Type: application/json)
Sürümleme: Uç noktalar sürüm öneki taşımaz (/api/...). Geriye dönük uyumluluğu bozan değişiklikler bu sayfada duyurulur ve entegrasyon sahiplerine ayrıca bildirilir.
Sürüm notu — 25 Ağustos 2026: Servis anahtarı ile yapılan
POST /api/trips/isteklerindecompany_idalanı zorunlu hale getirilmiştir. Alanın gönderilmediği istekler400ile reddedilir. Entegrasyonunuz bu alanı göndermiyorsa güncelleme yapmanız gerekir.
Hızlı Başlangıç
1. Kimlik bilgisi edinin. Entegrasyon için Aiten ekibinden şirketinize tanımlı bir servis anahtarı (X-WA-Service-Key) talep edin.
2. İlk isteğinizi gönderin. Aşağıdaki örnek, iki duraklı bir test seferi oluşturur:
curl -X POST https://api.aiten.io/api/trips/ \
-H "X-WA-Service-Key: $AITEN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"company_id": "<şirket-uuid>",
"driver_phone": "905551234567",
"driver_first_name": "Test",
"driver_last_name": "Sürücü",
"plate": "34 TEST 01",
"source": "API",
"yukleme_no": "TEST-0001",
"stops": [
{ "order": 1, "stop_type": "PICKUP", "location_name": "Test Depo", "expected_document_count": 1 },
{ "order": 2, "stop_type": "DELIVERY", "location_name": "Test Müşteri", "expected_document_count": 1 }
]
}'
3. Yanıtı doğrulayın. 201 Created ile birlikte bir trip_code (örn. DL-260701-001) dönmesi seferin oluşturulduğunu gösterir.
Önemli: Sefer oluşturma isteği,
driver_phonealanındaki numaraya gerçek bir WhatsApp bildirimi gönderir. Test çalışmalarında gerçek sürücü numarası kullanmayın.
Sefer durumunu izlemek için GET /api/trips/{trip_code}/ uç noktasını kullanın; durum değişikliklerini anlık almak için webhook bildirimleri tanımlanabilir.
Kimlik Doğrulama
API iki kimlik doğrulama yöntemini destekler. Sunucular arası entegrasyonlar için önerilen yöntem servis anahtarıdır.
Servis anahtarı (önerilen)
Her isteğe aşağıdaki üst bilgi eklenir:
X-WA-Service-Key: <servis-anahtarınız>
Servis anahtarı statiktir; oturum açma veya token yenileme gerektirmez. Anahtar, Aiten ekibi tarafından şirketinize özel olarak tanımlanır.
Güvenlik: Servis anahtarı yalnızca sunucu tarafında saklanmalıdır. Tarayıcı veya mobil uygulama gibi istemci tarafı ortamlarda kullanılması güvenlik ihlali oluşturur; bu durumun tespiti halinde anahtar iptal edilerek yenisi düzenlenir.
JWT (kullanıcı hesabı üzerinden)
Kullanıcı bazlı izlenebilirlik gereken senaryolar için entegrasyona özel bir panel hesabı tanımlanır. Oturum akışı:
# 1. Oturum açın; access ve refresh token alın
curl -X POST https://api.aiten.io/api/token/ \
-H "Content-Type: application/json" \
-d '{"email": "entegrasyon@sirketiniz.com", "password": "..."}'
# → { "access": "eyJ...", "refresh": "eyJ..." }
# 2. Sonraki isteklerde access token kullanın
curl https://api.aiten.io/api/trips/ \
-H "Authorization: Bearer eyJ..."
# 3. Access token süresi dolduğunda (60 dakika) yenileyin
curl -X POST https://api.aiten.io/api/token/refresh/ \
-H "Content-Type: application/json" \
-d '{"refresh": "eyJ..."}'
Refresh token 7 gün geçerlidir; süresi dolduğunda /api/token/ ile yeniden oturum açılması gerekir.
Yöntem seçimi
| Senaryo | Önerilen yöntem |
|---|---|
| Sunucular arası entegrasyon (ERP, WMS, zamanlanmış görevler) | Servis anahtarı |
| Kullanıcı adına işlem; işlem sahibinin izlenmesi gereken akışlar | JWT |
Güvenlik garantileri
- Kimlik doğrulama karşılaştırmaları zamanlama saldırılarına dayanıklı (timing-safe) yöntemlerle yapılır. Tanımsız veya boş anahtar hiçbir isteği doğrulamaz.
- Kiracı (tenant) izolasyonu sunucu tarafında uygulanır. Bir hesap, yalnızca kendi şirketine ait sefer, sürücü ve mesaj kayıtlarına erişebilir; başka bir kiracıya ait kaynağa yapılan istekler, kaynağın varlığını açığa çıkarmamak için
404ile yanıtlanır. - Belge anahtarı (
s3_key) alanları sunucu tarafında biçim doğrulamasından geçirilir; izin verilen önek dışındaki değerler reddedilir. - Tüm trafik HTTPS üzerinden taşınır ve HSTS ile korunur.
Hız limitleri
| Uç nokta | Limit |
|---|---|
POST /api/token/ |
IP başına 10 istek/dakika |
POST /api/token/refresh/ |
IP başına 60 istek/dakika |
POST /api/register/, POST /api/contact-requests/ |
IP başına 10 istek/saat |
| Servis anahtarlı entegrasyon uç noktaları | Tanımlı limit yok |
Limit aşımında 429 durum kodu ve Retry-After üst bilgisi döner. Servis anahtarlı uç noktalarda tanımlı limit bulunmamakla birlikte, toplu gönderimlerde saniyede birkaç istek düzeyinde ilerlenmesi önerilir.
Sefer Oluşturma
POST /api/trips/
Content-Type: application/json
İstek gövdesi
{
"company_id": "<şirket-uuid>",
"driver_phone": "905551234567",
"driver_first_name": "Ahmet",
"driver_last_name": "Yılmaz",
"plate": "34 ABC 123",
"trailer_plate": "34 XYZ 456",
"notes": "",
"yukleme_no": "ERP-2026-0001",
"source": "API",
"stops": [
{
"order": 1,
"stop_type": "PICKUP",
"location_name": "Fabrika - Adana",
"location_code": "",
"location_address": "...",
"location_latitude": null,
"location_longitude": null,
"contact_name": "",
"contact_phone": "",
"expected_document_count": 1,
"waybill_numbers": [],
"planned_arrival": null,
"notes": ""
}
]
}
Alan referansı — sefer düzeyi
| Alan | Tip | Zorunlu | Varsayılan | Açıklama |
|---|---|---|---|---|
company_id |
UUID | Servis anahtarıyla zorunlu | — | Seferin açılacağı şirket. Servis anahtarı ile yapılan isteklerde zorunludur; eksikse 400 döner. Panel oturumu ile yapılan isteklerde alan dikkate alınmaz; sefer her zaman oturumun bağlı olduğu şirkete açılır. |
driver_phone |
string (≤20) | ✓ | — | Sürücünün telefon numarası; platformda sürücü kimliği olarak kullanılır. Kayıtlı olmayan numara için sürücü kaydı otomatik oluşturulur. |
driver_first_name |
string (≤150) | — | "" |
Sürücü kaydı ilk kez oluşturuluyorsa veya ad güncelleniyorsa kullanılır. |
driver_last_name |
string (≤150) | — | "" |
Sürücü soyadı. |
plate |
string (≤20) | ✓ | — | Çekici plakası. |
trailer_plate |
string (≤20) | — | "" |
Dorse plakası. |
notes |
string | — | "" |
Sefere ilişkin serbest not. |
yukleme_no |
string (≤100) | — | "" |
Kaynak sisteminizdeki sipariş veya yükleme numarası. Dolu gönderildiğinde mükerrer sefer denetimi devreye girer; bkz. Yeniden Gönderim Güvenliği. |
source |
enum | — | "MANUAL" |
MANUAL, EXCEL veya API. Dış entegrasyonların "API" göndermesi beklenir; panel raporlarında seferler kaynağa göre ayrıştırılır. |
stops |
array | ✓ (en az 1) | — | Durak listesi. order değerleri sefer içinde benzersiz olmalıdır. |
Alan referansı — durak düzeyi
| Alan | Tip | Zorunlu | Açıklama |
|---|---|---|---|
order |
int | ✓ | Durak sırası; 1'den başlar ve sefer içinde benzersizdir. |
stop_type |
enum | ✓ | PICKUP (yükleme), DELIVERY (teslimat) veya BOTH (aynı durakta yükleme ve teslimat). |
location_name |
string | ✓ | Durak adı; panelde ve sürücüye gönderilen mesajlarda görüntülenir. |
location_code |
string | — | Kaynak sisteminizdeki konum kodu. Aiten tarafından işlenmez; veri eşleştirme kolaylığı için saklanır ve yanıtlarda aynen döner. |
location_address |
string | — | Açık adres; sürücüye WhatsApp üzerinden iletilir. |
location_latitude, location_longitude |
float | — | Koordinat bilgisi; harita görünümünde ve mesafe hesaplarında kullanılır. |
contact_name, contact_phone |
string | — | Durak yetkilisinin iletişim bilgisi. |
expected_document_count |
int | — | Durakta beklenen irsaliye sayısı (varsayılan 1). Beklenen sayıya ulaşılmadan durak tamamlanamaz. |
waybill_numbers |
array[string] | — | Önceden biliniyorsa irsaliye numaraları. Bilgi amaçlıdır; doğrulama sürücünün yüklediği belge üzerinden yapılır. |
planned_arrival |
datetime (ISO 8601) | — | Planlanan varış zamanı; hatırlatma ve gecikme hesaplarında referans alınır. |
notes |
string | — | Durağa özel not; sürücüye iletilir. |
Sunucu tarafı işleyiş
Sefer oluşturma isteği sunucuda aşağıdaki sırayla işlenir:
- Şirket belirlenir. Panel oturumunda sefer, oturumun şirketine açılır. Servis anahtarında
company_idalanı esas alınır; alan eksikse istek400ile reddedilir. - Sürücü kaydı çözümlenir.
driver_phoneile eşleşen sürücü bulunur; kayıt yoksa otomatik oluşturulur. Sürücü için ayrı bir ön kayıt adımı gerekmez. - Bakiye denetimi uygulanır. Faturalandırması etkin şirketlerde, sürücünün ödenmemiş bakiyesi bulunması halinde istek
402ile reddedilir ve sefer açılmaz. - Mükerrer denetimi yapılır.
yukleme_nodolu ise, aynı numara ile aktif veya son 3 gün içinde açılmış (iptal edilmişler hariç) bir sefer varsa istek409ile reddedilir. - Aktif sefer kontrolü yapılır. Sürücünün devam eden başka bir seferi varsa istek engellenmez; yanıta bilgilendirme amaçlı bir
warningalanı eklenir. Sürücünün başlatılmamış durumda bekleyen eski seferleri otomatik olarak iptal edilir. - Sefer oluşturulur.
DL-YYMMDD-XXXbiçiminde birtrip_codeüretilir, duraklar kaydedilir ve sürücüye WhatsApp bildirimi gönderilir. Bildirim gönderiminde oluşabilecek bir hata sefer kaydını etkilemez.
Başarılı yanıt — 201 Created
{
"id": "8f3e2c10-4a9b-4e77-9c1a-2b6d5e8f0a11",
"trip_code": "DL-260701-001",
"share_token": "b7a1c9e0-...",
"status": "CREATED",
"last_action": null,
"notes": "",
"yukleme_no": "ERP-2026-0001",
"created_via": "API",
"company": { "id": "...", "name": "Örnek Üretici A.Ş." },
"company_name": "Örnek Üretici A.Ş.",
"driver": { "id": "...", "phone": "905551234567", "name": "Ahmet Yılmaz" },
"driver_name": "Ahmet Yılmaz",
"driver_phone": "905551234567",
"plate": "34 ABC 123",
"trailer_plate": "34 XYZ 456",
"current_latitude": null,
"current_longitude": null,
"last_location_update": null,
"last_eta_update": null,
"created_at": "2026-07-01T09:15:32Z",
"completed_at": null,
"issues": [],
"open_issue_count": 0,
"stops": [
{
"id": "b1a2c3d4-...",
"order": 1,
"stop_type": "PICKUP",
"location_name": "Fabrika - Adana",
"status": "PENDING",
"expected_document_count": 1,
"waybill_numbers": [],
"planned_arrival": null,
"actual_arrival": null,
"actual_departure": null,
"documents": []
},
{
"id": "c2b3d4e5-...",
"order": 2,
"stop_type": "DELIVERY",
"location_name": "Depo - Ankara",
"status": "PENDING",
"expected_document_count": 1,
"waybill_numbers": [],
"planned_arrival": null,
"actual_arrival": null,
"actual_departure": null,
"documents": []
}
]
}
Sürücünün devam eden başka bir seferi varsa yanıta ek olarak şu alan döner:
{ "warning": "Bu sürücünün aktif seferi var: DL-260630-004" }
Hata yanıtları
| Kod | Koşul | Örnek gövde |
|---|---|---|
400 |
Gövde doğrulanamadı; servis anahtarıyla company_id gönderilmedi; s3_key biçimi geçersiz |
{ "driver_phone": ["This field is required."] } |
401 |
Kimlik bilgisi eksik veya geçersiz | — |
402 |
Sürücünün ödenmemiş bakiyesi mevcut (yalnızca faturalandırması etkin şirketlerde) | { "error": "wallet_debt", "message": "...", "debt_amount": "50.00", "driver_phone": "905551234567" } |
403 |
Kimlik doğrulandı ancak kaynak üzerinde yetki yok | — |
404 |
Kayıt bulunamadı veya erişim kapsamı dışında (company_id hatalı ya da şirket pasif dahil) |
{ "error": "Şirket bulunamadı." } |
409 |
Aynı yukleme_no ile mükerrer sefer |
{ "error": "duplicate_yukleme_no", "message": "...", "existing_trip_code": "DL-260701-001", "yukleme_no": "ERP-2026-0001" } |
429 |
Hız limiti aşıldı | — |
Not: Çok yüksek eşzamanlı istek hacminde sefer kodu üretiminde nadiren çakışma yaşanabilir ve istek
500ile sonuçlanabilir. Bu durumda isteğin kısa bir bekleme sonrasında yinelenmesi yeterlidir; bkz. Hata Yönetimi.
Diğer Uç Noktalar
Aşağıdaki uç noktalar aynı taban URL ve kimlik doğrulama yöntemlerini kullanır. Tüm sonuçlar istek sahibinin şirket kapsamı ile sınırlıdır.
Sefer listeleme: GET /api/trips/
| Parametre | Açıklama |
|---|---|
status |
CREATED, DRIVER_NOTIFIED, IN_PROGRESS, ALL_STOPS_DONE, COMPLETED, FAILED, CANCELLED |
search |
Sefer kodu, plaka, sürücü adı veya telefonunda arama |
source |
MANUAL, EXCEL veya API |
waybill |
Belirtilen irsaliye numarası veya ETTN değerini içeren seferler |
date_from, date_to |
YYYY-MM-DD; oluşturulma tarihine göre aralık |
loading_point |
Yükleme noktası adına göre filtre |
page |
Sayfa numarası; sayfa başına 20 kayıt |
curl "https://api.aiten.io/api/trips/?status=IN_PROGRESS&page=1" \
-H "X-WA-Service-Key: $AITEN_API_KEY"
{
"count": 47,
"next": "https://api.aiten.io/api/trips/?page=2",
"previous": null,
"results": [ { "trip_code": "DL-260701-001", "...": "..." } ],
"stats": { "active": 12, "completed": 340, "total": 352 }
}
stats alanı, uygulanan filtrelerden bağımsız olarak şirket genelindeki toplamları içerir.
Sefer detayı: GET /api/trips/{trip_code}/
Tek seferin, durak ve belge listesi dahil tam gösterimini döndürür (yapı, sefer oluşturma yanıtı ile aynıdır). Sefer bulunamadığında veya erişim kapsamı dışında olduğunda 404 döner:
{ "error": "Sefer bulunamadı." }
Sefer güncelleme: PATCH /api/trips/{trip_code}/
Yalnızca gönderilen alanlar güncellenir: driver_phone, driver_first_name, driver_last_name, plate, trailer_plate, notes. Sürücü değişikliği için üç sürücü alanının birlikte gönderilmesi gerekir.
curl -X PATCH https://api.aiten.io/api/trips/DL-260701-001/ \
-H "X-WA-Service-Key: $AITEN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"notes": "Müşteri saat 14:00 sonrası teslim istiyor"}'
Sefer durakları: GET /api/trips/{trip_code}/stops/
Sefere ait durakların belge bilgileri dahil listesini, doğrudan bir dizi olarak döndürür.
Sefer tamamlama: POST /api/trips/{trip_code}/complete/
İstek gövdesi almaz. Sefer COMPLETED durumuna alınır ve completed_at alanı işlenir. Yanıt: 200 ve güncel sefer gösterimi.
Sefer iptali: POST /api/trips/{trip_code}/cancel/
İstek gövdesi almaz. Sefer CANCELLED durumuna alınır; bekleyen duraklar SKIPPED olarak işaretlenir. Tamamlanmış veya iptal edilmiş bir sefer için 400 döner.
Konum güncelleme: POST /api/trips/{trip_code}/location/
{ "latitude": 39.9208, "longitude": 32.8541 }
Yanıt: {"status": "ok", "last_location_update": "2026-07-01T10:22:00Z"}. Konum verisi normal akışta platform tarafından toplanır; kendi araç takip sisteminiz varsa bu uç nokta üzerinden de iletebilirsiniz.
Sorun bildirimi: POST /api/trips/{trip_code}/issue/
{ "issue_type": "DAMAGE", "description": "Palet hasarlı teslim alındı", "stop_id": "b1a2c3d4-..." }
Yanıt: 201 ve oluşturulan sorun kaydı.
Teslimat kanıtı: GET /api/trips/{trip_code}/proof/
Sefer tamamlandıktan sonra, doğrulanmış irsaliye görsellerini ve karşılaştırma sonuçlarını (POD) döndürür. Mutabakat ve arşivleme entegrasyonları için kullanılır.
Durak belgeleri: GET /api/stops/{stop_id}/documents/
Bir durağa ait irsaliye belgelerini listeler. Sefer detayı yanıtındaki documents alanı aynı veriyi içerdiğinden, bu uç noktaya çoğu senaryoda ayrıca ihtiyaç duyulmaz.
Belge kaydı ve s3_key kuralı
POST /api/stops/{stop_id}/documents/ isteklerindeki s3_key alanı en fazla 512 karakter olabilir ve documents/ öneki ile başlamak zorundadır; .., baştaki /, :// ve \\ içeren değerler 400 ile reddedilir. Bu anahtarlar normal akışta platformun belge yükleme servisi tarafından üretilir; entegrasyonların elle anahtar üretmesi önerilmez.
Dışa Olaylar (Webhook)
Şirketinize bir webhook adresi tanımlandığında, seferin önemli durum geçişleri gerçek zamanlı olarak bu adrese POST edilir. Webhook tanımlamayan entegrasyonlar aynı olayları GET /api/trips/{trip_code}/events/ uç noktasından sorgulayabilir. Webhook adresi ve imza anahtarı tanımı için Aiten ekibiyle iletişime geçin.
Olay tipleri
| Olay | Ne zaman |
|---|---|
trip.started |
Sürücü sefere başladı |
stop.arrived |
Sürücü durağa vardı |
stop.completed |
Durak tamamlandı (kabul edilen belge sayısıyla) |
document.accepted |
İrsaliye kabul edildi (irsaliye no, ETTN, imza/kaşe durumu) |
trip.eta_updated |
Varış tahmini güncellendi |
trip.delayed |
Tahmin, planlanan varışı 30 dakikadan fazla aştı |
trip.issue |
Sorun bildirildi (hasar, adres, bekleme, red) |
trip.flagged |
Operatör müdahalesi gerektiren durum işaretlendi |
trip.completed |
Sefer tamamlandı (özet) |
Gövde ve imza
{
"event": "stop.arrived",
"trip_code": "DL-260701-001",
"occurred_at": "2026-07-01T14:30:00+00:00",
"data": { "stop_id": "...", "order": 2, "location": "Depo - Ankara" }
}
Her istekte X-Aiten-Event üst bilgisi olay tipini taşır. İmza anahtarı tanımlıysa X-Aiten-Signature üst bilgisi, ham istek gövdesinin HMAC-SHA256 özetini (hex) içerir; doğrulama sunucu tarafında zorunlu tutulmalıdır. Teslimat 2xx dışı yanıtta artan aralıklarla üç kez yinelenir; üçüncü denemeden sonra olay failed işaretlenir ve olay geçmişinden okunabilir.
Olay geçmişi: GET /api/trips/{trip_code}/events/
Sefere ait olayları kronolojik döndürür (en fazla 500). Her satırda event, occurred_at, data ve webhook teslim durumu (delivery_status: boş = webhook tanımsız, sent, pending, failed) bulunur.
Hata Yönetimi
4xx yanıtları istekte düzeltilmesi gereken bir durumu, 5xx yanıtları sunucu tarafında geçici bir sorunu ifade eder. 5xx durumunda istek, üstel geri çekilme (exponential backoff) ile yinelenebilir; yineleme öncesinde aşağıdaki idempotency bölümü dikkate alınmalıdır.
| Kod | Anlamı | Önerilen aksiyon |
|---|---|---|
400 |
Eksik veya hatalı alan | Yanıt gövdesindeki alan bazlı hata mesajlarına göre isteği düzeltin. |
401 |
Kimlik doğrulanamadı | Servis anahtarını kontrol edin; JWT kullanıyorsanız token'ı yenileyin, gerekirse yeniden oturum açın. |
402 |
Sürücünün ödenmemiş bakiyesi | Yineleme sonuç vermez; bakiye kapatılana kadar sefer açılamaz. |
403 |
Yetki yok | Kimlik bilgilerinin doğru şirkete tanımlı olduğunu doğrulayın. |
404 |
Kayıt bulunamadı | Tanımlayıcıyı (trip_code, id) kontrol edin; yineleme sonuç vermez. |
409 |
Mükerrer kayıt | Yanıttaki existing_trip_code değerini kullanın; isteği yinelemeyin. |
429 |
Hız limiti aşıldı | Retry-After üst bilgisinde belirtilen süre kadar bekleyin. |
5xx |
Sunucu tarafı sorun | Üstel geri çekilme ile sınırlı sayıda yineleyin; sorun sürerse destek ekibine bildirin. |
Yeniden Gönderim Güvenliği (Idempotency)
API ayrı bir idempotency anahtarı mekanizması sunmaz; yeniden gönderim güvenliği yukleme_no alanı üzerinden sağlanır:
- Her siparişe, kaynak sisteminizde benzersiz bir
yukleme_noatayın ve her sefer oluşturma isteğinde gönderin. 409 duplicate_yukleme_noyanıtını hata olarak değil, işlemin daha önce tamamlandığının teyidi olarak değerlendirin; yanıttakiexisting_trip_codemevcut seferi gösterir.yukleme_nogönderilmeyen isteklerde mükerrer denetimi çalışmaz. Ağ zaman aşımı sonrasında yapılan bir yineleme, aynı seferin iki kez oluşturulmasına yol açabilir. Bu nedenle dış entegrasyonlardayukleme_nokullanımı güçlü şekilde önerilir.
Sık Sorulan Sorular
API'ye internet üzerinden erişilebiliyor mu?
Evet. api.aiten.io genel internete açıktır. Kimlik doğrulaması gerektiren tüm uç noktalar, geçerli kimlik bilgisi bulunmayan isteklere 401 döndürür.
Test veya sandbox ortamı sunuluyor mu?
Ayrı bir test ortamı bulunmamaktadır; tek ortam api.aiten.io'dur. Test çalışmalarında gerçek olmayan bir telefon numarası ve test amaçlı bir şirket hesabı kullanılması önerilir.
Sefer durumu değiştiğinde otomatik bildirim (webhook) gönderiliyor mu?
Evet. Şirketinize bir webhook adresi tanımlandığında durum geçişleri (trip.started, stop.arrived, document.accepted vb.) HMAC imzalı olarak adresinize iletilir; bkz. Dışa Olaylar. Webhook tanımlamayan entegrasyonlar aynı olayları GET /api/trips/{trip_code}/events/ üzerinden sorgulayabilir.
Sefer oluşturulduğunda sürücü nasıl bilgilendiriliyor? Sefer başarıyla oluşturulduğunda sürücüye, sefer özetini ve durak bilgilerini içeren bir WhatsApp bildirimi gönderilir. Sürücü tarafında uygulama kurulumu gerekmez; irsaliye fotoğrafları da WhatsApp üzerinden iletilir.
Aynı sipariş ikinci kez gönderilirse ne olur?
yukleme_no gönderilmişse ikinci istek 409 ile reddedilir ve yanıt mevcut sefer kodunu içerir. yukleme_no gönderilmemişse mükerrer denetimi uygulanmaz ve iki ayrı sefer oluşur.
Entegrasyon sürecinde destek alınabiliyor mu? Evet. Entegrasyon süresince teknik sorularınız için merhaba@aiten.io adresinden Aiten ekibine ulaşabilirsiniz.
