Hogyan töltsd fel a katalógusodat a SiteChathez

A secure merchant key unlocks catalog upload APIs that send products and images into SiteChat search and chat

Ha a SiteChat megoldást a saját webhelyeden használod (nem Shopify áruházban), strukturált termékrekordokat küldhetsz a Shoplynak, hogy a vásárlók megtalálhassák őket a SiteChat csevegésében és termékkeresőjében.

Ezek a végpontok ugyanazt a Settings → Store owner API secret beállítást használják, mint a többi Shoply Merchant API, és a SiteChat admin Product Catalog oldala a bejelentkezett admin hozzáférési tokeneddel is meghívhatja őket. A Shopify áruházak továbbra is a Shopifyon keresztül szinkronizálják a katalógusadataikat; ezek a feltöltési útvonalak csak olyan SiteChat-fiókokhoz érhetők el, amelyek még nem szinkronizálnak Magento-katalógust.

A SiteChat adminfelületén a Product Catalog egy Shopify-stílusú felületet nyit meg Products, Collections és Inventory részekkel. Hozzáadhatsz vagy szerkeszthetsz termékeket, importálhatsz CSV-/Excel-fájlokat, termékeket csoportosíthatsz manuális kollekciókba, és módosíthatod a készletmennyiségeket.

Milyen API-k érhetők el?

APIMetódusMit csinál
/merchant/products/batchPOSTLegfeljebb 50 termék létrehozása vagy teljes cseréje egy kérésben
/merchant/productsPOSTEgy termék létrehozása vagy teljes cseréje
/merchant/productsGETEgy importált termék visszaolvasása source és external_id alapján
/merchant/productsPATCHEgy termék részleges frissítése (read-merge-write)
/merchant/productsDELETEEgy termék puha archiválása (status=archived)
/merchant/products/listGETLapozás az importált termékek között admin táblákhoz
/merchant/products/imagesPOSTTermékkép feltöltése és nyilvános HTTPS URL visszakapása
/merchant/collectionsGET / POSTManuális kollekciók listázása vagy létrehozása
/merchant/collections/{id}GET / PUT / DELETEEgy kollekció olvasása, cseréje vagy archiválása
/merchant/inventoryGETKészletsorok listázása (termék- és variánsmennyiségek)
/merchant/inventory/adjustPOSTKövetett mennyiség beállítása egy termékhez vagy variánshoz

A sikeres termékmentések arra kérik a Shoplyt, hogy építse újra az áruház indexét. Amíg ez az újraépítés be nem fejeződik, a válaszok index_status: "pending" értéket jeleznek. A közzétett termékek ezután megjelennek mind a termékindexben, mind a SiteChat csevegés által használt tudásbázisban.

Ki használhatja ezeket az API-kat?

  • Az áruházadnak SiteChat fióknak kell lennie (app_platform értéke SiteChat).
  • A Shopify áruházi kulcsokat (beleértve bármely *.myshopify.com domaint) a rendszer elutasítja.
  • A hitelesítéshez vagy érvényes bolttulajdonosi API-titkot, vagy a kérésben szereplő pontos store_key-hez tartozó SiteChat admin hozzáférési tokent kell használni.
  • A Shopify Admin API tokenek nem hívhatják ezeket az útvonalakat.

A tulajdonosi titok létrehozása vagy cseréje ugyanúgy történik, mint más Merchant API-integrációk esetén: A Shoply Merchant API használata. A SiteChat admin konzolban nyisd meg a Product Catalog oldalt a termékek, kollekciók és készlet kezeléséhez — vagy CSV- vagy Excel-fájl importálásához — anélkül, hogy magad kezelnéd a titkot.

Hogyan működik a hitelesítés?

Szerveroldali összekötőből

Hívd meg az API-t egy megbízható háttérrendszerből HTTPS-en keresztül. Az Authorization fejlécbe egy JSON-karakterláncot kell tenni:

json
{ "store_key": "YOUR_SITECHAT_STORE_KEY", "store_owner_api_secrete": "YOUR_STORE_OWNER_API_SECRET" }

A store_owner_api_secrete a nyilvános mezőnév, beleértve a történeti helyesírást is. A store_owner_api_secret is elfogadott. Ez nem Bearer token.

A SiteChat adminból

A Product Catalog oldal ehelyett a bejelentkezett admin munkamenetedet küldi:

json
{ "store_key": "YOUR_SITECHAT_STORE_KEY", "admin_auth_token": "YOUR_SITECHAT_ACCESS_TOKEN" }

Az access_token elfogadott alias az admin_auth_token számára.

A store_key lekérdezési paraméternek egyeznie kell a fejlécben szereplő értékkel. A tulajdonosi titkokat csak szerveroldali környezeti változókban tartsd — soha ne storefront szkriptben, URL-ben vagy nyilvános tárolóban.

