Katalog API

Katalog modülünün tüm işlemleri (25) ve veri modelleri (9): adresler, izinler, girdiler, ön koşullar, olaylar ve örnekler.

Sattığınız veya randevuya açtığınız her şey — ürünler, hizmetler, fiyatlar, kategoriler ve markalar.

Modül kodu catalog · 25 işlem · 9 veri modeli · 19 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ı: catalog (hepsi), catalog:read (yalnız okuma) ya da catalog:<yetenek>.

Kaynaklar

KaynakTabloListeleme ve okumaPOSTPATCHDELETE
brandsitem_brand/api/v1/brandscatalog.save_brand
categoriesitem_category/api/v1/categoriescatalog.update_category
product_componentsitem_component/api/v1/product_components
product_filesitem_file/api/v1/product_files
product_option_valuesitem_option_value/api/v1/product_option_values
product_optionsitem_option/api/v1/product_options
productsitem/api/v1/productscatalog.create_itemcatalog.update_item
variant_optionsitem_variant_option/api/v1/variant_options
variantsitem_variant/api/v1/variantscatalog.save_variant

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

İşlemGereken izinNe yapar
catalog.activatecatalog:writeYeniden sun
catalog.assign_imagescatalog:writeGörsel ata
catalog.attach_filecatalog:writeGörsel veya dosya ekle
catalog.bulk_update_itemscatalog:writeBirden çok ürünü değiştir
catalog.create_categorycatalog:manageKategori ekle
catalog.create_itemcatalog:writeKataloğa ekle
catalog.deactivatecatalog:deleteSunmayı durdur
catalog.delete_itemscatalog:deleteÜrünleri sil
catalog.detach_filecatalog:writeEki kaldır
catalog.email_product_exportcatalog:exportÜrün dışa aktarımını e-postayla gönder
catalog.move_categorycatalog:manageKategoriyi taşı
catalog.publishcatalog:writeYayımla
catalog.remove_variantcatalog:deleteVaryantı kaldır
catalog.reorder_filescatalog:writeGörselleri sırala
catalog.save_brandcatalog:manageMarka ekle veya düzenle
catalog.save_variantcatalog:writeVaryant ekle veya düzenle
catalog.set_brand_visibilitycatalog:manageMarkayı göster veya gizle
catalog.set_optionscatalog:writeVaryant seçeneklerini belirle
catalog.set_package_contentscatalog:writePaketin içeriğini belirle
catalog.set_pricecatalog:writeFiyat belirle
catalog.unpublishcatalog:writeYayından kaldır
catalog.update_categorycatalog:manageKategoriyi düzenle
catalog.update_filecatalog:writeGörseli tanımla
catalog.update_itemcatalog:writeKatalog kaydını düzenle
catalog.update_item_metadatacatalog:writeÜrün ek bilgilerini düzenle

catalog.activate

Yeniden sun — Listeye geri koyar.

Gereken izin catalog:write · veriyi değiştirir

POSThttps://app.getera.io/api/v1/products/{id}/actions/activate
API anahtarı ya da OAuth token · catalog:write
  • Asıl adres: POST /api/v1/actions/catalog.activate

Girdi

AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · Kalem · kimliği: item

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
not_foundKayıt bulunmalı.
already_activeListede olmamalı.

Yayımladığı olaylar: catalog.activated

Neye yazar: item (update) — Marks it active

