Olaylar
Her olayın aynı beş alanı vardır:
| Alan | Tür | Anlamı |
|---|---|---|
id |
UUID | Olayın kimliği; Quatlas-Event-Id başlığında da var. Aynı şirkete anlatılan aynı olgu her zaman aynı kimliği taşır: tekilleştirmeyi buna göre yapın. |
type |
string | Olayın türü; Quatlas-Event-Type başlığında da var. |
occurredAt |
date-time (UTC) | Olgunun gerçekleştiği an. |
livemode |
boolean | Deneme alanı olayında ve webhook.test olayında false. |
data |
object | Olayın ilgili olduğu kayıtlar ve türünün taşıdığı birkaç olgu. |
data her zaman yedi tanımlayıcı alan taşır; geçerli değilse her biri null olur:
| Alan | Tür | Anlamı |
|---|---|---|
shipmentRequestId |
UUID ya da null | Talep. |
requestNumber |
string ya da null | Talebin referans numarası (REQ-048213). |
externalReference |
string ya da null | Talebin sizdeki numarası; yalnız talebin sahibi şirketinizse (gönderici taraf). |
dealId |
UUID ya da null | Anlaşma, oluştuktan sonra. |
dealNumber |
string ya da null | Anlaşmanın referans numarası (DEAL-206447), oluştuktan sonra. |
quoteNumber |
string ya da null | Anlaşma oluştuktan sonra kazanan teklifin referans numarası (QTE-731905); request.bid_received olayında gelen teklifin numarası. |
shipmentNumber |
string ya da null | Operasyonun referans numarası (SHPT-012618), anlaşma canlıya geçtikten sonra. |
Gövdeler bilerek incedir: hiçbir zaman fiyat, taraf adı, yer ya da belgenin içeriği taşımaz. Ayrıntıyı API’den, aşağıda adı geçen kapsamla okuyun.
Olay talebin sahibi olan şirkete gidiyorsa ve talepte metadata varsa, data kendi alanlarınızı metadata olarak da taşır. Başka kimseye gönderilmez: aynı anlaşmanın taşıyıcıya giden teslimatları onu hiç taşımaz.
Katalog
Bölüm başlığı “Katalog”| Olay | Ne zaman | Kime | Ek data |
Ayrıntı için |
|---|---|---|---|---|
request.published |
Talep pazara çıktı. | Talebin sahibi | GET /shipment-requests/{id} (requests:read) |
|
request.bid_received |
Talebe bir teklif geldi. | Talebin sahibi | bidCount |
GET /shipment-requests/{id} (requests:read) |
request.awarded |
Talep verildi ve bir anlaşma açıldı. | Talebin sahibi ve teklifi kazanan taşıyıcı | GET /deals/{id} (deals:read) |
|
request.cancelled |
Talep uygulamada ya da API’den iptal edildi. | Talebin sahibi | reason |
GET /shipment-requests/{id} (requests:read) |
request.updated |
Talebin ilanı değişti (uygulamada ya da API’den) ya da metadata, sipariş numarası veya masraf merkezi API’den değişti. API’den bir güncelleme tek bir olay doğurur ve değiştirdiği her şeyi sayar. | Talebin sahibi | changedFields, revision |
GET /shipment-requests/{id} (requests:read) |
deal.live |
Kapanış odası bitti, operasyon başladı. | İki taraf | GET /deals/{id} (deals:read) |
|
shipment.milestone |
Bir kilometre taşı kaydedildi. | İki taraf | milestoneType, milestoneAt |
GET /deals/{id}/tracking (tracking:read) |
shipment.eta_changed |
Taşıyıcı teslim tahminini güncelledi. | İki taraf | GET /deals/{id}/tracking (tracking:read) |
|
shipment.delivered |
Sefer, yükün tamamı ya da bir kısmı teslim edilerek bitti. | İki taraf | GET /deals/{id}/tracking (tracking:read) |
|
document.uploaded |
Anlaşmaya bir belge yüklendi. | İki taraf | documentId, category |
GET /deals/{id}/documents (documents:read) |
cost.approved |
Bir ek maliyet onaylandı. | İki taraf | GET /deals/{id}/costs (costs:read) |
|
invoice.issued |
Şirketinize bir komisyon faturası kesildi. | Yalnız faturanın alıcısı | invoiceId, invoiceNumber |
Uygulamada (v1’de fatura uç noktası yok) |
webhook.test |
Biri Test gönder’e bastı. | Denenen abonelik | subscriptionId, integrationId |
Abonelik istediği olay türlerini seçer; webhook.test seçilmez, istek üzerine gönderilir. v1 içinde yeni olay türleri eklenebilir; bir tür asla kaldırılmaz ya da yeniden adlandırılmaz. Bilmediğiniz türleri yok sayın.
Ek alanlar
Bölüm başlığı “Ek alanlar”| Alan | Olay | Tür | Anlamı |
|---|---|---|---|
bidCount |
request.bid_received |
integer | Talepteki o anki açık teklif sayısı. Yalnız sayı: kimin teklif verdiği ya da teklifin ne olduğu asla yazmaz. |
reason |
request.cancelled |
string ya da null | Talep sahibinin verdiği gerekçe, varsa. |
changedFields |
request.updated |
string dizisi | Değişen: origin, destination, transportMode, modePolicy, cargo, schedule, incoterm ya da notes (ilan); purchaseOrderNumber, costCenter ya da metadata (kendi kayıtlarınız). |
revision |
request.updated |
integer | Değişiklikten sonra ilanın revizyonu; yalnız ilan değişince artar. |
metadata |
Talep sahibine giden her olay | metin değerli nesne | Talepteki metadata’nız, varsa. Başka şirkete hiç gönderilmez. |
milestoneType |
shipment.milestone |
string | Loaded, Departed, Arrived, InTransit, AtCustoms, ModeHandover, OutForDelivery, Delivered ya da Exception. |
milestoneAt |
shipment.milestone |
date-time (UTC) | Kilometre taşının gerçekleştiği an. |
documentId |
document.uploaded |
UUID | Belge; GET /documents/{id}/download için. |
category |
document.uploaded |
string | Belgenin kategorisi, örneğin CommercialInvoice, PackingList ya da BillOfLading. |
invoiceId |
invoice.issued |
UUID | Fatura. |
invoiceNumber |
invoice.issued |
string | Faturanın numarası. |
subscriptionId |
webhook.test |
UUID | Denenen abonelik. |
integrationId |
webhook.test |
UUID | Aboneliğin entegrasyonu. |
v1 içinde data alanına yeni alanlar eklenebilir. Bilmediklerinizi yok sayın.
Örnekler
Bölüm başlığı “Örnekler”{ "id": "<olay-kimliği>", "type": "request.bid_received", "occurredAt": "2026-10-13T10:02:11Z", "livemode": true, "data": { "shipmentRequestId": "<talep-kimliği>", "requestNumber": "REQ-048213", "externalReference": "EBA-2026-000123", "dealId": null, "dealNumber": null, "quoteNumber": "QTE-731905", "shipmentNumber": null, "bidCount": 3 }}{ "id": "<olay-kimliği>", "type": "request.updated", "occurredAt": "2026-10-13T11:15:42Z", "livemode": true, "data": { "shipmentRequestId": "<talep-kimliği>", "requestNumber": "REQ-048213", "externalReference": "EBA-2026-000123", "dealId": null, "dealNumber": null, "quoteNumber": null, "shipmentNumber": null, "changedFields": ["cargo", "schedule"], "revision": 2, "metadata": { "costCenter": "LOJ-210" } }}{ "id": "<olay-kimliği>", "type": "request.awarded", "occurredAt": "2026-10-14T09:02:10Z", "livemode": true, "data": { "shipmentRequestId": "<talep-kimliği>", "requestNumber": "REQ-048213", "externalReference": null, "dealId": "<anlaşma-kimliği>", "dealNumber": "DEAL-206447", "quoteNumber": "QTE-731905", "shipmentNumber": null }}{ "id": "<olay-kimliği>", "type": "document.uploaded", "occurredAt": "2026-10-15T13:20:05Z", "livemode": true, "data": { "shipmentRequestId": "<talep-kimliği>", "requestNumber": "REQ-048213", "externalReference": "EBA-2026-000123", "dealId": "<anlaşma-kimliği>", "dealNumber": "DEAL-206447", "quoteNumber": "QTE-731905", "shipmentNumber": "SHPT-012618", "documentId": "<belge-kimliği>", "category": "PackingList" }}{ "id": "<olay-kimliği>", "type": "webhook.test", "occurredAt": "2026-10-13T08:00:00Z", "livemode": false, "data": { "subscriptionId": "<abonelik-kimliği>", "integrationId": "<entegrasyon-kimliği>" }}OpenAPI’den üretilen API başvurusu (İngilizce) her olayı başlıklarıyla listeler.
