Mağaza API
Mağaza modülünün tüm işlemleri (74) ve veri modelleri (33): adresler, izinler, girdiler, ön koşullar, olaylar ve örnekler.
Satış kanalları, stok, kargo ve siparişler — sepetten kapıya.
Modül kodu retail · 74 işlem · 33 veri modeli · 56 olay. Bir anahtar ya da token, arkasındaki kişinin bu modülde yapabildiğinden fazlasını asla yapamaz; satır düzeyindeki güvenlik uygulamadakiyle birebir aynıdır. Yetki kapsamları: retail (hepsi), retail:read (yalnız okuma) ya da retail:<yetenek>.
Kaynaklar
| Kaynak | Tablo | Listeleme ve okuma | POST | PATCH | DELETE |
|---|---|---|---|---|---|
allocations | allocation | /api/v1/allocations | |||
checkout_lines | checkout_line | /api/v1/checkout_lines | |||
checkouts | checkout | /api/v1/checkouts | retail.create_checkout | ||
collection_items | item_collection_item | /api/v1/collection_items | |||
collections | item_collection | /api/v1/collections | retail.save_collection | retail.delete_collection | |
fulfilment_lines | fulfilment_line | /api/v1/fulfilment_lines | |||
fulfilments | fulfilment | /api/v1/fulfilments | |||
item_collection_channel_listings | item_collection_channel_listing | /api/v1/item_collection_channel_listings | |||
order_discounts | sales_order_discount | /api/v1/order_discounts | |||
order_gift_cards | sales_order_gift_card | /api/v1/order_gift_cards | |||
order_granted_refund_lines | order_granted_refund_line | /api/v1/order_granted_refund_lines | |||
order_granted_refunds | order_granted_refund | /api/v1/order_granted_refunds | |||
order_lines | sales_order_line | /api/v1/order_lines | |||
order_return_lines | order_return_line | /api/v1/order_return_lines | |||
order_returns | order_return | /api/v1/order_returns | |||
orders | sales_order | /api/v1/orders | retail.create_draft_order | retail.update_order | retail.delete_draft_order |
preorder_allocations | preorder_allocation | /api/v1/preorder_allocations | |||
product_listings | item_channel_listing | /api/v1/product_listings | |||
sales_channel_warehouses | channel_warehouse | /api/v1/sales_channel_warehouses | |||
sales_channels | channel | /api/v1/sales_channels | retail.save_channel | retail.delete_channel | |
shipping_method_channel_listings | shipping_method_channel_listing | /api/v1/shipping_method_channel_listings | |||
shipping_method_excluded_items | shipping_method_excluded_item | /api/v1/shipping_method_excluded_items | |||
shipping_method_postal_code_rules | shipping_method_postal_code_rule | /api/v1/shipping_method_postal_code_rules | |||
shipping_methods | shipping_method | /api/v1/shipping_methods | retail.save_shipping_method | retail.delete_shipping_method | |
shipping_zone_channels | shipping_zone_channel | /api/v1/shipping_zone_channels | |||
shipping_zones | shipping_zone | /api/v1/shipping_zones | retail.save_shipping_zone | retail.delete_shipping_zone | |
stock_movements | stock_movement | /api/v1/stock_movements | |||
stock_reservations | stock_reservation | /api/v1/stock_reservations | |||
stocks | stock | /api/v1/stocks | |||
variant_listings | item_variant_channel_listing | /api/v1/variant_listings | |||
variant_preorders | variant_preorder | /api/v1/variant_preorders | |||
warehouse_shipping_zones | warehouse_shipping_zone | /api/v1/warehouse_shipping_zones | |||
warehouses | warehouse | /api/v1/warehouses | retail.create_warehouse | retail.update_warehouse | retail.delete_warehouse |
Listeler limit (en çok 200), cursor, order (ör. -created_at), fields ve q alır; diğer her sorgu parametresi bir sütun süzgecidir: ?status=paid, ?total[gte]=100, ?id[in]=a,b, ?x=null.
İşlemler
| İşlem | Gereken izin | Ne yapar |
|---|---|---|
retail.adjust_stock | retail:write | Stoğu düzelt |
retail.approve_fulfilment | retail:approve | Gönderiyi onayla |
retail.attach_gift_card | retail:write | Hediye kartıyla öde |
retail.bulk_update_prices | retail:write | Toplu fiyatla |
retail.cancel_fulfilment | retail:handle | Gönderiyi iptal et |
retail.cancel_order | retail:manage | Siparişi iptal et |
retail.close_return | retail:handle | İadeyi kapat |
retail.complete_checkout | retail:write | Siparişi ver |
retail.complete_draft_order | retail:write | Taslak siparişi ver |
retail.confirm_gift_card | retail:write | Hediye kartı kullanımını onayla |
retail.confirm_order | retail:approve | Siparişi onayla |
retail.create_checkout | retail:write | Sepet aç |
retail.create_draft_order | retail:write | Taslak sipariş başlat |
retail.create_warehouse | retail:manage | Depo aç |
retail.delete_channel | retail:delete | Kanalı sil |
retail.delete_collection | retail:delete | Koleksiyonu sil |
retail.delete_draft_order | retail:delete | Taslak siparişi at |
retail.delete_draft_orders | retail:delete | Taslakları at |
retail.delete_shipping_method | retail:delete | Teslimat ücretini sil |
retail.delete_shipping_zone | retail:delete | Kargo bölgesini sil |
retail.delete_warehouse | retail:delete | Depoyu kapat |
retail.detach_gift_card | retail:write | Hediye kartını çıkar |
retail.duplicate_order | retail:write | Yeniden sipariş ver |
retail.end_preorder | retail:manage | Ön siparişi bitir |
retail.expire_order | retail:handle | Onaylanmamış siparişi düşür |
retail.expire_stock_reservations | retail:handle | Süresi dolan stok ayırmalarını bırak |
retail.fulfil_order | retail:handle | Siparişi gönder |
retail.grant_refund | retail:manage | İade tutarı onayla |
retail.import_channel_order | retail:handle | Pazaryeri siparişini içe al |
retail.inspect_return | retail:handle | İadeyi incele |
retail.open_shop | retail:manage | Mağazayı aç |
retail.raise_abandoned_checkouts | retail:handle | Terk edilen sepetleri işaretle |
retail.receive_return | retail:handle | İadeyi teslim al |
retail.refresh_collection | retail:write | Akıllı koleksiyonu yenile |
retail.reject_return | retail:handle | İadeyi reddet |
retail.remove_order_discount | retail:write | Personel indirimini kaldır |
retail.renew_checkout_reservation | retail:write | Ödeme için stoğu ayır |
retail.request_return | retail:handle | İade aç |
retail.return_products | retail:handle | İade kaydet |
retail.save_channel | retail:manage | Satış kanalını kaydet |
retail.save_collection | retail:write | Koleksiyonu kaydet |
retail.save_shipping_method | retail:manage | Teslimat ücretini kaydet |
retail.save_shipping_zone | retail:manage | Kargo bölgesini kaydet |
retail.set_channel_active | retail:manage | Kanalı aç veya kapat |
retail.set_channel_warehouses | retail:manage | Kanalın depolarını seç |
retail.set_checkout_delivery | retail:write | Teslimatı seç |
retail.set_checkout_lines | retail:write | Sepeti değiştir |
retail.set_collection_items | retail:write | Koleksiyonun içeriğini seç |
retail.set_collection_rule | retail:write | Koleksiyonu bir kuralla doldur |
retail.set_item_listing | retail:write | Kanalda listele |
retail.set_order_discount | retail:write | Personel indirimi ver |
retail.set_order_lines | retail:write | Siparişin satırlarını değiştir |
retail.set_order_voucher | retail:write | Kupon uygula |
retail.set_postal_code_rules | retail:manage | Posta kodu kurallarını belirle |
retail.set_preorder | retail:manage | Ön siparişle sat |
retail.set_shipping_excluded_items | retail:manage | Ürünleri teslimat ücretinden hariç tut |
retail.set_shipping_price | retail:manage | Teslimat ücretini kanalda fiyatla |
retail.set_stock | retail:write | Stok say |
retail.set_stock_policy | retail:manage | Güvenlik stoğu ayır |
retail.set_tracking | retail:handle | Takip numarası gir |
retail.set_variant_price | retail:write | Varyantı kanalda fiyatla |
retail.set_warehouse_zones | retail:manage | Deponun hizmet verdiği bölgeleri seç |
retail.site_cart_add | retail:write | Sepete ekle (site) |
retail.site_cart_claim | retail:write | Giriş yapınca sepetimi koru |
retail.site_cart_set | retail:write | Sepet satırını değiştir (site) |
retail.site_checkout_delivery | retail:write | Teslimat seç (site) |
retail.site_checkout_details | retail:write | Ödeme bilgilerini gir (site) |
retail.site_checkout_voucher | retail:write | İndirim kodu kullan (site) |
retail.site_place_order | retail:write | Sipariş ver (site) |
retail.sync_charge_status | retail:write | Siparişin ödeme durumunu güncelle |
retail.transfer_stock | retail:write | Depolar arasında stok taşı |
retail.update_order | retail:write | Siparişi düzenle |
retail.update_order_metadata | retail:write | Sipariş ek bilgilerini düzenle |
retail.update_warehouse | retail:manage | Depoyu düzenle |
retail.adjust_stock
Stoğu düzelt — Bir depoya bir miktar mal girişi veya çıkışı; defter için bir nedenle.
Gereken izin retail:write · veriyi değiştirir
https://app.getera.io/api/v1/stocks/actions/adjust_stock- Asıl adres:
POST /api/v1/actions/retail.adjust_stock
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
warehouseId | uuid | evet | Depo · kimliği: warehouse |
itemVariantId | uuid | evet | Varyant · kimliği: item_variant |
delta | number | evet | Değiştir · Pozitif giriş, negatif çıkış. |
reason | string (enum) | evet | Neden · İzin verilen değerler: count, received, damaged, correction |
note | string | Not · en çok 500 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
no_change | Değişiklik sıfırdan farklı bir tam sayı olmalı. |
warehouse_not_found | Depo bulunmalı. |
variant_not_found | Varyant bulunmalı. |
below_allocated | Raf, siparişlerin ayırdığının altına düşemez. |
Yayımladığı olaylar: retail.stock_changed, retail.stock_low
Neye yazar: stock (upsert) — Moves the count by the amount, in the statement; stock_movement (insert) — Records the movement and its reason
curl -X POST https://app.getera.io/api/v1/stocks/actions/adjust_stock \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"warehouseId":"WAREHOUSE_ID","itemVariantId":"ITEM_VARIANT_ID","delta":1,"reason":"count"}'{
"ok": true,
"result": "…",
"events": [
"retail.stock_changed",
"retail.stock_low"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.stocks.adjustStock({
warehouseId: "WAREHOUSE_ID",
itemVariantId: "ITEM_VARIANT_ID",
delta: 1,
reason: "count"
})era stocks adjust_stock \
--warehouse-id "WAREHOUSE_ID" \
--item-variant-id "ITEM_VARIANT_ID" \
--delta 1 \
--reason "count"{
"name": "era__retail__adjust_stock",
"arguments": {
"warehouseId": "WAREHOUSE_ID",
"itemVariantId": "ITEM_VARIANT_ID",
"delta": 1,
"reason": "count"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 no_change, warehouse_not_found, variant_not_found, below_allocated · 429 çok sık istek
retail.approve_fulfilment
Gönderiyi onayla — Yalnızca mağaza gönderileri otomatik onaylamıyorsa gerekir.
Gereken izin retail:approve · veriyi değiştirir
https://app.getera.io/api/v1/fulfilments/{id}/actions/approve_fulfilment- Asıl adres:
POST /api/v1/actions/retail.approve_fulfilment
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Gönderi · kimliği: fulfilment |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Gönderi bulunmalı. |
fulfilment_not_awaiting | Yalnızca onay bekleyen bir gönderi onaylanabilir. |
Yayımladığı olaylar: retail.fulfilment_approved
Neye yazar: fulfilment (update) — Marks it fulfilled
curl -X POST https://app.getera.io/api/v1/fulfilments/FULFILMENT_ID/actions/approve_fulfilment \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": [
"retail.fulfilment_approved"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.fulfilments.approveFulfilment("FULFILMENT_ID")era fulfilments approve_fulfilment FULFILMENT_ID{
"name": "era__retail__approve_fulfilment",
"arguments": {
"id": "FULFILMENT_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:approve izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, fulfilment_not_awaiting · 429 çok sık istek
retail.attach_gift_card
Hediye kartıyla öde — Harcamayı bekliyor olarak kaydeder ve hediye kartından düşülmesini ister; ret olursa başarısız işaretlenir ve tutar geri konur.
Gereken izin retail:write · siler ya da geri alınamaz
https://app.getera.io/api/v1/orders/{id}/actions/attach_gift_card- Asıl adres:
POST /api/v1/actions/retail.attach_gift_card
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Sipariş · kimliği: sales_order |
code | string | Hediye kartı kodu · en çok 64 | |
giftCardId | uuid | Hediye kartı (zaten kullanılmış) | |
giftCardEventId | uuid | Kullanım | |
codeTail | string | Son dört hane · en çok 16 | |
amount | number (money) | evet | Tutar · en az 1 |
idempotencyKey | string | Tekrar önleme anahtarı · en çok 512 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Sipariş bulunmalı. |
order_not_editable | Yalnızca taslak veya onaylanmamış bir sipariş hediye kartı alır. |
gift_card_not_on_order | Kart, koduyla ya da zaten kullanılmış bir kart olarak belirtilir. |
gift_card_exceeds_due | Hediye kartı, kalan ödeme tutarından fazlasını ödeyemez. |
Yayımladığı olaylar: retail.gift_card_requested, retail.gift_card_applied
Neye yazar: sales_order_gift_card (insert) — Records the spend (pending until redeemed); sales_order_gift_card (delete) — A failed try of the same card gives way to the new one; sales_order (update) — Lowers the amount due
curl -X POST https://app.getera.io/api/v1/orders/ORDER_ID/actions/attach_gift_card \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"amount":1}'{
"ok": true,
"result": "…",
"events": [
"retail.gift_card_requested",
"retail.gift_card_applied"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.orders.attachGiftCard("ORDER_ID", {
amount: 1
})era orders attach_gift_card ORDER_ID \
--amount 1{
"name": "era__retail__attach_gift_card",
"arguments": {
"id": "ORDER_ID",
"amount": 1
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, order_not_editable, gift_card_not_on_order, gift_card_exceeds_due · 429 çok sık istek
retail.bulk_update_prices
Toplu fiyatla — Bir kanaldaki birçok varyanta tek bir kural — belirle, tutar veya yüzde olarak artır ya da azalt.
Gereken izin retail:write · veriyi değiştirir
https://app.getera.io/api/v1/variant_listings/actions/bulk_update_prices- Asıl adres:
POST /api/v1/actions/retail.bulk_update_prices
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
channelId | uuid | evet | Kanal · kimliği: channel |
itemVariantIds | object / array | evet | Varyantlar |
mode | string (enum) | evet | Değiştir · İzin verilen değerler: set, increase_percent, decrease_percent, increase_amount, decrease_amount |
value | number | evet | Değer · en az 0 |
field | string (enum) | Hangi rakam · İzin verilen değerler: price, cost |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
channel_not_found | Kanal bulunmalı. |
no_variants | En az bir varyant seçilmeli. |
variant_not_found | Her varyant bulunmalı. |
negative_price | Hiçbir varyant sıfırın altına düşemez; tek bir ret tüm işlemi durdurur. |
Yayımladığı olaylar: retail.channel_price_changed
Neye yazar: item_variant_channel_listing (upsert) — Writes each new channel price or cost
curl -X POST https://app.getera.io/api/v1/variant_listings/actions/bulk_update_prices \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"channelId":"CHANNEL_ID","itemVariantIds":{},"mode":"set","value":1}'{
"ok": true,
"result": "…",
"events": [
"retail.channel_price_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.variantListings.bulkUpdatePrices({
channelId: "CHANNEL_ID",
itemVariantIds: {},
mode: "set",
value: 1
})era variant_listings bulk_update_prices --data '{"channelId":"CHANNEL_ID","itemVariantIds":{},"mode":"set","value":1}'{
"name": "era__retail__bulk_update_prices",
"arguments": {
"channelId": "CHANNEL_ID",
"itemVariantIds": {},
"mode": "set",
"value": 1
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 channel_not_found, no_variants, variant_not_found, negative_price · 429 çok sık istek
retail.cancel_fulfilment
Gönderiyi iptal et — Mallar çıktıkları rafa geri döner.
Gereken izin retail:handle · siler ya da geri alınamaz · Era çalıştırırken bir kişiye onaylatır
https://app.getera.io/api/v1/fulfilments/{id}/actions/cancel_fulfilment- Asıl adres:
POST /api/v1/actions/retail.cancel_fulfilment
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Gönderi · kimliği: fulfilment |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Gönderi bulunmalı. |
fulfilment_not_cancellable | İade edilmiş veya iptal edilmiş bir gönderi yeniden iptal edilemez. |
Yayımladığı olaylar: retail.fulfilment_canceled
Neye yazar: fulfilment (update) — Marks it cancelled; stock (update) — Puts the goods back; sales_order_line (update) — Lowers quantity_fulfilled
curl -X POST https://app.getera.io/api/v1/fulfilments/FULFILMENT_ID/actions/cancel_fulfilment \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": [
"retail.fulfilment_canceled"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.fulfilments.cancelFulfilment("FULFILMENT_ID")era fulfilments cancel_fulfilment FULFILMENT_ID{
"name": "era__retail__cancel_fulfilment",
"arguments": {
"id": "FULFILMENT_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:handle izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, fulfilment_not_cancellable · 429 çok sık istek
retail.cancel_order
Siparişi iptal et — Tuttuğu her şeyi serbest bırakır. Mallar raftan hiç çıkmadı.
Gereken izin retail:manage · siler ya da geri alınamaz · Era çalıştırırken bir kişiye onaylatır
https://app.getera.io/api/v1/orders/{id}/actions/cancel_order- Asıl adres:
POST /api/v1/actions/retail.cancel_order
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Sipariş · kimliği: sales_order |
reason | string | Neden · en çok 500 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Sipariş bulunmalı. |
order_not_cancellable | Tamamlanmış, iptal edilmiş veya süresi dolmuş bir sipariş iptal edilemez. |
order_has_fulfilments | Önce devam eden gönderiler iptal edilmeli. |
gift_card_pending | Sipariş iptal edilmeden önce işlenmekte olan hediye kartı ödemesinin sonucu beklenir. |
Yayımladığı olaylar: retail.order_canceled, retail.gift_card_removed, retail.customer_notification_requested
Neye yazar: sales_order (update) — Marks it cancelled; allocation (delete) — Releases the stock it held; stock (update) — Lowers the allocated count; sales_order_gift_card (delete) — Gives every gift card back (gift_cards refunds it, a reaction)
curl -X POST https://app.getera.io/api/v1/orders/ORDER_ID/actions/cancel_order \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"reason":"Reason"}'{
"ok": true,
"result": "…",
"events": [
"retail.order_canceled",
"retail.gift_card_removed",
"retail.customer_notification_requested"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.orders.cancelOrder("ORDER_ID", {
reason: "Reason"
})era orders cancel_order ORDER_ID \
--reason "Reason"{
"name": "era__retail__cancel_order",
"arguments": {
"id": "ORDER_ID",
"reason": "Reason"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, order_not_cancellable, order_has_fulfilments, gift_card_pending · 429 çok sık istek
retail.close_return
İadeyi kapat — Bu iade için başka işlem yapılmayacak.
Gereken izin retail:handle · veriyi değiştirir
https://app.getera.io/api/v1/order_returns/{id}/actions/close_return- Asıl adres:
POST /api/v1/actions/retail.close_return
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · İade · kimliği: order_return |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
return_not_found | İade bulunmalı. |
return_not_open | Yalnızca teslim alınmış veya incelenmiş bir iade kapatılabilir. |
Yayımladığı olaylar: retail.return_closed
Neye yazar: order_return (update) — Marks it closed
curl -X POST https://app.getera.io/api/v1/order_returns/ORDER_RETURN_ID/actions/close_return \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": [
"retail.return_closed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.orderReturns.closeReturn("ORDER_RETURN_ID")era order_returns close_return ORDER_RETURN_ID{
"name": "era__retail__close_return",
"arguments": {
"id": "ORDER_RETURN_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:handle izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 return_not_found, return_not_open · 429 çok sık istek
retail.complete_checkout
Siparişi ver — Sepeti siparişe çevirir, stok ayırır ve sepeti kapatır — bir kez.
Gereken izin retail:write · siler ya da geri alınamaz
https://app.getera.io/api/v1/orders/actions/complete_checkout- Asıl adres:
POST /api/v1/actions/retail.complete_checkout
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
token | uuid | evet | Sepet |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Sepet bulunmalı. |
checkout_completing | Çift gönderim kilidi: bir sepet bir sipariş olur. |
checkout_empty | Boş bir sepet sipariş değildir. |
prices_stale | Çok önce hesaplanmış bir fiyat yeniden hesaplanmalı. |
order_not_paid | Kanal ödenmemiş siparişlere izin vermedikçe ödenmiş olmalı. |
shipping_address_missing | Gönderilecek bir şeyin gönderileceği bir yer olmalı. |
insufficient_stock | Takip edilen her satır karşılanabilmeli; yoksa hiçbiri alınmaz. |
voucher_not_applicable | Sepetteki kupon, sipariş edilen ürünlere artık uygulanamıyor. |
voucher_usage_exceeded | Sepetteki kuponun kullanım hakkı sipariş verilmeden önce doldu. |
Yayımladığı olaylar: retail.order_placed, retail.customer_notification_requested, retail.stock_low, retail.order_discounts_applied
Neye yazar: sales_order (insert) — Writes the order; sales_order_line (insert) — Writes its lines, frozen; allocation (insert) — Promises stock to the order; stock (update) — Raises the allocated count; stock_reservation (update) — Commits the basket hold into the order allocation; checkout (delete) — Closes the basket
curl -X POST https://app.getera.io/api/v1/orders/actions/complete_checkout \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"token":"TOKEN_ID"}'{
"ok": true,
"result": "…",
"events": [
"retail.order_placed",
"retail.customer_notification_requested",
"retail.stock_low",
"retail.order_discounts_applied"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.orders.completeCheckout({
token: "TOKEN_ID"
})era orders complete_checkout \
--token "TOKEN_ID"{
"name": "era__retail__complete_checkout",
"arguments": {
"token": "TOKEN_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, checkout_completing, checkout_empty, prices_stale, order_not_paid, shipping_address_missing, insufficient_stock, voucher_not_applicable, voucher_usage_exceeded · 429 çok sık istek
retail.complete_draft_order
Taslak siparişi ver — Stok ayırır ve taslağı sipariş sürecine taşır.
Gereken izin retail:write · veriyi değiştirir
https://app.getera.io/api/v1/orders/{id}/actions/complete_draft_order- Asıl adres:
POST /api/v1/actions/retail.complete_draft_order
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Sipariş · kimliği: sales_order |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Sipariş bulunmalı. |
not_a_draft | Yalnızca taslak verilebilir. |
order_empty | Satırı olmayan bir taslak sipariş değildir. |
gift_card_pending | Taslak verilmeden önce işlenmekte olan hediye kartı ödemesinin sonucu beklenir. |
shipping_address_missing | Gönderilecek bir şeyin gönderileceği bir yer olmalı. |
insufficient_stock | Takip edilen her satır karşılanabilmeli; yoksa hiçbiri alınmaz. |
voucher_not_found | Taslaktaki kupon hâlâ bulunmalı. |
voucher_not_applicable | Taslaktaki kupon hâlâ geçerli olmalı. |
voucher_usage_exceeded | Taslaktaki kupon bu arada tükenmemiş olmalı. |
Yayımladığı olaylar: retail.order_placed, retail.order_discounts_applied, retail.customer_notification_requested, retail.stock_low
Neye yazar: sales_order (update) — Moves it out of draft; sales_order_line (update) — Freezes the discount snapshot; sales_order_discount (insert) — Records what was applied; allocation (insert) — Promises stock to the order; preorder_allocation (insert) — Promises preorders; stock (update) — Raises the allocated count
curl -X POST https://app.getera.io/api/v1/orders/ORDER_ID/actions/complete_draft_order \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": [
"retail.order_placed",
"retail.order_discounts_applied",
"retail.customer_notification_requested",
"retail.stock_low"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.orders.completeDraftOrder("ORDER_ID")era orders complete_draft_order ORDER_ID{
"name": "era__retail__complete_draft_order",
"arguments": {
"id": "ORDER_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, not_a_draft, order_empty, gift_card_pending, shipping_address_missing, insufficient_stock, voucher_not_found, voucher_not_applicable, voucher_usage_exceeded · 429 çok sık istek
retail.confirm_gift_card
Hediye kartı kullanımını onayla — Otomatik: kart kullanıldı, siparişteki bekleyen satır uygulanır.
Gereken izin retail:write · veriyi değiştirir
403 machine_only).https://app.getera.io/api/v1/order_gift_cards/{id}/actions/confirm_gift_card- Asıl adres:
POST /api/v1/actions/retail.confirm_gift_card
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Siparişteki hediye kartı · kimliği: sales_order_gift_card |
giftCardId | uuid | evet | Hediye kartı |
giftCardEventId | uuid | Kullanım |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
gift_card_not_on_order | Hediye kartı siparişte olmalı. |
Yayımladığı olaylar: retail.gift_card_applied
Neye yazar: sales_order_gift_card (update) — Applies the pending row
Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 gift_card_not_on_order · 429 çok sık istek
retail.confirm_order
Siparişi onayla — Yalnızca kanal otomatik onaylamıyorsa var olan adım.
Gereken izin retail:approve · veriyi değiştirir
https://app.getera.io/api/v1/orders/{id}/actions/confirm_order- Asıl adres:
POST /api/v1/actions/retail.confirm_order
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Sipariş · kimliği: sales_order |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Sipariş bulunmalı. |
order_not_unconfirmed | Yalnızca onaylanmamış bir sipariş onaylanabilir. |
Yayımladığı olaylar: retail.order_confirmed
Neye yazar: sales_order (update) — Moves it to unfulfilled
curl -X POST https://app.getera.io/api/v1/orders/ORDER_ID/actions/confirm_order \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": [
"retail.order_confirmed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.orders.confirmOrder("ORDER_ID")era orders confirm_order ORDER_ID{
"name": "era__retail__confirm_order",
"arguments": {
"id": "ORDER_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:approve izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, order_not_unconfirmed · 429 çok sık istek
retail.create_checkout
Sepet aç — Bir kanalda, bir müşteri veya misafir için sepet.
Gereken izin retail:write · veriyi değiştirir
https://app.getera.io/api/v1/checkouts/actions/create_checkout- REST kısayolu:
POST /api/v1/checkouts - Asıl adres:
POST /api/v1/actions/retail.create_checkout
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
channelId | uuid | evet | Kanal · kimliği: channel |
customerId | uuid | Müşteri · kimliği: customer | |
email | E-posta | ||
lines | object / array | Kalemler |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
channel_not_found | Kanal bulunmalı. |
channel_closed | Kapalı bir kanal sepet almaz. |
malformed_lines | Her satır bir varyant ve miktar gerektirir. |
variant_not_found | Her varyant bulunmalı. |
variant_not_priced | Bu kanalda fiyatı olmayan bir varyant burada satılamaz. |
reservation_stock_unavailable | Stok takibi yapılan her ürün on beş dakikalığına ayrılabilmeli; yeterli stok yok. |
gift_line_locked | Kampanyanın hediye satırı elle düzenlenemez. |
Yayımladığı olaylar: retail.checkout_created
Neye yazar: checkout (insert) — Opens the basket; checkout_line (upsert) — Writes its lines; stock_reservation (upsert) — Holds tracked stock for fifteen minutes
curl -X POST https://app.getera.io/api/v1/checkouts/actions/create_checkout \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"channelId":"CHANNEL_ID"}'{
"ok": true,
"result": "…",
"events": [
"retail.checkout_created"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.checkouts.create({
channelId: "CHANNEL_ID"
})era checkouts create \
--channel-id "CHANNEL_ID"{
"name": "era__retail__create_checkout",
"arguments": {
"channelId": "CHANNEL_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 channel_not_found, channel_closed, malformed_lines, variant_not_found, variant_not_priced, reservation_stock_unavailable, gift_line_locked · 429 çok sık istek
retail.create_draft_order
Taslak sipariş başlat — Mağaza çalışanının sepeti: henüz kimsenin vermediği bir sipariş.
Gereken izin retail:write · veriyi değiştirir
https://app.getera.io/api/v1/orders/actions/create_draft_order- REST kısayolu:
POST /api/v1/orders - Asıl adres:
POST /api/v1/actions/retail.create_draft_order
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
channelId | uuid | evet | Kanal · kimliği: channel |
customerId | uuid | Müşteri · kimliği: customer | |
email | E-posta | ||
customerNote | string | Not · en çok 2000 | |
billingAddressId | uuid | Fatura adresi · kimliği: address | |
shippingAddressId | uuid | Teslimat adresi · kimliği: address | |
fulfilmentMethod | string (enum) | Teslimat · İzin verilen değerler: shipping, pickup |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
channel_not_found | Kanal bulunmalı. |
channel_closed | Kapalı bir kanal sipariş almaz. |
Yayımladığı olaylar: retail.draft_order_created
Neye yazar: sales_order (insert) — Writes the draft
curl -X POST https://app.getera.io/api/v1/orders/actions/create_draft_order \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"channelId":"CHANNEL_ID"}'{
"ok": true,
"result": "…",
"events": [
"retail.draft_order_created"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.orders.create({
channelId: "CHANNEL_ID"
})era orders create \
--channel-id "CHANNEL_ID"{
"name": "era__retail__create_draft_order",
"arguments": {
"channelId": "CHANNEL_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 channel_not_found, channel_closed · 429 çok sık istek
retail.create_warehouse
Depo aç — Stoğun tutulduğu ve siparişlerin gönderildiği bir yer.
Gereken izin retail:manage · veriyi değiştirir
https://app.getera.io/api/v1/warehouses/actions/create_warehouse- REST kısayolu:
POST /api/v1/warehouses - Asıl adres:
POST /api/v1/actions/retail.create_warehouse
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
name | string | evet | Ad · en çok 250 |
slug | string | Adres · en çok 255 | |
addressId | uuid | Kayıtlı adres · kimliği: address | |
streetAddress1 | string | Sokak · en çok 250 | |
streetAddress2 | string | Sokak (ikinci satır) · en çok 250 | |
cityArea | string | İlçe · en çok 120 | |
city | string | Şehir · en çok 120 | |
countryArea | string | Bölge · en çok 120 | |
postalCode | string | Posta kodu · en çok 32 | |
country | string | Ülke · en çok 2 | |
phone | phone | Telefon | |
email | E-posta | ||
clickAndCollectOption | string (enum) | Koleksiyon · İzin verilen değerler: disabled, local, all | |
isPrivate | boolean | Müşterilerden gizli |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
invalid_name | Ad kullanılabilir bir adres üretmeli. |
slug_taken | Adres bu çalışma alanında boşta olmalı. |
address_not_found | Depo adressiz olamaz. |
Yayımladığı olaylar: retail.warehouse_saved
Neye yazar: warehouse (insert) — Creates the warehouse
curl -X POST https://app.getera.io/api/v1/warehouses/actions/create_warehouse \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"name":"Name"}'{
"ok": true,
"result": "…",
"events": [
"retail.warehouse_saved"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.warehouses.create({
name: "Name"
})era warehouses create \
--name "Name"{
"name": "era__retail__create_warehouse",
"arguments": {
"name": "Name"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 invalid_name, slug_taken, address_not_found · 429 çok sık istek
retail.delete_channel
Kanalı sil — Yalnızca hiç sipariş veya sepet almamış bir kanal; satış yapmış olan kapatılır.
Gereken izin retail:delete · siler ya da geri alınamaz · Era çalıştırırken bir kişiye onaylatır
https://app.getera.io/api/v1/sales_channels/{id}/actions/delete_channel- REST kısayolu:
DELETE /api/v1/sales_channels/{id} - Asıl adres:
POST /api/v1/actions/retail.delete_channel
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Kanal · kimliği: channel |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
channel_not_found | Kanal bulunmalı. |
channel_in_use | Siparişi veya sepeti olan bir kanal kalır; bunun yerine kapatın. |
Yayımladığı olaylar: retail.channel_deleted
Neye yazar: channel (delete) — Removes the channel and its listings
curl -X POST https://app.getera.io/api/v1/sales_channels/SALES_CHANNEL_ID/actions/delete_channel \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": [
"retail.channel_deleted"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.salesChannels.deleteChannel("SALES_CHANNEL_ID")era sales_channels delete_channel SALES_CHANNEL_ID{
"name": "era__retail__delete_channel",
"arguments": {
"id": "SALES_CHANNEL_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:delete izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 channel_not_found, channel_in_use · 429 çok sık istek
retail.delete_collection
Koleksiyonu sil — Liste gider; içindeki ürünler katalogdadır ve kalır.
Gereken izin retail:delete · siler ya da geri alınamaz · Era çalıştırırken bir kişiye onaylatır
https://app.getera.io/api/v1/collections/{id}/actions/delete_collection- REST kısayolu:
DELETE /api/v1/collections/{id} - Asıl adres:
POST /api/v1/actions/retail.delete_collection
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Koleksiyon · kimliği: item_collection |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Tahsilat bulunmalı. |
Yayımladığı olaylar: retail.collection_deleted
Neye yazar: item_collection (delete) — Removes the collection
curl -X POST https://app.getera.io/api/v1/collections/COLLECTION_ID/actions/delete_collection \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": [
"retail.collection_deleted"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.collections.deleteCollection("COLLECTION_ID")era collections delete_collection COLLECTION_ID{
"name": "era__retail__delete_collection",
"arguments": {
"id": "COLLECTION_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:delete izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found · 429 çok sık istek
retail.delete_draft_order
Taslak siparişi at — Bir sipariş taslağını yalnızca verilmeden önce kaldırır.
Gereken izin retail:delete · siler ya da geri alınamaz
https://app.getera.io/api/v1/orders/{id}/actions/delete_draft_order- REST kısayolu:
DELETE /api/v1/orders/{id} - Asıl adres:
POST /api/v1/actions/retail.delete_draft_order
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Sipariş · kimliği: sales_order |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Sipariş bulunmalı. |
not_a_draft | Verilmiş siparişler silinmez, iptal edilir. |
draft_has_gift_cards | Taslakta harcanan bir hediye kartı önce çıkarılır. |
Yayımladığı olaylar: retail.draft_order_deleted
Neye yazar: sales_order (delete) — Removes the draft and its lines
curl -X POST https://app.getera.io/api/v1/orders/ORDER_ID/actions/delete_draft_order \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": [
"retail.draft_order_deleted"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.orders.deleteDraftOrder("ORDER_ID")era orders delete_draft_order ORDER_ID{
"name": "era__retail__delete_draft_order",
"arguments": {
"id": "ORDER_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:delete izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, not_a_draft, draft_has_gift_cards · 429 çok sık istek
retail.delete_draft_orders
Taslakları at — Sipariş listesinden birden çok taslak tek seferde. Hepsi ya da hiçbiri.
Gereken izin retail:delete · siler ya da geri alınamaz · Era çalıştırırken bir kişiye onaylatır
https://app.getera.io/api/v1/orders/actions/delete_draft_orders- Asıl adres:
POST /api/v1/actions/retail.delete_draft_orders
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
ids | object / array | evet | Taslaklar |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
no_orders | En az bir taslak seçilmeli. |
not_a_draft | Her biri taslak olmalı. |
draft_has_gift_cards | Hediye kartıyla ödeme yapılmış bir taslak, kart çıkarılana kadar kalır. |
Yayımladığı olaylar: retail.draft_order_deleted
Neye yazar: sales_order (delete) — Removes the drafts
curl -X POST https://app.getera.io/api/v1/orders/actions/delete_draft_orders \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"ids":{}}'{
"ok": true,
"result": "…",
"events": [
"retail.draft_order_deleted"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.orders.deleteDraftOrders({
ids: {}
})era orders delete_draft_orders --data '{"ids":{}}'{
"name": "era__retail__delete_draft_orders",
"arguments": {
"ids": {}
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:delete izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 no_orders, not_a_draft, draft_has_gift_cards · 429 çok sık istek
retail.delete_shipping_method
Teslimat ücretini sil — Geçmiş siparişler satıldıkları adı korur.
Gereken izin retail:delete · siler ya da geri alınamaz · Era çalıştırırken bir kişiye onaylatır
https://app.getera.io/api/v1/shipping_methods/{id}/actions/delete_shipping_method- REST kısayolu:
DELETE /api/v1/shipping_methods/{id} - Asıl adres:
POST /api/v1/actions/retail.delete_shipping_method
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Oran · kimliği: shipping_method |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Oran bulunmalı. |
Yayımladığı olaylar: retail.shipping_method_deleted
Neye yazar: shipping_method (delete) — Removes the rate
curl -X POST https://app.getera.io/api/v1/shipping_methods/SHIPPING_METHOD_ID/actions/delete_shipping_method \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": [
"retail.shipping_method_deleted"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.shippingMethods.deleteShippingMethod("SHIPPING_METHOD_ID")era shipping_methods delete_shipping_method SHIPPING_METHOD_ID{
"name": "era__retail__delete_shipping_method",
"arguments": {
"id": "SHIPPING_METHOD_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:delete izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found · 429 çok sık istek
retail.delete_shipping_zone
Kargo bölgesini sil — Yalnızca boş bir bölge silinebilir; ücretleri siparişleri ücretsiz bırakırdı.
Gereken izin retail:delete · siler ya da geri alınamaz · Era çalıştırırken bir kişiye onaylatır
https://app.getera.io/api/v1/shipping_zones/{id}/actions/delete_shipping_zone- REST kısayolu:
DELETE /api/v1/shipping_zones/{id} - Asıl adres:
POST /api/v1/actions/retail.delete_shipping_zone
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Bölge · kimliği: shipping_zone |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Bölge bulunmalı. |
zone_has_methods | Ücret içeren bir bölge silinemez. |
Yayımladığı olaylar: retail.shipping_zone_deleted
Neye yazar: shipping_zone (delete) — Removes the zone
curl -X POST https://app.getera.io/api/v1/shipping_zones/SHIPPING_ZONE_ID/actions/delete_shipping_zone \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": [
"retail.shipping_zone_deleted"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.shippingZones.deleteShippingZone("SHIPPING_ZONE_ID")era shipping_zones delete_shipping_zone SHIPPING_ZONE_ID{
"name": "era__retail__delete_shipping_zone",
"arguments": {
"id": "SHIPPING_ZONE_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:delete izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, zone_has_methods · 429 çok sık istek
retail.delete_warehouse
Depoyu kapat — Depo ve adresi birlikte kaldırılır.
Gereken izin retail:delete · siler ya da geri alınamaz · Era çalıştırırken bir kişiye onaylatır
https://app.getera.io/api/v1/warehouses/{id}/actions/delete_warehouse- REST kısayolu:
DELETE /api/v1/warehouses/{id} - Asıl adres:
POST /api/v1/actions/retail.delete_warehouse
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Depo · kimliği: warehouse |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Depo bulunmalı. |
warehouse_has_allocations | Önce açık siparişlere ayrılmış stok çözülmeli. |
Yayımladığı olaylar: retail.warehouse_deleted
Neye yazar: warehouse (delete) — Removes the warehouse and its stock rows
curl -X POST https://app.getera.io/api/v1/warehouses/WAREHOUSE_ID/actions/delete_warehouse \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": [
"retail.warehouse_deleted"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.warehouses.deleteWarehouse("WAREHOUSE_ID")era warehouses delete_warehouse WAREHOUSE_ID{
"name": "era__retail__delete_warehouse",
"arguments": {
"id": "WAREHOUSE_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:delete izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, warehouse_has_allocations · 429 çok sık istek
retail.detach_gift_card
Hediye kartını çıkar — Hediye kartını siparişten kaldırır; para karta geri yüklenir.
Gereken izin retail:write · siler ya da geri alınamaz · Era çalıştırırken bir kişiye onaylatır
https://app.getera.io/api/v1/order_gift_cards/{id}/actions/detach_gift_card- Asıl adres:
POST /api/v1/actions/retail.detach_gift_card
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Siparişteki hediye kartı · kimliği: sales_order_gift_card |
failure | string | Kartın reddedilme nedeni (telafi) · en çok 500 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
gift_card_not_on_order | Hediye kartı siparişte olmalı. |
gift_card_pending | Hâlâ kullanılmakta olan bir kart yanıtını bekler. |
order_not_editable | Verilmiş bir sipariş hediye kartlarını korur. |
Yayımladığı olaylar: retail.gift_card_removed
Neye yazar: sales_order_gift_card (delete) — Removes the spend; sales_order_gift_card (update) — Marks a refused redemption failed; sales_order (update) — Raises the amount due again
curl -X POST https://app.getera.io/api/v1/order_gift_cards/ORDER_GIFT_CARD_ID/actions/detach_gift_card \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"failure":"Why the card was refused (compensation)"}'{
"ok": true,
"result": "…",
"events": [
"retail.gift_card_removed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.orderGiftCards.detachGiftCard("ORDER_GIFT_CARD_ID", {
failure: "Why the card was refused (compensation)"
})era order_gift_cards detach_gift_card ORDER_GIFT_CARD_ID \
--failure "Why the card was refused (compensation)"{
"name": "era__retail__detach_gift_card",
"arguments": {
"id": "ORDER_GIFT_CARD_ID",
"failure": "Why the card was refused (compensation)"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 gift_card_not_on_order, gift_card_pending, order_not_editable · 429 çok sık istek
retail.duplicate_order
Yeniden sipariş ver — Aynı müşteri, adresler ve satırlarla, bugünün kanal fiyatlarından yeni bir taslak.
Gereken izin retail:write · veriyi değiştirir
https://app.getera.io/api/v1/orders/{id}/actions/duplicate_order- Asıl adres:
POST /api/v1/actions/retail.duplicate_order
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Sipariş · kimliği: sales_order |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Sipariş bulunmalı. |
channel_closed | Kanalı hâlâ açık olmalı. |
Yayımladığı olaylar: retail.draft_order_created, retail.order_lines_changed, retail.order_discounts_applied
Neye yazar: sales_order (insert) — Writes the new draft; sales_order_line (insert) — Copies the lines at today’s prices; sales_order_discount (insert) — Records what applies to the new draft
curl -X POST https://app.getera.io/api/v1/orders/ORDER_ID/actions/duplicate_order \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": [
"retail.draft_order_created",
"retail.order_lines_changed",
"retail.order_discounts_applied"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.orders.duplicateOrder("ORDER_ID")era orders duplicate_order ORDER_ID{
"name": "era__retail__duplicate_order",
"arguments": {
"id": "ORDER_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, channel_closed · 429 çok sık istek
retail.end_preorder
Ön siparişi bitir — Mallar geldi: her ön sipariş raftaki gerçek bir ayırmaya dönüşür — hepsi ya da hiçbiri.
Gereken izin retail:manage · siler ya da geri alınamaz · Era çalıştırırken bir kişiye onaylatır
https://app.getera.io/api/v1/allocations/actions/end_preorder- Asıl adres:
POST /api/v1/actions/retail.end_preorder
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
itemVariantId | uuid | evet | Varyant · kimliği: item_variant |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
variant_not_found | Varyant bulunmalı. |
not_preorder | Varyant ön siparişte olmalı. |
insufficient_stock | Raftaki stok, ön siparişlere ayrılan miktarı karşılamalı. |
Yayımladığı olaylar: retail.preorder_ended, retail.stock_low
Neye yazar: preorder_allocation (delete) — Releases the preorders; variant_preorder (delete) — Ends the preorder; allocation (insert) — Promises the shelf instead; stock (update) — Raises the allocated count
curl -X POST https://app.getera.io/api/v1/allocations/actions/end_preorder \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"itemVariantId":"ITEM_VARIANT_ID"}'{
"ok": true,
"result": "…",
"events": [
"retail.preorder_ended",
"retail.stock_low"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.allocations.endPreorder({
itemVariantId: "ITEM_VARIANT_ID"
})era allocations end_preorder \
--item-variant-id "ITEM_VARIANT_ID"{
"name": "era__retail__end_preorder",
"arguments": {
"itemVariantId": "ITEM_VARIANT_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 variant_not_found, not_preorder, insufficient_stock · 429 çok sık istek
retail.expire_order
Onaylanmamış siparişi düşür — Otomatik: mağaza taraması, zamanında onaylanmamış siparişi stoğu ve kuponuyla bırakır.
Gereken izin retail:handle · siler ya da geri alınamaz
https://app.getera.io/api/v1/orders/{id}/actions/expire_order- Asıl adres:
POST /api/v1/actions/retail.expire_order
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Sipariş · kimliği: sales_order |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Sipariş bulunmalı. |
order_not_expirable | Yalnızca süre ayarını geçmiş onaylanmamış bir siparişin süresi dolar. |
Yayımladığı olaylar: retail.order_expired
Neye yazar: sales_order (update) — Marks it expired; allocation (delete) — Releases the stock it held; stock (update) — Lowers the allocated count
curl -X POST https://app.getera.io/api/v1/orders/ORDER_ID/actions/expire_order \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": [
"retail.order_expired"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.orders.expireOrder("ORDER_ID")era orders expire_order ORDER_ID{
"name": "era__retail__expire_order",
"arguments": {
"id": "ORDER_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:handle izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, order_not_expirable · 429 çok sık istek
retail.expire_stock_reservations
Süresi dolan stok ayırmalarını bırak — Sistem işlemi: on beş dakikadan eski ödeme stok ayırmalarını serbest bırakır.
Gereken izin retail:handle · veriyi değiştirir
https://app.getera.io/api/v1/stock_reservations/actions/expire_stock_reservations- Asıl adres:
POST /api/v1/actions/retail.expire_stock_reservations
Girdi
Bu işlem girdi almaz.
Yayımladığı olaylar: retail.stock_reservations_expired
Neye yazar: stock_reservation (update) — Marks expired claims released
curl -X POST https://app.getera.io/api/v1/stock_reservations/actions/expire_stock_reservations \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": [
"retail.stock_reservations_expired"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.stockReservations.expireStockReservations()era stock_reservations expire_stock_reservations{
"name": "era__retail__expire_stock_reservations",
"arguments": {}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:handle izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 429 çok sık istek
retail.fulfil_order
Siparişi gönder — Mallar belirli bir raftan çıkar. Sayı gerçekten burada düşer.
Gereken izin retail:handle · veriyi değiştirir
https://app.getera.io/api/v1/orders/{id}/actions/fulfil_order- Asıl adres:
POST /api/v1/actions/retail.fulfil_order
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Sipariş · kimliği: sales_order |
lines | object / array | evet | Kalemler |
trackingNumber | string | Takip numarası · en çok 255 | |
carrier | string | Kargo firması · en çok 120 | |
trackingUrl | string | Takip bağlantısı · en çok 1000 | |
notifyCustomer | boolean | Müşteriye bildir |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Sipariş bulunmalı. |
order_not_fulfillable | Yalnızca açık bir siparişten gönderi yapılabilir. |
preorder_not_fulfillable | Ön siparişteki bir satır ön siparişin bitmesini bekler. |
malformed_lines | Her gönderi satırı bir sipariş satırı ve miktar gerektirir. |
line_not_found | Her satır bu siparişte olmalı. |
over_fulfilment | Sipariş edilenden fazlası çıkamaz. |
insufficient_stock | Belirtilen depoda ürünler gerçekten bulunmalı. |
Yayımladığı olaylar: retail.fulfilment_created, retail.customer_notification_requested, retail.stock_low
Neye yazar: fulfilment (insert) — Records the despatch; fulfilment_line (insert) — Records which shelf each line left from; stock (update) — Lowers the count and the allocation; sales_order_line (update) — Raises quantity_fulfilled; sales_order (update) — Settles the order status
curl -X POST https://app.getera.io/api/v1/orders/ORDER_ID/actions/fulfil_order \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"lines":{}}'{
"ok": true,
"result": "…",
"events": [
"retail.fulfilment_created",
"retail.customer_notification_requested",
"retail.stock_low"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.orders.fulfilOrder("ORDER_ID", {
lines: {}
})era orders fulfil_order ORDER_ID --data '{"lines":{}}'{
"name": "era__retail__fulfil_order",
"arguments": {
"id": "ORDER_ID",
"lines": {}
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:handle izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, order_not_fulfillable, preorder_not_fulfillable, malformed_lines, line_not_found, over_fulfilment, insufficient_stock · 429 çok sık istek
retail.grant_refund
İade tutarı onayla — Mağaza bir tutarı geri vermeyi kabul eder. Para Finans’ta hareket eder.
Gereken izin retail:manage · siler ya da geri alınamaz · Era çalıştırırken bir kişiye onaylatır
https://app.getera.io/api/v1/order_granted_refunds/actions/grant_refund- Asıl adres:
POST /api/v1/actions/retail.grant_refund
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Sipariş · kimliği: sales_order |
amount | number (money) | Tutar · Satırlardan hesaplanması için boş bırakın. · en az 0 | |
lines | object / array | Kalemler | |
includeShipping | boolean | Kargoyu dahil et | |
reason | string | Neden · en çok 500 | |
returnId | uuid | İade · kimliği: order_return |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Sipariş bulunmalı. |
line_not_found | Her satır bu siparişte olmalı. |
no_refund_amount | Onaylanan iadenin bir tutarı olur. |
refund_exceeds_order | Onaylanan iadeler asla siparişin satış tutarını aşmaz. |
return_not_found | Belirtilen iade bulunmalı. |
Yayımladığı olaylar: retail.refund_granted, retail.customer_notification_requested
Neye yazar: order_granted_refund (insert) — Records the grant; order_granted_refund_line (insert) — Records the lines it is for
curl -X POST https://app.getera.io/api/v1/order_granted_refunds/actions/grant_refund \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"id":"SALES_ORDER_ID"}'{
"ok": true,
"result": "…",
"events": [
"retail.refund_granted",
"retail.customer_notification_requested"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.orderGrantedRefunds.grantRefund({
id: "SALES_ORDER_ID"
})era order_granted_refunds grant_refund \
--id "SALES_ORDER_ID"{
"name": "era__retail__grant_refund",
"arguments": {
"id": "SALES_ORDER_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, line_not_found, no_refund_amount, refund_exceeds_order, return_not_found · 429 çok sık istek
retail.import_channel_order
Pazaryeri siparişini içe al — Pazaryerinden ya da başka bir mağazadan gelen siparişi yazar (ya da günceller): kalemler, dondurulmuş adresler, ayırdığı stok.
Gereken izin retail:handle · veriyi değiştirir
https://app.getera.io/api/v1/orders/actions/import_channel_order- Asıl adres:
POST /api/v1/actions/retail.import_channel_order
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
channelId | uuid | evet | Kanal · kimliği: channel |
accountId | uuid | Entegrasyon hesabı | |
provider | string | evet | Sağlayıcı · en çok 41 |
warehouseId | uuid | Depo · kimliği: warehouse | |
customerId | uuid | Müşteri · kimliği: customer | |
order | object / array | evet | Sipariş |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
malformed_order | Siparişin kimliği, bilinen bir durumu, para birimi ve kalemleri olmalı. |
channel_not_found | Satış kanalı bu çalışma alanında yok. |
unknown_order | Yalnız durum güncellemesi, Era’da olmayan bir siparişi oluşturamaz. |
Yayımladığı olaylar: retail.channel_order_imported, retail.channel_order_updated, retail.stock_low
Neye yazar: sales_order (upsert) — The order, keyed on (channel, external reference); sales_order_line (insert) — Its lines, each tied to a variant where one matched; allocation (upsert) — Holds the stock (may oversell; returned as a shortage); stock (update) — Allocated, released or taken off the shelf by a despatch; stock_movement (insert) — The despatch in the stock ledger; fulfilment (insert) — The despatch when the marketplace shipped it; fulfilment_line (insert) — What left, from which shelf
curl -X POST https://app.getera.io/api/v1/orders/actions/import_channel_order \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"channelId":"CHANNEL_ID","provider":"Provider","order":{}}'{
"ok": true,
"result": "…",
"events": [
"retail.channel_order_imported",
"retail.channel_order_updated",
"retail.stock_low"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.orders.importChannelOrder({
channelId: "CHANNEL_ID",
provider: "Provider",
order: {}
})era orders import_channel_order --data '{"channelId":"CHANNEL_ID","provider":"Provider","order":{}}'{
"name": "era__retail__import_channel_order",
"arguments": {
"channelId": "CHANNEL_ID",
"provider": "Provider",
"order": {}
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:handle izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 malformed_order, channel_not_found, unknown_order · 429 çok sık istek
retail.inspect_return
İadeyi incele — Yeniden satılabilecek olan belirli bir rafa, defter satırıyla geri döner; hasarlı olan dönmez.
Gereken izin retail:handle · veriyi değiştirir
https://app.getera.io/api/v1/order_returns/{id}/actions/inspect_return- Asıl adres:
POST /api/v1/actions/retail.inspect_return
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · İade · kimliği: order_return |
lines | object / array | evet | Kalemler |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
return_not_found | İade bulunmalı. |
return_not_open | Yalnızca teslim alınmış bir iade incelenebilir. |
line_not_found | Her satır bu iadede olmalı. |
over_restock | Geri gelenden fazlası rafa dönemez. |
warehouse_not_found | Stoğa geri alma, döneceği rafı belirtir. |
Yayımladığı olaylar: retail.return_inspected, retail.stock_changed, retail.stock_low
Neye yazar: order_return_line (update) — Records the condition and the restock; order_return (update) — Marks it inspected; stock (upsert) — Puts resellable goods back; stock_movement (insert) — Explains the restock
curl -X POST https://app.getera.io/api/v1/order_returns/ORDER_RETURN_ID/actions/inspect_return \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"lines":{}}'{
"ok": true,
"result": "…",
"events": [
"retail.return_inspected",
"retail.stock_changed",
"retail.stock_low"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.orderReturns.inspectReturn("ORDER_RETURN_ID", {
lines: {}
})era order_returns inspect_return ORDER_RETURN_ID --data '{"lines":{}}'{
"name": "era__retail__inspect_return",
"arguments": {
"id": "ORDER_RETURN_ID",
"lines": {}
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:handle izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 return_not_found, return_not_open, line_not_found, over_restock, warehouse_not_found · 429 çok sık istek
retail.open_shop
Mağazayı aç — Çalışma alanının adıyla, TL cinsinden açık bir satış kanalı; mağaza zaten açıksa onu gösterir.
Gereken izin retail:manage · veriyi değiştirir
https://app.getera.io/api/v1/sales_channels/actions/open_shop- Asıl adres:
POST /api/v1/actions/retail.open_shop
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
name | string | Ad · Boş = çalışma alanının adı. · en çok 250 | |
currencyCode | string | Para birimi · ISO-4217. Boş = TRY. · en çok 3 | |
defaultCountry | string | Varsayılan ülke · Boş = TR. · en çok 2 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
invalid_currency | Para birimi bir ISO-4217 kodu olmalı. |
Yayımladığı olaylar: retail.channel_saved
Neye yazar: channel (upsert) — Creates (or opens) the shop channel
curl -X POST https://app.getera.io/api/v1/sales_channels/actions/open_shop \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"name":"Name"}'{
"ok": true,
"result": "…",
"events": [
"retail.channel_saved"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.salesChannels.openShop({
name: "Name"
})era sales_channels open_shop \
--name "Name"{
"name": "era__retail__open_shop",
"arguments": {
"name": "Name"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 invalid_currency · 429 çok sık istek
retail.raise_abandoned_checkouts
Terk edilen sepetleri işaretle — Makine işi: adresi olan ve süre boyunca sessiz kalan her sepet bir kez bildirilir.
Gereken izin retail:handle · veriyi değiştirir
403 machine_only).https://app.getera.io/api/v1/checkouts/actions/raise_abandoned_checkouts- Asıl adres:
POST /api/v1/actions/retail.raise_abandoned_checkouts
Girdi
Bu işlem girdi almaz.
Yayımladığı olaylar: retail.checkout_abandoned
Neye yazar: checkout (update) — Records that the basket was flagged as abandoned
Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:handle izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 429 çok sık istek
retail.receive_return
İadeyi teslim al — Paket geldi. Sipariş iade edildi veya kısmen iade edildi olur; raf, incelemeyi bekler.
Gereken izin retail:handle · veriyi değiştirir
https://app.getera.io/api/v1/order_returns/{id}/actions/receive_return- Asıl adres:
POST /api/v1/actions/retail.receive_return
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · İade · kimliği: order_return |
lines | object / array | Kalemler |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
return_not_found | İade bulunmalı. |
return_not_open | Yalnızca talep edilmiş bir iade teslim alınabilir. |
over_receipt | Geri istenenden fazlası gelemez. |
Yayımladığı olaylar: retail.return_received, retail.order_returned
Neye yazar: order_return_line (update) — Records what arrived; order_return (update) — Marks it received; sales_order (update) — Moves it to returned or partially returned
curl -X POST https://app.getera.io/api/v1/order_returns/ORDER_RETURN_ID/actions/receive_return \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"lines":{}}'{
"ok": true,
"result": "…",
"events": [
"retail.return_received",
"retail.order_returned"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.orderReturns.receiveReturn("ORDER_RETURN_ID", {
lines: {}
})era order_returns receive_return ORDER_RETURN_ID --data '{"lines":{}}'{
"name": "era__retail__receive_return",
"arguments": {
"id": "ORDER_RETURN_ID",
"lines": {}
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:handle izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 return_not_found, return_not_open, over_receipt · 429 çok sık istek
retail.refresh_collection
Akıllı koleksiyonu yenile — Kuralı, o zamandan beri eklenen veya değişen ürünler için yeniden çalıştırır.
Gereken izin retail:write · veriyi değiştirir
https://app.getera.io/api/v1/collection_items/actions/refresh_collection- Asıl adres:
POST /api/v1/actions/retail.refresh_collection
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Koleksiyon · kimliği: item_collection |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Tahsilat bulunmalı. |
collection_not_smart | Yalnızca kurallı bir koleksiyon yenilenebilir. |
Yayımladığı olaylar: retail.collection_items_changed
Neye yazar: item_collection_item (upsert) — Replaces the membership
curl -X POST https://app.getera.io/api/v1/collection_items/actions/refresh_collection \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"id":"ITEM_COLLECTION_ID"}'{
"ok": true,
"result": "…",
"events": [
"retail.collection_items_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.collectionItems.refreshCollection({
id: "ITEM_COLLECTION_ID"
})era collection_items refresh_collection \
--id "ITEM_COLLECTION_ID"{
"name": "era__retail__refresh_collection",
"arguments": {
"id": "ITEM_COLLECTION_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, collection_not_smart · 429 çok sık istek
retail.reject_return
İadeyi reddet — İade kabul edilmez — süre dışında ya da satılan ürün değil.
Gereken izin retail:handle · dışarıya ulaşır (gönderir, yayımlar ya da ücret alır) · Era çalıştırırken bir kişiye onaylatır
https://app.getera.io/api/v1/order_returns/{id}/actions/reject_return- Asıl adres:
POST /api/v1/actions/retail.reject_return
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · İade · kimliği: order_return |
reason | string | Neden · en çok 500 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
return_not_found | İade bulunmalı. |
return_not_open | Yalnızca talep edilmiş bir iade reddedilebilir. |
Yayımladığı olaylar: retail.return_rejected
Neye yazar: order_return (update) — Marks it rejected
curl -X POST https://app.getera.io/api/v1/order_returns/ORDER_RETURN_ID/actions/reject_return \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"reason":"Reason"}'{
"ok": true,
"result": "…",
"events": [
"retail.return_rejected"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.orderReturns.rejectReturn("ORDER_RETURN_ID", {
reason: "Reason"
})era order_returns reject_return ORDER_RETURN_ID \
--reason "Reason"{
"name": "era__retail__reject_return",
"arguments": {
"id": "ORDER_RETURN_ID",
"reason": "Reason"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:handle izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 return_not_found, return_not_open · 429 çok sık istek
retail.remove_order_discount
Personel indirimini kaldır — Kupon ve kampanyalar yeniden uygulanır.
Gereken izin retail:write · siler ya da geri alınamaz
https://app.getera.io/api/v1/orders/{id}/actions/remove_order_discount- Asıl adres:
POST /api/v1/actions/retail.remove_order_discount
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Sipariş · kimliği: sales_order |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Sipariş bulunmalı. |
order_not_editable | Yalnızca taslak veya onaylanmamış bir sipariş indirimini değiştirir. |
Yayımladığı olaylar: retail.order_discounts_applied
Neye yazar: sales_order (update) — Clears the discount and recomputes the totals; sales_order_line (update) — Rewrites the per-line snapshot; sales_order_discount (insert) — Records what applies now
curl -X POST https://app.getera.io/api/v1/orders/ORDER_ID/actions/remove_order_discount \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": [
"retail.order_discounts_applied"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.orders.removeOrderDiscount("ORDER_ID")era orders remove_order_discount ORDER_ID{
"name": "era__retail__remove_order_discount",
"arguments": {
"id": "ORDER_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, order_not_editable · 429 çok sık istek
retail.renew_checkout_reservation
Ödeme için stoğu ayır — Sepetteki ürünler için ayrılan stoğu on beş dakika uzatır.
Gereken izin retail:write · veriyi değiştirir
https://app.getera.io/api/v1/stock_reservations/actions/renew_checkout_reservation- Asıl adres:
POST /api/v1/actions/retail.renew_checkout_reservation
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
token | uuid | evet | Sepet |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Sepet bulunmalı. |
checkout_completing | Siparişe dönüştürülmekte olan bir sepetin ayırma süresi uzatılamaz. |
reservation_stock_unavailable | Stok takibi yapılan her ürün ayrılabilmeli; yeterli stok yok. |
Yayımladığı olaylar: retail.stock_reserved
Neye yazar: stock_reservation (upsert) — Replaces the fifteen-minute stock hold
curl -X POST https://app.getera.io/api/v1/stock_reservations/actions/renew_checkout_reservation \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"token":"TOKEN_ID"}'{
"ok": true,
"result": "…",
"events": [
"retail.stock_reserved"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.stockReservations.renewCheckoutReservation({
token: "TOKEN_ID"
})era stock_reservations renew_checkout_reservation \
--token "TOKEN_ID"{
"name": "era__retail__renew_checkout_reservation",
"arguments": {
"token": "TOKEN_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, checkout_completing, reservation_stock_unavailable · 429 çok sık istek
retail.request_return
İade aç — Müşteri bir şey geri gönderiyor. Gelene kadar hiçbir şey değişmez.
Gereken izin retail:handle · veriyi değiştirir
https://app.getera.io/api/v1/order_returns/actions/request_return- Asıl adres:
POST /api/v1/actions/retail.request_return
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Sipariş · kimliği: sales_order |
lines | object / array | evet | Kalemler |
reason | string | Neden · en çok 500 | |
note | string | Not · en çok 2000 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Sipariş bulunmalı. |
order_not_returnable | Hiç çıkmamış bir şey geri gelemez. |
malformed_lines | Hangi satırların ve kaç tanesinin geri geldiğini belirtin. |
line_not_found | Her satır bu siparişte olmalı. |
over_return | Çıkandan ve zaten yolda olmayandan fazlası geri gelemez. |
Yayımladığı olaylar: retail.return_requested
Neye yazar: order_return (insert) — Opens the return; order_return_line (insert) — Lists what is coming back
curl -X POST https://app.getera.io/api/v1/order_returns/actions/request_return \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"id":"SALES_ORDER_ID","lines":{}}'{
"ok": true,
"result": "…",
"events": [
"retail.return_requested"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.orderReturns.requestReturn({
id: "SALES_ORDER_ID",
lines: {}
})era order_returns request_return --data '{"id":"SALES_ORDER_ID","lines":{}}'{
"name": "era__retail__request_return",
"arguments": {
"id": "SALES_ORDER_ID",
"lines": {}
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:handle izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, order_not_returnable, malformed_lines, line_not_found, over_return · 429 çok sık istek
retail.return_products
İade kaydet — Durum değişir; raf değişmez. İade edilen ürün hasarlı olabilir.
Gereken izin retail:handle · dışarıya ulaşır (gönderir, yayımlar ya da ücret alır) · Era çalıştırırken bir kişiye onaylatır
https://app.getera.io/api/v1/orders/{id}/actions/return_products- Asıl adres:
POST /api/v1/actions/retail.return_products
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Sipariş · kimliği: sales_order |
lines | object / array | evet | Kalemler |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Sipariş bulunmalı. |
order_not_returnable | Hiç çıkmamış bir şey geri gelemez. |
malformed_lines | Hangi satırların ve kaç tanesinin geri geldiğini belirtin. |
line_not_found | Her satır bu siparişte olmalı. |
over_return | Çıkandan fazlası geri gelemez. |
Yayımladığı olaylar: retail.order_returned
Neye yazar: sales_order (update) — Moves it to returned or partially returned
curl -X POST https://app.getera.io/api/v1/orders/ORDER_ID/actions/return_products \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"lines":{}}'{
"ok": true,
"result": "…",
"events": [
"retail.order_returned"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.orders.returnProducts("ORDER_ID", {
lines: {}
})era orders return_products ORDER_ID --data '{"lines":{}}'{
"name": "era__retail__return_products",
"arguments": {
"id": "ORDER_ID",
"lines": {}
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:handle izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, order_not_returnable, malformed_lines, line_not_found, over_return · 429 çok sık istek
retail.save_channel
Satış kanalını kaydet — Satış yapılan bir yer: adı, adresi, para birimi ve ülkesi.
Gereken izin retail:manage · veriyi değiştirir
https://app.getera.io/api/v1/sales_channels/{id}/actions/save_channel- REST kısayolu:
PATCH /api/v1/sales_channels/{id} - Asıl adres:
POST /api/v1/actions/retail.save_channel
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | Doldurulduğu yer: adresteki {id} · Kanal · kimliği: channel | |
name | string | evet | Ad · en çok 250 |
slug | string | Adres · en çok 255 | |
currencyCode | string | Para birimi · ISO-4217, üç harf. · en çok 3 | |
defaultCountry | string | Varsayılan ülke · en çok 2 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
invalid_name | Ad kullanılabilir bir adres üretmeli. |
slug_taken | Adres bu çalışma alanında boşta olmalı. |
invalid_currency | Para birimi bir ISO-4217 kodu olmalı. |
channel_not_found | Kanal bulunmalı. |
channel_currency_locked | İçinde fiyat olan bir kanal para birimini değiştiremez. |
Yayımladığı olaylar: retail.channel_saved
Neye yazar: channel (upsert) — Creates or edits the channel
curl -X POST https://app.getera.io/api/v1/sales_channels/SALES_CHANNEL_ID/actions/save_channel \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"name":"Name"}'{
"ok": true,
"result": "…",
"events": [
"retail.channel_saved"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.salesChannels.saveChannel("SALES_CHANNEL_ID", {
name: "Name"
})era sales_channels save_channel SALES_CHANNEL_ID \
--name "Name"{
"name": "era__retail__save_channel",
"arguments": {
"id": "SALES_CHANNEL_ID",
"name": "Name"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 invalid_name, slug_taken, invalid_currency, channel_not_found, channel_currency_locked · 429 çok sık istek
retail.save_collection
Koleksiyonu kaydet — Elle sıralanan bir vitrin listesi — “Yaz”, “Ekibin seçtikleri”.
Gereken izin retail:write · veriyi değiştirir
https://app.getera.io/api/v1/collections/{id}/actions/save_collection- REST kısayolu:
PATCH /api/v1/collections/{id} - Asıl adres:
POST /api/v1/actions/retail.save_collection
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | Doldurulduğu yer: adresteki {id} · Koleksiyon · kimliği: item_collection | |
name | string | evet | Ad · en çok 250 |
slug | string | Adres · en çok 255 | |
description | string | Açıklama · en çok 4000 | |
seoTitle | string | SEO başlığı · en çok 200 | |
seoDescription | string | SEO açıklaması · en çok 500 | |
backgroundFileId | uuid | Kapak görseli · kimliği: file | |
backgroundAlt | string | Afiş açıklaması · en çok 250 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
invalid_name | Ad kullanılabilir bir adres üretmeli. |
slug_taken | Adres bu çalışma alanında boşta olmalı. |
not_found | Belirtildiğinde koleksiyon bulunmalı. |
Yayımladığı olaylar: retail.collection_saved
Neye yazar: item_collection (upsert) — Creates or edits the collection
curl -X POST https://app.getera.io/api/v1/collections/COLLECTION_ID/actions/save_collection \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"name":"Name"}'{
"ok": true,
"result": "…",
"events": [
"retail.collection_saved"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.collections.saveCollection("COLLECTION_ID", {
name: "Name"
})era collections save_collection COLLECTION_ID \
--name "Name"{
"name": "era__retail__save_collection",
"arguments": {
"id": "COLLECTION_ID",
"name": "Name"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 invalid_name, slug_taken, not_found · 429 çok sık istek
retail.save_shipping_method
Teslimat ücretini kaydet — Sipariş tutarına veya ağırlığa göre fiyatlanan bir teslimat yolu.
Gereken izin retail:manage · veriyi değiştirir
https://app.getera.io/api/v1/shipping_methods/{id}/actions/save_shipping_method- REST kısayolu:
PATCH /api/v1/shipping_methods/{id} - Asıl adres:
POST /api/v1/actions/retail.save_shipping_method
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | Doldurulduğu yer: adresteki {id} · Oran · kimliği: shipping_method | |
shippingZoneId | uuid | evet | Bölge · kimliği: shipping_zone |
name | string | evet | Ad · en çok 100 |
type | string (enum) | Fiyatlandıran · İzin verilen değerler: price, weight | |
description | string | Açıklama · en çok 2000 | |
minimumOrderWeightGrams | number | Başlangıç (gram) · en az 0 | |
maximumOrderWeightGrams | number | Bitiş (gram) · en az 0 | |
minimumDeliveryDays | number | En hızlı (gün) · en az 0 | |
maximumDeliveryDays | number | En yavaş (gün) · en az 0 | |
taxClassId | uuid | Vergi sınıfı · Boş: ülkenin varsayılan oranı. · kimliği: tax_class |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
zone_not_found | Bölge bulunmalı. |
tax_class_not_found | Vergi sınıfı var olmalı ve arşivlenmemiş olmalı. |
not_found | Belirtildiğinde ücret bulunmalı. |
weight_on_price_method | Fiyata dayalı bir ücret ağırlık aralığı taşımaz. |
range_inverted | Aralığın küçük ucu büyük ucunu aşmamalı. |
Yayımladığı olaylar: retail.shipping_method_saved
Neye yazar: shipping_method (upsert) — Creates or edits the rate
curl -X POST https://app.getera.io/api/v1/shipping_methods/SHIPPING_METHOD_ID/actions/save_shipping_method \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"shippingZoneId":"SHIPPING_ZONE_ID","name":"Name"}'{
"ok": true,
"result": "…",
"events": [
"retail.shipping_method_saved"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.shippingMethods.saveShippingMethod("SHIPPING_METHOD_ID", {
shippingZoneId: "SHIPPING_ZONE_ID",
name: "Name"
})era shipping_methods save_shipping_method SHIPPING_METHOD_ID \
--shipping-zone-id "SHIPPING_ZONE_ID" \
--name "Name"{
"name": "era__retail__save_shipping_method",
"arguments": {
"id": "SHIPPING_METHOD_ID",
"shippingZoneId": "SHIPPING_ZONE_ID",
"name": "Name"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 zone_not_found, tax_class_not_found, not_found, weight_on_price_method, range_inverted · 429 çok sık istek
retail.save_shipping_zone
Kargo bölgesini kaydet — Aynı teslimat ücretlerini paylaşan bir ülke grubu.
Gereken izin retail:manage · veriyi değiştirir
https://app.getera.io/api/v1/shipping_zones/{id}/actions/save_shipping_zone- REST kısayolu:
PATCH /api/v1/shipping_zones/{id} - Asıl adres:
POST /api/v1/actions/retail.save_shipping_zone
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | Doldurulduğu yer: adresteki {id} · Bölge · kimliği: shipping_zone | |
name | string | evet | Ad · en çok 100 |
description | string | Açıklama · en çok 2000 | |
countries | object / array | Ülkeler | |
isDefault | boolean | Diğer her yer | |
channelIds | object / array | Kanallar |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
invalid_country | Her ülke iki harfli bir kod olmalı. |
not_found | Belirtildiğinde bölge bulunmalı. |
channel_not_found | Her kanal bulunmalı. |
Yayımladığı olaylar: retail.shipping_zone_saved
Neye yazar: shipping_zone (upsert) — Creates or edits the zone
curl -X POST https://app.getera.io/api/v1/shipping_zones/SHIPPING_ZONE_ID/actions/save_shipping_zone \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"name":"Name"}'{
"ok": true,
"result": "…",
"events": [
"retail.shipping_zone_saved"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.shippingZones.saveShippingZone("SHIPPING_ZONE_ID", {
name: "Name"
})era shipping_zones save_shipping_zone SHIPPING_ZONE_ID \
--name "Name"{
"name": "era__retail__save_shipping_zone",
"arguments": {
"id": "SHIPPING_ZONE_ID",
"name": "Name"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 invalid_country, not_found, channel_not_found · 429 çok sık istek
retail.set_channel_active
Kanalı aç veya kapat — Kapalı bir kanal sepet ve sipariş almaz.
Gereken izin retail:manage · veriyi değiştirir
https://app.getera.io/api/v1/sales_channels/{id}/actions/set_channel_active- Asıl adres:
POST /api/v1/actions/retail.set_channel_active
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Kanal · kimliği: channel |
isActive | boolean | evet | Aç |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
channel_not_found | Kanal bulunmalı. |
channel_has_open_work | Açık sepeti veya siparişi olan bir kanal kapatılamaz. |
Yayımladığı olaylar: retail.channel_saved
Neye yazar: channel (update) — Opens or closes the channel
curl -X POST https://app.getera.io/api/v1/sales_channels/SALES_CHANNEL_ID/actions/set_channel_active \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"isActive":true}'{
"ok": true,
"result": "…",
"events": [
"retail.channel_saved"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.salesChannels.setChannelActive("SALES_CHANNEL_ID", {
isActive: true
})era sales_channels set_channel_active SALES_CHANNEL_ID \
--is-active true{
"name": "era__retail__set_channel_active",
"arguments": {
"id": "SALES_CHANNEL_ID",
"isActive": true
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 channel_not_found, channel_has_open_work · 429 çok sık istek
retail.set_channel_warehouses
Kanalın depolarını seç — Bir kanalın stoğu hangi depolardan, hangi sırayla aldığı.
Gereken izin retail:manage · veriyi değiştirir
https://app.getera.io/api/v1/sales_channel_warehouses/actions/set_channel_warehouses- Asıl adres:
POST /api/v1/actions/retail.set_channel_warehouses
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
channelId | uuid | evet | Kanal · kimliği: channel |
warehouseIds | object / array | evet | Depolar |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
channel_not_found | Kanal bulunmalı. |
warehouse_not_found | Her depo bulunmalı. |
Yayımladığı olaylar: retail.channel_warehouses_changed
Neye yazar: channel_warehouse (upsert) — Replaces the channel’s warehouse order
curl -X POST https://app.getera.io/api/v1/sales_channel_warehouses/actions/set_channel_warehouses \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"channelId":"CHANNEL_ID","warehouseIds":{}}'{
"ok": true,
"result": "…",
"events": [
"retail.channel_warehouses_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.salesChannelWarehouses.setChannelWarehouses({
channelId: "CHANNEL_ID",
warehouseIds: {}
})era sales_channel_warehouses set_channel_warehouses --data '{"channelId":"CHANNEL_ID","warehouseIds":{}}'{
"name": "era__retail__set_channel_warehouses",
"arguments": {
"channelId": "CHANNEL_ID",
"warehouseIds": {}
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 channel_not_found, warehouse_not_found · 429 çok sık istek
retail.set_checkout_delivery
Teslimatı seç — Adres, ücret ve sunuluyorsa teslim alma noktası.
Gereken izin retail:write · veriyi değiştirir
https://app.getera.io/api/v1/checkouts/actions/set_checkout_delivery- Asıl adres:
POST /api/v1/actions/retail.set_checkout_delivery
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
token | uuid | evet | Sepet |
shippingAddressId | uuid | Teslimat adresi · kimliği: address | |
billingAddressId | uuid | Fatura adresi · kimliği: address | |
shippingMethodId | uuid | Kargo ücreti · kimliği: shipping_method | |
collectionPointId | uuid | Teslim alma noktası · kimliği: warehouse |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Sepet bulunmalı. |
shipping_method_not_available | Bu kargo ücreti bu adres ve sipariş tutarı için geçerli olmalı. |
collection_point_unavailable | Bu konum teslim alma sunmalı. |
Yayımladığı olaylar: retail.checkout_updated
Neye yazar: checkout (update) — Writes the delivery choice
curl -X POST https://app.getera.io/api/v1/checkouts/actions/set_checkout_delivery \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"token":"TOKEN_ID"}'{
"ok": true,
"result": "…",
"events": [
"retail.checkout_updated"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.checkouts.setCheckoutDelivery({
token: "TOKEN_ID"
})era checkouts set_checkout_delivery \
--token "TOKEN_ID"{
"name": "era__retail__set_checkout_delivery",
"arguments": {
"token": "TOKEN_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, shipping_method_not_available, collection_point_unavailable · 429 çok sık istek
retail.set_checkout_lines
Sepeti değiştir — Satır ekle, değiştir veya kaldır. Sıfır miktar satırı kaldırır.
Gereken izin retail:write · veriyi değiştirir
https://app.getera.io/api/v1/checkout_lines/actions/set_checkout_lines- Asıl adres:
POST /api/v1/actions/retail.set_checkout_lines
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
token | uuid | evet | Sepet |
lines | object / array | evet | Kalemler |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Sepet bulunmalı. |
checkout_completing | Siparişe dönüştürülmekte olan bir sepet düzenlenemez. |
malformed_lines | Her satır bir varyant ve miktar gerektirir. |
variant_not_priced | Bu kanalda fiyatı olmayan bir varyant burada satılamaz. |
variant_not_found | Her varyant bulunmalı. |
reservation_stock_unavailable | Stok takibi yapılan her ürün on beş dakikalığına ayrılabilmeli; yeterli stok yok. |
gift_line_locked | Kampanyanın hediye satırı elle düzenlenemez. |
Yayımladığı olaylar: retail.checkout_updated
Neye yazar: checkout_line (upsert) — Writes the basket lines; stock_reservation (upsert) — Replaces the basket stock hold
curl -X POST https://app.getera.io/api/v1/checkout_lines/actions/set_checkout_lines \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"token":"TOKEN_ID","lines":{}}'{
"ok": true,
"result": "…",
"events": [
"retail.checkout_updated"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.checkoutLines.setCheckoutLines({
token: "TOKEN_ID",
lines: {}
})era checkout_lines set_checkout_lines --data '{"token":"TOKEN_ID","lines":{}}'{
"name": "era__retail__set_checkout_lines",
"arguments": {
"token": "TOKEN_ID",
"lines": {}
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, checkout_completing, malformed_lines, variant_not_priced, variant_not_found, reservation_stock_unavailable, gift_line_locked · 429 çok sık istek
retail.set_collection_items
Koleksiyonun içeriğini seç — Tüm içerik, mağaza sitesinin çizdiği sırayla.
Gereken izin retail:write · veriyi değiştirir
https://app.getera.io/api/v1/collection_items/actions/set_collection_items- Asıl adres:
POST /api/v1/actions/retail.set_collection_items
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Koleksiyon · kimliği: item_collection |
itemIds | object / array | evet | Öğe |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Tahsilat bulunmalı. |
item_not_found | Her katalog kaydı bulunmalı. |
collection_is_smart | Kurallı koleksiyon elle seçilmez. |
Yayımladığı olaylar: retail.collection_items_changed
Neye yazar: item_collection_item (upsert) — Replaces the membership
curl -X POST https://app.getera.io/api/v1/collection_items/actions/set_collection_items \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"id":"ITEM_COLLECTION_ID","itemIds":{}}'{
"ok": true,
"result": "…",
"events": [
"retail.collection_items_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.collectionItems.setCollectionItems({
id: "ITEM_COLLECTION_ID",
itemIds: {}
})era collection_items set_collection_items --data '{"id":"ITEM_COLLECTION_ID","itemIds":{}}'{
"name": "era__retail__set_collection_items",
"arguments": {
"id": "ITEM_COLLECTION_ID",
"itemIds": {}
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, item_not_found, collection_is_smart · 429 çok sık istek
retail.set_collection_rule
Koleksiyonu bir kuralla doldur — Akıllı koleksiyon: üyeleri eşleşen her şeydir — bir kategori, marka, fiyat aralığı, ad.
Gereken izin retail:write · veriyi değiştirir
https://app.getera.io/api/v1/collections/{id}/actions/set_collection_rule- Asıl adres:
POST /api/v1/actions/retail.set_collection_rule
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Koleksiyon · kimliği: item_collection |
rule | object / array | Kural |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Tahsilat bulunmalı. |
invalid_rule | Kuralın en az bir koşulu ve makul bir fiyat aralığı olmalı. |
Yayımladığı olaylar: retail.collection_items_changed
Neye yazar: item_collection (update) — Writes the rule; item_collection_item (upsert) — Replaces the membership
curl -X POST https://app.getera.io/api/v1/collections/COLLECTION_ID/actions/set_collection_rule \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"rule":{}}'{
"ok": true,
"result": "…",
"events": [
"retail.collection_items_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.collections.setCollectionRule("COLLECTION_ID", {
rule: {}
})era collections set_collection_rule COLLECTION_ID --data '{"rule":{}}'{
"name": "era__retail__set_collection_rule",
"arguments": {
"id": "COLLECTION_ID",
"rule": {}
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, invalid_rule · 429 çok sık istek
retail.set_item_listing
Kanalda listele — Bir katalog kaydının bir kanalda yayımlanmış, görünür ve satışta olup olmadığı.
Gereken izin retail:write · veriyi değiştirir
https://app.getera.io/api/v1/product_listings/actions/set_item_listing- Asıl adres:
POST /api/v1/actions/retail.set_item_listing
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
itemId | uuid | evet | Kalem · kimliği: item |
channelId | uuid | Kanal · Boş = mağaza. · kimliği: channel | |
isPublished | boolean | Yayımlandı | |
visibleInListings | boolean | Listelerde göster | |
availableForPurchaseAt | date-time | Satış başlangıcı |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
channel_not_found | Kanal bulunmalı. |
item_not_found | Katalog kaydı bulunmalı. |
store_missing | Mağazan yok — açayım mı? |
Yayımladığı olaylar: retail.listing_changed
Neye yazar: item_channel_listing (upsert) — Writes the channel listing
curl -X POST https://app.getera.io/api/v1/product_listings/actions/set_item_listing \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"itemId":"ITEM_ID"}'{
"ok": true,
"result": "…",
"events": [
"retail.listing_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.productListings.setItemListing({
itemId: "ITEM_ID"
})era product_listings set_item_listing \
--item-id "ITEM_ID"{
"name": "era__retail__set_item_listing",
"arguments": {
"itemId": "ITEM_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 channel_not_found, item_not_found, store_missing · 429 çok sık istek
retail.set_order_discount
Personel indirimi ver — Taslak veya onaylanmamış bir siparişe gerekçesiyle bir yüzde veya tutar indirimi. Bu varken sipariş kuponu ve kampanyalar devre dışı kalır.
Gereken izin retail:write · veriyi değiştirir
https://app.getera.io/api/v1/orders/{id}/actions/set_order_discount- Asıl adres:
POST /api/v1/actions/retail.set_order_discount
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Sipariş · kimliği: sales_order |
valueType | string (enum) | evet | İndirim · İzin verilen değerler: percentage, fixed |
value | number | evet | Değer (yüzde veya kuruş) · en az 0 |
reason | string | Neden · en çok 500 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Sipariş bulunmalı. |
order_not_editable | Yalnızca taslak veya onaylanmamış bir siparişe indirim yapılır. |
invalid_discount_value | Sıfırın üstünde; yüzde en fazla 100, tutar en fazla indirimsiz toplam. |
Yayımladığı olaylar: retail.order_discounts_applied
Neye yazar: sales_order (update) — Writes the discount and the new totals; sales_order_line (update) — Spreads the discount over the lines; sales_order_discount (insert) — Records what was applied
curl -X POST https://app.getera.io/api/v1/orders/ORDER_ID/actions/set_order_discount \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"valueType":"percentage","value":1}'{
"ok": true,
"result": "…",
"events": [
"retail.order_discounts_applied"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.orders.setOrderDiscount("ORDER_ID", {
valueType: "percentage",
value: 1
})era orders set_order_discount ORDER_ID \
--value-type "percentage" \
--value 1{
"name": "era__retail__set_order_discount",
"arguments": {
"id": "ORDER_ID",
"valueType": "percentage",
"value": 1
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, order_not_editable, invalid_discount_value · 429 çok sık istek
retail.set_order_lines
Siparişin satırlarını değiştir — Yalnızca taslak veya onaylanmamışken.
Gereken izin retail:write · siler ya da geri alınamaz
https://app.getera.io/api/v1/orders/{id}/actions/set_order_lines- Asıl adres:
POST /api/v1/actions/retail.set_order_lines
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Sipariş · kimliği: sales_order |
lines | object / array | evet | Kalemler |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Sipariş bulunmalı. |
order_not_editable | Yalnızca taslak ve onaylanmamış siparişlerin satırları değişebilir. |
malformed_lines | Her satır bir varyant ve miktar gerektirir. |
variant_not_found | Her varyant bulunmalı. |
variant_not_priced | Fiyatı olmayan bir varyant için fiyat yazılmalı. |
Yayımladığı olaylar: retail.order_lines_changed, retail.order_discounts_applied
Neye yazar: sales_order_line (upsert) — Replaces the lines, with promotions and the coupon applied; allocation (delete) — Releases what the old lines held; sales_order (update) — Recomputes the totals; sales_order_discount (insert) — Records what was applied
curl -X POST https://app.getera.io/api/v1/orders/ORDER_ID/actions/set_order_lines \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"lines":{}}'{
"ok": true,
"result": "…",
"events": [
"retail.order_lines_changed",
"retail.order_discounts_applied"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.orders.setOrderLines("ORDER_ID", {
lines: {}
})era orders set_order_lines ORDER_ID --data '{"lines":{}}'{
"name": "era__retail__set_order_lines",
"arguments": {
"id": "ORDER_ID",
"lines": {}
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, order_not_editable, malformed_lines, variant_not_found, variant_not_priced · 429 çok sık istek
retail.set_order_voucher
Kupon uygula — Taslak veya onaylanmamış bir siparişe kupon kodu ekler ya da kaldırır. Kupon varken sipariş kampanyaları devre dışı kalır.
Gereken izin retail:write · veriyi değiştirir
https://app.getera.io/api/v1/orders/{id}/actions/set_order_voucher- Asıl adres:
POST /api/v1/actions/retail.set_order_voucher
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Sipariş · kimliği: sales_order |
code | string | Kupon kodu · en çok 255 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Sipariş bulunmalı. |
order_not_editable | Yalnızca taslak veya onaylanmamış bir sipariş kuponunu değiştirir. |
voucher_not_found | Kod bir kuponu belirtmeli. |
voucher_not_applicable | Kupon devam ediyor olmalı, kanalda fiyatlanmış olmalı ve koşulları sağlanmalı. |
voucher_usage_exceeded | Kod tükenmemiş olmalı. |
Yayımladığı olaylar: retail.order_discounts_applied
Neye yazar: sales_order (update) — Writes the code and the new totals; sales_order_line (update) — Writes the per-line discount snapshot; sales_order_discount (insert) — Records what was applied
curl -X POST https://app.getera.io/api/v1/orders/ORDER_ID/actions/set_order_voucher \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"code":"Coupon code"}'{
"ok": true,
"result": "…",
"events": [
"retail.order_discounts_applied"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.orders.setOrderVoucher("ORDER_ID", {
code: "Coupon code"
})era orders set_order_voucher ORDER_ID \
--code "Coupon code"{
"name": "era__retail__set_order_voucher",
"arguments": {
"id": "ORDER_ID",
"code": "Coupon code"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, order_not_editable, voucher_not_found, voucher_not_applicable, voucher_usage_exceeded · 429 çok sık istek
retail.set_postal_code_rules
Posta kodu kurallarını belirle — Kural yoksa her yer geçerlidir; kural eklemek ücretin geçtiği yeri kısıtlar.
Gereken izin retail:manage · veriyi değiştirir
https://app.getera.io/api/v1/shipping_method_postal_code_rules/actions/set_postal_code_rules- Asıl adres:
POST /api/v1/actions/retail.set_postal_code_rules
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
shippingMethodId | uuid | evet | Oran · kimliği: shipping_method |
rules | object / array | evet | Kurallar |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Oran bulunmalı. |
malformed_rules | Her kuralın bir başlangıç kodu olmalı. |
duplicate_rule | Aynı aralık iki kez görünemez. |
Yayımladığı olaylar: retail.shipping_rules_changed
Neye yazar: shipping_method_postal_code_rule (upsert) — Replaces the rate’s postal-code rules
curl -X POST https://app.getera.io/api/v1/shipping_method_postal_code_rules/actions/set_postal_code_rules \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"shippingMethodId":"SHIPPING_METHOD_ID","rules":{}}'{
"ok": true,
"result": "…",
"events": [
"retail.shipping_rules_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.shippingMethodPostalCodeRules.setPostalCodeRules({
shippingMethodId: "SHIPPING_METHOD_ID",
rules: {}
})era shipping_method_postal_code_rules set_postal_code_rules --data '{"shippingMethodId":"SHIPPING_METHOD_ID","rules":{}}'{
"name": "era__retail__set_postal_code_rules",
"arguments": {
"shippingMethodId": "SHIPPING_METHOD_ID",
"rules": {}
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, malformed_rules, duplicate_rule · 429 çok sık istek
retail.set_preorder
Ön siparişle sat — Mallar rafa gelmeden, kanal başına ve toplamda bir sınıra kadar sipariş al.
Gereken izin retail:manage · veriyi değiştirir
https://app.getera.io/api/v1/variant_preorders/actions/set_preorder- Asıl adres:
POST /api/v1/actions/retail.set_preorder
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
itemVariantId | uuid | evet | Varyant · kimliği: item_variant |
enabled | boolean | evet | Ön siparişte |
endDate | date-time | Bitiş | |
globalThreshold | number | Limit, tüm kanallar · en az 0 | |
channelThresholds | object / array | Kanal başına sınırlar |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
variant_not_found | Varyant bulunmalı. |
invalid_preorder | Ön sipariş gelecekte biter. |
preorder_has_orders | Ön sipariş tutan siparişler kapatılarak değil, ön sipariş bitirilerek taşınır. |
channel_not_found | Her kanal bulunmalı. |
Yayımladığı olaylar: retail.preorder_changed
Neye yazar: variant_preorder (upsert) — Writes the preorder; item_variant_channel_listing (upsert) — Writes the per-channel limit
curl -X POST https://app.getera.io/api/v1/variant_preorders/actions/set_preorder \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"itemVariantId":"ITEM_VARIANT_ID","enabled":true}'{
"ok": true,
"result": "…",
"events": [
"retail.preorder_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.variantPreorders.setPreorder({
itemVariantId: "ITEM_VARIANT_ID",
enabled: true
})era variant_preorders set_preorder \
--item-variant-id "ITEM_VARIANT_ID" \
--enabled true{
"name": "era__retail__set_preorder",
"arguments": {
"itemVariantId": "ITEM_VARIANT_ID",
"enabled": true
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 variant_not_found, invalid_preorder, preorder_has_orders, channel_not_found · 429 çok sık istek
retail.set_shipping_excluded_items
Ürünleri teslimat ücretinden hariç tut — Bunlardan birini içeren siparişe bu ücret sunulmaz.
Gereken izin retail:manage · veriyi değiştirir
https://app.getera.io/api/v1/shipping_method_excluded_items/actions/set_shipping_excluded_items- Asıl adres:
POST /api/v1/actions/retail.set_shipping_excluded_items
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
shippingMethodId | uuid | evet | Oran · kimliği: shipping_method |
itemIds | object / array | evet | Ürünler |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Oran bulunmalı. |
item_not_found | Her ürün bulunmalı. |
Yayımladığı olaylar: retail.shipping_exclusions_changed
Neye yazar: shipping_method_excluded_item (upsert) — Replaces the rate’s exclusions
curl -X POST https://app.getera.io/api/v1/shipping_method_excluded_items/actions/set_shipping_excluded_items \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"shippingMethodId":"SHIPPING_METHOD_ID","itemIds":{}}'{
"ok": true,
"result": "…",
"events": [
"retail.shipping_exclusions_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.shippingMethodExcludedItems.setShippingExcludedItems({
shippingMethodId: "SHIPPING_METHOD_ID",
itemIds: {}
})era shipping_method_excluded_items set_shipping_excluded_items --data '{"shippingMethodId":"SHIPPING_METHOD_ID","itemIds":{}}'{
"name": "era__retail__set_shipping_excluded_items",
"arguments": {
"shippingMethodId": "SHIPPING_METHOD_ID",
"itemIds": {}
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, item_not_found · 429 çok sık istek
retail.set_shipping_price
Teslimat ücretini kanalda fiyatla — Teslimatın ne kadar tuttuğu ve hangi sipariş tutarları arasında geçerli olduğu.
Gereken izin retail:manage · veriyi değiştirir
https://app.getera.io/api/v1/shipping_method_channel_listings/actions/set_shipping_price- Asıl adres:
POST /api/v1/actions/retail.set_shipping_price
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
shippingMethodId | uuid | evet | Oran · kimliği: shipping_method |
channelId | uuid | evet | Kanal · kimliği: channel |
priceAmount | number (money) | evet | Fiyat (küçük birim) · en az 0 |
minimumOrderPriceAmount | number (money) | Sipariş tutarından itibaren · en az 0 | |
maximumOrderPriceAmount | number (money) | Sipariş tutarına kadar · en az 0 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
channel_not_found | Kanal bulunmalı. |
not_found | Oran bulunmalı. |
range_inverted | En küçük sipariş tutarı en büyüğünü aşmamalı. |
Yayımladığı olaylar: retail.shipping_price_changed
Neye yazar: shipping_method_channel_listing (upsert) — Writes the channel price
curl -X POST https://app.getera.io/api/v1/shipping_method_channel_listings/actions/set_shipping_price \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"shippingMethodId":"SHIPPING_METHOD_ID","channelId":"CHANNEL_ID","priceAmount":1}'{
"ok": true,
"result": "…",
"events": [
"retail.shipping_price_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.shippingMethodChannelListings.setShippingPrice({
shippingMethodId: "SHIPPING_METHOD_ID",
channelId: "CHANNEL_ID",
priceAmount: 1
})era shipping_method_channel_listings set_shipping_price \
--shipping-method-id "SHIPPING_METHOD_ID" \
--channel-id "CHANNEL_ID" \
--price-amount 1{
"name": "era__retail__set_shipping_price",
"arguments": {
"shippingMethodId": "SHIPPING_METHOD_ID",
"channelId": "CHANNEL_ID",
"priceAmount": 1
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 channel_not_found, not_found, range_inverted · 429 çok sık istek
retail.set_stock
Stok say — Bir depoda, bir varyant için raftaki sayı.
Gereken izin retail:write · veriyi değiştirir
https://app.getera.io/api/v1/stocks/actions/set_stock- Asıl adres:
POST /api/v1/actions/retail.set_stock
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
warehouseId | uuid | evet | Depo · kimliği: warehouse |
itemVariantId | uuid | evet | Varyant · kimliği: item_variant |
quantity | number | evet | Miktar |
note | string | Not · en çok 500 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
warehouse_not_found | Depo bulunmalı. |
variant_not_found | Varyant bulunmalı. |
below_allocated | Miktar, zaten ayrılmış olanın altına düşemez. |
Yayımladığı olaylar: retail.stock_changed, retail.stock_low
Neye yazar: stock (upsert) — Writes the count; stock_movement (insert) — Records the stocktake difference in the ledger
curl -X POST https://app.getera.io/api/v1/stocks/actions/set_stock \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"warehouseId":"WAREHOUSE_ID","itemVariantId":"ITEM_VARIANT_ID","quantity":1}'{
"ok": true,
"result": "…",
"events": [
"retail.stock_changed",
"retail.stock_low"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.stocks.setStock({
warehouseId: "WAREHOUSE_ID",
itemVariantId: "ITEM_VARIANT_ID",
quantity: 1
})era stocks set_stock \
--warehouse-id "WAREHOUSE_ID" \
--item-variant-id "ITEM_VARIANT_ID" \
--quantity 1{
"name": "era__retail__set_stock",
"arguments": {
"warehouseId": "WAREHOUSE_ID",
"itemVariantId": "ITEM_VARIANT_ID",
"quantity": 1
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 warehouse_not_found, variant_not_found, below_allocated · 429 çok sık istek
retail.set_stock_policy
Güvenlik stoğu ayır — Bu raftakilerden kaçının hiçbir siparişe söz verilmeyeceği.
Gereken izin retail:manage · veriyi değiştirir
https://app.getera.io/api/v1/stocks/actions/set_stock_policy- Asıl adres:
POST /api/v1/actions/retail.set_stock_policy
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
warehouseId | uuid | evet | Depo · kimliği: warehouse |
itemVariantId | uuid | evet | Varyant · kimliği: item_variant |
safetyStock | number | evet | Güvenlik stoku · en az 0 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
stock_not_found | Bu varyant depoda bulunmalı. |
Yayımladığı olaylar: retail.stock_policy_changed, retail.stock_low
Neye yazar: stock (update) — Writes the safety stock
curl -X POST https://app.getera.io/api/v1/stocks/actions/set_stock_policy \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"warehouseId":"WAREHOUSE_ID","itemVariantId":"ITEM_VARIANT_ID","safetyStock":1}'{
"ok": true,
"result": "…",
"events": [
"retail.stock_policy_changed",
"retail.stock_low"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.stocks.setStockPolicy({
warehouseId: "WAREHOUSE_ID",
itemVariantId: "ITEM_VARIANT_ID",
safetyStock: 1
})era stocks set_stock_policy \
--warehouse-id "WAREHOUSE_ID" \
--item-variant-id "ITEM_VARIANT_ID" \
--safety-stock 1{
"name": "era__retail__set_stock_policy",
"arguments": {
"warehouseId": "WAREHOUSE_ID",
"itemVariantId": "ITEM_VARIANT_ID",
"safetyStock": 1
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 stock_not_found · 429 çok sık istek
retail.set_tracking
Takip numarası gir — Müşterinin kargoyu takip ettiği numara.
Gereken izin retail:handle · veriyi değiştirir
https://app.getera.io/api/v1/fulfilments/{id}/actions/set_tracking- Asıl adres:
POST /api/v1/actions/retail.set_tracking
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Gönderi · kimliği: fulfilment |
trackingNumber | string | evet | Takip numarası · en çok 255 |
carrier | string | Kargo firması · en çok 120 | |
trackingUrl | string | Takip bağlantısı · en çok 1000 | |
notifyCustomer | boolean | Müşteriye bildir |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Gönderi bulunmalı. |
Yayımladığı olaylar: retail.fulfilment_tracking_updated, retail.customer_notification_requested
Neye yazar: fulfilment (update) — Writes the carrier, tracking number and link
curl -X POST https://app.getera.io/api/v1/fulfilments/FULFILMENT_ID/actions/set_tracking \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"trackingNumber":"Tracking number"}'{
"ok": true,
"result": "…",
"events": [
"retail.fulfilment_tracking_updated",
"retail.customer_notification_requested"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.fulfilments.setTracking("FULFILMENT_ID", {
trackingNumber: "Tracking number"
})era fulfilments set_tracking FULFILMENT_ID \
--tracking-number "Tracking number"{
"name": "era__retail__set_tracking",
"arguments": {
"id": "FULFILMENT_ID",
"trackingNumber": "Tracking number"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:handle izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found · 429 çok sık istek
retail.set_variant_price
Varyantı kanalda fiyatla — Kanala özel fiyat. Yoksa katalog liste fiyatı geçerlidir.
Gereken izin retail:write · veriyi değiştirir
https://app.getera.io/api/v1/variant_listings/actions/set_variant_price- Asıl adres:
POST /api/v1/actions/retail.set_variant_price
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
itemVariantId | uuid | evet | Varyant · kimliği: item_variant |
channelId | uuid | evet | Kanal · kimliği: channel |
priceAmount | number (money) | Fiyat (küçük birim) · en az 0 | |
costPriceAmount | number (money) | Maliyet (küçük birim) · en az 0 | |
priorPriceAmount | number (money) | Eski fiyat (kuruş) · en az 0 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
channel_not_found | Kanal bulunmalı. |
variant_not_found | Varyant bulunmalı. |
Yayımladığı olaylar: retail.channel_price_changed
Neye yazar: item_variant_channel_listing (upsert) — Writes the price override
curl -X POST https://app.getera.io/api/v1/variant_listings/actions/set_variant_price \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"itemVariantId":"ITEM_VARIANT_ID","channelId":"CHANNEL_ID"}'{
"ok": true,
"result": "…",
"events": [
"retail.channel_price_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.variantListings.setVariantPrice({
itemVariantId: "ITEM_VARIANT_ID",
channelId: "CHANNEL_ID"
})era variant_listings set_variant_price \
--item-variant-id "ITEM_VARIANT_ID" \
--channel-id "CHANNEL_ID"{
"name": "era__retail__set_variant_price",
"arguments": {
"itemVariantId": "ITEM_VARIANT_ID",
"channelId": "CHANNEL_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 channel_not_found, variant_not_found · 429 çok sık istek
retail.set_warehouse_zones
Deponun hizmet verdiği bölgeleri seç — Bir depo yalnızca bölgelerinin kapsadığı ülkelere gönderir.
Gereken izin retail:manage · veriyi değiştirir
https://app.getera.io/api/v1/warehouse_shipping_zones/actions/set_warehouse_zones- Asıl adres:
POST /api/v1/actions/retail.set_warehouse_zones
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
warehouseId | uuid | evet | Depo · kimliği: warehouse |
shippingZoneIds | object / array | evet | Kargo bölgeleri |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Depo bulunmalı. |
zone_not_found | Her kargo bölgesi bulunmalı. |
Yayımladığı olaylar: retail.warehouse_zones_changed
Neye yazar: warehouse_shipping_zone (upsert) — Replaces the zone assignment
curl -X POST https://app.getera.io/api/v1/warehouse_shipping_zones/actions/set_warehouse_zones \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"warehouseId":"WAREHOUSE_ID","shippingZoneIds":{}}'{
"ok": true,
"result": "…",
"events": [
"retail.warehouse_zones_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.warehouseShippingZones.setWarehouseZones({
warehouseId: "WAREHOUSE_ID",
shippingZoneIds: {}
})era warehouse_shipping_zones set_warehouse_zones --data '{"warehouseId":"WAREHOUSE_ID","shippingZoneIds":{}}'{
"name": "era__retail__set_warehouse_zones",
"arguments": {
"warehouseId": "WAREHOUSE_ID",
"shippingZoneIds": {}
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, zone_not_found · 429 çok sık istek
retail.site_cart_add
Sepete ekle (site) — Ziyaretçi bir ürünü sepetine koyar; sepeti yoksa sitenin satış kanalında açılır.
Gereken izin retail:write · veriyi değiştirir · Yayındaki bir siteden de çağrılabilir (visitor)
/api/site/v1/{siteId}, örneğin @getera/storefront ile). API anahtarı ya da token ile istek reddedilir (403 site_only).https://app.getera.io/api/v1/checkouts/actions/site_cart_add- Asıl adres:
POST /api/v1/actions/retail.site_cart_add
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
token | uuid | Sepet | |
itemVariantId | uuid | evet | Varyant · kimliği: item_variant |
quantity | number | Miktar |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
shop_closed | Mağaza şu anda satışa kapalı. |
not_for_sale | Bu ürün satışta değil. |
bad_quantity | Adet 0 ile 99 arasında bir tam sayı olmalı. |
Yayımladığı olaylar: retail.checkout_created, retail.checkout_updated
Neye yazar: checkout (insert) — Opens the basket when there is none; checkout_line (upsert) — Adds the quantity to the line; stock_reservation (upsert) — Holds tracked stock for fifteen minutes
Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 shop_closed, not_for_sale, bad_quantity · 429 çok sık istek
retail.site_cart_claim
Giriş yapınca sepetimi koru — Misafir sepeti giriş yapan müşterinin olur; daha önce bıraktığı sepetin ürünleri de eklenir.
Gereken izin retail:write · siler ya da geri alınamaz · Yayındaki bir siteden de çağrılabilir (customer)
/api/site/v1/{siteId}, örneğin @getera/storefront ile). API anahtarı ya da token ile istek reddedilir (403 site_only).https://app.getera.io/api/v1/checkout_lines/actions/site_cart_claim- Asıl adres:
POST /api/v1/actions/retail.site_cart_claim
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
token | uuid | evet | Sepet |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
basket_not_found | Sepet bulunamadı ya da başka birine ait. |
Yayımladığı olaylar: retail.checkout_updated
Neye yazar: checkout (update) — Puts the customer on the basket; checkout_line (upsert) — Folds in the older basket’s lines; checkout (delete) — Removes the older basket
Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 basket_not_found · 429 çok sık istek
retail.site_cart_set
Sepet satırını değiştir (site) — Ziyaretçi sepetteki bir ürünün adedini değiştirir; 0 satırı kaldırır.
Gereken izin retail:write · veriyi değiştirir · Yayındaki bir siteden de çağrılabilir (visitor)
/api/site/v1/{siteId}, örneğin @getera/storefront ile). API anahtarı ya da token ile istek reddedilir (403 site_only).https://app.getera.io/api/v1/checkout_lines/actions/site_cart_set- Asıl adres:
POST /api/v1/actions/retail.site_cart_set
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
token | uuid | evet | Sepet |
itemVariantId | uuid | evet | Varyant · kimliği: item_variant |
quantity | number | evet | Miktar |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
basket_not_found | Sepet bulunamadı. |
checkout_completing | Siparişe dönüştürülmekte olan bir sepet değiştirilemez. |
bad_quantity | Adet 0 ile 99 arasında bir tam sayı olmalı. |
not_for_sale | Bu ürün satışta değil. |
Yayımladığı olaylar: retail.checkout_updated
Neye yazar: checkout_line (upsert) — Sets or removes the line; stock_reservation (upsert) — Re-holds the basket’s stock
Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 basket_not_found, checkout_completing, bad_quantity, not_for_sale · 429 çok sık istek
retail.site_checkout_delivery
Teslimat seç (site) — Site sepeti adresine hizmet veren bir kargo seçeneği ya da kanalın bir teslim alma noktasını seçer.
Gereken izin retail:write · veriyi değiştirir · Yayındaki bir siteden de çağrılabilir (visitor)
/api/site/v1/{siteId}, örneğin @getera/storefront ile). API anahtarı ya da token ile istek reddedilir (403 site_only).https://app.getera.io/api/v1/checkouts/actions/site_checkout_delivery- Asıl adres:
POST /api/v1/actions/retail.site_checkout_delivery
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
token | uuid | evet | Sepet |
shippingMethodId | uuid | Kargo ücreti · kimliği: shipping_method | |
pickupPointId | uuid | Teslim alma noktası · kimliği: warehouse |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
basket_not_found | Sepet bulunamadı. |
checkout_completing | Siparişe dönüştürülmekte olan bir sepet değiştirilemez. |
delivery_missing | Bir kargo seçeneği ya da teslim alma noktası seçilmeli. |
collection_point_unavailable | Bu teslim alma noktası bu mağaza için kullanılamıyor. |
Yayımladığı olaylar: retail.checkout_updated
Neye yazar: checkout (update) — Writes the delivery and its charge
Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 basket_not_found, checkout_completing, delivery_missing, collection_point_unavailable · 429 çok sık istek
retail.site_checkout_details
Ödeme bilgilerini gir (site) — Site sepetinin e-postası, müşterisi ve teslimat adresi; uygun teslimat seçeneklerini ve teslim alma noktalarını döndürür.
Gereken izin retail:write · veriyi değiştirir · Yayındaki bir siteden de çağrılabilir (visitor)
/api/site/v1/{siteId}, örneğin @getera/storefront ile). API anahtarı ya da token ile istek reddedilir (403 site_only).https://app.getera.io/api/v1/checkouts/actions/site_checkout_details- Asıl adres:
POST /api/v1/actions/retail.site_checkout_details
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
token | uuid | evet | Sepet |
email | string | evet | E-posta · en çok 320 |
customerId | uuid | evet | Müşteri · kimliği: customer |
addressId | uuid | Teslimat adresi · kimliği: address | |
note | string | Not · en çok 1000 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
basket_not_found | Sepet bulunamadı. |
checkout_completing | Siparişe dönüştürülmekte olan bir sepet değiştirilemez. |
invalid_email | E-posta adresi geçerli olmalı. |
customer_mismatch | Müşteri bilgisi, girilen e-posta ya da giriş yapan hesapla eşleşmiyor. |
address_not_found | Adres bu ödeme adımında bulunamadı. |
Yayımladığı olaylar: retail.checkout_updated
Neye yazar: checkout (update) — Writes the email, the customer and the address
Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 basket_not_found, checkout_completing, invalid_email, customer_mismatch, address_not_found · 429 çok sık istek
retail.site_checkout_voucher
İndirim kodu kullan (site) — Site sepeti bir indirim kodu alır ya da bırakır; kod indirim kurallarına göre sepetteki ürünlerde değerlendirilir, sipariş indirimi taşır.
Gereken izin retail:write · veriyi değiştirir · Yayındaki bir siteden de çağrılabilir (visitor)
/api/site/v1/{siteId}, örneğin @getera/storefront ile). API anahtarı ya da token ile istek reddedilir (403 site_only).https://app.getera.io/api/v1/checkouts/actions/site_checkout_voucher- Asıl adres:
POST /api/v1/actions/retail.site_checkout_voucher
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
token | uuid | evet | Sepet |
code | string | Kupon kodu · en çok 255 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
basket_not_found | Sepet bulunamadı. |
checkout_completing | Siparişe dönüştürülmekte olan bir sepet değiştirilemez. |
voucher_not_found | Kod bir kuponu belirtmeli. |
voucher_not_applicable | Kupon etkin olmalı, bu satış kanalında tanımlı olmalı ve sepet kuponun koşullarını karşılamalı. |
voucher_usage_exceeded | Kod tükenmemiş olmalı. |
Yayımladığı olaylar: retail.checkout_updated
Neye yazar: checkout (update) — Writes the code, the discount and the new total
Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 basket_not_found, checkout_completing, voucher_not_found, voucher_not_applicable, voucher_usage_exceeded · 429 çok sık istek
retail.site_place_order
Sipariş ver (site) — Site sepeti, seçilen ödeme yöntemiyle ödeme bekleyen bir siparişe dönüşür; stok ayrılır ve onay e-postası istenir.
Gereken izin retail:write · siler ya da geri alınamaz · Yayındaki bir siteden de çağrılabilir (visitor)
/api/site/v1/{siteId}, örneğin @getera/storefront ile). API anahtarı ya da token ile istek reddedilir (403 site_only).https://app.getera.io/api/v1/orders/actions/site_place_order- Asıl adres:
POST /api/v1/actions/retail.site_place_order
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
token | uuid | evet | Sepet |
paymentMethod | string | Ödeme yöntemi · Sepetteki hediye kartı tutarın tamamını karşılıyorsa boş bırakılır. · en çok 40 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
basket_not_found | Sepet bulunamadı. |
checkout_completing | Bu sepet zaten siparişe dönüştürülüyor. |
payment_method_unavailable | Ödeme yöntemi bağlı bir ödeme uygulaması olmalı; test yöntemi yalnızca canlı ortam dışında kullanılabilir. |
details_missing | Sepette e-posta ve müşteri bilgisi eksik. |
voucher_usage_exceeded | Sepetteki kupon artık kullanılamıyor. |
Yayımladığı olaylar: retail.order_placed, retail.customer_notification_requested, retail.stock_low, retail.order_discounts_applied
Neye yazar: sales_order (insert) — The order; sales_order_line (insert) — Its lines, frozen; allocation (insert) — The stock it holds; checkout (delete) — The basket is gone
Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 basket_not_found, checkout_completing, payment_method_unavailable, details_missing, voucher_usage_exceeded · 429 çok sık istek
retail.sync_charge_status
Siparişin ödeme durumunu güncelle — Siparişte para hareket etti; ödeme durumu buna uyar.
Gereken izin retail:write · veriyi değiştirir
403 machine_only).https://app.getera.io/api/v1/orders/{id}/actions/sync_charge_status- Asıl adres:
POST /api/v1/actions/retail.sync_charge_status
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Sipariş · kimliği: sales_order |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Sipariş bulunmalı. |
Yayımladığı olaylar: retail.order_charge_status_changed
Neye yazar: sales_order (update) — Writes the payment status and the total charged
Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found · 429 çok sık istek
retail.transfer_stock
Depolar arasında stok taşı — İki defter satırı, tek hareket. Siparişlerin ayırdığı stok yerinde kalır.
Gereken izin retail:write · veriyi değiştirir
https://app.getera.io/api/v1/stocks/actions/transfer_stock- Asıl adres:
POST /api/v1/actions/retail.transfer_stock
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
fromWarehouseId | uuid | evet | Nereden · kimliği: warehouse |
toWarehouseId | uuid | evet | Bitiş · kimliği: warehouse |
itemVariantId | uuid | evet | Varyant · kimliği: item_variant |
quantity | number | evet | Miktar · en az 1 |
note | string | Not · en çok 500 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
no_change | Transfer en az bir adet taşır. |
same_warehouse | İki depo farklı olmalı. |
warehouse_not_found | İki depo da bulunmalı. |
variant_not_found | Varyant bulunmalı. |
insufficient_stock | Kaynak depoda bu kadar serbest stok olmalı. |
Yayımladığı olaylar: retail.stock_transferred, retail.stock_low
Neye yazar: stock (upsert) — Moves the count; stock_movement (insert) — Writes both sides of the move
curl -X POST https://app.getera.io/api/v1/stocks/actions/transfer_stock \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"fromWarehouseId":"WAREHOUSE_ID","toWarehouseId":"WAREHOUSE_ID","itemVariantId":"ITEM_VARIANT_ID","quantity":1}'{
"ok": true,
"result": "…",
"events": [
"retail.stock_transferred",
"retail.stock_low"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.stocks.transferStock({
fromWarehouseId: "WAREHOUSE_ID",
toWarehouseId: "WAREHOUSE_ID",
itemVariantId: "ITEM_VARIANT_ID",
quantity: 1
})era stocks transfer_stock \
--from-warehouse-id "WAREHOUSE_ID" \
--to-warehouse-id "WAREHOUSE_ID" \
--item-variant-id "ITEM_VARIANT_ID" \
--quantity 1{
"name": "era__retail__transfer_stock",
"arguments": {
"fromWarehouseId": "WAREHOUSE_ID",
"toWarehouseId": "WAREHOUSE_ID",
"itemVariantId": "ITEM_VARIANT_ID",
"quantity": 1
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 no_change, same_warehouse, warehouse_not_found, variant_not_found, insufficient_stock · 429 çok sık istek
retail.update_order
Siparişi düzenle — Notu, e-postası, adresleri ve — düzenlenebilirken — teslimat ücreti.
Gereken izin retail:write · veriyi değiştirir
https://app.getera.io/api/v1/orders/{id}/actions/update_order- REST kısayolu:
PATCH /api/v1/orders/{id} - Asıl adres:
POST /api/v1/actions/retail.update_order
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Sipariş · kimliği: sales_order |
customerId | uuid | Müşteri · kimliği: customer | |
customerNote | string | Not · en çok 2000 | |
email | E-posta | ||
billingAddressId | uuid | Fatura adresi · kimliği: address | |
shippingAddressId | uuid | Teslimat adresi · kimliği: address | |
shippingMethodId | uuid | Kargo ücreti · kimliği: shipping_method | |
fulfilmentMethod | string (enum) | Teslimat · İzin verilen değerler: shipping, pickup |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Sipariş bulunmalı. |
customer_not_found | Müşteri bulunamadı ya da etkin değil. |
order_not_editable | Gönderilmiş bir sipariş teslimat yöntemini değiştiremez. |
shipping_method_not_available | Ücret bu siparişin kanalında fiyatlanmış olmalı. |
Yayımladığı olaylar: retail.order_updated, retail.order_discounts_applied
Neye yazar: sales_order (update) — Edits the order; sales_order_line (update) — Re-applies discounts while editable; sales_order_discount (insert) — Records what was applied
curl -X POST https://app.getera.io/api/v1/orders/ORDER_ID/actions/update_order \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"customerId":"CUSTOMER_ID"}'{
"ok": true,
"result": "…",
"events": [
"retail.order_updated",
"retail.order_discounts_applied"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.orders.updateOrder("ORDER_ID", {
customerId: "CUSTOMER_ID"
})era orders update_order ORDER_ID \
--customer-id "CUSTOMER_ID"{
"name": "era__retail__update_order",
"arguments": {
"id": "ORDER_ID",
"customerId": "CUSTOMER_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, customer_not_found, order_not_editable, shipping_method_not_available · 429 çok sık istek
retail.update_order_metadata
Sipariş ek bilgilerini düzenle — Siparişin anahtar → değer ek bilgilerini, herkese açık veya gizli olarak yeniden yazar.
Gereken izin retail:write · veriyi değiştirir
https://app.getera.io/api/v1/orders/{id}/actions/update_order_metadata- Asıl adres:
POST /api/v1/actions/retail.update_order_metadata
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Sipariş · kimliği: sales_order |
metadata | object / array | Meta veri | |
privateMetadata | object / array | Özel meta veri |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Sipariş bulunmalı. |
Yayımladığı olaylar: retail.order_updated
Neye yazar: sales_order (update) — Writes the metadata
curl -X POST https://app.getera.io/api/v1/orders/ORDER_ID/actions/update_order_metadata \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"metadata":{}}'{
"ok": true,
"result": "…",
"events": [
"retail.order_updated"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.orders.updateOrderMetadata("ORDER_ID", {
metadata: {}
})era orders update_order_metadata ORDER_ID --data '{"metadata":{}}'{
"name": "era__retail__update_order_metadata",
"arguments": {
"id": "ORDER_ID",
"metadata": {}
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found · 429 çok sık istek
retail.update_warehouse
Depoyu düzenle — Adı, adresi, iletişim bilgisi ve müşterilerin oradan teslim alıp alamayacağı.
Gereken izin retail:manage · veriyi değiştirir
https://app.getera.io/api/v1/warehouses/{id}/actions/update_warehouse- REST kısayolu:
PATCH /api/v1/warehouses/{id} - Asıl adres:
POST /api/v1/actions/retail.update_warehouse
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Depo · kimliği: warehouse |
name | string | Ad · en çok 250 | |
addressId | uuid | Adres · kimliği: address | |
streetAddress1 | string | Sokak · en çok 250 | |
streetAddress2 | string | Sokak (ikinci satır) · en çok 250 | |
cityArea | string | İlçe · en çok 120 | |
city | string | Şehir · en çok 120 | |
countryArea | string | Bölge · en çok 120 | |
postalCode | string | Posta kodu · en çok 32 | |
country | string | Ülke · en çok 2 | |
phone | phone | Telefon | |
email | E-posta | ||
clickAndCollectOption | string (enum) | Koleksiyon · İzin verilen değerler: disabled, local, all | |
isPrivate | boolean | Müşterilerden gizli |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Depo bulunmalı. |
address_not_found | Adres bulunmalı. |
Yayımladığı olaylar: retail.warehouse_saved
Neye yazar: warehouse (update) — Edits the warehouse
curl -X POST https://app.getera.io/api/v1/warehouses/WAREHOUSE_ID/actions/update_warehouse \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"name":"Name"}'{
"ok": true,
"result": "…",
"events": [
"retail.warehouse_saved"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.warehouses.updateWarehouse("WAREHOUSE_ID", {
name: "Name"
})era warehouses update_warehouse WAREHOUSE_ID \
--name "Name"{
"name": "era__retail__update_warehouse",
"arguments": {
"id": "WAREHOUSE_ID",
"name": "Name"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde retail:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, address_not_found · 429 çok sık istek
Veri modelleri
Allocation
Tablo allocation · Kaynak allocations
GET /api/v1/allocationsGET /api/v1/allocations/{id}
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
order_line_id | string (uuid) · uuid | sales_order_line | ||
stock_id | string (uuid) · uuid | stock | ||
quantity_allocated | integer · int4 | |||
created_at | string (date-time) · timestamptz |
Birincil anahtar: id
Tekil: order_line_id, stock_id
Denetimler:
CHECK ((quantity_allocated >= 0))
CheckoutLine
Tablo checkout_line · Kaynak checkout_lines
GET /api/v1/checkout_linesGET /api/v1/checkout_lines/{id}
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
item_variant_id | string (uuid) · uuid | item_variant | ||
quantity | integer · int4 | |||
is_gift | boolean · bool | |||
price_override | string (int64) · int8 | evet | ||
currency | string · bpchar | en çok 3 | ||
undiscounted_unit_amount | string (int64) · int8 | |||
total_amount | string (int64) · int8 | |||
metadata | object · jsonb | |||
created_at | string (date-time) · timestamptz |
Birincil anahtar: id
Tekil: checkout_token, item_variant_id
Denetimler:
CHECK ((currency ~ '^[A-Z]{3}$'::text))CHECK (((price_override IS NULL) OR (price_override >= 0)))CHECK ((quantity >= 1))CHECK ((total_amount >= 0))CHECK ((undiscounted_unit_amount >= 0))
Checkout
Tablo checkout · Kaynak checkouts
GET /api/v1/checkoutsGET /api/v1/checkouts/{id}POST /api/v1/checkouts→retail.create_checkout
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
channel_id | string (uuid) · uuid | channel | ||
currency | string · bpchar | en çok 3 | ||
country | string · bpchar | evet | en çok 2 | |
language_code | string · text | evet | ||
customer_id | string (uuid) · uuid | evet | customer | |
email | string · text | evet | ||
note | string · text | |||
billing_address_id | string (uuid) · uuid | evet | address | |
shipping_address_id | string (uuid) · uuid | evet | address | |
save_billing_address | boolean · bool | |||
save_shipping_address | boolean · bool | |||
shipping_method_id | string (uuid) · uuid | evet | shipping_method | |
shipping_method_name | string · text | evet | ||
collection_point_id | string (uuid) · uuid | evet | warehouse | |
delivery_methods_stale_at | string (date-time) · timestamptz | evet | ||
subtotal_amount | string (int64) · int8 | |||
shipping_amount | string (int64) · int8 | |||
discount_amount | string (int64) · int8 | |||
total_amount | string (int64) · int8 | |||
discount_name | string · text | evet | ||
authorize_status | string · text | none, partial, full | ||
charge_status | string · text | none, partial, full, overcharged | ||
automatically_refundable | boolean · bool | |||
voucher_code | string · text | evet | ||
is_voucher_usage_increased | boolean · bool | |||
price_expiration | string (date-time) · timestamptz | |||
discount_expiration | string (date-time) · timestamptz | |||
completing_started_at | string (date-time) · timestamptz | evet | ||
redirect_url | string · text | evet | ||
tracking_code | string · text | evet | ||
metadata | object · jsonb | |||
created_at | string (date-time) · timestamptz | |||
last_change | string (date-time) · timestamptz | |||
abandoned_notice_at | string (date-time) · timestamptz | evet |
Birincil anahtar: token
Denetimler:
CHECK ((currency ~ '^[A-Z]{3}$'::text))CHECK ((discount_amount >= 0))CHECK ((shipping_amount >= 0))CHECK ((subtotal_amount >= 0))CHECK ((total_amount >= 0))
ItemCollectionItem
Tablo item_collection_item · Kaynak collection_items
GET /api/v1/collection_itemsGET /api/v1/collection_items/{id}
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
collection_id | string (uuid) · uuid | item_collection | ||
item_id | string (uuid) · uuid | item | ||
sort_order | integer · int4 | |||
created_at | string (date-time) · timestamptz |
Birincil anahtar: id
Tekil: collection_id, item_id
ItemCollection
Tablo item_collection · Kaynak collections
GET /api/v1/collectionsGET /api/v1/collections/{id}PATCH /api/v1/collections/{id}→retail.save_collectionDELETE /api/v1/collections/{id}→retail.delete_collection
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
name | string · text | |||
slug | string · text | |||
description | string · text | evet | ||
background_file_id | string (uuid) · uuid | evet | file | |
background_alt | string · text | evet | ||
seo_title | string · text | evet | ||
seo_description | string · text | evet | ||
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz | |||
rule | object · jsonb | evet |
Birincil anahtar: id
FulfilmentLine
Tablo fulfilment_line · Kaynak fulfilment_lines
GET /api/v1/fulfilment_linesGET /api/v1/fulfilment_lines/{id}
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
fulfilment_id | string (uuid) · uuid | fulfilment | ||
order_line_id | string (uuid) · uuid | sales_order_line | ||
quantity | integer · int4 | |||
stock_id | string (uuid) · uuid | evet | stock | |
created_at | string (date-time) · timestamptz |
Birincil anahtar: id
Denetimler:
CHECK ((quantity >= 1))
Fulfilment
Tablo fulfilment · Kaynak fulfilments
GET /api/v1/fulfilmentsGET /api/v1/fulfilments/{id}
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
order_id | string (uuid) · uuid | sales_order | ||
sequence | integer · int4 | |||
status | string · text | fulfilled, refunded, returned, replaced, refunded_and_returned, canceled, waiting_for_approval | ||
tracking_number | string · text | |||
currency | string · bpchar | evet | en çok 3 | |
shipping_refund_amount | string (int64) · int8 | evet | ||
total_refund_amount | string (int64) · int8 | evet | ||
metadata | object · jsonb | |||
created_by_user_id | string (uuid) · uuid | evet | app_user | |
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz | |||
carrier | string · text | evet | ||
tracking_url | string · text | evet | ||
customer_notified_at | string (date-time) · timestamptz | evet |
Birincil anahtar: id
Tekil: order_id, sequence
Denetimler:
CHECK (((currency IS NULL) OR (currency ~ '^[A-Z]{3}$'::text)))CHECK ((sequence >= 1))CHECK (((shipping_refund_amount IS NULL) OR (shipping_refund_amount >= 0)))CHECK (((total_refund_amount IS NULL) OR (total_refund_amount >= 0)))
ItemCollectionChannelListing
Tablo item_collection_channel_listing · Kaynak item_collection_channel_listings
GET /api/v1/item_collection_channel_listingsGET /api/v1/item_collection_channel_listings/{id}
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
collection_id | string (uuid) · uuid | item_collection | ||
channel_id | string (uuid) · uuid | channel | ||
is_published | boolean · bool | |||
published_at | string (date-time) · timestamptz | evet |
Birincil anahtar: id
Tekil: collection_id, channel_id
SalesOrderDiscount
Tablo sales_order_discount · Kaynak order_discounts
GET /api/v1/order_discountsGET /api/v1/order_discounts/{id}
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
order_id | string (uuid) · uuid | sales_order | ||
order_line_id | string (uuid) · uuid | evet | sales_order_line | |
type | string · text | promotion, order_promotion, voucher, manual | ||
scope | string · text | order, line, shipping | ||
value_type | string · text | fixed, percentage | ||
value | string (decimal) · numeric | |||
amount | string (int64) · int8 | |||
currency | string · bpchar | en çok 3 | ||
name | string · text | evet | ||
reason | string · text | evet | ||
promotion_rule_id | string (uuid) · uuid | evet | ||
voucher_id | string (uuid) · uuid | evet | ||
voucher_code | string · text | evet | ||
created_at | string (date-time) · timestamptz |
Birincil anahtar: id
Denetimler:
CHECK ((amount >= 0))CHECK (((scope = 'line'::text) = (order_line_id IS NOT NULL)))CHECK ((currency ~ '^[A-Z]{3}$'::text))CHECK ((value >= (0)::numeric))
SalesOrderGiftCard
Tablo sales_order_gift_card · Kaynak order_gift_cards
GET /api/v1/order_gift_cardsGET /api/v1/order_gift_cards/{id}
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
order_id | string (uuid) · uuid | sales_order | ||
gift_card_id | string (uuid) · uuid | evet | ||
gift_card_event_id | string (uuid) · uuid | evet | ||
code_tail | string · text | |||
amount | string (int64) · int8 | |||
currency | string · bpchar | en çok 3 | ||
idempotency_key | string · text | |||
created_at | string (date-time) · timestamptz | |||
status | string · text | pending, applied, failed | ||
pending_code | string · text | evet | ||
failure_reason | string · text | evet | ||
resolved_at | string (date-time) · timestamptz | evet |
Birincil anahtar: id
Tekil: workspace_id, idempotency_key
Denetimler:
CHECK ((amount > 0))CHECK (((status <> 'applied'::text) OR (gift_card_id IS NOT NULL)))CHECK ((currency ~ '^[A-Z]{3}$'::text))CHECK (((status <> 'pending'::text) OR (pending_code IS NOT NULL)))
OrderGrantedRefundLine
Tablo order_granted_refund_line · Kaynak order_granted_refund_lines
GET /api/v1/order_granted_refund_linesGET /api/v1/order_granted_refund_lines/{id}
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
granted_refund_id | string (uuid) · uuid | order_granted_refund | ||
order_line_id | string (uuid) · uuid | sales_order_line | ||
quantity | integer · int4 | |||
reason | string · text | evet |
Birincil anahtar: id
Tekil: granted_refund_id, order_line_id
Denetimler:
CHECK ((quantity > 0))
OrderGrantedRefund
Tablo order_granted_refund · Kaynak order_granted_refunds
GET /api/v1/order_granted_refundsGET /api/v1/order_granted_refunds/{id}
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
order_id | string (uuid) · uuid | sales_order | ||
return_id | string (uuid) · uuid | evet | order_return | |
amount | string (int64) · int8 | |||
currency | string · bpchar | en çok 3 | ||
reason | string · text | evet | ||
shipping_costs_included | boolean · bool | |||
created_by_user_id | string (uuid) · uuid | evet | app_user | |
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz |
Birincil anahtar: id
Denetimler:
CHECK ((amount > 0))CHECK ((currency ~ '^[A-Z]{3}$'::text))
SalesOrderLine
Tablo sales_order_line · Kaynak order_lines
GET /api/v1/order_linesGET /api/v1/order_lines/{id}
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
order_id | string (uuid) · uuid | sales_order | ||
item_id | string (uuid) · uuid | evet | item | |
item_variant_id | string (uuid) · uuid | evet | item_variant | |
item_name | string · text | |||
variant_name | string · text | |||
sku | string · text | evet | ||
is_shipping_required | boolean · bool | |||
quantity | integer · int4 | |||
quantity_fulfilled | integer · int4 | |||
is_gift | boolean · bool | |||
currency | string · bpchar | en çok 3 | ||
unit_amount | string (int64) · int8 | |||
total_amount | string (int64) · int8 | |||
undiscounted_unit_amount | string (int64) · int8 | |||
undiscounted_total_amount | string (int64) · int8 | |||
unit_discount_amount | string (int64) · int8 | |||
unit_discount_type | string · text | evet | fixed, percentage | |
unit_discount_reason | string · text | evet | ||
is_price_overridden | boolean · bool | evet | ||
voucher_code | string · text | evet | ||
draft_base_price_expire_at | string (date-time) · timestamptz | evet | ||
display_order | integer · int4 | |||
metadata | object · jsonb | |||
created_at | string (date-time) · timestamptz | |||
tax_class_id | string (uuid) · uuid | evet | ||
tax_class_name | string · text | evet | ||
tax_rate | string (decimal) · numeric | evet | ||
tax_amount | string (int64) · int8 | |||
tax_included | boolean · bool | |||
order_discount_amount | string (int64) · int8 |
Birincil anahtar: id
Denetimler:
CHECK ((quantity_fulfilled <= quantity))CHECK ((currency ~ '^[A-Z]{3}$'::text))CHECK ((order_discount_amount >= 0))CHECK ((quantity >= 1))CHECK ((quantity_fulfilled >= 0))CHECK ((tax_amount >= 0))CHECK ((total_amount >= 0))CHECK ((undiscounted_total_amount >= 0))CHECK ((undiscounted_unit_amount >= 0))CHECK ((unit_amount >= 0))CHECK ((unit_discount_amount >= 0))
OrderReturnLine
Tablo order_return_line · Kaynak order_return_lines
GET /api/v1/order_return_linesGET /api/v1/order_return_lines/{id}
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
return_id | string (uuid) · uuid | order_return | ||
order_line_id | string (uuid) · uuid | sales_order_line | ||
quantity | integer · int4 | |||
quantity_received | integer · int4 | |||
quantity_restocked | integer · int4 | |||
condition | string · text | evet | resellable, damaged | |
warehouse_id | string (uuid) · uuid | evet | warehouse | |
note | string · text | evet |
Birincil anahtar: id
Tekil: return_id, order_line_id
Denetimler:
CHECK ((quantity_received <= quantity))CHECK ((quantity_restocked <= quantity_received))CHECK ((quantity > 0))CHECK ((quantity_received >= 0))CHECK ((quantity_restocked >= 0))
OrderReturn
Tablo order_return · Kaynak order_returns
GET /api/v1/order_returnsGET /api/v1/order_returns/{id}
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
order_id | string (uuid) · uuid | sales_order | ||
sequence | integer · int4 | |||
status | string · text | requested, received, inspected, closed, rejected | ||
reason | string · text | evet | ||
note | string · text | evet | ||
created_by_user_id | string (uuid) · uuid | evet | app_user | |
received_at | string (date-time) · timestamptz | evet | ||
inspected_at | string (date-time) · timestamptz | evet | ||
closed_at | string (date-time) · timestamptz | evet | ||
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz |
Birincil anahtar: id
Tekil: order_id, sequence
Denetimler:
CHECK ((sequence >= 1))
SalesOrder
Tablo sales_order · Kaynak orders
GET /api/v1/ordersGET /api/v1/orders/{id}POST /api/v1/orders→retail.create_draft_orderPATCH /api/v1/orders/{id}→retail.update_orderDELETE /api/v1/orders/{id}→retail.delete_draft_order
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
number | string (int64) · int8 | |||
status | string · text | draft, unconfirmed, unfulfilled, partially fulfilled, partially_returned, returned, fulfilled, canceled, expired | ||
origin | string · text | checkout, draft, reissue, bulk_create, marketplace | ||
authorize_status | string · text | none, partial, full | ||
charge_status | string · text | none, partial, full, overcharged | ||
channel_id | string (uuid) · uuid | channel | ||
currency | string · bpchar | en çok 3 | ||
language_code | string · text | evet | ||
customer_id | string (uuid) · uuid | evet | customer | |
user_email | string · text | evet | ||
customer_note | string · text | |||
tracking_client_id | string · text | evet | ||
billing_address_id | string (uuid) · uuid | evet | address | |
shipping_address_id | string (uuid) · uuid | evet | address | |
shipping_method_id | string (uuid) · uuid | evet | shipping_method | |
shipping_method_name | string · text | evet | ||
collection_point_id | string (uuid) · uuid | evet | warehouse | |
collection_point_name | string · text | evet | ||
subtotal_amount | string (int64) · int8 | |||
shipping_amount | string (int64) · int8 | |||
undiscounted_shipping_amount | string (int64) · int8 | |||
discount_total_amount | string (int64) · int8 | |||
tax_total_amount | string (int64) · int8 | |||
total_amount | string (int64) · int8 | |||
undiscounted_total_amount | string (int64) · int8 | |||
total_charged_amount | string (int64) · int8 | |||
total_authorized_amount | string (int64) · int8 | |||
voucher_code | string · text | evet | ||
original_order_id | string (uuid) · uuid | evet | sales_order | |
lines_count | integer · int4 | |||
redirect_url | string · text | evet | ||
external_reference | string · text | evet | ||
metadata | object · jsonb | |||
created_by_user_id | string (uuid) · uuid | evet | app_user | |
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz | |||
expired_at | string (date-time) · timestamptz | evet | ||
gift_card_amount | string (int64) · int8 | |||
manual_discount_type | string · text | evet | fixed, percentage | |
manual_discount_percentage | string (decimal) · numeric | evet | ||
manual_discount_fixed_amount | string (int64) · int8 | evet | ||
manual_discount_reason | string · text | evet | ||
shipping_tax_rate | string (decimal) · numeric | |||
shipping_tax_included | boolean · bool | |||
shipping_tax_class_id | string (uuid) · uuid | evet | ||
shipping_tax_class_name | string · text | evet | ||
shipping_tax_amount | string (int64) · int8 | |||
fulfilment_method | string · text | shipping, pickup | ||
private_metadata | object · jsonb |
Birincil anahtar: id
Tekil: workspace_id, number
Denetimler:
CHECK ((currency ~ '^[A-Z]{3}$'::text))CHECK ((discount_total_amount >= 0))CHECK ((gift_card_amount >= 0))CHECK ((lines_count >= 0))CHECK (((manual_discount_fixed_amount IS NULL) OR (manual_discount_fixed_amount > 0)))CHECK (((manual_discount_percentage IS NULL) OR ((manual_discount_percentage > (0)::numeric) AND (manual_discount_percentage <= (100)::numeric))))CHECK ((((manual_discount_type IS NULL) AND (manual_discount_percentage IS NULL) AND (manual_discount_fixed_amount IS NULL)) OR ((manual_discount_type = 'percentage'::text) AND (manual_discount_percentage IS NOT NULL) AND (manual_discount_fixed_amount IS NULL)) OR ((manual_discount_type = 'fixed'::text) AND (manual_discount_fixed_amount IS NOT NULL) AND (manual_discount_percentage IS NULL))))CHECK ((shipping_amount >= 0))CHECK ((subtotal_amount >= 0))CHECK ((tax_total_amount >= 0))CHECK ((total_amount >= 0))CHECK ((undiscounted_shipping_amount >= 0))CHECK ((undiscounted_total_amount >= 0))
PreorderAllocation
Tablo preorder_allocation · Kaynak preorder_allocations
GET /api/v1/preorder_allocationsGET /api/v1/preorder_allocations/{id}
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
order_line_id | string (uuid) · uuid | sales_order_line | ||
item_variant_id | string (uuid) · uuid | item_variant | ||
channel_id | string (uuid) · uuid | channel | ||
quantity | integer · int4 | |||
created_at | string (date-time) · timestamptz |
Birincil anahtar: id
Tekil: order_line_id
Denetimler:
CHECK ((quantity > 0))
ItemChannelListing
Tablo item_channel_listing · Kaynak product_listings
GET /api/v1/product_listingsGET /api/v1/product_listings/{id}
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
item_id | string (uuid) · uuid | item | ||
channel_id | string (uuid) · uuid | channel | ||
is_published | boolean · bool | |||
published_at | string (date-time) · timestamptz | evet | ||
visible_in_listings | boolean · bool | |||
available_for_purchase_at | string (date-time) · timestamptz | evet | ||
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz |
Birincil anahtar: id
Tekil: item_id, channel_id
ChannelWarehouse
Tablo channel_warehouse · Kaynak sales_channel_warehouses
GET /api/v1/sales_channel_warehousesGET /api/v1/sales_channel_warehouses/{id}
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
channel_id | string (uuid) · uuid | channel | ||
warehouse_id | string (uuid) · uuid | warehouse | ||
sort_order | integer · int4 |
Birincil anahtar: id
Tekil: channel_id, warehouse_id
Channel
Tablo channel · Kaynak sales_channels
GET /api/v1/sales_channelsGET /api/v1/sales_channels/{id}PATCH /api/v1/sales_channels/{id}→retail.save_channelDELETE /api/v1/sales_channels/{id}→retail.delete_channel
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
name | string · text | |||
slug | string · text | |||
is_active | boolean · bool | |||
currency_code | string · bpchar | en çok 3 | ||
default_country | string · bpchar | evet | en çok 2 | |
metadata | object · jsonb | |||
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz |
Birincil anahtar: id
Denetimler:
CHECK ((currency_code ~ '^[A-Z]{3}$'::text))
ShippingMethodChannelListing
Tablo shipping_method_channel_listing · Kaynak shipping_method_channel_listings
GET /api/v1/shipping_method_channel_listingsGET /api/v1/shipping_method_channel_listings/{id}
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
shipping_method_id | string (uuid) · uuid | shipping_method | ||
channel_id | string (uuid) · uuid | channel | ||
currency | string · bpchar | en çok 3 | ||
price_amount | string (int64) · int8 | |||
minimum_order_price_amount | string (int64) · int8 | evet | ||
maximum_order_price_amount | string (int64) · int8 | evet | ||
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz |
Birincil anahtar: id
Tekil: shipping_method_id, channel_id
Denetimler:
CHECK (((maximum_order_price_amount IS NULL) OR (maximum_order_price_amount >= 0)))CHECK (((minimum_order_price_amount IS NULL) OR (minimum_order_price_amount >= 0)))CHECK (((minimum_order_price_amount IS NULL) OR (maximum_order_price_amount IS NULL) OR (minimum_order_price_amount <= maximum_order_price_amount)))CHECK ((currency ~ '^[A-Z]{3}$'::text))CHECK ((price_amount >= 0))
ShippingMethodExcludedItem
Tablo shipping_method_excluded_item · Kaynak shipping_method_excluded_items
GET /api/v1/shipping_method_excluded_itemsGET /api/v1/shipping_method_excluded_items/{id}
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
shipping_method_id | string (uuid) · uuid | shipping_method | ||
item_id | string (uuid) · uuid | item |
Birincil anahtar: id
Tekil: shipping_method_id, item_id
ShippingMethodPostalCodeRule
Tablo shipping_method_postal_code_rule · Kaynak shipping_method_postal_code_rules
GET /api/v1/shipping_method_postal_code_rulesGET /api/v1/shipping_method_postal_code_rules/{id}
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
shipping_method_id | string (uuid) · uuid | shipping_method | ||
start_code | string · text | |||
end_code | string · text | evet | ||
inclusion_type | string · text | include, exclude |
Birincil anahtar: id
ShippingMethod
Tablo shipping_method · Kaynak shipping_methods
GET /api/v1/shipping_methodsGET /api/v1/shipping_methods/{id}PATCH /api/v1/shipping_methods/{id}→retail.save_shipping_methodDELETE /api/v1/shipping_methods/{id}→retail.delete_shipping_method
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
shipping_zone_id | string (uuid) · uuid | shipping_zone | ||
name | string · text | |||
description | string · text | evet | ||
type | string · text | price, weight | ||
minimum_order_weight_grams | string (int64) · int8 | evet | ||
maximum_order_weight_grams | string (int64) · int8 | evet | ||
minimum_delivery_days | integer · int4 | evet | ||
maximum_delivery_days | integer · int4 | evet | ||
metadata | object · jsonb | |||
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz | |||
tax_class_id | string (uuid) · uuid | evet | tax_class |
Birincil anahtar: id
Denetimler:
CHECK (((minimum_order_weight_grams IS NULL) OR (maximum_order_weight_grams IS NULL) OR (minimum_order_weight_grams <= maximum_order_weight_grams)))CHECK (((minimum_delivery_days IS NULL) OR (maximum_delivery_days IS NULL) OR (minimum_delivery_days <= maximum_delivery_days)))CHECK (((type <> 'price'::text) OR ((minimum_order_weight_grams IS NULL) AND (maximum_order_weight_grams IS NULL))))CHECK (((maximum_delivery_days IS NULL) OR (maximum_delivery_days >= 0)))CHECK (((maximum_order_weight_grams IS NULL) OR (maximum_order_weight_grams >= 0)))CHECK (((minimum_delivery_days IS NULL) OR (minimum_delivery_days >= 0)))CHECK (((minimum_order_weight_grams IS NULL) OR (minimum_order_weight_grams >= 0)))
ShippingZoneChannel
Tablo shipping_zone_channel · Kaynak shipping_zone_channels
GET /api/v1/shipping_zone_channelsGET /api/v1/shipping_zone_channels/{id}
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
shipping_zone_id | string (uuid) · uuid | shipping_zone | ||
channel_id | string (uuid) · uuid | channel |
Birincil anahtar: id
Tekil: shipping_zone_id, channel_id
ShippingZone
Tablo shipping_zone · Kaynak shipping_zones
GET /api/v1/shipping_zonesGET /api/v1/shipping_zones/{id}PATCH /api/v1/shipping_zones/{id}→retail.save_shipping_zoneDELETE /api/v1/shipping_zones/{id}→retail.delete_shipping_zone
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
name | string · text | |||
description | string · text | evet | ||
countries | string[] · bpchar[] | |||
is_default | boolean · bool | |||
metadata | object · jsonb | |||
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz |
Birincil anahtar: id
StockMovement
Tablo stock_movement · Kaynak stock_movements
GET /api/v1/stock_movementsGET /api/v1/stock_movements/{id}
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
stock_id | string (uuid) · uuid | stock | ||
warehouse_id | string (uuid) · uuid | warehouse | ||
item_variant_id | string (uuid) · uuid | item_variant | ||
quantity_delta | integer · int4 | |||
quantity_after | integer · int4 | |||
reason | string · text | count, received, damaged, correction, fulfilment, fulfilment_canceled, returned, transfer_out, transfer_in | ||
note | string · text | evet | ||
order_id | string (uuid) · uuid | evet | sales_order | |
fulfilment_id | string (uuid) · uuid | evet | fulfilment | |
created_by_user_id | string (uuid) · uuid | evet | app_user | |
created_at | string (date-time) · timestamptz | |||
transfer_id | string (uuid) · uuid | evet | ||
return_id | string (uuid) · uuid | evet |
Birincil anahtar: id
Denetimler:
CHECK ((quantity_delta <> 0))
StockReservation
Tablo stock_reservation · Kaynak stock_reservations
GET /api/v1/stock_reservationsGET /api/v1/stock_reservations/{id}
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
checkout_line_id | string (uuid) · uuid | checkout_line | ||
stock_id | string (uuid) · uuid | stock | ||
quantity | integer · int4 | |||
expires_at | string (date-time) · timestamptz | |||
committed_at | string (date-time) · timestamptz | evet | ||
released_at | string (date-time) · timestamptz | evet | ||
created_at | string (date-time) · timestamptz |
Birincil anahtar: id
Tekil: checkout_line_id, stock_id
Denetimler:
CHECK ((NOT ((committed_at IS NOT NULL) AND (released_at IS NOT NULL))))CHECK ((quantity > 0))
Stock
Tablo stock · Kaynak stocks
GET /api/v1/stocksGET /api/v1/stocks/{id}
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
warehouse_id | string (uuid) · uuid | warehouse | ||
item_variant_id | string (uuid) · uuid | item_variant | ||
quantity | integer · int4 | |||
quantity_allocated | integer · int4 | |||
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz | |||
safety_stock | integer · int4 |
Birincil anahtar: id
Tekil: warehouse_id, item_variant_id
Denetimler:
CHECK ((quantity_allocated >= 0))CHECK ((safety_stock >= 0))
ItemVariantChannelListing
Tablo item_variant_channel_listing · Kaynak variant_listings
GET /api/v1/variant_listingsGET /api/v1/variant_listings/{id}
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
item_variant_id | string (uuid) · uuid | item_variant | ||
channel_id | string (uuid) · uuid | channel | ||
currency | string · bpchar | en çok 3 | ||
price_amount | string (int64) · int8 | evet | ||
cost_price_amount | string (int64) · int8 | evet | ||
prior_price_amount | string (int64) · int8 | evet | ||
discounted_price_amount | string (int64) · int8 | evet | ||
discounted_price_dirty | boolean · bool | |||
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz | |||
preorder_quantity_threshold | integer · int4 | evet |
Birincil anahtar: id
Tekil: item_variant_id, channel_id
Denetimler:
CHECK (((cost_price_amount IS NULL) OR (cost_price_amount >= 0)))CHECK ((currency ~ '^[A-Z]{3}$'::text))CHECK (((discounted_price_amount IS NULL) OR (discounted_price_amount >= 0)))CHECK (((preorder_quantity_threshold IS NULL) OR (preorder_quantity_threshold >= 0)))CHECK (((price_amount IS NULL) OR (price_amount >= 0)))CHECK (((prior_price_amount IS NULL) OR (prior_price_amount >= 0)))
VariantPreorder
Tablo variant_preorder · Kaynak variant_preorders
GET /api/v1/variant_preordersGET /api/v1/variant_preorders/{id}
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
item_variant_id | string (uuid) · uuid | item_variant | ||
end_date | string (date-time) · timestamptz | evet | ||
global_threshold | integer · int4 | evet | ||
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz |
Birincil anahtar: id
Tekil: item_variant_id
Denetimler:
CHECK (((global_threshold IS NULL) OR (global_threshold >= 0)))
WarehouseShippingZone
Tablo warehouse_shipping_zone · Kaynak warehouse_shipping_zones
GET /api/v1/warehouse_shipping_zonesGET /api/v1/warehouse_shipping_zones/{id}
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
warehouse_id | string (uuid) · uuid | warehouse | ||
shipping_zone_id | string (uuid) · uuid | shipping_zone |
Birincil anahtar: id
Tekil: warehouse_id, shipping_zone_id
Warehouse
Tablo warehouse · Kaynak warehouses
GET /api/v1/warehousesGET /api/v1/warehouses/{id}POST /api/v1/warehouses→retail.create_warehousePATCH /api/v1/warehouses/{id}→retail.update_warehouseDELETE /api/v1/warehouses/{id}→retail.delete_warehouse
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
name | string · text | |||
slug | string · text | |||
address_id | string (uuid) · uuid | address | ||
email | string · text | evet | ||
click_and_collect_option | string · text | disabled, local, all | ||
is_private | boolean · bool | |||
external_reference | string · text | evet | ||
metadata | object · jsonb | |||
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz |
Birincil anahtar: id
Olaylar
İş akışları ve webhook'lar bu olaylara tepki verir.
| Olay | Ne olur | Taşıdığı alanlar |
|---|---|---|
retail.channel_deleted | Hiç satış yapmamış bir kanal silindi. | id, slug |
retail.channel_order_imported | Bir pazaryeri siparişi Era’ya geldi. | id, number, channelId, provider, externalId, customerId, currency, totalAmount, status, lines |
retail.channel_order_updated | Bir pazaryeri siparişinin durumu değişti. | id, number, channelId, provider, externalId, from, to, remoteStatus |
retail.channel_price_changed | Kanala özel bir fiyat değişti. | itemVariantId, channelId, amount, currency |
retail.channel_saved | Bir satış kanalı oluşturuldu ya da düzenlendi. | id, slug |
retail.channel_warehouses_changed | Bir kanalın depo sırası değişti. | channelId, count |
retail.checkout_abandoned | E-postası bilinen bir sepet terk edildi. | token, customerId, customerName, email, channelId, currency, totalAmount, totalText, lineCount, idleMinutes |
retail.checkout_created | Bir sepet açıldı. | token, channelId |
retail.checkout_updated | Bir sepet değişti. | token |
retail.collection_deleted | Bir koleksiyon kaldırıldı. | id |
retail.collection_items_changed | Bir koleksiyonun içeriği değişti. | id, count |
retail.collection_saved | Bir koleksiyon oluşturuldu ya da düzenlendi. | id, slug |
retail.customer_notification_requested | Müşterinin bilmesi gereken bir sipariş onayı, gönderi ya da takip değişikliği; bildirimler modülü e-postayla gönderir. | kind, orderId, number, fulfilmentId, sequence, email, customerName, carrier, trackingNumber, trackingUrl, totalAmount, currency |
retail.draft_order_created | Taslak bir sipariş başlatıldı. | id, number |
retail.draft_order_deleted | Personelin oluşturduğu bir taslak silindi. | id, number |
retail.fulfilment_approved | Bir gönderi onaylandı. | id, orderId |
retail.fulfilment_canceled | Bir gönderi iptal edildi. | id, orderId |
retail.fulfilment_created | Bir gönderi oluşturuldu. | id, orderId, status, customerId, number, sequence, carrier, trackingNumber |
retail.fulfilment_tracking_updated | Bir takip numarası girildi. | id, orderId |
retail.gift_card_applied | Bir hediye kartı bir siparişin ödemesine katıldı. | id, orderId, giftCardId, amount, currency |
retail.gift_card_removed | Bir hediye kartı bir siparişten çıkarıldı. | id, orderId, orderNumber, giftCardId, amount, currency |
retail.gift_card_requested | Bir siparişe hediye kartı eklendi; kartı hediye kartları modülü işler. | id, orderId, amount, currency, idempotencyKey |
retail.listing_changed | Bir kanalda bir şey listelendi ya da listeden kaldırıldı. | itemId, channelId, isPublished |
retail.order_canceled | Bir sipariş iptal edildi. | id, number, releasedQuantity, reason, giftCardsReleased |
retail.order_charge_status_changed | Bir siparişin ödeme durumu değişti (ödenmedi, kısmi, tam, fazla). | id, from, to, collectedAmount |
retail.order_confirmed | Bir sipariş onaylandı. | id, number |
retail.order_discounts_applied | Bir siparişe promosyonlar ve bir kupon (yeniden) uygulandı. | id, currency, voucherCode, total, discounts |
retail.order_expired | Onaylanmamış bir siparişin süresi doldu. | id, number, releasedQuantity |
retail.order_lines_changed | Bir siparişin satırları değişti. | id, count |
retail.order_placed | Bir sipariş verildi. | id, number, channelId, customerId, customerOrderCount, currency, totalAmount, origin, fulfilmentMethod, lines, shippingAmount, undiscountedShippingAmount, giftCardAmount, taxOnTopAmount, voucherCode, discountTotal, discounts, shippingTaxAmount, shippingTaxRate, shippingTaxIncluded, shippingTaxClassId |
retail.order_returned | Siparişteki ürünler iade edildi. | id, quantity, complete |
retail.order_updated | Bir sipariş düzenlendi. | id |
retail.preorder_changed | Bir varyant ön siparişe açıldı ya da kapatıldı. | itemVariantId, enabled, endDate |
retail.preorder_ended | Bir ön sipariş bitti ve siparişleri bir rafa taşındı. | itemVariantId, orders |
retail.refund_granted | Mağaza bir iadeyi onayladı; parayı finans modülü aktarır. | id, orderId, amount, currency, reason, idempotencyKey |
retail.return_closed | Bir iade kapatıldı. | id, orderId |
retail.return_inspected | Bir iade incelendi ve stoğa geri kondu. | id, orderId, restocked |
retail.return_received | İade edilen bir paket geldi. | id, orderId, quantity |
retail.return_rejected | Bir iade reddedildi. | id, orderId, reason |
retail.return_requested | Bir iade açıldı. | id, orderId, sequence, quantity, reason |
retail.shipping_exclusions_changed | Bir teslimat ücretinin kabul etmediği ürünler değişti. | shippingMethodId, count |
retail.shipping_method_deleted | Bir teslimat ücreti kaldırıldı. | id |
retail.shipping_method_saved | Bir teslimat ücreti oluşturuldu ya da düzenlendi. | id, type |
retail.shipping_price_changed | Bir teslimat ücreti bir kanalda fiyatlandı. | shippingMethodId, channelId, amount, currency |
retail.shipping_rules_changed | Bir ücretin posta kodu kuralları değişti. | shippingMethodId, count |
retail.shipping_zone_deleted | Bir kargo bölgesi kaldırıldı. | id |
retail.shipping_zone_saved | Bir kargo bölgesi oluşturuldu ya da düzenlendi. | id, countries |
retail.stock_changed | Bir rafın stok miktarı değişti. | warehouseId, itemVariantId, quantity |
retail.stock_low | Bir rafın serbest stoğu düşük stok eşiğine ya da altına indi. | stockId, warehouseId, itemVariantId, quantity, free, threshold |
retail.stock_policy_changed | Bir rafın güvenlik stoğu değişti. | stockId, safetyStock |
retail.stock_reservations_expired | Süresi dolan sepet stok ayırmaları bırakıldı. | count |
retail.stock_reserved | Bir sepet stoğu on beş dakikalığına ayırdı. | token, quantity, expiresInMinutes |
retail.stock_transferred | Stok iki depo arasında taşındı. | transferId, fromWarehouseId, toWarehouseId, itemVariantId, quantity |
retail.warehouse_deleted | Bir depo kapatıldı. | id |
retail.warehouse_saved | Bir depo oluşturuldu ya da düzenlendi. | id, slug |
retail.warehouse_zones_changed | Bir deponun kargo bölgeleri değişti. | warehouseId, count |