Entegrasyonlar API
Entegrasyonlar modülünün tüm işlemleri (22) ve veri modelleri (8): adresler, izinler, girdiler, ön koşullar, olaylar ve örnekler.
Pazaryerleri, e-ticaret siteleri, kargo ve e-fatura — siparişleriniz, ürünleriniz, stoğunuz ve müşterilerinizle eşitlenir.
Modül kodu integrations · 22 işlem · 8 veri modeli · 22 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ı: integrations (hepsi), integrations:read (yalnız okuma) ya da integrations:<yetenek>.
Kaynaklar
| Kaynak | Tablo | Listeleme ve okuma | POST | PATCH | DELETE |
|---|---|---|---|---|---|
carrier_shipments | carrier_shipment | /api/v1/carrier_shipments | |||
channel_listings | channel_listing | /api/v1/channel_listings | |||
einvoice_documents | einvoice_document | /api/v1/einvoice_documents | |||
integration_accounts | integration_account | /api/v1/integration_accounts | |||
integration_inbounds | integration_inbound | /api/v1/integration_inbounds | |||
integration_issues | integration_issue | /api/v1/integration_issues | |||
integration_reviews | integration_review | /api/v1/integration_reviews | |||
integration_runs | integration_run | /api/v1/integration_runs |
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 |
|---|---|---|
integrations.cancel_shipment | integrations:write | Kargoyu iptal et |
integrations.connect | integrations:manage | Eşitleme için bir uygulama bağla |
integrations.create_shipment | integrations:write | Kargoya ver |
integrations.disconnect | integrations:delete | Uygulama bağlantısını kes |
integrations.issue_einvoice | integrations:write | Siparişi faturala (e-Arşiv / e-Fatura) |
integrations.map_listing | integrations:write | İlanı bir ürüne bağla |
integrations.publish_listings | integrations:write | Ürün varyantlarını pazaryerinde yayınla |
integrations.raise_issue | integrations:handle | Eşitleme sorunu aç |
integrations.record_einvoice | integrations:handle | e-Fatura cevabını kaydet |
integrations.record_inbound | integrations:handle | Webhook teslimatını kaydet |
integrations.record_review_reply | integrations:handle | Yorum cevabının sonucunu kaydet |
integrations.record_reviews | integrations:handle | Yorumları kaydet |
integrations.record_run | integrations:handle | Eşitleme turunu kaydet |
integrations.record_shipment | integrations:handle | Kargo cevabını kaydet |
integrations.record_stock_push | integrations:handle | Stok gönderimini kaydet |
integrations.record_test | integrations:manage | Bağlantı testini kaydet |
integrations.reply_review | integrations:write | Yoruma cevap ver |
integrations.request_sync | integrations:write | Şimdi eşitle |
integrations.resolve_issue | integrations:write | Eşitleme sorununu kapat |
integrations.set_paused | integrations:manage | Eşitlemeyi duraklat ya da sürdür |
integrations.update_settings | integrations:manage | Eşitleme ayarlarını değiştir |
integrations.upsert_listings | integrations:handle | İlanları kaydet |
integrations.cancel_shipment
Kargoyu iptal et — Kargo firması henüz almadıysa iptal eder; firmaya arka planda bildirilir.
Gereken izin integrations:write · siler ya da geri alınamaz · Era çalıştırırken bir kişiye onaylatır
https://app.getera.io/api/v1/carrier_shipments/{id}/actions/cancel_shipment- Asıl adres:
POST /api/v1/actions/integrations.cancel_shipment
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Koli · kimliği: carrier_shipment |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Bu kargo bulunamadı. |
not_cancellable | Kargo firması aldıktan sonra iptal edilemez. |
Yayımladığı olaylar: integrations.shipment_updated
Neye yazar: carrier_shipment (update) — Marks it cancelled
curl -X POST https://app.getera.io/api/v1/carrier_shipments/CARRIER_SHIPMENT_ID/actions/cancel_shipment \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": [
"integrations.shipment_updated"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.carrierShipments.cancelShipment("CARRIER_SHIPMENT_ID")era carrier_shipments cancel_shipment CARRIER_SHIPMENT_ID{
"name": "era__integrations__cancel_shipment",
"arguments": {
"id": "CARRIER_SHIPMENT_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde integrations:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, not_cancellable · 429 çok sık istek
integrations.connect
Eşitleme için bir uygulama bağla — Bağlantıyı (şifreli anahtarıyla) eşitlemeye bağlar: pazaryeri ya da mağaza için bir satış kanalı ve depo.
Gereken izin integrations:manage · 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/integration_accounts/actions/connect- Asıl adres:
POST /api/v1/actions/integrations.connect
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
provider | string | evet | Uygulama · en çok 41 |
label | string | Ad · en çok 160 | |
credentialId | uuid | Bağlantı · kimliği: credential | |
channelId | uuid | Satış kanalı · kimliği: channel | |
warehouseId | uuid | Depo · kimliği: warehouse | |
config | object / array | Hesap ayarları | |
settings | object / array | Neler eşitlenecek |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
unknown_provider | Era bu uygulamayı tanımıyor. |
credential_not_found | Bu bağlantı bu çalışma alanında yok. |
provider_mismatch | Bu bağlantı başka bir uygulamaya ait. |
credential_taken | Bu bağlantı zaten bir hesapta kullanılıyor. |
channel_required | Pazaryeri ya da mağaza için bir satış kanalı gerekir. |
channel_taken | Bu satış kanalı zaten başka bir hesaba bağlı. |
bad_config | Depo bulunamadı ya da ayarlar geçersiz. |
bad_setting | Bilinmeyen ya da geçersiz bir senkron ayarı. |
Yayımladığı olaylar: integrations.connected
Neye yazar: integration_account (insert) — The account, with a fresh inbound-webhook token
curl -X POST https://app.getera.io/api/v1/integration_accounts/actions/connect \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"provider":"App"}'{
"ok": true,
"result": "…",
"events": [
"integrations.connected"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.integrationAccounts.connect({
provider: "App"
})era integration_accounts connect \
--provider "App"{
"name": "era__integrations__connect",
"arguments": {
"provider": "App"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde integrations:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 unknown_provider, credential_not_found, provider_mismatch, credential_taken, channel_required, channel_taken, bad_config, bad_setting · 429 çok sık istek
integrations.create_shipment
Kargoya ver — Bağlı bir kargo firmasıyla (Yurtiçi, Aras, MNG, Sürat, HepsiJet) sipariş için kargo kaydı açar; takip kendiliğinden gelir.
Gereken izin integrations:write · veriyi değiştirir
https://app.getera.io/api/v1/carrier_shipments/actions/create_shipment- Asıl adres:
POST /api/v1/actions/integrations.create_shipment
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
orderId | uuid | evet | Sipariş · kimliği: sales_order |
accountId | uuid | Kargo firması hesabı · Boş: bağlı ilk kargo firması. · kimliği: integration_account | |
pieces | number | Kargolar · en az 1 · en çok 99 | |
desi | number | Desi · en az 0 · en çok 1000 | |
weightKg | number | Ağırlık (kg) · en az 0 · en çok 1000 | |
codAmount | number (money) | Kapıda ödeme (küçük birim) · en az 0 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
order_not_found | Sipariş bulunamadı. |
no_shipping_account | Bağlı ve açık bir kargo firması yok. Uygulamalar’dan Yurtiçi, Aras, MNG, Sürat ya da HepsiJet bağlayın. |
not_shipping_account | Seçilen hesap bir kargo firması değil. |
order_not_shippable | Taslak, iptal, süresi dolmuş ya da iade edilmiş sipariş kargoya verilmez. |
shipment_exists | Bu siparişin bu firmada açık bir kargosu zaten var. |
no_address | Siparişin sokak ve şehir içeren bir teslimat adresi yok. |
Yayımladığı olaylar: integrations.shipment_requested
Neye yazar: carrier_shipment (insert) — The parcel request; the worker books it at the carrier
curl -X POST https://app.getera.io/api/v1/carrier_shipments/actions/create_shipment \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"orderId":"SALES_ORDER_ID"}'{
"ok": true,
"result": "…",
"events": [
"integrations.shipment_requested"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.carrierShipments.createShipment({
orderId: "SALES_ORDER_ID"
})era carrier_shipments create_shipment \
--order-id "SALES_ORDER_ID"{
"name": "era__integrations__create_shipment",
"arguments": {
"orderId": "SALES_ORDER_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde integrations:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 order_not_found, no_shipping_account, not_shipping_account, order_not_shippable, shipment_exists, no_address · 429 çok sık istek
integrations.disconnect
Uygulama bağlantısını kes — Eşitleme kalıcı olarak durur. Siparişler, ürünler ve geçmiş kalır; anahtar bağlantıyla birlikte silinir.
Gereken izin integrations:delete · siler ya da geri alınamaz · Era çalıştırırken bir kişiye onaylatır
https://app.getera.io/api/v1/integration_accounts/{id}/actions/disconnect- Asıl adres:
POST /api/v1/actions/integrations.disconnect
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Hesap · kimliği: integration_account |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Bu hesap bulunamadı. |
already_disconnected | Bu hesabın bağlantısı zaten kesik. |
Yayımladığı olaylar: integrations.disconnected
Neye yazar: integration_account (update) — Marks it disconnected; drops the webhook token
curl -X POST https://app.getera.io/api/v1/integration_accounts/INTEGRATION_ACCOUNT_ID/actions/disconnect \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": [
"integrations.disconnected"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.integrationAccounts.disconnect("INTEGRATION_ACCOUNT_ID")era integration_accounts disconnect INTEGRATION_ACCOUNT_ID{
"name": "era__integrations__disconnect",
"arguments": {
"id": "INTEGRATION_ACCOUNT_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde integrations:delete izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, already_disconnected · 429 çok sık istek
integrations.issue_einvoice
Siparişi faturala (e-Arşiv / e-Fatura) — Bağlı e-fatura sağlayıcısından (Paraşüt, Uyumsoft ya da Logo eLogo) sipariş için fatura ister: e-Fatura mükellefine e-Fatura, diğerlerine e-Arşiv.
Gereken izin integrations:write · 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/einvoice_documents/actions/issue_einvoice- Asıl adres:
POST /api/v1/actions/integrations.issue_einvoice
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
orderId | uuid | evet | Sipariş · kimliği: sales_order |
accountId | uuid | E-fatura hesabı · kimliği: integration_account |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
order_not_found | Sipariş bulunamadı. |
no_einvoice_account | Bağlı ve açık bir e-fatura sağlayıcısı yok. Uygulamalar’dan Paraşüt, Uyumsoft ya da Logo eLogo bağlayın. |
not_einvoice_account | Seçilen hesap bir e-fatura sağlayıcısı değil. |
order_not_invoiceable | Taslak, iptal ya da süresi dolmuş sipariş faturalanmaz. |
already_invoiced | Bu siparişin bu sağlayıcıda geçerli bir faturası zaten var. |
Yayımladığı olaylar: integrations.einvoice_requested
Neye yazar: einvoice_document (insert) — The request; the worker sends it to the provider
curl -X POST https://app.getera.io/api/v1/einvoice_documents/actions/issue_einvoice \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"orderId":"SALES_ORDER_ID"}'{
"ok": true,
"result": "…",
"events": [
"integrations.einvoice_requested"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.einvoiceDocuments.issueEinvoice({
orderId: "SALES_ORDER_ID"
})era einvoice_documents issue_einvoice \
--order-id "SALES_ORDER_ID"{
"name": "era__integrations__issue_einvoice",
"arguments": {
"orderId": "SALES_ORDER_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde integrations:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 order_not_found, no_einvoice_account, not_einvoice_account, order_not_invoiceable, already_invoiced · 429 çok sık istek
integrations.map_listing
İlanı bir ürüne bağla — Bir pazaryeri ilanının hangi Era varyantı olduğunu söyler; siparişleri stok düşer, Era stoğu ona gider.
Gereken izin integrations:write · veriyi değiştirir
https://app.getera.io/api/v1/channel_listings/{id}/actions/map_listing- Asıl adres:
POST /api/v1/actions/integrations.map_listing
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
listingId | uuid | evet | Doldurulduğu yer: adresteki {id} · İlan · kimliği: channel_listing |
itemVariantId | uuid | Varyant · Boş bırakılırsa bağ kaldırılır. · kimliği: item_variant | |
source | string (enum) | Nasıl · İzin verilen değerler: manual, created |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Bu ilan bulunamadı. |
variant_not_found | Bu Era ürünü bulunamadı. |
Yayımladığı olaylar: integrations.listing_mapped
Neye yazar: channel_listing (update) — Sets (or clears) the variant; the next push sends its stock
curl -X POST https://app.getera.io/api/v1/channel_listings/CHANNEL_LISTING_ID/actions/map_listing \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"itemVariantId":"ITEM_VARIANT_ID"}'{
"ok": true,
"result": "…",
"events": [
"integrations.listing_mapped"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.channelListings.mapListing("CHANNEL_LISTING_ID", {
itemVariantId: "ITEM_VARIANT_ID"
})era channel_listings map_listing CHANNEL_LISTING_ID \
--item-variant-id "ITEM_VARIANT_ID"{
"name": "era__integrations__map_listing",
"arguments": {
"listingId": "CHANNEL_LISTING_ID",
"itemVariantId": "ITEM_VARIANT_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde integrations:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, variant_not_found · 429 çok sık istek
integrations.publish_listings
Ürün varyantlarını pazaryerinde yayınla — Katalogdaki varyantları bağlı Trendyol hesabına gönderir. Fiyat ve stok katalogdan alınır; marka, kategori ve nitelik kimlikleri belirtilir. Kuyruğa alınması yayınlandığı anlamına gelmez; sonuç uygulamanın işlem geçmişinde izlenir.
Gereken izin integrations:write · 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/integration_runs/actions/publish_listings- Asıl adres:
POST /api/v1/actions/integrations.publish_listings
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
accountId | uuid | evet | Hesap · kimliği: integration_account |
mode | string (enum) | İşlem · İzin verilen değerler: create, update_unapproved, update_content, update_variant | |
listings | object / array | evet | Varyantlar ve pazaryeri alanları · Dizi: variantId, barcode, quantity (varsayılan olarak kanalın serbest stoku, hiçbir zaman serbest stoktan fazla değil), images (https adresleri), meta: {brandId,categoryId,productMainId,vatRate,attributes}. Bir ürünün tüm varyantları aynı productMainId’yi paylaşır. listPrice küçük birim cinsindendir. Onaylı içerik güncellemeleri için meta.contentId verin. |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
listing_account_unavailable | Önce yayınlamayı destekleyen etkin bir pazaryeri hesabı bağla. |
invalid_listing_request | Erişilebilir varyantları, stok kodlarını (SKU), barkodları, stokları ve gerekli pazaryeri alanlarını kontrol et. |
Yayımladığı olaylar: integrations.listing_publish_requested
Neye yazar: integration_run (insert) — Track the asynchronous publication request
curl -X POST https://app.getera.io/api/v1/integration_runs/actions/publish_listings \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"accountId":"INTEGRATION_ACCOUNT_ID","listings":{}}'{
"ok": true,
"result": "…",
"events": [
"integrations.listing_publish_requested"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.integrationRuns.publishListings({
accountId: "INTEGRATION_ACCOUNT_ID",
listings: {}
})era integration_runs publish_listings --data '{"accountId":"INTEGRATION_ACCOUNT_ID","listings":{}}'{
"name": "era__integrations__publish_listings",
"arguments": {
"accountId": "INTEGRATION_ACCOUNT_ID",
"listings": {}
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde integrations:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 listing_account_unavailable, invalid_listing_request · 429 çok sık istek
integrations.raise_issue
Eşitleme sorunu aç — Bir kişinin bakması gereken şey, Türkçe. Aynısı tekrar olursa sayısı artar.
Gereken izin integrations:handle · veriyi değiştirir
https://app.getera.io/api/v1/integration_issues/actions/raise_issue- Asıl adres:
POST /api/v1/actions/integrations.raise_issue
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
accountId | uuid | evet | Hesap · kimliği: integration_account |
kind | string | evet | Tür · en çok 40 |
externalRef | string | Hakkında · en çok 300 | |
message | string | evet | Mesaj · en çok 2000 |
detail | object / array | Ayrıntı | |
orderId | uuid | Sipariş · kimliği: sales_order | |
itemVariantId | uuid | Varyant · kimliği: item_variant |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Bu hesap bulunamadı. |
bad_kind | Bilinmeyen bir sorun türü. |
Yayımladığı olaylar: integrations.issue_raised
Neye yazar: integration_issue (upsert) — One open issue per (account, kind, thing)
curl -X POST https://app.getera.io/api/v1/integration_issues/actions/raise_issue \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"accountId":"INTEGRATION_ACCOUNT_ID","kind":"Kind","message":"Message"}'{
"ok": true,
"result": "…",
"events": [
"integrations.issue_raised"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.integrationIssues.raiseIssue({
accountId: "INTEGRATION_ACCOUNT_ID",
kind: "Kind",
message: "Message"
})era integration_issues raise_issue \
--account-id "INTEGRATION_ACCOUNT_ID" \
--kind "Kind" \
--message "Message"{
"name": "era__integrations__raise_issue",
"arguments": {
"accountId": "INTEGRATION_ACCOUNT_ID",
"kind": "Kind",
"message": "Message"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde integrations:handle izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, bad_kind · 429 çok sık istek
integrations.record_einvoice
e-Fatura cevabını kaydet — e-Fatura sağlayıcısının istekle ne yaptığı.
Gereken izin integrations:handle · veriyi değiştirir
https://app.getera.io/api/v1/einvoice_documents/{id}/actions/record_einvoice- Asıl adres:
POST /api/v1/actions/integrations.record_einvoice
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · e-Fatura · kimliği: einvoice_document |
status | string | evet | Durum · en çok 20 |
kind | string | Tür · en çok 20 | |
externalId | string | Sağlayıcı kimliği · en çok 200 | |
documentNumber | string | Sayı · en çok 100 | |
pdfUrl | string | PDF · en çok 1000 | |
error | string | Ret · en çok 1000 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Bu e-fatura bulunamadı. |
Yayımladığı olaylar: integrations.einvoice_updated
Neye yazar: einvoice_document (update) — The provider’s answer
curl -X POST https://app.getera.io/api/v1/einvoice_documents/EINVOICE_DOCUMENT_ID/actions/record_einvoice \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"status":"Status"}'{
"ok": true,
"result": "…",
"events": [
"integrations.einvoice_updated"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.einvoiceDocuments.recordEinvoice("EINVOICE_DOCUMENT_ID", {
status: "Status"
})era einvoice_documents record_einvoice EINVOICE_DOCUMENT_ID \
--status "Status"{
"name": "era__integrations__record_einvoice",
"arguments": {
"id": "EINVOICE_DOCUMENT_ID",
"status": "Status"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde integrations: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
integrations.record_inbound
Webhook teslimatını kaydet — Her teslimat bir kez; kabul edilen bir eşitlemeyi tetikler (gövdesi asla veri olarak alınmaz).
Gereken izin integrations:handle · veriyi değiştirir
https://app.getera.io/api/v1/integration_inbounds/actions/record_inbound- Asıl adres:
POST /api/v1/actions/integrations.record_inbound
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
accountId | uuid | evet | Hesap · kimliği: integration_account |
externalId | string | evet | Teslimat · en çok 300 |
topic | string | Konu · en çok 200 | |
accepted | boolean | evet | Kabul edildi |
reason | string | Ret nedeni · en çok 300 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Bu hesap bulunamadı. |
Yayımladığı olaylar: integrations.webhook_received
Neye yazar: integration_inbound (insert) — The delivery, deduped on its id
curl -X POST https://app.getera.io/api/v1/integration_inbounds/actions/record_inbound \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"accountId":"INTEGRATION_ACCOUNT_ID","externalId":"Delivery","accepted":true}'{
"ok": true,
"result": "…",
"events": [
"integrations.webhook_received"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.integrationInbounds.recordInbound({
accountId: "INTEGRATION_ACCOUNT_ID",
externalId: "Delivery",
accepted: true
})era integration_inbounds record_inbound \
--account-id "INTEGRATION_ACCOUNT_ID" \
--external-id "Delivery" \
--accepted true{
"name": "era__integrations__record_inbound",
"arguments": {
"accountId": "INTEGRATION_ACCOUNT_ID",
"externalId": "Delivery",
"accepted": true
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde integrations: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
integrations.record_review_reply
Yorum cevabının sonucunu kaydet — Yorum sağlayıcısının cevabı yayımlayıp yayımlamadığı.
Gereken izin integrations:handle · veriyi değiştirir
https://app.getera.io/api/v1/integration_reviews/{id}/actions/record_review_reply- Asıl adres:
POST /api/v1/actions/integrations.record_review_reply
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Gözden geçir · kimliği: integration_review |
ok | boolean | evet | Yayımlandı |
repliedAt | string | Ne zaman · en çok 40 | |
error | string | Ret · en çok 1000 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Bu yorum bulunamadı. |
Yayımladığı olaylar: integrations.review_replied
Neye yazar: integration_review (update) — The provider’s answer
curl -X POST https://app.getera.io/api/v1/integration_reviews/INTEGRATION_REVIEW_ID/actions/record_review_reply \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"ok":true}'{
"ok": true,
"result": "…",
"events": [
"integrations.review_replied"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.integrationReviews.recordReviewReply("INTEGRATION_REVIEW_ID", {
ok: true
})era integration_reviews record_review_reply INTEGRATION_REVIEW_ID \
--ok true{
"name": "era__integrations__record_review_reply",
"arguments": {
"id": "INTEGRATION_REVIEW_ID",
"ok": true
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde integrations: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
integrations.record_reviews
Yorumları kaydet — Bağlı yorum sağlayıcısındaki güncel yorumlar: yeni gelenler, düzenlenenler ve Era dışında yazılan cevaplar.
Gereken izin integrations:handle · veriyi değiştirir
https://app.getera.io/api/v1/integration_reviews/actions/record_reviews- Asıl adres:
POST /api/v1/actions/integrations.record_reviews
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
accountId | uuid | evet | Hesap · kimliği: integration_account |
reviews | object / array | evet | Değerlendirmeler |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Bu hesap bulunamadı. |
not_reviews_account | Bu hesap yorum tutmuyor. |
invalid_reviews | Yorum listesi geçersiz. |
Yayımladığı olaylar: integrations.reviews_synced
Neye yazar: integration_review (insert) — One row per review, updated in place on the next sync
curl -X POST https://app.getera.io/api/v1/integration_reviews/actions/record_reviews \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"accountId":"INTEGRATION_ACCOUNT_ID","reviews":{}}'{
"ok": true,
"result": "…",
"events": [
"integrations.reviews_synced"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.integrationReviews.recordReviews({
accountId: "INTEGRATION_ACCOUNT_ID",
reviews: {}
})era integration_reviews record_reviews --data '{"accountId":"INTEGRATION_ACCOUNT_ID","reviews":{}}'{
"name": "era__integrations__record_reviews",
"arguments": {
"accountId": "INTEGRATION_ACCOUNT_ID",
"reviews": {}
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde integrations:handle izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, not_reviews_account, invalid_reviews · 429 çok sık istek
integrations.record_run
Eşitleme turunu kaydet — Bir turu açar ya da sayılarıyla ve tek bir Türkçe cümleyle kapatır; hesabın imleçlerini ve sağlığını günceller.
Gereken izin integrations:handle · veriyi değiştirir
https://app.getera.io/api/v1/integration_accounts/{id}/actions/record_run- Asıl adres:
POST /api/v1/actions/integrations.record_run
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
accountId | uuid | evet | Doldurulduğu yer: adresteki {id} · Hesap · kimliği: integration_account |
runId | uuid | Çalıştır | |
feed | string | Akış · en çok 20 | |
trigger | string | Tetikleyici · en çok 20 | |
status | string (enum) | Durum · İzin verilen değerler: running, ok, partial, failed, skipped | |
counts | object / array | Sayılar | |
message | string | Mesaj · en çok 1000 | |
jobId | uuid | İş | |
cursors | object / array | İmleçler | |
touch | string | Akış tamamlandı · en çok 20 | |
error | string | Hata · en çok 2000 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Hesap ya da senkron turu bulunamadı. |
Yayımladığı olaylar: integrations.run_finished
Neye yazar: integration_run (upsert) — The run row; integration_account (update) — Last sync times, cursors, health
curl -X POST https://app.getera.io/api/v1/integration_accounts/INTEGRATION_ACCOUNT_ID/actions/record_run \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"runId":"RUN_ID"}'{
"ok": true,
"result": "…",
"events": [
"integrations.run_finished"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.integrationAccounts.recordRun("INTEGRATION_ACCOUNT_ID", {
runId: "RUN_ID"
})era integration_accounts record_run INTEGRATION_ACCOUNT_ID \
--run-id "RUN_ID"{
"name": "era__integrations__record_run",
"arguments": {
"accountId": "INTEGRATION_ACCOUNT_ID",
"runId": "RUN_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde integrations: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
integrations.record_shipment
Kargo cevabını kaydet — Kargo firmasının kaydı, takip numarası, etiketi ya da son hareketi — ya da reddi.
Gereken izin integrations:handle · veriyi değiştirir
https://app.getera.io/api/v1/carrier_shipments/{id}/actions/record_shipment- Asıl adres:
POST /api/v1/actions/integrations.record_shipment
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Koli · kimliği: carrier_shipment |
status | string | Durum · en çok 20 | |
trackingNumber | string | Takip numarası · en çok 100 | |
barcode | string | Barkod · en çok 100 | |
labelUrl | string | Etiket · en çok 1000 | |
trackingUrl | string | Takip sayfası · en çok 1000 | |
lastEvent | string | Son hareket · en çok 500 | |
lastEventAt | string | Ne zaman · en çok 40 | |
error | string | Ret · en çok 1000 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Bu kargo bulunamadı. |
Yayımladığı olaylar: integrations.shipment_updated
Neye yazar: carrier_shipment (update) — What the carrier said
curl -X POST https://app.getera.io/api/v1/carrier_shipments/CARRIER_SHIPMENT_ID/actions/record_shipment \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"status":"Status"}'{
"ok": true,
"result": "…",
"events": [
"integrations.shipment_updated"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.carrierShipments.recordShipment("CARRIER_SHIPMENT_ID", {
status: "Status"
})era carrier_shipments record_shipment CARRIER_SHIPMENT_ID \
--status "Status"{
"name": "era__integrations__record_shipment",
"arguments": {
"id": "CARRIER_SHIPMENT_ID",
"status": "Status"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde integrations: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
integrations.record_stock_push
Stok gönderimini kaydet — Her ilana ne gönderildiği ve kanalın kabul edip etmediği.
Gereken izin integrations:handle · veriyi değiştirir
https://app.getera.io/api/v1/integration_accounts/{id}/actions/record_stock_push- Asıl adres:
POST /api/v1/actions/integrations.record_stock_push
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
accountId | uuid | evet | Doldurulduğu yer: adresteki {id} · Hesap · kimliği: integration_account |
results | object / array | evet | Sonuçlar |
batchRef | string | Sağlayıcı toplu işi · en çok 200 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Bu hesap bulunamadı. |
malformed_results | Gönderim sonuçları geçersiz. |
Yayımladığı olaylar: integrations.stock_pushed
Neye yazar: channel_listing (update) — Last pushed quantity, or the refusal; integration_account (update) — Last push time
curl -X POST https://app.getera.io/api/v1/integration_accounts/INTEGRATION_ACCOUNT_ID/actions/record_stock_push \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"results":{}}'{
"ok": true,
"result": "…",
"events": [
"integrations.stock_pushed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.integrationAccounts.recordStockPush("INTEGRATION_ACCOUNT_ID", {
results: {}
})era integration_accounts record_stock_push INTEGRATION_ACCOUNT_ID --data '{"results":{}}'{
"name": "era__integrations__record_stock_push",
"arguments": {
"accountId": "INTEGRATION_ACCOUNT_ID",
"results": {}
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde integrations:handle izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, malformed_results · 429 çok sık istek
integrations.record_test
Bağlantı testini kaydet — Sağlayıcıya yapılan zararsız çağrının sonucunu hesapta saklar.
Gereken izin integrations:manage · veriyi değiştirir
https://app.getera.io/api/v1/integration_accounts/{id}/actions/record_test- Asıl adres:
POST /api/v1/actions/integrations.record_test
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
accountId | uuid | evet | Doldurulduğu yer: adresteki {id} · Hesap · kimliği: integration_account |
ok | boolean | evet | Başarılı |
message | string | evet | Ne oldu · en çok 1000 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Bu hesap bulunamadı. |
Yayımladığı olaylar: integrations.tested
Neye yazar: integration_account (update) — Last test time and result; integration_run (insert) — The test in the run history
curl -X POST https://app.getera.io/api/v1/integration_accounts/INTEGRATION_ACCOUNT_ID/actions/record_test \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"ok":true,"message":"What happened"}'{
"ok": true,
"result": "…",
"events": [
"integrations.tested"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.integrationAccounts.recordTest("INTEGRATION_ACCOUNT_ID", {
ok: true,
message: "What happened"
})era integration_accounts record_test INTEGRATION_ACCOUNT_ID \
--ok true \
--message "What happened"{
"name": "era__integrations__record_test",
"arguments": {
"accountId": "INTEGRATION_ACCOUNT_ID",
"ok": true,
"message": "What happened"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde integrations:manage 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
integrations.reply_review
Yoruma cevap ver — İşletmenin bir Google yorumuna herkese açık cevabını yayımlar (eski cevabın yerine geçer); arka planda gönderilir.
Gereken izin integrations:write · 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/integration_reviews/{id}/actions/reply_review- Asıl adres:
POST /api/v1/actions/integrations.reply_review
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Gözden geçir · kimliği: integration_review |
text | string | evet | Yanıtla · En fazla 4.000 karakter (Google’ın sınırı). |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Bu yorum bulunamadı. |
reply_empty | Önce cevabı yazın. |
reply_too_long | Google en fazla 4.000 karakterlik cevap kabul ediyor. |
account_inactive | Bu yorumun hesabı bağlı değil; cevaplamak için yeniden bağlayın. |
reply_in_flight | Bu yoruma bir cevap zaten gidiyor. |
Yayımladığı olaylar: integrations.review_reply_requested
Neye yazar: integration_review (update) — Keeps the reply and marks it on its way
curl -X POST https://app.getera.io/api/v1/integration_reviews/INTEGRATION_REVIEW_ID/actions/reply_review \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"text":"Reply"}'{
"ok": true,
"result": "…",
"events": [
"integrations.review_reply_requested"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.integrationReviews.replyReview("INTEGRATION_REVIEW_ID", {
text: "Reply"
})era integration_reviews reply_review INTEGRATION_REVIEW_ID \
--text "Reply"{
"name": "era__integrations__reply_review",
"arguments": {
"id": "INTEGRATION_REVIEW_ID",
"text": "Reply"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde integrations:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, reply_empty, reply_too_long, account_inactive, reply_in_flight · 429 çok sık istek
integrations.request_sync
Şimdi eşitle — Pazaryerinden ya da mağazadan yeni siparişleri ve ürünleri çeker, Era stoğunu geri gönderir — arka planda, saniyeler içinde.
Gereken izin integrations:write · veriyi değiştirir
https://app.getera.io/api/v1/integration_runs/actions/request_sync- Asıl adres:
POST /api/v1/actions/integrations.request_sync
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | Hesap · kimliği: integration_account | |
provider | string | Uygulama · Kimlik yerine: trendyol, hepsiburada, amazon, shopify, woocommerce, n11, ciceksepeti, ikas, ticimax, ideasoft, etsy. · en çok 41 | |
feed | string (enum) | Ne · orders = yeni siparişleri al, stock = Era’daki stoku gönder, products = ilanları yeniden oku, all = hepsi. · İzin verilen değerler: orders, products, stock, reviews, all | |
trigger | string (enum) | İsteyen · İzin verilen değerler: manual, era, schedule, webhook, connect, event |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Bu uygulamanın bağlı bir hesabı yok. |
ambiguous_account | Bu uygulamanın birden fazla hesabı var; hangisi? |
not_syncable | Yalnız pazaryerleri, mağazalar ve yorum sağlayıcıları kendiliğinden senkronlanır. |
disconnected | Bağlantısı kesilmiş hesap senkronlanmaz. |
paused | Hesap duraklatılmış; önce sürdürün. |
sync_running | Bu senkron zaten sürüyor; bitince sonucu görünür. |
Yayımladığı olaylar: integrations.sync_requested
Neye yazar: integration_run (insert) — The run, which the worker picks up
curl -X POST https://app.getera.io/api/v1/integration_runs/actions/request_sync \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"id":"INTEGRATION_ACCOUNT_ID"}'{
"ok": true,
"result": "…",
"events": [
"integrations.sync_requested"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.integrationRuns.requestSync({
id: "INTEGRATION_ACCOUNT_ID"
})era integration_runs request_sync \
--id "INTEGRATION_ACCOUNT_ID"{
"name": "era__integrations__request_sync",
"arguments": {
"id": "INTEGRATION_ACCOUNT_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde integrations:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, ambiguous_account, not_syncable, disconnected, paused, sync_running · 429 çok sık istek
integrations.resolve_issue
Eşitleme sorununu kapat — Halledildi ya da önemsiz olarak işaretler.
Gereken izin integrations:write · veriyi değiştirir
https://app.getera.io/api/v1/integration_issues/{id}/actions/resolve_issue- Asıl adres:
POST /api/v1/actions/integrations.resolve_issue
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Faturayı kes · kimliği: integration_issue |
status | string (enum) | Kapanış nedeni · İzin verilen değerler: resolved, ignored |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Bu sorun bulunamadı. |
already_closed | Bu sorun zaten kapatılmış. |
Yayımladığı olaylar: integrations.issue_resolved
Neye yazar: integration_issue (update) — Closes it
curl -X POST https://app.getera.io/api/v1/integration_issues/INTEGRATION_ISSUE_ID/actions/resolve_issue \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"status":"resolved"}'{
"ok": true,
"result": "…",
"events": [
"integrations.issue_resolved"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.integrationIssues.resolveIssue("INTEGRATION_ISSUE_ID", {
status: "resolved"
})era integration_issues resolve_issue INTEGRATION_ISSUE_ID \
--status "resolved"{
"name": "era__integrations__resolve_issue",
"arguments": {
"id": "INTEGRATION_ISSUE_ID",
"status": "resolved"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde integrations:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, already_closed · 429 çok sık istek
integrations.set_paused
Eşitlemeyi duraklat ya da sürdür — Duraklatılan hesapta her şey durur; sürdürülene kadar hiçbir şey çekilmez ya da gönderilmez.
Gereken izin integrations:manage · veriyi değiştirir
https://app.getera.io/api/v1/integration_accounts/{id}/actions/set_paused- Asıl adres:
POST /api/v1/actions/integrations.set_paused
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Hesap · kimliği: integration_account |
paused | boolean | evet | Duraklatıldı |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Bu hesap bulunamadı. |
disconnected | Bağlantısı kesilmiş hesap sürdürülmez; yeniden bağlayın. |
Yayımladığı olaylar: integrations.paused, integrations.resumed
Neye yazar: integration_account (update) — Flips paused / active
curl -X POST https://app.getera.io/api/v1/integration_accounts/INTEGRATION_ACCOUNT_ID/actions/set_paused \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"paused":true}'{
"ok": true,
"result": "…",
"events": [
"integrations.paused",
"integrations.resumed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.integrationAccounts.setPaused("INTEGRATION_ACCOUNT_ID", {
paused: true
})era integration_accounts set_paused INTEGRATION_ACCOUNT_ID \
--paused true{
"name": "era__integrations__set_paused",
"arguments": {
"id": "INTEGRATION_ACCOUNT_ID",
"paused": true
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde integrations:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, disconnected · 429 çok sık istek
integrations.update_settings
Eşitleme ayarlarını değiştir — Siparişler gelsin mi, ürünler okunsun mu, stok gitsin mi, güvenlik stoğu, ne kadar geriye bakılsın.
Gereken izin integrations:manage · veriyi değiştirir
https://app.getera.io/api/v1/integration_accounts/{id}/actions/update_settings- Asıl adres:
POST /api/v1/actions/integrations.update_settings
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Hesap · kimliği: integration_account |
settings | object / array | Neler eşitlenecek | |
config | object / array | Hesap ayarları | |
label | string | Ad · en çok 160 | |
warehouseId | uuid | Depo · kimliği: warehouse |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Bu hesap bulunamadı. |
disconnected | Bağlantısı kesilmiş hesap düzenlenmez; yeniden bağlayın. |
bad_setting | Bilinmeyen ya da geçersiz bir senkron ayarı. |
Yayımladığı olaylar: integrations.settings_changed
Neye yazar: integration_account (update) — Merges the settings
curl -X POST https://app.getera.io/api/v1/integration_accounts/INTEGRATION_ACCOUNT_ID/actions/update_settings \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"settings":{}}'{
"ok": true,
"result": "…",
"events": [
"integrations.settings_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.integrationAccounts.updateSettings("INTEGRATION_ACCOUNT_ID", {
settings: {}
})era integration_accounts update_settings INTEGRATION_ACCOUNT_ID --data '{"settings":{}}'{
"name": "era__integrations__update_settings",
"arguments": {
"id": "INTEGRATION_ACCOUNT_ID",
"settings": {}
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde integrations:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, disconnected, bad_setting · 429 çok sık istek
integrations.upsert_listings
İlanları kaydet — Kanalın sattıklarını saklar ve her ilanı stok kodu, barkod ya da dış anahtarla bir Era varyantına bağlar.
Gereken izin integrations:handle · veriyi değiştirir
https://app.getera.io/api/v1/channel_listings/actions/upsert_listings- Asıl adres:
POST /api/v1/actions/integrations.upsert_listings
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
accountId | uuid | evet | Hesap · kimliği: integration_account |
listings | object / array | evet | İlanlar |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Bu hesap bulunamadı. |
malformed_listings | İlan listesi geçersiz (en fazla 1000, her birinin anahtarı olmalı). |
Yayımladığı olaylar: integrations.listings_synced
Neye yazar: channel_listing (upsert) — One row per listing; a match is never undone by a re-read
curl -X POST https://app.getera.io/api/v1/channel_listings/actions/upsert_listings \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"accountId":"INTEGRATION_ACCOUNT_ID","listings":{}}'{
"ok": true,
"result": "…",
"events": [
"integrations.listings_synced"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.channelListings.upsertListings({
accountId: "INTEGRATION_ACCOUNT_ID",
listings: {}
})era channel_listings upsert_listings --data '{"accountId":"INTEGRATION_ACCOUNT_ID","listings":{}}'{
"name": "era__integrations__upsert_listings",
"arguments": {
"accountId": "INTEGRATION_ACCOUNT_ID",
"listings": {}
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde integrations:handle izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, malformed_listings · 429 çok sık istek
Veri modelleri
CarrierShipment
Tablo carrier_shipment · Kaynak carrier_shipments
GET /api/v1/carrier_shipmentsGET /api/v1/carrier_shipments/{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 | ||
account_id | string (uuid) · uuid | integration_account | ||
order_id | string (uuid) · uuid | evet | sales_order | |
reference | string · text | |||
carrier | string · text | |||
tracking_number | string · text | evet | ||
barcode | string · text | evet | ||
label_url | string · text | evet | ||
tracking_url | string · text | evet | ||
status | string · text | requested, created, in_transit, delivered, returned, cancelled, failed | ||
last_event | string · text | evet | ||
last_event_at | string (date-time) · timestamptz | evet | ||
receiver | object · jsonb | |||
pieces | integer · int4 | |||
desi | string (decimal) · numeric | evet | ||
cod_amount | string (int64) · int8 | evet | ||
error | string · text | evet | ||
created_by | string (uuid) · uuid | evet | app_user | |
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz |
Birincil anahtar: id
Tekil: account_id, reference
Denetimler:
CHECK (((cod_amount IS NULL) OR (cod_amount >= 0)))CHECK ((pieces >= 1))CHECK ((reference ~ '^[A-Za-z0-9-]{4,40}$'::text))
ChannelListing
Tablo channel_listing · Kaynak channel_listings
GET /api/v1/channel_listingsGET /api/v1/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 | ||
account_id | string (uuid) · uuid | integration_account | ||
external_key | string · text | |||
external_product_id | string · text | evet | ||
external_variant_id | string · text | evet | ||
sku | string · text | evet | ||
barcode | string · text | evet | ||
title | string · text | |||
variant_name | string · text | evet | ||
url | string · text | evet | ||
image_url | string · text | evet | ||
item_variant_id | string (uuid) · uuid | evet | item_variant | |
match_source | string · text | evet | sku, barcode, reference, manual, created | |
remote_quantity | integer · int4 | evet | ||
remote_price | string (int64) · int8 | evet | ||
currency | string · bpchar | evet | en çok 3 | |
last_pushed_quantity | integer · int4 | evet | ||
last_pushed_at | string (date-time) · timestamptz | evet | ||
push_error | string · text | evet | ||
is_active | boolean · bool | |||
seen_at | string (date-time) · timestamptz | |||
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz | |||
meta | object · jsonb |
Birincil anahtar: id
Tekil: account_id, external_key
Denetimler:
CHECK ((length(external_key) > 0))CHECK (((remote_price IS NULL) OR (remote_price >= 0)))
EinvoiceDocument
Tablo einvoice_document · Kaynak einvoice_documents
GET /api/v1/einvoice_documentsGET /api/v1/einvoice_documents/{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 | ||
account_id | string (uuid) · uuid | integration_account | ||
order_id | string (uuid) · uuid | evet | sales_order | |
kind | string · text | e_archive, e_invoice, draft | ||
status | string · text | queued, draft, issued, failed, cancelled | ||
external_id | string · text | evet | ||
document_number | string · text | evet | ||
pdf_url | string · text | evet | ||
error | string · text | evet | ||
total_amount | string (int64) · int8 | evet | ||
currency | string · bpchar | evet | en çok 3 | |
created_by | string (uuid) · uuid | evet | app_user | |
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz | |||
issued_at | string (date-time) · timestamptz | evet |
Birincil anahtar: id
IntegrationAccount
Tablo integration_account · Kaynak integration_accounts
GET /api/v1/integration_accountsGET /api/v1/integration_accounts/{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 | ||
provider | string · text | |||
category | string · text | marketplace, ecommerce, payment, shipping, einvoice, messaging, google, microsoft, accounting | ||
label | string · text | |||
channel_id | string (uuid) · uuid | evet | channel | |
warehouse_id | string (uuid) · uuid | evet | warehouse | |
status | string · text | active, paused, error, disconnected | ||
config | object · jsonb | |||
settings | object · jsonb | |||
cursors | object · jsonb | |||
last_sync_at | string (date-time) · timestamptz | evet | ||
last_order_sync_at | string (date-time) · timestamptz | evet | ||
last_product_sync_at | string (date-time) · timestamptz | evet | ||
last_stock_push_at | string (date-time) · timestamptz | evet | ||
last_test_at | string (date-time) · timestamptz | evet | ||
last_test_ok | boolean · bool | evet | ||
last_test_message | string · text | evet | ||
last_error | string · text | evet | ||
consecutive_failures | integer · int4 | |||
created_by | string (uuid) · uuid | evet | app_user | |
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz |
Birincil anahtar: id
Tekil: webhook_token
Denetimler:
CHECK ((consecutive_failures >= 0))CHECK ((length(TRIM(BOTH FROM label)) > 0))CHECK ((provider ~ '^[a-z][a-z0-9_]{1,40}$'::text))
IntegrationInbound
Tablo integration_inbound · Kaynak integration_inbounds
GET /api/v1/integration_inboundsGET /api/v1/integration_inbounds/{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 | ||
account_id | string (uuid) · uuid | integration_account | ||
external_id | string · text | |||
topic | string · text | evet | ||
status | string · text | accepted, rejected | ||
reason | string · text | evet | ||
received_at | string (date-time) · timestamptz |
Birincil anahtar: id
Tekil: account_id, external_id
IntegrationIssue
Tablo integration_issue · Kaynak integration_issues
GET /api/v1/integration_issuesGET /api/v1/integration_issues/{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 | ||
account_id | string (uuid) · uuid | integration_account | ||
kind | string · text | unmatched_line, unmatched_listing, stock_short, push_refused, status_unknown, order_failed, auth, rate_limit, config, shipment_failed, einvoice_failed, webhook_rejected | ||
external_ref | string · text | |||
item_variant_id | string (uuid) · uuid | evet | item_variant | |
order_id | string (uuid) · uuid | evet | sales_order | |
message | string · text | |||
detail | object · jsonb | |||
status | string · text | open, resolved, ignored | ||
occurrences | integer · int4 | |||
first_seen_at | string (date-time) · timestamptz | |||
last_seen_at | string (date-time) · timestamptz | |||
resolved_at | string (date-time) · timestamptz | evet | ||
resolved_by | string (uuid) · uuid | evet | app_user |
Birincil anahtar: id
Denetimler:
CHECK ((occurrences >= 1))
IntegrationReview
Tablo integration_review · Kaynak integration_reviews
GET /api/v1/integration_reviewsGET /api/v1/integration_reviews/{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 | ||
account_id | string (uuid) · uuid | integration_account | ||
provider | string · text | |||
external_id | string · text | |||
location_name | string · text | |||
location_title | string · text | evet | ||
rating | integer · int2 | evet | ||
comment | string · text | evet | ||
reviewer_name | string · text | evet | ||
reviewed_at | string (date-time) · timestamptz | evet | ||
reply_text | string · text | evet | ||
replied_at | string (date-time) · timestamptz | evet | ||
reply_status | string · text | none, sending, sent, failed | ||
reply_draft | string · text | evet | ||
reply_error | string · text | evet | ||
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz |
Birincil anahtar: id
Denetimler:
CHECK (((length(external_id) >= 1) AND (length(external_id) <= 500)))CHECK ((provider ~ '^[a-z][a-z0-9_]{1,40}$'::text))CHECK (((rating >= 1) AND (rating <= 5)))
IntegrationRun
Tablo integration_run · Kaynak integration_runs
GET /api/v1/integration_runsGET /api/v1/integration_runs/{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 | ||
account_id | string (uuid) · uuid | integration_account | ||
feed | string · text | orders, products, stock, webhook, test, shipments, einvoice, reviews | ||
trigger | string · text | schedule, manual, webhook, era, connect, event | ||
status | string · text | running, ok, partial, failed, skipped | ||
started_at | string (date-time) · timestamptz | |||
finished_at | string (date-time) · timestamptz | evet | ||
counts | object · jsonb | |||
message | string · text | evet | ||
job_id | string (uuid) · uuid | evet | ||
created_by | string (uuid) · uuid | evet | app_user |
Birincil anahtar: id
Olaylar
İş akışları ve webhook'lar bu olaylara tepki verir.
| Olay | Ne olur | Taşıdığı alanlar |
|---|---|---|
integrations.connected | Bir uygulama hesabı senkron için bağlandı. | id, provider, category, channelId |
integrations.disconnected | Bir hesabın senkronu kalıcı olarak durdu. | id, provider |
integrations.einvoice_requested | Bir sipariş için e-fatura istendi. | id, accountId, orderId |
integrations.einvoice_updated | Bir e-fatura kesildi ya da kesilemedi. | id, orderId, status, documentNumber |
integrations.issue_raised | Bir kişinin bakması gereken bir şey çıktı (eşleşmeyen stok kodu, reddedilen gönderim…). | id, accountId, kind, message |
integrations.issue_resolved | Bir sorun halledildi ya da önemsiz sayıldı. | id, accountId, kind, status |
integrations.listing_mapped | Bir ilan elle bir Era ürününe bağlandı. | id, accountId, itemVariantId |
integrations.listing_publish_requested | Ürün varyantları pazaryerine yayınlanmak üzere sıraya alındı. | id, accountId, mode, listings, userId |
integrations.listings_synced | İlanlar okundu ve ürünlerle eşlendi. | id, provider, seen, matched, unmatched |
integrations.paused | Bir hesap duraklatıldı; hiçbir şey senkronlanmıyor. | id, provider |
integrations.resumed | Duraklatılmış bir hesap yeniden açıldı. | id, provider |
integrations.review_replied | Sağlayıcı yorum yanıtını yayımladı (ya da reddetti). | id, accountId, ok |
integrations.review_reply_requested | Bir yoruma yazılan herkese açık yanıt sağlayıcıya gönderiliyor. | id, accountId |
integrations.reviews_synced | Yorumlar bir yorum sağlayıcısından (Google İşletme Profili) okundu. | id, provider, created, updated |
integrations.run_finished | Bir senkron, gönderim ya da test bitti. | id, accountId, provider, feed, status, counts, message |
integrations.settings_changed | Bir hesabın neyi senkronladığı değişti. | id, provider |
integrations.shipment_requested | Bir kargo firmasıyla kargo kaydı açıldı. | id, accountId, orderId, carrier, reference |
integrations.shipment_updated | Bir kargonun durumu değişti. | id, orderId, status, trackingNumber |
integrations.stock_pushed | Era stoğu bir kanala gönderildi. | id, provider, pushed, failed |
integrations.sync_requested | Bir senkron istendi (bir kişi, Era, webhook ya da zamanlayıcı). | id, provider, feed, trigger, runId |
integrations.tested | Bir bağlantı testi yapıldı. | id, provider, ok, message |
integrations.webhook_received | Bir sağlayıcı bir şeyin değiştiğini bildirdi. | id, accountId, provider, topic |