product.updated

Bu event, Ürün listesi (/Products) yanıtında görünen bir alan değiştiğinde tetiklenir.

Amacı, menüyü sabit aralıklarla baştan çekmek yerine yalnızca gerçekten bir şey değiştiğinde çekmenizi sağlamak.

Event'ler tek tek değil, biriktirilerek işlenmelidir. Önerilen akış: gelen event'leri ~3 dakika biriktirin, süre dolduğunda /Products ucunu bir kez çağırıp menünüzü güncelleyin. /Products zaten 3 dakikada bir çağrılabiliyor; bu ritim hem hız limitine takılmanızı önler hem de arka arkaya gelen event'ler için tek istek yapmanızı sağlar.

Hangi değişiklikler tetikler

DeğişiklikÖrnek
Ürünün kendisiad, kod, açıklama, görsel, dijital menüde gösterim
Birimbirim ekleme, birim adı değişikliği, birim silme
Fiyatfiyat listesi güncellemesi, şubeye özel fiyat, Excel ile toplu fiyat aktarımı
Çıkarılabilir malzemereçetedeki çıkarılabilir malzemelerin eklenmesi/kaldırılması
Ürün menüsümenüye alt ürün ekleme/çıkarma, menü içeriği ve sırası
Kategorikategori adı, görseli, kategorinin silinmesi
KDVKDV oranı değişikliği, KDV grubunun silinmesi
Şube atamasıürünün bir şubede açılması veya kapatılması

Silme işlemleri bu event ile bildirilir; ayrı bir product.deleted event'i yoktur. Silinen ürün /Products yanıtında artık dönmez.

Değişikliğin merkez uygulamasından (HQ) mı yoksa şubenin kendi Adisyo uygulamasından mı yapıldığı fark etmez; her iki durumda da event gönderilir.

Event yalnızca hangi ürünlerin etkilendiğini söyler, neyin değiştiğini söylemez. Değişiklik yanıtta görünür bir fark yaratmamış da olabilir; event'i idempotent işlemeniz yeterlidir.

Payload Yapısı

Payload yalnızca etkilenen ürünlerin ID’lerini taşır. Güncel veriyi /Products ucundan okursunuz.

Tek bir işlem birden fazla ürünü etkileyebildiği için (kategori adı değişikliği, KDV grubu silme, Excel ile toplu aktarım) ürünler productIds dizisinde listelenir. Tek ürün değiştiğinde de dizi tek elemanlı gelir.

{
  "eventId": "7a2b5c91-3e64-4d08-b1f7-9c02ad4e6b53",
  "webhookEventType": "product.updated",
  "eventTimeUtc": "2025-10-21T11:59:50.1855135Z",
  "data": {
    "productIds": [2230902, 2230903, 2230904]
  },
  "restaurantIdentity": "3edc2d46-bfc0-44d1-b701-f18e56306aed"
}

Veri Alanları

AlanTürAçıklama
productIdsarray(number)Etkilenen ürünlerin ID'leri. /Products yanıtındaki productId ile aynıdır

restaurantIdentity değişikliğin geçtiği şubeyi belirtir; event her zaman şube bazlıdır. Merkezden yapılan bir değişiklik birden fazla şubeyi etkiliyorsa her şube için ayrı event gönderilir ve her şube yalnızca kendisinde görünen ürünleri içeren bir event alır.

Dolaylı etkilenen ürünler

Bir değişiklik, doğrudan dokunulmayan ürünleri de etkileyebilir. Bu durumda etkilenen ürünlerin hepsi aynı event'te listelenir:

  • Bir malzemenin birimi silindiğinde, o malzemeyi reçetesinde kullanan üst ürünler de bildirilir.
  • Bir ürün silindiğinde, onu menüsünde alt ürün olarak bulunduran ürünler de bildirilir.
  • Bir KDV grubu silindiğinde, o gruptaki tüm ürünler varsayılan gruba taşınır ve hepsi bildirilir.

Kullanım Örneği

Event geldiğinde biriktirin; pencere dolduğunda menüyü tek istekle yenileyin:

Menüyü yenileme
curl -X GET "https://ext.adisyo.com/api/External/v2/Products" \
  --header "x-api-key: <adisyo-tarafindan-verilen-api-key>" \
  --header "x-api-secret: <istek-gonderilen-restoran-icin-gizli-bilgi>" \
  --header "x-api-consumer: <istek-gonderen-firmayi-tanimlayan-bir-metin>"

productIds alanını, menünüzde hangi ürünlerin yeniden işlenmesi gerektiğini belirlemek için kullanabilirsiniz; ancak veriyi her zaman /Products yanıtından okursunuz.