bash
export SHOPLY_STORE_KEY="your-sitechat-store-key" export SHOPLY_STORE_OWNER_API_SECRETE="shoply_owner_key_example123.secret-value"

Hogyan tölthetek fel termékeket?

POST https://api.shoplyai.ai/merchant/products/batch?store_key=YOUR_SITECHAT_STORE_KEY

json
{ "source": "woocommerce-main", "products": [ { "external_id": "123", "title": "Trail shoes", "description": "Water-resistant hiking shoes.", "url": "https://example.com/products/trail-shoes", "currency": "USD", "price": "49.95", "original_price": "59.95", "available": true, "status": "published", "images": ["https://example.com/images/trail-shoes.jpg"], "categories": ["Footwear"], "metafields": {"material": "Leather"}, "variants": [ { "external_id": "124", "title": "Brown / 42", "sku": "TRAIL-BR-42", "price": "49.95", "available": true, "metafields": {"color": "Brown", "size": "42"} } ] } ] }

Kötelező mezők és szabályok

  • Kötelező termékmezők: external_id, title, url, currency, price és available. A status alapértelmezetten published.
  • Opcionális készletkezelés: állítsd a tracks_inventory mezőt true értékre, és adj meg nemnegatív quantity értéket a terméken vagy variánson. A Shoply ezután a készletből vezeti le az elérhetőséget (quantity > 0), és eltárolja a total_inventory értéket az adminlistákhoz.
  • A source nevezi meg a katalóguskapcsolatot (nem feltétlenül platformot). Használj stabil nevet, például woocommerce-main. Engedélyezett karakterek: kisbetűk, számok, aláhúzásjelek és kötőjelek; legfeljebb 64 karakter. Az adminban űrlappal létrehozott termékek alapértelmezett source értéke admin.
  • A termékazonosság az áruház, a forrás és a külső azonosító kombinációja. A batch és az egyedi POST upsertek teljes cserék, nem patchek: a kihagyott opcionális mezők törlődnek. Részleges frissítésekhez PATCH használata szükséges.
  • A batch-ek 1–50 terméket tartalmazhatnak, és legfeljebb 2 000 000 kérésbájtot. Az egyes termékek validált JSON-ja legfeljebb 128 000 bájt lehet, és legfeljebb 250 variánst tartalmazhat.
  • Az áraknál előnyben részesítendők a tizedes karakterláncok. A pénznem hárombetűs, nagybetűs kód.
  • A termék- és képhivatkozásoknak HTTP(S) URL-eknek kell lenniük. Az importálás nem tölti le helyetted ezeket az URL-eket.
  • A kereshető termékspecifikációkhoz használj nyilvános metafields mezőket (a SiteChat megfelelője a Shopify termék-metafieldeknek). Az értékeknek egyszerű karakterláncoknak kell lenniük. A régi attributes alias szintén elfogadott. A privát termék-metadata már nem támogatott.
  • A draft és archived termékek kimaradnak a következő közzétett indexből. Az elfogyott, de közzétett termékek indexelve maradnak, az elérhetőségi információval együtt.
  • A manuális kollekciók címet, leírást, státuszt és a terméktagságok listáját (source + external_id) tárolják. Az intelligens/szabályalapú kollekciók ebben a kiadásban nem támogatottak.

Sikeres válaszminta

json
{ "results": [ { "external_id": "123", "product_id": "sitechat_product::woocommerce-main::<sha256-of-external-id>", "status": "stored" } ], "index_status": "pending", "index_revision": 1 }

A Shoply írás előtt a teljes kérést ellenőrzi. Egy HTTP 200 válasz így is felsorolhat néhány failed eredményt error: "storage_error" értékkel. Ellenőrizd az összes eredményt, és próbáld újra a sikertelen termékeket. Ha az index_status értéke request_failed, a tárolás sikeres volt, de az indexelés ütemezése nem történt meg — ezeket az eltárolt termékeket is küldd be újra.

Python-példa

python
import json import os import requests store_key = os.environ["SHOPLY_STORE_KEY"] headers = { "Authorization": json.dumps({ "store_key": store_key, "store_owner_api_secrete": os.environ["SHOPLY_STORE_OWNER_API_SECRETE"], }) } response = requests.post( "https://api.shoplyai.ai/merchant/products/batch", params={"store_key": store_key}, headers=headers, json={ "source": "custom", "products": [{ "external_id": "123", "title": "Trail shoes", "url": "https://example.com/products/trail-shoes", "currency": "USD", "price": "49.95", "available": True, }], }, timeout=60, ) response.raise_for_status() result = response.json() failed = [item["external_id"] for item in result["results"] if item["status"] != "stored"] if failed: raise RuntimeError(f"Products need retry: {failed}") if result["index_status"] == "request_failed": raise RuntimeError("Products saved, but retry the batch to request indexing")

