Sürümleme ve Uyumluluk
Webhook yüklerinin nasıl sürümlendiği, her kimliğin ve zaman damgasının ne anlama geldiği, değişikliklerin ve kullanımdan kaldırmaların nasıl duyurulduğu
MailLand webhook yüklerini yalnızca mevcut bir alıcının yok sayabileceği biçimde değiştirir. Bu sayfa bu taahhüdü, bir alıcının güvenebileceği kimlikleri ve zaman damgalarını, uyumsuz bir değişiklik gündeme gelmeden önce neler olacağını açıklar.
Şema sürümü
Her olay türünün yükü için bir şema sürümü vardır; pozitif bir tam sayıdır. Bugün tüm olaylar 1
sürümündedir.
- Gövde bunu
schema_versionalanında taşır. X-MLND-Event-Versionbaşlığı aynı değeri taşır.schema_versioniçermeyen bir gövde (alan eklenmeden önce gönderilmiş)1sürümündedir.
Sürüm olay oluşturulurken sabitlenir; bu yüzden aynı olayın her yeniden denemesi aynı sürümü taşır.
X-MLND-Signature içindeki v1 ise imza düzeninin sürümüdür ve bundan bağımsızdır.
Kimlikler
| Kimlik | Nerede | Denemeler arasında sabit | Ne için |
|---|---|---|---|
event_id | gövde, X-MLND-Event-Id | Evet | Tekilleştirme: her event_id değerini bir kez işleyin |
event | gövde, X-MLND-Event | Evet | Olay türü, ör. message.delivered |
Ek id değeri (inbound.received) | gövde, data.email.attachments[] | Evet | Daha önce indirdiğiniz bir eki tanımak; download_url her denemede yenidir |
| Teslimat kimliği | X-MLND-Delivery-Id | Hayır, her denemede yeni | Destek ve tanılama; teslimat geçmişinin o deneme için listelediği publicId budur |
X-MLND-Attempt | başlık | Hayır | 1'den başlayan deneme numarası |
Tekilleştirmeyi event_id ile yapın, asla teslimat kimliğiyle yapmayın. Olaylar birden fazla kez ve sırasız
gelebilir; ileti olaylarını bir ileti için yalnızca artan data.status_version değerine göre sıralayın.
Zaman damgaları
| Alan | Anlamı |
|---|---|
occurred_at (gövde) | Olayın kendisinin gerçekleştiği an. İleti olaylarında posta sunucusunun olay zamanıdır; data.timestamp ile aynı andır. |
timestamp (gövde) | MailLand'in webhook olayını oluşturduğu an. Önceki sürümlerdekiyle aynıdır. |
X-MLND-Signature içindeki t ve X-MLND-Delivery-Timestamp | Bu denemenin gönderildiği an, Unix saniyesi. İkisi her zaman aynı değeri taşır. |
Gövdedeki tüm zamanlar UTC'dir ve sonunda Z bulunan ISO 8601 biçimindedir. Gövde her denemede aynıdır;
yalnızca denemenin başlıkları değişir. İmza t değerini ve ham gövdeyi kapsar, diğer başlıkları kapsamaz;
onları yönlendirme üst verisi olarak görün ve gövdeye güvenin.
Uyumluluk taahhüdü
Alıcılar tanımadıkları JSON alanlarını ve HTTP başlıklarını yok saymalıdır. Bu kuralla aşağıdaki her değişiklik güvenlidir ve yeni bir şema sürümü olmadan yapılır:
- gövdeye ya da
datanesnesine alan veya yeni bir başlık eklemek; - yalnızca abone olduktan sonra alacağınız yeni bir olay türü eklemek;
- bu belgelerin açık uçlu olarak tanımladığı bir alana yeni değer eklemek.
Aşağıdakilerin her biri uyumsuz değişikliktir ve mevcut bir sürüme asla uygulanmaz:
- bir alanı, başlığı veya olay türünü kaldırmak ya da yeniden adlandırmak;
- bir alanın türünü, biçimini, birimini veya anlamını değiştirmek;
- isteğe bağlı bir alanı zorunlu, null olmayan bir alanı null olabilir yapmak;
- kapalı liste olarak belgelenmiş bir alana yeni değer eklemek.
Uyumsuz bir değişiklik yalnızca sizin açıkça seçtiğiniz yeni bir şema sürümü olarak yayımlanır. Mevcut abonelikler hiçbir zaman kendiliğinden yeni sürüme geçirilmez.
Kullanımdan kaldırma politikası
- Bir kullanımdan kaldırma, herhangi bir geçiş istenmeden en az 180 gün önce değişiklik günlüğünde, panelde ve hesap sahiplerine e-postayla duyurulur.
- Duyuru ilgili olayı, sürümü veya alanı, yerine geçeni ve geçiş yolunu tam olarak belirtir.
- Kullanımdan kaldırılan bir alan yükte kalır; kullanımdan kaldırılan bir olay mevcut abonelere açık kalır. Kullanımdan kaldırma tek başına hiçbir şeyi silmez. Bir sürümün kaldırılması, kullanımdan kaldırma duyurusundan en az 180 gün sonra yapılacak ayrı bir duyuru gerektirir.
İstisnalar
inbound.received de bu zarfı kullanır. Tek fark: her ekin download_url değeri her denemede
yeniden imzalanır, bu yüzden yeniden denemeler arasında değişir; ekin id değeri ise değişmez.
Otomasyon Webhook adımları bu zarfı değil, abonenin alanlarını içeren düz bir gövde gönderir. Bu
sürümden itibaren event_id, occurred_at ve schema_version alanlarını da eklerler ve imzalıdırlar.
Aşağıya bakın.
Otomasyon Webhook adımları
Bir otomasyonun Webhook adımları müşteri webhook'larıyla tamamen aynı biçimde imzalanır: X-MLND-Signature
başlığını o adımın alıcısına ait imza gizli anahtarıyla, aynı adımları izleyerek doğrulayın.
- Her alıcının (farklı bir adım URL'si) kendi gizli anahtarı vardır; bu yüzden hiçbir alıcı başka bir alıcının kabul edeceği imzalar üretemez. Aynı URL'ye gönderen adımlar tek bir alıcıdır ve onun anahtarını paylaşır.
- Gizli anahtarları
GET /v1/marketing/automations/{id}/webhook-signing-secretsile okuyun: adım sırasına göre{ webhookUrl, secret }öğelerinden oluşan birsecretslistesi. Webhook adımı olan bir otomasyon oluşturulduğunda veya kaydedildiğinde oluşurlar. Bir düzenleme, değişmeyen her URL'nin anahtarını korur; yeni veya değişen bir URL yeni bir anahtar alır. POST /v1/marketing/automations/{id}/webhook-signing-secrets/regenerateile değiştirin; her alıcı yeni bir anahtar alır ve hepsi döndürülür. Eski anahtarlar hemen geçersiz olur; bu yüzden önce her alıcının ikisini de kabul etmesini sağlayın. Bir otomasyonun kopyası kendi anahtarlarını alır; tüm Webhook adımları kaldırılan bir otomasyon ise anahtarlarını kaybeder.- Yalnızca bir alıcıyı döndürmek için regenerate isteğinin gövdesinde
{ "webhookUrl": "<adım URL'si>" }gönderin; diğer tüm alıcılar anahtarlarını korur. Otomasyonun Webhook adım URL'si olmayan bir URL400döner. - Alıcıları hâlâ tek bir anahtarı paylaşan bir otomasyon, etkinleştirildiğinde veya sürdürüldüğünde ya da bir sonraki Webhook adımı gönderilmeden önce alıcı başına anahtarlara ayrılır. Bir istek asla başka bir alıcının sahip olduğu bir anahtarla imzalanmaz: ayırma yapılamazsa adım gönderilmez.
X-MLND-Event-Id, bir abone için bir adımın bir çalıştırmasında sabittir. Tekrar saldırılarını reddetmek için bunutüzerindeki 5 dakikalık pencereyle birlikte kullanın.- İmzalama özelliği gelmeden önce kaydedilmiş bir otomasyon, yeniden kaydedilene ya da anahtarı yeniden üretilene kadar imzasız istek gönderir.
- Bu istekler en iyi çaba esaslıdır: tek deneme yapılır, yeniden deneme takvimi yoktur. Otomasyon, alıcının yanıtı ne olursa olsun devam eder.