curl -X POST https://app.getera.io/api/v1/products/PRODUCT_ID/actions/activate \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": [
    "catalog.activated"
  ]
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.products.activate("PRODUCT_ID")
era products activate PRODUCT_ID
tools/call
{
  "name": "era__catalog__activate",
  "arguments": {
    "id": "PRODUCT_ID"
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde catalog:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, already_active · 429 çok sık istek

catalog.assign_images

Görsel ata — Seçilen görseli seçili her hizmet ya da ürüne ekler; mevcut galeriler korunur.

Gereken izin catalog:write · veriyi değiştirir

POSThttps://app.getera.io/api/v1/product_files/actions/assign_images
API anahtarı ya da OAuth token · catalog:write
  • Asıl adres: POST /api/v1/actions/catalog.assign_images

Girdi

AlanTürZorunluAçıklama
idsobject / arrayevetSeçili kayıtlar
fileIduuidevetGörsel · kimliği: file

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
no_items1 ila 500 ürün veya hizmet seçin.
file_not_foundBu dosya çalışma alanında erişilebilir değil.
image_requiredBir görsel seçin.
not_foundSeçilen ürün veya hizmetlerden bazılarına artık erişilemiyor.

Yayımladığı olaylar: catalog.files_changed

Neye yazar: item_file (insert) — Appends an image, keeping the existing gallery

curl -X POST https://app.getera.io/api/v1/product_files/actions/assign_images \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"ids":{},"fileId":"FILE_ID"}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": [
    "catalog.files_changed"
  ]
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.productFiles.assignImages({
  ids: {},
  fileId: "FILE_ID"
})
era product_files assign_images --data '{"ids":{},"fileId":"FILE_ID"}'
tools/call
{
  "name": "era__catalog__assign_images",
  "arguments": {
    "ids": {},
    "fileId": "FILE_ID"
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde catalog:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 no_items, file_not_found, image_required, not_found · 429 çok sık istek

catalog.attach_file

Görsel veya dosya ekle — Bir fotoğraf, video, teknik belge veya indirme — ürüne ya da tek bir varyanta.

Gereken izin catalog:write · veriyi değiştirir

POSThttps://app.getera.io/api/v1/product_files/actions/attach_file
API anahtarı ya da OAuth token · catalog:write
  • Asıl adres: POST /api/v1/actions/catalog.attach_file

Girdi

AlanTürZorunluAçıklama
itemIduuidevetKalem · kimliği: item
fileIduuidDosya · kimliği: file
externalUrlstringHarici URL · en çok 1000
variantIduuidVaryant · kimliği: item_variant
rolestring (enum)Rol · İzin verilen değerler: image, video, datasheet, download
altstringAlternatif metin · en çok 250
sortOrdernumberSipariş

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
not_foundÜrün bulunmalı.
nothing_to_attachBir dosya veya harici bir URL gerekli.
file_not_foundDosya bulunmalı.
variant_not_on_itemVaryant bu ürüne ait olmalı.

Yayımladığı olaylar: catalog.files_changed

Neye yazar: item_file (insert) — Attaches the file

curl -X POST https://app.getera.io/api/v1/product_files/actions/attach_file \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"itemId":"ITEM_ID"}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": [
    "catalog.files_changed"
  ]
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.productFiles.attachFile({
  itemId: "ITEM_ID"
})
era product_files attach_file \
  --item-id "ITEM_ID"
tools/call
{
  "name": "era__catalog__attach_file",
  "arguments": {
    "itemId": "ITEM_ID"
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde catalog:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, nothing_to_attach, file_not_found, variant_not_on_item · 429 çok sık istek

catalog.bulk_update_items

Birden çok ürünü değiştir — Listeden yayımla, yayından kaldır, listeye koy veya çıkar ya da bir kategoriye taşı.

Gereken izin catalog:write · veriyi değiştirir

POSThttps://app.getera.io/api/v1/products/actions/bulk_update_items
API anahtarı ya da OAuth token · catalog:write
  • Asıl adres: POST /api/v1/actions/catalog.bulk_update_items

Girdi

AlanTürZorunluAçıklama
itemIdsobject / arrayevetÖğe
operationstring (enum)evetİşlem · İzin verilen değerler: publish, unpublish, activate, deactivate, set_category
categoryIduuidKategori · kimliği: item_category

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
no_itemsEn az bir ürün seçilmeli.
not_foundHer ürün bulunmalı.
category_not_foundKategori bulunmalı.

Yayımladığı olaylar: catalog.published, catalog.unpublished, catalog.activated, catalog.deactivated, catalog.item_updated

Neye yazar: item (update) — Writes the change on each item it applies to

curl -X POST https://app.getera.io/api/v1/products/actions/bulk_update_items \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"itemIds":{},"operation":"publish"}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": [
    "catalog.published",
    "catalog.unpublished",
    "catalog.activated",
    "catalog.deactivated",
    "catalog.item_updated"
  ]
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.products.bulkUpdateItems({
  itemIds: {},
  operation: "publish"
})
era products bulk_update_items --data '{"itemIds":{},"operation":"publish"}'
tools/call
{
  "name": "era__catalog__bulk_update_items",
  "arguments": {
    "itemIds": {},
    "operation": "publish"
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde catalog:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 no_items, not_found, category_not_found · 429 çok sık istek

catalog.create_category

Kategori ekle — Kataloğu bu ekranda ve mağaza sitesinde gruplar.

Gereken izin catalog:manage · veriyi değiştirir

POSThttps://app.getera.io/api/v1/categories/{id}/actions/create_category
API anahtarı ya da OAuth token · catalog:manage
  • Asıl adres: POST /api/v1/actions/catalog.create_category

Girdi

AlanTürZorunluAçıklama
namestringevetAd · en çok 200
slugstringAdres · en çok 200
descriptionstringAçıklama · en çok 2000
contentobject / arraySayfa içeriği
iconstringSimge · en çok 64
imageFileIduuidGörsel · kimliği: file
parentIduuidDoldurulduğu yer: adresteki {id} · İçeride · kimliği: item_category
isActivebooleanGörünür
sortOrdernumberSipariş
seoTitlestringArama başlığı · en çok 200
seoDescriptionstringArama açıklaması · en çok 500

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
invalid_nameAd kullanılabilir bir adres üretmeli.
slug_takenAdres bu çalışma alanında boşta olmalı.
parent_not_foundÜst kategori bulunmalı.

Yayımladığı olaylar: catalog.category_created

Neye yazar: item_category (insert) — Creates the category

curl -X POST https://app.getera.io/api/v1/categories/CATEGORY_ID/actions/create_category \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"name":"Name"}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": [
    "catalog.category_created"
  ]
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.categories.createCategory("CATEGORY_ID", {
  name: "Name"
})
era categories create_category CATEGORY_ID \
  --name "Name"
tools/call
{
  "name": "era__catalog__create_category",
  "arguments": {
    "parentId": "CATEGORY_ID",
    "name": "Name"
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde catalog:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 invalid_name, slug_taken, parent_not_found · 429 çok sık istek

catalog.create_item

Kataloğa ekle — Satılabilecek veya rezerve edilebilecekler listesine ilk varyantıyla yeni bir şey koyar.

Gereken izin catalog:write · veriyi değiştirir

POSThttps://app.getera.io/api/v1/products/actions/create_item
API anahtarı ya da OAuth token · catalog:write
  • REST kısayolu: POST /api/v1/products
  • Asıl adres: POST /api/v1/actions/catalog.create_item

Girdi

AlanTürZorunluAçıklama
namestringevetAd · en çok 200
slugstringAdres · en çok 200
kindstring (enum)Tür · Hizmetin bir süresi olur; ürün kargoyla gönderilir. Paket, bunlardan birkaçını içerir. · İzin verilen değerler: service, product, package, gift_card
fulfilmentstring (enum)Teslim şekli · İzin verilen değerler: appointment, home_service, group_class, shipping, digital
categoryIduuidKategori · kimliği: item_category
brandIduuidMarka · kimliği: item_brand
descriptionstringAçıklama · en çok 4000
summarystringKısa açıklama · en çok 500
contentobject / arraySayfa içeriği
sortOrdernumberSipariş
modelstringModel · en çok 200
skustringStok kodu · en çok 100
priceAmountnumber (money)Fiyat (küçük birim) · “Bize sorun” için boş bırakın — mevcut kataloğun %55,4’ü bu şekilde fiyatlandırılmış. · en az 0
durationMinutesnumberSüre (dakika) · en az 5 · en çok 1440
capacitynumberKontenjan · 1’den fazlası onu bir sınıf yapar. · en az 1
inShopbooleanMağazaya koy · Hemen yayımlanır ve mağaza para biriminde fiyatlandırılır. Mağaza yoksa → store_missing; ardından retail.set_item_listing (kanalsız) onu listeler.
imageFileIduuidResim · Yüklenmiş bir dosya — ör. sohbette eklenen fotoğraf. · kimliği: file

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
invalid_nameAd kullanılabilir bir adres üretmeli.
store_missingMağazan yok — açayım mı?
file_not_foundGörsel bu çalışma alanındaki bir dosya olmalı.
slug_takenAdres bu çalışma alanında boşta olmalı.
fulfilment_not_allowed_for_kindBir ürün randevu almaz.
duration_on_productBir ürünün süresi yoktur.
category_not_foundKategori bulunmalı.
brand_not_foundMarka bulunmalı.

Yayımladığı olaylar: catalog.item_created, catalog.files_changed, catalog.published

Neye yazar: item (insert) — Creates the catalogue entry; item_variant (insert) — Creates its default variant; item_file (insert) — Attaches the picture, when one is given

curl -X POST https://app.getera.io/api/v1/products/actions/create_item \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"name":"Name"}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": [
    "catalog.item_created",
    "catalog.files_changed",
    "catalog.published"
  ]
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.products.create({
  name: "Name"
})
era products create \
  --name "Name"
tools/call
{
  "name": "era__catalog__create_item",
  "arguments": {
    "name": "Name"
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde catalog:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 invalid_name, store_missing, file_not_found, slug_taken, fulfilment_not_allowed_for_kind, duration_on_product, category_not_found, brand_not_found · 429 çok sık istek

catalog.deactivate

Sunmayı durdur — Listeden çıkarır; onun için alınmış randevuları belirtir.

Gereken izin catalog:delete · siler ya da geri alınamaz · Era çalıştırırken bir kişiye onaylatır

POSThttps://app.getera.io/api/v1/products/{id}/actions/deactivate
API anahtarı ya da OAuth token · catalog:delete
  • Asıl adres: POST /api/v1/actions/catalog.deactivate

Girdi

AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · Kalem · kimliği: item
forcebooleanYine de devre dışı bırak

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
not_foundKayıt bulunmalı.
already_inactiveHâlâ listede olmalı.
has_upcomingListeden çıkarılmadan önce alınmış randevular belirtilir.

Yayımladığı olaylar: catalog.deactivated

Neye yazar: item (update) — Marks it inactive

curl -X POST https://app.getera.io/api/v1/products/PRODUCT_ID/actions/deactivate \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"force":true}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": [
    "catalog.deactivated"
  ]
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.products.deactivate("PRODUCT_ID", {
  force: true
})
era products deactivate PRODUCT_ID \
  --force true
tools/call
{
  "name": "era__catalog__deactivate",
  "arguments": {
    "id": "PRODUCT_ID",
    "force": true
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde catalog:delete izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, already_inactive, has_upcoming · 429 çok sık istek

catalog.delete_items

Ürünleri sil — Kalıcı olarak kaldırır. Siparişler dondurulmuş adlarını korur; randevu ve paketler buna izin vermez.

Gereken izin catalog:delete · siler ya da geri alınamaz · Era çalıştırırken bir kişiye onaylatır

POSThttps://app.getera.io/api/v1/products/actions/delete_items
API anahtarı ya da OAuth token · catalog:delete
  • Asıl adres: POST /api/v1/actions/catalog.delete_items

Girdi

AlanTürZorunluAçıklama
itemIdsobject / arrayevetÖğe

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
no_itemsEn az bir ürün seçilmeli.
not_foundHer ürün bulunmalı.
item_in_useBir randevunun, paketin veya dersin bağlı olduğu hiçbir şey silinmez.

Yayımladığı olaylar: catalog.item_deleted

Neye yazar: item (delete) — Removes the items and their variants

curl -X POST https://app.getera.io/api/v1/products/actions/delete_items \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"itemIds":{}}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": [
    "catalog.item_deleted"
  ]
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.products.deleteItems({
  itemIds: {}
})
era products delete_items --data '{"itemIds":{}}'
tools/call
{
  "name": "era__catalog__delete_items",
  "arguments": {
    "itemIds": {}
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde catalog:delete izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 no_items, not_found, item_in_use · 429 çok sık istek

catalog.detach_file

Eki kaldır — Kaldırılmak üzere sıraya koyar.

Gereken izin catalog: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

POSThttps://app.getera.io/api/v1/product_files/{id}/actions/detach_file
API anahtarı ya da OAuth token · catalog:write
  • Asıl adres: POST /api/v1/actions/catalog.detach_file

Girdi

AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · Ek · kimliği: item_file

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
attachment_not_foundEk bulunmalı ve hâlâ ekli olmalı.

Yayımladığı olaylar: catalog.files_changed

Neye yazar: item_file (update) — Marks it for removal

curl -X POST https://app.getera.io/api/v1/product_files/PRODUCT_FILE_ID/actions/detach_file \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": [
    "catalog.files_changed"
  ]
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.productFiles.detachFile("PRODUCT_FILE_ID")
era product_files detach_file PRODUCT_FILE_ID
tools/call
{
  "name": "era__catalog__detach_file",
  "arguments": {
    "id": "PRODUCT_FILE_ID"
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde catalog:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 attachment_not_found · 429 çok sık istek

catalog.email_product_export

Ürün dışa aktarımını e-postayla gönder — Seçilen XLSX dosyasını arka planda hazırlar ve e-postaya ek olarak gönderir.

Gereken izin catalog:export · dışarıya ulaşır (gönderir, yayımlar ya da ücret alır)

POSThttps://app.getera.io/api/v1/actions/catalog.email_product_export
API anahtarı ya da OAuth token · catalog:export

Girdi

AlanTürZorunluAçıklama
emailstringevetAlıcı · en çok 320
fieldsobject / arrayevetAlanlar
filterobject / arrayGeçerli filtreler

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
invalid_export_emailAlıcı geçerli bir e-posta adresi olmalı.
invalid_export_fieldsDışa aktarma için en az bir ürün alanı seçilmeli.

Yayımladığı olaylar: catalog.export_queued

curl -X POST https://app.getera.io/api/v1/actions/catalog.email_product_export \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"email":"Recipient","fields":{}}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": [
    "catalog.export_queued"
  ]
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.actions.run("catalog.email_product_export", {
  email: "Recipient",
  fields: {}
})
era catalog email_product_export --data '{"email":"Recipient","fields":{}}'
tools/call
{
  "name": "era__catalog__email_product_export",
  "arguments": {
    "email": "Recipient",
    "fields": {}
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde catalog:export izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 invalid_export_email, invalid_export_fields · 429 çok sık istek

catalog.move_category

Kategoriyi taşı — Bir kategoriyi başka birinin içine ya da en üst seviyeye koyar.

Gereken izin catalog:manage · veriyi değiştirir

POSThttps://app.getera.io/api/v1/categories/{id}/actions/move_category
API anahtarı ya da OAuth token · catalog:manage
  • Asıl adres: POST /api/v1/actions/catalog.move_category

Girdi

AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · Kategori · kimliği: item_category
parentIduuidİçeride · kimliği: item_category

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
not_foundKategori bulunmalı.
parent_not_foundÜst kategori bulunmalı.
cycleBir kategori kendi içine taşınamaz.

Yayımladığı olaylar: catalog.category_moved

Neye yazar: item_category (update) — Moves the category

curl -X POST https://app.getera.io/api/v1/categories/CATEGORY_ID/actions/move_category \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"parentId":"ITEM_CATEGORY_ID"}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": [
    "catalog.category_moved"
  ]
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.categories.moveCategory("CATEGORY_ID", {
  parentId: "ITEM_CATEGORY_ID"
})
era categories move_category CATEGORY_ID \
  --parent-id "ITEM_CATEGORY_ID"
tools/call
{
  "name": "era__catalog__move_category",
  "arguments": {
    "id": "CATEGORY_ID",
    "parentId": "ITEM_CATEGORY_ID"
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde catalog:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, parent_not_found, cycle · 429 çok sık istek

catalog.publish

Yayımla — Mağaza sitesine koyar.

Gereken izin catalog:write · dışarıya ulaşır (gönderir, yayımlar ya da ücret alır)

POSThttps://app.getera.io/api/v1/products/{id}/actions/publish
API anahtarı ya da OAuth token · catalog:write
  • Asıl adres: POST /api/v1/actions/catalog.publish

Girdi

AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · Kalem · kimliği: item

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
not_foundKayıt bulunmalı.
already_publishedHâlâ taslak olmalı.
no_variantSatılacak bir şey olmalı.
no_priceHediye kartının bir değeri olmalı.

Yayımladığı olaylar: catalog.published

Neye yazar: item (update) — Stamps published_at

curl -X POST https://app.getera.io/api/v1/products/PRODUCT_ID/actions/publish \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": [
    "catalog.published"
  ]
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.products.publish("PRODUCT_ID")
era products publish PRODUCT_ID
tools/call
{
  "name": "era__catalog__publish",
  "arguments": {
    "id": "PRODUCT_ID"
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde catalog:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, already_published, no_variant, no_price · 429 çok sık istek

catalog.remove_variant

Varyantı kaldır — Bir varyantı bırakır; sonuncusu değilse veya ona bağlı bir şey yoksa.

Gereken izin catalog:delete · siler ya da geri alınamaz · Era çalıştırırken bir kişiye onaylatır

POSThttps://app.getera.io/api/v1/variants/{id}/actions/remove_variant
API anahtarı ya da OAuth token · catalog:delete
  • Asıl adres: POST /api/v1/actions/catalog.remove_variant

Girdi

AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · Varyant · kimliği: item_variant

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
variant_not_foundVaryant bulunmalı.
last_variantBir ürünün her zaman en az bir varyantı kalır.
variant_in_useOna bağlı randevu ve paketler önce belirtilir.

Yayımladığı olaylar: catalog.variant_removed

Neye yazar: item_variant (delete) — Removes the variant

curl -X POST https://app.getera.io/api/v1/variants/VARIANT_ID/actions/remove_variant \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": [
    "catalog.variant_removed"
  ]
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.variants.removeVariant("VARIANT_ID")
era variants remove_variant VARIANT_ID
tools/call
{
  "name": "era__catalog__remove_variant",
  "arguments": {
    "id": "VARIANT_ID"
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde catalog:delete izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 variant_not_found, last_variant, variant_in_use · 429 çok sık istek

catalog.reorder_files

Görselleri sırala — Mağaza sitesinin onları gösterdiği sıra.

Gereken izin catalog:write · veriyi değiştirir

POSThttps://app.getera.io/api/v1/product_files/actions/reorder_files
API anahtarı ya da OAuth token · catalog:write
  • Asıl adres: POST /api/v1/actions/catalog.reorder_files

Girdi

AlanTürZorunluAçıklama
itemIduuidevetKalem · kimliği: item
attachmentIdsobject / arrayevetEkler

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
not_foundÜrün bulunmalı.
attachment_not_on_itemHer ek bu ürüne ait olmalı.

Yayımladığı olaylar: catalog.files_changed

Neye yazar: item_file (update) — Writes the order

curl -X POST https://app.getera.io/api/v1/product_files/actions/reorder_files \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"itemId":"ITEM_ID","attachmentIds":{}}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": [
    "catalog.files_changed"
  ]
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.productFiles.reorderFiles({
  itemId: "ITEM_ID",
  attachmentIds: {}
})
era product_files reorder_files --data '{"itemId":"ITEM_ID","attachmentIds":{}}'
tools/call
{
  "name": "era__catalog__reorder_files",
  "arguments": {
    "itemId": "ITEM_ID",
    "attachmentIds": {}
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde catalog:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, attachment_not_on_item · 429 çok sık istek

catalog.save_brand

Marka ekle veya düzenle — Ürünün kime ait olduğu — kendi sayfası, sitesi ve logosuyla.

Gereken izin catalog:manage · veriyi değiştirir

POSThttps://app.getera.io/api/v1/brands/{id}/actions/save_brand
API anahtarı ya da OAuth token · catalog:manage
  • REST kısayolu: PATCH /api/v1/brands/{id}
  • Asıl adres: POST /api/v1/actions/catalog.save_brand

Girdi

AlanTürZorunluAçıklama
iduuidDoldurulduğu yer: adresteki {id} · Marka · kimliği: item_brand
namestringevetAd · en çok 200
slugstringAdres · en çok 200
descriptionstringAçıklama · en çok 2000
websiteUrlstringWeb sitesi · en çok 500
parentIduuidParçası olduğu · kimliği: item_brand
isFeaturedbooleanVitrinde göster
isActivebooleanGörünür
sortOrdernumberSipariş
imageFileIduuidLogo · kimliği: file

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
invalid_nameAd kullanılabilir bir adres üretmeli.
slug_takenAdres bu çalışma alanında boşta olmalı.
parent_not_foundÜst marka bulunmalı.
cycleBir marka kendi üstü olamaz.
not_foundDüzenlerken marka bulunmalı.

Yayımladığı olaylar: catalog.brand_created, catalog.brand_updated

Neye yazar: item_brand (upsert) — Writes the brand

curl -X POST https://app.getera.io/api/v1/brands/BRAND_ID/actions/save_brand \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"name":"Name"}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": [
    "catalog.brand_created",
    "catalog.brand_updated"
  ]
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.brands.saveBrand("BRAND_ID", {
  name: "Name"
})
era brands save_brand BRAND_ID \
  --name "Name"
tools/call
{
  "name": "era__catalog__save_brand",
  "arguments": {
    "id": "BRAND_ID",
    "name": "Name"
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde catalog:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 invalid_name, slug_taken, parent_not_found, cycle, not_found · 429 çok sık istek

catalog.save_variant

Varyant ekle veya düzenle — Gerçekte satılan şey: stok kodu, fiyat, süre, kapasite ve seçenekler.

Gereken izin catalog:write · veriyi değiştirir

POSThttps://app.getera.io/api/v1/variants/{id}/actions/save_variant
API anahtarı ya da OAuth token · catalog:write
  • REST kısayolu: PATCH /api/v1/variants/{id}
  • Asıl adres: POST /api/v1/actions/catalog.save_variant

Girdi

AlanTürZorunluAçıklama
iduuidDoldurulduğu yer: adresteki {id} · Varyant · kimliği: item_variant
itemIduuidKalem · kimliği: item
namestringVaryant adı · en çok 200
skustringStok kodu · en çok 100
priceAmountnumber (money)Fiyat (küçük birim) · en az 0
costPriceAmountnumber (money)Maliyet (küçük birim) · en az 0
durationMinutesnumberSüre (dakika) · en az 5 · en çok 1440
capacitynumberKontenjan · en az 1
weightGramsnumberAğırlık (g) · en az 0
quantityLimitPerCustomernumberMüşteri başına sınır · en az 1
trackInventorybooleanStoku takip et
sortOrdernumberSipariş
optionValueIdsstringSeçenek değerleri · Virgülle ayrılmış seçenek değeri kimlikleri — her eksen için bir tane. · en çok 2000

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
not_foundÜrün bulunmalı.
variant_not_foundVaryant bulunmalı.
sku_takenBir stok kodu tek bir varyanta aittir.
weight_on_unshippedYalnızca kargoyla gönderilen bir şeyin ağırlığı olur.
duration_on_productBir ürünün süresi yoktur.
option_value_not_on_itemHer seçenek değeri bu ürüne ait olmalı.
variant_combination_existsİki varyant aynı kombinasyonu paylaşamaz.

Yayımladığı olaylar: catalog.variant_changed

Neye yazar: item_variant (upsert) — Writes the variant; item_variant_option (upsert) — Writes which axes it sits on

curl -X POST https://app.getera.io/api/v1/variants/VARIANT_ID/actions/save_variant \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"itemId":"ITEM_ID"}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": [
    "catalog.variant_changed"
  ]
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.variants.saveVariant("VARIANT_ID", {
  itemId: "ITEM_ID"
})
era variants save_variant VARIANT_ID \
  --item-id "ITEM_ID"
tools/call
{
  "name": "era__catalog__save_variant",
  "arguments": {
    "id": "VARIANT_ID",
    "itemId": "ITEM_ID"
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde catalog: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, sku_taken, weight_on_unshipped, duration_on_product, option_value_not_on_item, variant_combination_exists · 429 çok sık istek

catalog.set_brand_visibility

Markayı göster veya gizle — Ürün geçmişini korurken markanın seçicilerde ve vitrinlerde görünüp görünmeyeceğini belirler.

Gereken izin catalog:manage · veriyi değiştirir

POSThttps://app.getera.io/api/v1/brands/{id}/actions/set_brand_visibility
API anahtarı ya da OAuth token · catalog:manage
  • Asıl adres: POST /api/v1/actions/catalog.set_brand_visibility

Girdi

AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · Marka · kimliği: item_brand
isActivebooleanevetGörünür

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
not_foundMarka bulunmalı.

Yayımladığı olaylar: catalog.brand_updated

Neye yazar: item_brand (update) — Changes storefront visibility

curl -X POST https://app.getera.io/api/v1/brands/BRAND_ID/actions/set_brand_visibility \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"isActive":true}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": [
    "catalog.brand_updated"
  ]
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.brands.setBrandVisibility("BRAND_ID", {
  isActive: true
})
era brands set_brand_visibility BRAND_ID \
  --is-active true
tools/call
{
  "name": "era__catalog__set_brand_visibility",
  "arguments": {
    "id": "BRAND_ID",
    "isActive": true
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde catalog: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

catalog.set_options

Varyant seçeneklerini belirle — Bir varyantı diğerinden ayıran şey — beden, renk, uzunluk.

Gereken izin catalog:write · veriyi değiştirir

POSThttps://app.getera.io/api/v1/product_options/actions/set_options
API anahtarı ya da OAuth token · catalog:write
  • Asıl adres: POST /api/v1/actions/catalog.set_options

Girdi

AlanTürZorunluAçıklama
itemIduuidevetKalem · kimliği: item
optionsobject / arrayevetSeçenekler · [{ "name": "Size", "values": [{ "label": "S" }, { "label": "M" }] }]

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
not_foundÜrün bulunmalı.
invalid_optionsHer seçeneğin bir adı ve etiketli değerleri olmalı.
option_in_use_by_variantBir varyantın bağlı olduğu seçenek kaybolamaz.

Yayımladığı olaylar: catalog.options_changed

Neye yazar: item_option (upsert) — Replaces the axes; item_option_value (upsert) — Replaces their values

curl -X POST https://app.getera.io/api/v1/product_options/actions/set_options \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"itemId":"ITEM_ID","options":{}}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": [
    "catalog.options_changed"
  ]
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.productOptions.setOptions({
  itemId: "ITEM_ID",
  options: {}
})
era product_options set_options --data '{"itemId":"ITEM_ID","options":{}}'
tools/call
{
  "name": "era__catalog__set_options",
  "arguments": {
    "itemId": "ITEM_ID",
    "options": {}
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde catalog:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, invalid_options, option_in_use_by_variant · 429 çok sık istek

catalog.set_package_contents

Paketin içeriğini belirle — Paketin içeriğini değiştirir — varyantlar, miktarlarıyla ve sırasıyla.

Gereken izin catalog:write · veriyi değiştirir

POSThttps://app.getera.io/api/v1/product_components/actions/set_package_contents
API anahtarı ya da OAuth token · catalog:write
  • Asıl adres: POST /api/v1/actions/catalog.set_package_contents

Girdi

AlanTürZorunluAçıklama
packageItemIduuidevetPaket · kimliği: item
contentsstringevetİçerik · Virgülle ayrılmış varyant kimlikleri, isteğe bağlı olarak id:quantity — ör. on seans için “…:10”. · en çok 4000

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
not_foundPaket bulunmalı.
not_a_packageKayıt “paket” türünde olmalı.
package_emptyPaketin en az bir satırı olmalı.
invalid_quantityMiktar bir veya daha büyük bir tam sayıdır.
component_not_foundHer satır gerçek bir varyantı göstermeli.
self_componentBir paket kendini içeremez.
component_is_packagePaketler iç içe olmaz.

Yayımladığı olaylar: catalog.package_changed

Neye yazar: item_component (upsert) — Replaces the package contents

curl -X POST https://app.getera.io/api/v1/product_components/actions/set_package_contents \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"packageItemId":"ITEM_ID","contents":"Contents"}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": [
    "catalog.package_changed"
  ]
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.productComponents.setPackageContents({
  packageItemId: "ITEM_ID",
  contents: "Contents"
})
era product_components set_package_contents \
  --package-item-id "ITEM_ID" \
  --contents "Contents"
tools/call
{
  "name": "era__catalog__set_package_contents",
  "arguments": {
    "packageItemId": "ITEM_ID",
    "contents": "Contents"
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde catalog:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, not_a_package, package_empty, invalid_quantity, component_not_found, self_component, component_is_package · 429 çok sık istek

catalog.set_price

Fiyat belirle — Bir varyantın liste fiyatı. İmzalanmış sözleşmeler onunla değişmez.

Gereken izin catalog:write · veriyi değiştirir

POSThttps://app.getera.io/api/v1/variants/{id}/actions/set_price
API anahtarı ya da OAuth token · catalog:write
  • Asıl adres: POST /api/v1/actions/catalog.set_price

Girdi

AlanTürZorunluAçıklama
variantIduuidevetDoldurulduğu yer: adresteki {id} · Varyant · kimliği: item_variant
priceAmountnumber (money)Fiyat (küçük birim) · en az 0
currencystringPara birimi · en çok 3
costPriceAmountnumber (money)Maliyet (küçük birim) · en az 0
priorPriceAmountnumber (money)Önceki fiyat · AB Omnibus. · en az 0

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
variant_not_foundVaryant bulunmalı.
currency_mismatchTek katalog, tek para birimi.

Yayımladığı olaylar: catalog.price_changed

Neye yazar: item_variant (update) — Writes the price

curl -X POST https://app.getera.io/api/v1/variants/VARIANT_ID/actions/set_price \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"priceAmount":1}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": [
    "catalog.price_changed"
  ]
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.variants.setPrice("VARIANT_ID", {
  priceAmount: 1
})
era variants set_price VARIANT_ID \
  --price-amount 1
tools/call
{
  "name": "era__catalog__set_price",
  "arguments": {
    "variantId": "VARIANT_ID",
    "priceAmount": 1
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde catalog:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 variant_not_found, currency_mismatch · 429 çok sık istek

catalog.unpublish

Yayından kaldır — İç listeden çıkarmadan taslağa geri alır.

Gereken izin catalog:write · dışarıya ulaşır (gönderir, yayımlar ya da ücret alır)

POSThttps://app.getera.io/api/v1/products/{id}/actions/unpublish
API anahtarı ya da OAuth token · catalog:write
  • Asıl adres: POST /api/v1/actions/catalog.unpublish

Girdi

AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · Kalem · kimliği: item

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
not_foundKayıt bulunmalı.
not_publishedYayımlanmış olmalı.

Yayımladığı olaylar: catalog.unpublished

Neye yazar: item (update) — Clears published_at

curl -X POST https://app.getera.io/api/v1/products/PRODUCT_ID/actions/unpublish \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": [
    "catalog.unpublished"
  ]
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.products.unpublish("PRODUCT_ID")
era products unpublish PRODUCT_ID
tools/call
{
  "name": "era__catalog__unpublish",
  "arguments": {
    "id": "PRODUCT_ID"
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde catalog:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, not_published · 429 çok sık istek

catalog.update_category

Kategoriyi düzenle — Kategorinin metnini, adresini, içeriğini ve sitede görünürlüğünü günceller.

Gereken izin catalog:manage · veriyi değiştirir

POSThttps://app.getera.io/api/v1/categories/{id}/actions/update_category
API anahtarı ya da OAuth token · catalog:manage
  • REST kısayolu: PATCH /api/v1/categories/{id}
  • Asıl adres: POST /api/v1/actions/catalog.update_category

Girdi

AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · Kategori · kimliği: item_category
namestringAd · en çok 200
slugstringAdres · en çok 200
descriptionstringAçıklama · en çok 2000
contentobject / arraySayfa içeriği
iconstringSimge · en çok 64
imageFileIduuidGörsel · kimliği: file
isActivebooleanGörünür
sortOrdernumberSipariş
seoTitlestringArama başlığı · en çok 200
seoDescriptionstringArama açıklaması · en çok 500

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
not_foundKategori bulunmalı.
invalid_nameAd kullanılabilir bir adres üretmeli.
slug_takenAdres bu çalışma alanında boşta olmalı.

Yayımladığı olaylar: catalog.category_updated

Neye yazar: item_category (update) — Updates the category

curl -X POST https://app.getera.io/api/v1/categories/CATEGORY_ID/actions/update_category \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"name":"Name"}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": [
    "catalog.category_updated"
  ]
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.categories.updateCategory("CATEGORY_ID", {
  name: "Name"
})
era categories update_category CATEGORY_ID \
  --name "Name"
tools/call
{
  "name": "era__catalog__update_category",
  "arguments": {
    "id": "CATEGORY_ID",
    "name": "Name"
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde catalog:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, invalid_name, slug_taken · 429 çok sık istek

catalog.update_file

Görseli tanımla — Alternatif metni ve hangi varyantı gösterdiği.

Gereken izin catalog:write · veriyi değiştirir

POSThttps://app.getera.io/api/v1/product_files/{id}/actions/update_file
API anahtarı ya da OAuth token · catalog:write
  • Asıl adres: POST /api/v1/actions/catalog.update_file

Girdi

AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · Ek · kimliği: item_file
altstringAlternatif metin · en çok 250
variantIduuidVaryant · kimliği: item_variant

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
attachment_not_foundEk bulunmalı ve hâlâ ekli olmalı.
variant_not_on_itemVaryant aynı ürüne ait olmalı.

Yayımladığı olaylar: catalog.files_changed

Neye yazar: item_file (update) — Writes the alt text and variant

curl -X POST https://app.getera.io/api/v1/product_files/PRODUCT_FILE_ID/actions/update_file \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"alt":"Alt text"}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": [
    "catalog.files_changed"
  ]
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.productFiles.updateFile("PRODUCT_FILE_ID", {
  alt: "Alt text"
})
era product_files update_file PRODUCT_FILE_ID \
  --alt "Alt text"
tools/call
{
  "name": "era__catalog__update_file",
  "arguments": {
    "id": "PRODUCT_FILE_ID",
    "alt": "Alt text"
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde catalog:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 attachment_not_found, variant_not_on_item · 429 çok sık istek

catalog.update_item

Katalog kaydını düzenle — Adı, adresi, gruplaması, metni ve SEO bilgisi.

Gereken izin catalog:write · veriyi değiştirir

POSThttps://app.getera.io/api/v1/products/{id}/actions/update_item
API anahtarı ya da OAuth token · catalog:write
  • REST kısayolu: PATCH /api/v1/products/{id}
  • Asıl adres: POST /api/v1/actions/catalog.update_item

Girdi

AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · Kalem · kimliği: item
namestringAd · en çok 200
slugstringAdres · en çok 200
categoryIduuidKategori · kimliği: item_category
brandIduuidMarka · kimliği: item_brand
descriptionstringAçıklama · en çok 4000
summarystringKısa açıklama · en çok 500
contentobject / arraySayfa içeriği
modelstringModel · en çok 200
seoTitlestringSEO başlığı · en çok 200
seoDescriptionstringSEO açıklaması · en çok 500
isFeaturedbooleanÖne çıkan
fulfilmentstring (enum)Teslim şekli · İzin verilen değerler: appointment, home_service, group_class, shipping, digital
externalReferencestringHarici anahtar · en çok 200
sortOrdernumberSipariş
featuresobject / arrayÖzellikler · Madde işaretleriyle gösterilen kısa satırlardan oluşan bir liste.

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
not_foundKayıt bulunmalı.
invalid_nameAd kullanılabilir bir adres üretmeli.
slug_takenAdres bu çalışma alanında boşta olmalı.
fulfilment_not_allowed_for_kindBir ürün randevu almaz.
category_not_foundKategori bulunmalı.
brand_not_foundMarka bulunmalı.

Yayımladığı olaylar: catalog.item_updated

Neye yazar: item (update) — Updates the catalogue entry

curl -X POST https://app.getera.io/api/v1/products/PRODUCT_ID/actions/update_item \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"name":"Name"}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": [
    "catalog.item_updated"
  ]
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.products.updateItem("PRODUCT_ID", {
  name: "Name"
})
era products update_item PRODUCT_ID \
  --name "Name"
tools/call
{
  "name": "era__catalog__update_item",
  "arguments": {
    "id": "PRODUCT_ID",
    "name": "Name"
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde catalog:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, invalid_name, slug_taken, fulfilment_not_allowed_for_kind, category_not_found, brand_not_found · 429 çok sık istek

catalog.update_item_metadata

Ürün ek bilgilerini düzenle — Kaydın anahtar → değer ek bilgilerini, herkese açık veya gizli olarak yeniden yazar.

Gereken izin catalog:write · veriyi değiştirir

POSThttps://app.getera.io/api/v1/products/{id}/actions/update_item_metadata
API anahtarı ya da OAuth token · catalog:write
  • Asıl adres: POST /api/v1/actions/catalog.update_item_metadata

Girdi

AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · Kalem · kimliği: item
metadataobject / arrayMeta veri
privateMetadataobject / arrayÖzel meta veri

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
not_foundKayıt bulunmalı.

Yayımladığı olaylar: catalog.item_updated

Neye yazar: item (update) — Writes the metadata

curl -X POST https://app.getera.io/api/v1/products/PRODUCT_ID/actions/update_item_metadata \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"metadata":{}}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": [
    "catalog.item_updated"
  ]
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.products.updateItemMetadata("PRODUCT_ID", {
  metadata: {}
})
era products update_item_metadata PRODUCT_ID --data '{"metadata":{}}'
tools/call
{
  "name": "era__catalog__update_item_metadata",
  "arguments": {
    "id": "PRODUCT_ID",
    "metadata": {}
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde catalog: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

Veri modelleri

ItemBrand

Tablo item_brand · Kaynak brands

  • GET /api/v1/brands
  • GET /api/v1/brands/{id}
  • PATCH /api/v1/brands/{id} → catalog.save_brand
SütunTürBoş olabilirİzin verilen değerlerBağlı olduğu tablo
idstring (uuid) · uuid
organization_idstring (uuid) · uuidorganization
workspace_idstring (uuid) · uuidworkspace
namestring · text
slugstring · text
descriptionstring · textevet
website_urlstring · textevet
image_file_idstring (uuid) · uuidevetfile
parent_idstring (uuid) · uuidevetitem_brand
is_activeboolean · bool
is_featuredboolean · bool
sort_orderinteger · int4
created_atstring (date-time) · timestamptz
updated_atstring (date-time) · timestamptz

Birincil anahtar: id

Tekil: workspace_id, slug

ItemCategory

Tablo item_category · Kaynak categories

SütunTürBoş olabilirİzin verilen değerlerBağlı olduğu tablo
idstring (uuid) · uuid
organization_idstring (uuid) · uuidorganization
workspace_idstring (uuid) · uuidworkspace
namestring · text
slugstring · text
descriptionstring · textevet
iconstring · textevet
image_file_idstring (uuid) · uuidevetfile
contentobject · jsonbevet
sort_orderinteger · int4
is_activeboolean · bool
parent_idstring (uuid) · uuidevetitem_category
created_atstring (date-time) · timestamptz
updated_atstring (date-time) · timestamptz
seo_titlestring · textevet
seo_descriptionstring · textevet

Birincil anahtar: id

Tekil: workspace_id, slug

ItemComponent

Tablo item_component · Kaynak product_components

  • GET /api/v1/product_components
  • GET /api/v1/product_components/{id}
SütunTürBoş olabilirİzin verilen değerlerBağlı olduğu tablo
idstring (uuid) · uuid
organization_idstring (uuid) · uuidorganization
workspace_idstring (uuid) · uuidworkspace
parent_item_idstring (uuid) · uuiditem
sort_orderinteger · int4
item_variant_idstring (uuid) · uuiditem_variant
quantityinteger · int4

Birincil anahtar: id

Tekil: parent_item_id, item_variant_id

Denetimler:

  • CHECK ((quantity >= 1))

ItemFile

Tablo item_file · Kaynak product_files

  • GET /api/v1/product_files
  • GET /api/v1/product_files/{id}
SütunTürBoş olabilirİzin verilen değerlerBağlı olduğu tablo
idstring (uuid) · uuid
organization_idstring (uuid) · uuidorganization
workspace_idstring (uuid) · uuidworkspace
item_idstring (uuid) · uuiditem
variant_idstring (uuid) · uuidevetitem_variant
file_idstring (uuid) · uuidevetfile
rolestring · textimage, video, datasheet, download
altstring · textevet
external_urlstring · textevet
to_removeboolean · bool
sort_orderinteger · int4
created_atstring (date-time) · timestamptz

Birincil anahtar: id

Denetimler:

  • CHECK (((file_id IS NOT NULL) OR (external_url IS NOT NULL)))

ItemOptionValue

Tablo item_option_value · Kaynak product_option_values

  • GET /api/v1/product_option_values
  • GET /api/v1/product_option_values/{id}
SütunTürBoş olabilirİzin verilen değerlerBağlı olduğu tablo
idstring (uuid) · uuid
organization_idstring (uuid) · uuidorganization
workspace_idstring (uuid) · uuidworkspace
option_idstring (uuid) · uuiditem_option
labelstring · text
swatchstring · textevet
file_idstring (uuid) · uuidevetfile
sort_orderinteger · int4

Birincil anahtar: id

Tekil: option_id, label

ItemOption

Tablo item_option · Kaynak product_options

  • GET /api/v1/product_options
  • GET /api/v1/product_options/{id}
SütunTürBoş olabilirİzin verilen değerlerBağlı olduğu tablo
idstring (uuid) · uuid
organization_idstring (uuid) · uuidorganization
workspace_idstring (uuid) · uuidworkspace
item_idstring (uuid) · uuiditem
namestring · text
sort_orderinteger · int4

Birincil anahtar: id

Tekil: item_id, name

Item

Tablo item · Kaynak products

SütunTürBoş olabilirİzin verilen değerlerBağlı olduğu tablo
idstring (uuid) · uuid
organization_idstring (uuid) · uuidorganization
workspace_idstring (uuid) · uuidworkspace
category_idstring (uuid) · uuidevetitem_category
namestring · text
slugstring · text
descriptionstring · textevet
featuresstring[] · text[]evet
fulfilmentstring · textappointment, home_service, group_class, shipping, digital
is_activeboolean · bool
sort_orderinteger · int4
created_atstring (date-time) · timestamptz
updated_atstring (date-time) · timestamptz
kindstring · textproduct, service, package, gift_card
summarystring · textevet
contentobject · jsonbevet
seo_titlestring · textevet
seo_descriptionstring · textevet
published_atstring (date-time) · timestamptzevet
is_featuredboolean · bool
modelstring · textevet
ratingnumber · float4evet
tax_class_idstring (uuid) · uuidevet
external_referencestring · textevet
brand_idstring (uuid) · uuidevetitem_brand
default_variant_idstring (uuid) · uuidevetitem_variant
is_publicboolean · boolevet
metadataobject · jsonb
private_metadataobject · jsonb

Birincil anahtar: id

Tekil: workspace_id, slug

Denetimler:

  • CHECK ( CASE kind WHEN 'service'::text THEN (fulfilment = ANY (ARRAY['appointment'::text, 'home_service'::text, 'group_class'::text])) WHEN 'product'::text THEN (fulfilment = ANY (ARRAY['shipping'::text, 'digital'::text])) ELSE true END)

ItemVariantOption

Tablo item_variant_option · Kaynak variant_options

  • GET /api/v1/variant_options
  • GET /api/v1/variant_options/{id}
SütunTürBoş olabilirİzin verilen değerlerBağlı olduğu tablo
idstring (uuid) · uuid
organization_idstring (uuid) · uuidorganization
workspace_idstring (uuid) · uuidworkspace
variant_idstring (uuid) · uuiditem_variant
option_idstring (uuid) · uuiditem_option
option_value_idstring (uuid) · uuiditem_option_value

Birincil anahtar: id

Tekil: variant_id, option_id

ItemVariant

Tablo item_variant · Kaynak variants

  • GET /api/v1/variants
  • GET /api/v1/variants/{id}
  • PATCH /api/v1/variants/{id} → catalog.save_variant
SütunTürBoş olabilirİzin verilen değerlerBağlı olduğu tablo
idstring (uuid) · uuid
organization_idstring (uuid) · uuidorganization
workspace_idstring (uuid) · uuidworkspace
item_idstring (uuid) · uuiditem
namestring · text
skustring · textevet
price_amountstring (int64) · int8evet
price_currencystring · bpchareveten çok 3
cost_price_amountstring (int64) · int8evet
prior_price_amountstring (int64) · int8evet
duration_minutesinteger · int4evet
capacityinteger · int4
weight_gramsstring (int64) · int8evet
quantity_limit_per_customerinteger · int4evet
track_inventoryboolean · bool
external_referencestring · textevet
is_activeboolean · bool
sort_orderinteger · int4
created_atstring (date-time) · timestamptz
updated_atstring (date-time) · timestamptz

Birincil anahtar: id

Denetimler:

  • CHECK ((capacity >= 1))
  • CHECK (((cost_price_amount IS NULL) OR (cost_price_amount >= 0)))
  • CHECK (((duration_minutes IS NULL) OR ((duration_minutes >= 5) AND (duration_minutes <= 1440))))
  • CHECK (((price_amount IS NULL) OR (price_amount >= 0)))
  • CHECK (((quantity_limit_per_customer IS NULL) OR (quantity_limit_per_customer >= 1)))
  • CHECK (((weight_grams IS NULL) OR (weight_grams >= 0)))

Olaylar

İş akışları ve webhook'lar bu olaylara tepki verir.

OlayNe olurTaşıdığı alanlar
catalog.activatedBir katalog kaydı yeniden satışa açıldı.id
catalog.brand_createdBir marka eklendi.id, slug
catalog.brand_updatedBir marka düzenlendi.id, slug
catalog.category_createdBir kategori eklendi.id, name, slug
catalog.category_movedBir kategorinin üst kategorisi değişti.id, parentId
catalog.category_updatedBir kategori düzenlendi.id, slug
catalog.deactivatedBir katalog kaydı satıştan kaldırıldı.id, keptAppointments
catalog.export_queuedÜrün Excel dosyası e-postayla gönderilmek üzere sıraya alındı.jobId, email, fields
catalog.files_changedBir görsel ya da dosya eklendi veya kaldırıldı.id, attachmentId
catalog.item_createdKataloğa bir şey eklendi.id, name, slug, kind, variantId
catalog.item_deletedBir katalog kaydı silindi.id
catalog.item_updatedBir katalog kaydı düzenlendi.id, slug
catalog.options_changedVaryant eksenleri değişti.id, count
catalog.package_changedBir paketin içeriği değiştirildi.id, count
catalog.price_changedBir liste fiyatı değişti.variantId, itemId, amount, currency
catalog.publishedBir katalog kaydı vitrinde yayımlandı.id, slug
catalog.unpublishedBir katalog kaydı taslağa döndü.id
catalog.variant_changedBir varyant eklendi ya da düzenlendi.id, itemId
catalog.variant_removedBir varyant kaldırıldı.id, itemId
Bu sayfa yardımcı oldu mu?