Hogyan ellenőrizhetek egy importált terméket?

GET https://api.shoplyai.ai/merchant/products?store_key=YOUR_SITECHAT_STORE_KEY&source=woocommerce-main&external_id=123

Használd ugyanazt az Authorization fejlécet. A válasz tartalmazza a schema_version, updated_at, index_status és a normalizált product mezőket. A hiányzó rekordok HTTP 404 választ adnak.

Miután a háttérben futó indexelő közzétesz egy újraépítést, a termékenkénti visszaolvasási állapot indexed, excluded (piszkozat vagy archivált termékeknél), illetve limit_exceeded lehet. Adminlistázáshoz használd a GET /merchant/products/list végpontot. A DELETE /merchant/products hívással puha archiválást végezhetsz (vagy állítsd a status mezőt archived / draft értékre), hogy a termék kimaradjon a következő közzétett indexből; ebben a kiadásban nincs végleges törlés.

python
record = requests.get( "https://api.shoplyai.ai/merchant/products", params={ "store_key": store_key, "source": "woocommerce-main", "external_id": "123", }, headers=headers, timeout=30, ) record.raise_for_status() print(record.json()["index_status"], record.json()["product"]["title"])

Feltölthetek termékképeket?

Igen. Ha egy kép már elérhető tartós, nyilvános HTTPS URL-en, tedd ezt az URL-t a termék images listájába vagy egy variáns image mezőjébe. A nyilvános S3 HTTPS URL-ek működnek. A nyers s3:// elérési utak és a rövid élettartamú aláírt URL-ek nem.

Ha azt szeretnéd, hogy a Shoply hosztolja a fájlt, tölts fel nyers képbájtokat a háttérrendszeredből:

text
POST https://api.shoplyai.ai/merchant/products/images?store_key=YOUR_SITECHAT_STORE_KEY Content-Type: image/png

Küldd a nyers fájlbájtokat, ne JSON-t, base64-et vagy multipart űrlapadatot. JPEG, PNG és WebP formátum támogatott, legfeljebb 10 MiB méretig és 20 millió pixelig. Animált képek nem támogatottak. A Shoply WebP-vé alakítja a képet, és eltávolítja a beágyazott metaadatokat.

python
with open("trail-shoes.png", "rb") as image_file: response = requests.post( "https://api.shoplyai.ai/merchant/products/images", params={"store_key": store_key}, headers={**headers, "Content-Type": "image/png"}, data=image_file, timeout=60, ) response.raise_for_status() image_url = response.json()["url"]

A HTTP 201 válasz url, content_type, size_bytes, width és height értékeket ad vissza. Egy kép önálló feltöltése nem kapcsolja azt termékhez, és nem kér indexelést. A visszaadott URL-t illeszd be egy teljes termékbe, majd küldd be újra a /merchant/products/batch végponton keresztül.

Ha ugyanazt a képet ugyanahhoz a fiókhoz újra feltöltöd, ugyanazt az URL-t használja újra. Egy megváltozott kép új URL-t kap. Ebben a kiadásban nincs képtörlő végpont.

Mikor jelennek meg a termékek a chatben és a keresésben?

Sikeres batch mentés után a Shoply háttérben index-újraépítést kér. A válaszok index_status: "pending" értéket jeleznek, amíg a worker közzé nem teszi az új indexet. Nincs garantált, fix befejezési idő.

  • A közzétett termékek bekerülnek mind a termékkeresőbe, mind a SiteChat csevegés által használt tudásba.
  • A piszkozat és archivált termékek a következő újraépítéskor kizárásra kerülnek.
  • Ha az indexelés ütemezése nem történt meg (index_status: "request_failed"), küldd be újra a batch-et azokhoz a termékekhez, amelyek már sikeresen eltárolódtak.

Milyen hibákra számíthatok?

HTTP státuszJelentés
403Hiányzó, érvénytelen, lejárt vagy visszavont titok; rossz áruház; vagy nem SiteChat-fiók
404A kért importált termék nem létezik
413A kérés vagy a kép túllépi a méretkorlátot
415A képfeltöltés nem támogatott Content-Type értéket használt
422Érvénytelen mezők, duplikált azonosítók, animált vagy túl nagy képek, vagy túllépett modellkorlátok
503Átmeneti tárolási hiba

A titkok 90 nap után lejárnak. A lejárat előtt hozz létre cserét a Settings → Store owner API secret menüben, és vond vissza azokat a titkokat, amelyekre már nincs szükséged. Ugyanez a titok használható az analitikai, beszélgetési és tudásvégpontok meghívására is, amelyek a Merchant API útmutatóban vannak dokumentálva.

Ha segítségre van szükséged egy integrációval kapcsolatban, vedd fel a kapcsolatot a Shoply AI-jal.