Webhooks
Bu makalede, uygulamanızı Labs ile entegre etmek için Webhook kurulumunun nasıl yapılacağı ve Webhook bildirimlerinin çalışma mantığı anlatılmıştır.
Webhook bildirimleri aracılığı ile Labs platformundaki etkinlerden anında haberdar olabilirsiniz. Örneğin yeni bir sipariş oluşturulduğunda, kendi uygulamanıza yeni oluşturulan siparişin bilgilerini saniyeler içerisinde gönderilmesini sağlayabilirsiniz.
Kurulum
Yeni bir webhook tanımlaması yapabilmek için öncelikle hesabınızın Webhook özelliğini aktif etmeniz gerekmektedir. Webhook API'yı aktif hale getirebilmek için, Labs hesabınızın sağ üstte yer alan menüsünden Webhooks Ayarları sayfasına ulaşabilirsiniz.
Ardından sayfanın sağ üst köşesinde bulunan buton yardımıyla Webhook servisini aktif ediniz.
Bir webhook bildirimi için, uygulamanızda Labs'ın istek gönderebileceği bir URL'e sahip olmanız gerekir. Her yeni bir webhook bildiriminde, Labs uygulaması, sizin uygulamanıza bir POST
isteği gönderecektir.
Kimlik Doğrulama
Uygulamanıza gönderilen isteklerin doğrulanmasını isteyebilirsiniz. Bunun için Basic Authentication ve Bearer Token kimlik doğrulaması yöntemlerini kullanabilirsiniz. Eğer isterseniz, doğrulama olmadan istek gönderilmesini de sağlayabilirsiniz.
Bunun için Webhook Ayarları sayfasındaki Auth Header kısmından doğrulama yönteminizi seçiniz ve ardından uygulamanıza ait kimlik bilgilerini giriniz.
Webhook bildirimi almak istediğiniz scope'u seçerek sadece ihtiyacınız olan bildirimleri almayı tercih edebilirsiniz.
Tüm bu işlemleri tamamladığınızda, artık Labs platformundan webhook bildirimleri almaya hazırsınız demektir. Aşağıdaki bölümde, uygulamanıza bir webhook bildirimi yapıldığında gönderilen isteğin nasıl bir veri içerdiğini gözlemleyebilirsiniz.
Payload İçeriği
Uygulamanız Labs platformundan bir webhook isteği aldığında buna hangi olayın neden olduğunu görmek için type
özelliğini kontrol edebilirsiniz. type
parametresi size gönderilen payload'un türü hakkında bir bilgi verecektir (örneğin sipariş, ürün vb.).
Örnek webhook isteği
{
"type": "order.created",
"payload": {
"id": "WAz8eIbvDR60rouK"
// ...
}
}
Yukarıdaki örnekte yeni bir sipariş alındığında gönderilen type
'ı görebilirsiniz.
Etkinlik Türleri
Yeni Sipariş Bildirimleri
- Name
order.created
- Type
- Description
Yeni bir sipariş oluşturulduğunda iletilir.
- Name
order.updated
- Type
- Description
Sipariş güncellendiğinde iletilir.
Parametreler
- Name
type
* zorunlu- Type
- string
- Description
Ürün barkodu
- Name
payload
* zorunlu- Type
- array
- Description
Sipariş içeriği bilgisidir.
- Name
payload.id
* zorunlu- Type
- integer
- Description
Labs sipariş id bilgisidir.
- Name
payload.packageId
* opsiyonel* nullable- Type
- string
- Description
Platform paket id bilgisidir.
- Name
payload.managerId
* opsiyonel* nullable- Type
- integer
- Description
Labs plasiyer kullanıcı id bilgisidir.
- Name
payload.currency
* zorunlu- Type
- string
- Description
Sipariş Döviz tipi bilgisidir. Kullanılabilir Değerler :
TRY, USD, EUR
- Name
payload.source
* zorunlu- Type
- string
- Description
Platform bilgisidir. Kullanılabilir Değerler :
WEB, WHOLESALE, TRENDYOL, HEPSIBURADA, AMAZON, N11, CICEKSEPETI, FLO, GETIR, PAZARAMA, TICIMAX,SHOPIFY, IKAS, TEKNOSA, PTTAVM, IDEFIX, ALISGIDIS
- Name
payload.orderStatus
* zorunlu- Type
- string
- Description
Sipariş statü bilgisi. Kullanılabilir Değerler :
PENDING_APPROVE => Onay Bekliyor
,CREATED => Sipariş Oluşturuldu
,PENDING => Ödeme Bekliyor
,PACKED => Paketlendi
,PREPARING => Sipariş Hazırlanıyor
,IN_PROCUREMENT => Tedarik Sürecinde
,CANCELLED => İptal Edildi
,IN_RETURN => İade Sürecinde
,RETURNED => İade Edildi
,PARTIALLY_REFUND => Kısmi İade Yapıldı
,COMPLETED => Sipariş Teslim Edildi
,SHIPPED => Kargoya Verildi
,WAITING_FOR_PAYMENT => Ödeme Onayı Bekleniyor
- Name
payload.marketplaceId
* opsiyonel- Type
- string
- Description
Platform sipariş id bilgisidir.
- Name
payload.marketplaceOrderNumber
* opsiyonel- Type
- string
- Description
Platform sipariş numarası bilgisidir.
- Name
payload.managerNote
* opsiyonel* nullable- Type
- string
- Description
Platform müşteri ya da plasiyer notu bilgisidir.
- Name
payload.createdAt
* zorunlu- Type
- date
- Description
Labs sipariş oluşturulma tarihi bilgisidir.
- Name
payload.isTransfered
* opsiyonel- Type
- boolean
- Description
ERP aktarılma bilgisidir.
- Name
payload.isCorporate
* opsiyonel- Type
- boolean
- Description
Müşteri tipi bilgisidir. Bireysel ya da kurumsal olma durumudur. 1 gelmesi durumu kurumsal olma durumudur.
- Name
payload.shipmentAddress
* opsiyonel* nullable- Type
- array
- Description
Platform kargo adres bilgisidir.
- Name
payload.shipmentAddress.addressName
* opsiyonel* nullable- Type
- string
- Description
Platform kargo adres adı bilgisidir.
- Name
payload.shipmentAddress.invoiceType
* opsiyonel* nullable- Type
- string
- Description
Platform kargo adres fatura tipi bilgisidir.
- Name
payload.shipmentAddress.identifier
* opsiyonel* nullable- Type
- array
- Description
Platform kargo adres müşteri bilgisidir.
- Name
payload.shipmentAddress.identifier.customerName
* opsiyonel* nullable- Type
- string
- Description
Platform kargo adres müşteri adı bilgisidir.
- Name
payload.shipmentAddress.identifier.phoneNumber
* opsiyonel* nullable- Type
- string
- Description
Platform kargo adres müşteri telefon numarası bilgisidir.
- Name
payload.shipmentAddress.identifier.identity
* opsiyonel* nullable- Type
- string
- Description
Platform kargo adres müşteri kimlik numarası bilgisidir.
- Name
payload.shipmentAddress.addressDetail
* opsiyonel* nullable- Type
- array
- Description
Platform kargo adres detay bilgisidir.
- Name
payload.shipmentAddress.addressDetail.countryCode
* opsiyonel* nullable- Type
- string
- Description
Platform kargo adres ülke kodu bilgisidir.
- Name
payload.shipmentAddress.addressDetail.city
* opsiyonel* nullable- Type
- string
- Description
Platform kargo adres il bilgisidir.
- Name
payload.shipmentAddress.addressDetail.district
* opsiyonel* nullable- Type
- string
- Description
Platform kargo adres ilçe bilgisidir.
- Name
payload.shipmentAddress.addressDetail.town
* opsiyonel* nullable- Type
- string
- Description
Platform kargo adres mahalle bilgisidir.
- Name
payload.shipmentAddress.addressDetail.state
* opsiyonel* nullable- Type
- string
- Description
Platform kargo adres durum bilgisidir.
- Name
payload.shipmentAddress.addressDetail.address
* opsiyonel* nullable- Type
- string
- Description
Platform kargo adres detay bilgisidir.
- Name
payload.shipmentAddress.addressDetail.postalCode
* opsiyonel* nullable- Type
- string
- Description
Platform kargo adres posta kodu bilgisidir.
- Name
payload.shipmentAddress.isDefault
* nullable- Type
- integer
- Description
Platform kargo adres default bilgisidir.
- Name
payload.shipmentAddress.company
* opsiyonel* nullable- Type
- array
- Description
Platform kargo adres şirket bilgisidir.
- Name
payload.shipmentAddress.company.companyName
* opsiyonel* nullable- Type
- string
- Description
Platform kargo adres şirket adı bilgisidir.
- Name
payload.shipmentAddress.company.taxNumber
* opsiyonel* nullable- Type
- string
- Description
Platform kargo adres şirket vergi numarası bilgisidir.
- Name
payload.shipmentAddress.company.taxOffice
* opsiyonel* nullable- Type
- string
- Description
Platform kargo adres şirket vergi dairesi bilgisidir.
- Name
payload.invoiceAddress
* opsiyonel* nullable- Type
- array
- Description
Platform fatura adres bilgisidir.
- Name
payload.invoiceAddress.addressName
* opsiyonel* nullable- Type
- string
- Description
Platform fatura adres adı bilgisidir.
- Name
payload.invoiceAddress.invoiceType
* opsiyonel* nullable- Type
- string
- Description
Platform fatura adres fatura tipi bilgisidir.
- Name
payload.invoiceAddress.identifier
* opsiyonel* nullable- Type
- array
- Description
Platform fatura adres müşteri bilgisidir.
- Name
payload.invoiceAddress.identifier.customerName
* opsiyonel* nullable- Type
- string
- Description
Platform fatura adres müşteri adı bilgisidir.
- Name
payload.invoiceAddress.identifier.phoneNumber
* opsiyonel* nullable- Type
- string
- Description
Platform fatura adres müşteri telefon numarası bilgisidir.
- Name
payload.invoiceAddress.identifier.identity
* opsiyonel* nullable- Type
- string
- Description
Platform fatura adres müşteri kimlik numarası bilgisidir.
- Name
payload.invoiceAddress.addressDetail
* opsiyonel* nullable- Type
- array
- Description
Platform fatura adres detay bilgisidir.
- Name
payload.invoiceAddress.addressDetail.countryCode
* opsiyonel* nullable- Type
- string
- Description
Platform fatura adres ülke kodu bilgisidir.
- Name
payload.invoiceAddress.addressDetail.city
* opsiyonel* nullable- Type
- string
- Description
Platform fatura adres il bilgisidir.
- Name
payload.invoiceAddress.addressDetail.district
* opsiyonel* nullable- Type
- string
- Description
Platform fatura adres ilçe bilgisidir.
- Name
payload.invoiceAddress.addressDetail.town
* opsiyonel* nullable- Type
- string
- Description
Platform fatura adres mahalle bilgisidir.
- Name
payload.invoiceAddress.addressDetail.state
* opsiyonel* nullable- Type
- string
- Description
Platform fatura adres durum bilgisidir.
- Name
payload.invoiceAddress.addressDetail.address
* opsiyonel* nullable- Type
- string
- Description
Platform fatura adres detay bilgisidir.
- Name
payload.invoiceAddress.addressDetail.postalCode
* opsiyonel* nullable- Type
- string
- Description
Platform fatura adres posta kodu bilgisidir.
- Name
payload.invoiceAddress.isDefault
* nullable- Type
- integer
- Description
Platform fatura adres default bilgisidir.
- Name
payload.invoiceAddress.company
* opsiyonel* nullable- Type
- array
- Description
Platform fatura adres şirket bilgisidir.
- Name
payload.invoiceAddress.company.companyName
* opsiyonel* nullable- Type
- string
- Description
Platform fatura adres şirket adı bilgisidir.
- Name
payload.invoiceAddress.company.taxNumber
* opsiyonel* nullable- Type
- string
- Description
Platform fatura adres şirket vergi numarası bilgisidir.
- Name
payload.invoiceAddress.company.taxOffice
* opsiyonel* nullable- Type
- string
- Description
Platform fatura adres şirket vergi dairesi bilgisidir.
- Name
payload.warehouseId
* zorunlu- Type
- integer
- Description
Labs depo id bilgisidir.
- Name
payload.totalProductQty
* zorunlu- Type
- integer
- Description
Sipariş toplam ürün bilgisidir.
- Name
payload.customer
* zorunlu- Type
- array
- Description
Platform müşteri bilgisidir.
- Name
payload.customer.custumerName
* zorunlu- Type
- string
- Description
Platform müşteri adı bilgisidir.
- Name
payload.customer.custumerEmail
* zorunlu- Type
- string
- Description
Platform müşteri email bilgisidir.
- Name
payload.customer.custumerPhoneNumber
* opsiyonel* nullable- Type
- string
- Description
Platform müşteri telefon numarası bilgisidir.
- Name
payload.customer.custumerIdentity
* zorunlu- Type
- string
- Description
Platform müşteri kimlik numarası bilgisidir.
- Name
payload.payment
* opsiyonel* nullable- Type
- array
- Description
Sipariş ödeme bilgisidir.
- Name
payload.payment.paymentId
* opsiyonel* nullable- Type
- integer
- Description
Sipariş ödeme id bilgisidir.
- Name
payload.payment.paymentMethod
* opsiyonel* nullable- Type
- string
- Description
Sipariş ödeme metodu bilgisidir.
- Name
payload.payment.paymentStatus
* opsiyonel* nullable- Type
- string
- Description
Sipariş ödeme statu bilgisidir.
- Name
payload.shipment
* opsiyonel* nullable- Type
- array
- Description
Platform kargo bilgisidir.
- Name
payload.shipment.dispatchStatus
* opsiyonel* nullable- Type
- boolean
- Description
Platform kargo teslimat statü bilgisidir.
- Name
payload.shipment.dispatchDescription
* opsiyonel* nullable- Type
- string
- Description
Platform kargo teslimat açıklama bilgisidir.
- Name
payload.shipment.cargoCompany
* opsiyonel* nullable- Type
- string
- Description
Platform kargo firma bilgisidir. Kullanılabilir Değerler :
ARAS => Aras Kargo
HJ => Hepsi Jet
HX => Hepsi Jet
KG => Kolay Gelsin
MNG => Mng Kargo
TEX => Trendyol Express
TK => Trendyol Kurye
YK => Yurtiçi Kargo
PTS => PTS Kargo
UPS => UPS Kargo
SRT => Sürat Kargo
PTT => PTT Kargo
KARGONOMI => KARGONOMİ
IN-WRHOUSE => Depodan Teslim
STORE => Mağazadan Teslim
IN-STORE => Mağazadan Teslim
COURIER => Kurye
GETIR => Getir Kurye
- Name
payload.shipment.barcodeId
* opsiyonel* nullable- Type
- string
- Description
Platform kargo barkod bilgisidir.
- Name
payload.shipment.trackingId
* opsiyonel* nullable- Type
- string
- Description
Platform kargo takip no bilgisidir.
- Name
payload.shipment.trackingUrl
* opsiyonel* nullable- Type
- string
- Description
Platform kargo takip url bilgisidir.
- Name
payload.shipment.shippingFee
* opsiyonel* nullable- Type
- float
- Description
Platform kargo ücreti bilgisidir.
- Name
payload.lines
* zorunlu- Type
- array
- Description
Sipariş ürün bilgisidir.
- Name
payload.lines.id
* zorunlu- Type
- integer
- Description
Ürünün labs id bilgisidir.
- Name
payload.lines.barcodeId
* nullable- Type
- string
- Description
Ürünün barkod bilgisidir.
- Name
payload.lines.status
* zorunlu- Type
- string
- Description
Ürünün statü bilgisidir. Kullanılabilir Değerler :
COMPLETED => Tamamlandı
UNCOMPLETED => Tamamlanamadı
CANCELLED => İptal
IN_RETURN => İade Sürecinde
RETURNED => İade Edildi
- Name
payload.lines.qty
* zorunlu- Type
- float
- Description
Ürünün adet bilgisidir.
- Name
payload.lines.requestedQty
* nullable- Type
- float
- Description
Ürünün adet bilgisidir.
- Name
payload.lines.cancelledQty
* nullable- Type
- float
- Description
Ürünün iptal edilen adet bilgisidir.
- Name
payload.lines.price
* zorunlu- Type
- string
- Description
Ürünün birim fiyat bilgisidir.
- Name
payload.lines.currency
* zorunlu- Type
- string
- Description
Siparişin döviz tipi bilgisidir.
- Name
payload.lines.modelId
* nullable- Type
- string
- Description
Ürünün ana kod bilgisidir.
- Name
payload.lines.attributes
* opsiyonel* nullable- Type
- array
- Description
Ürünün özellik bilgisidir.
- Name
payload.lines.attributes.attributeType
* opsiyonel* nullable- Type
- string
- Description
Ürünün özellik tip bilgisidir.
- Name
payload.lines.attributes.attributeValue
* opsiyonel* nullable- Type
- string
- Description
Ürünün özellik değer kodu bilgisidir.
- Name
payload.lines.attributes.attributeLabel
* opsiyonel* nullable- Type
- string
- Description
Ürünün özellik değer bilgisidir.
- Name
payload.lines.lineDescription
* opsiyonel* nullable- Type
- string
- Description
Ürünü tanımlayan başlık ya da açıklama bilgisidir.
- Name
payload.lines.thumbnail
* opsiyonel* nullable- Type
- string
- Description
Ürünün görsel url bilgisidir.
{
"type": "order.created",
"payload": {
"id": 1163207,
"packageId": "1315156650",
"managerId": null,
"currency": "TRY",
"source": "TRENDYOL",
"orderStatus": "IN_RETURN",
"marketplaceId": "1802105722",
"managerNote": null,
"createdAt": "13/01/2023 10:31:06",
"isTransfered": 1,
"isCorporate": false,
"shipmentAddress": {
"addressName": "Otomatik Oluşturulan",
"invoiceType": "personal",
"identifier": {
"customerName": "Hatice Kıran",
"phoneNumber": "",
"identity": 11111111111
},
"addressDetail": {
"countryCode": "TR",
"city": "Niğde",
"district": "Merkez",
"town": "",
"state": "",
"address": "Kültür Mah 123 Sk. No 55",
"postalCode": ""
},
"isDefault": 1,
"company": {
"companyName": "",
"taxNumber": "",
"taxOffice": ""
}
},
"invoiceAddress": {
"addressName": "Otomatik Oluşturulan",
"invoiceType": "personal",
"identifier": {
"customerName": "Hatice Özişçi",
"phoneNumber": "",
"identity": "11111111111"
},
"addressDetail": {
"countryCode": "TR",
"city": "Niğde",
"district": "Merkez",
"town": "",
"state": "",
"address": "Kültür Mah 123 Sk. No 55",
"postalCode": ""
},
"isDefault": 1,
"company": {
"companyName": "",
"taxNumber": "",
"taxOffice": ""
}
},
"warehouseId": 1,
"totalProductQty": 4,
"customer": {
"custumerName": "Hatice Kıran",
"custumerEmail": "example@mail.com",
"custumerPhoneNumber": "",
"custumerIdentity": "11111111111"
},
"payment": {
"paymentId": null,
"paymentMethod": "MARKETPLACE",
"paymentStatus": "SUCCESS"
},
"shipment": {
"dispatchStatus": false,
"dispatchDescription": "",
"cargoCompany": "TEX",
"barcodeId": "7260006545259384",
"trackingId": "3035870476411",
"trackingUrl": "https://kargotakip.mngkargo.com.tr/?takipNo=586349659300",
"shippingFee": 0
},
"lines": [
{
"id": 5969779,
"barcodeId": "8682417087434",
"status": "RETURNED",
"qty": "1.00",
"requestedQty": "1.00",
"cancelledQty": 0,
"price": "282.1000",
"currency": "TRY",
"modelId": "15135",
"attributes": [
{
"attributeType": "size",
"attributeValue": "M",
"attributeLabel": "M"
},
{
"attributeType": "color",
"attributeValue": "R02_002",
"attributeLabel": "GriMelanj"
}
],
"lineDescription": "Erkek Dokuma Sporcu Eşofmant Altı 15135, M",
"thumbnail": "https://static-labs.s3.eu-central-1.amazonaws.com/products/1/15135/small/8682417087434_1.JPG"
},
{
"id": 5969783,
"barcodeId": "8682417056102",
"status": "COMPLETED",
"qty": "1.00",
"requestedQty": "1.00",
"cancelledQty": 0,
"price": "282.1000",
"currency": "TRY",
"modelId": "15135",
"attributes": [
{
"attributeType": "size",
"attributeValue": "L",
"attributeLabel": "L"
},
{
"attributeType": "color",
"attributeValue": "R11_001",
"attributeLabel": "Siyah"
}
],
"lineDescription": "Erkek Siyah Dokuma Sporcu Eşofmant Altı 15135, L",
"thumbnail": "https://static-labs.s3.eu-central-1.amazonaws.com/products/1/15135/small/8682417056096_1.JPG"
}
]
}
}