Kuinka ladata katalogisi SiteChatiin

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

Jos käytät SiteChatia omalla verkkosivustollasi (et Shopify-kaupassa), voit lähettää rakenteisia tuotetietueita Shoplyyn, jotta ostajat voivat löytää ne SiteChat-keskusteluissa ja tuotehaussa.

Nämä päätepisteet käyttävät samaa Settings → Store owner API secret -salaisuutta kuin muu Shoply Merchant API, ja SiteChatin ylläpidon Product Catalog -sivu voi kutsua niitä sisäänkirjautuneen ylläpitäjän käyttöoikeustunnuksella. Shopify-kaupat synkronoivat edelleen katalogitiedot Shopifyn kautta; nämä latausreitit ovat saatavilla vain SiteChat-tileille, jotka eivät jo synkronoi Magento-katalogia.

SiteChatin ylläpidossa Product Catalog avaa Shopify-tyylisen alueen, jossa on Products, Collections ja Inventory. Voit lisätä tai muokata tuotteita, tuoda CSV-/Excel-tiedostoja, ryhmitellä tuotteita manuaalisiin kokoelmiin ja säätää varastomääriä.

Mitä API-rajapintoja on saatavilla?

APIMetodiMitä se tekee
/merchant/products/batchPOSTLuo tai korvaa kokonaan enintään 50 tuotetta yhdellä pyynnöllä
/merchant/productsPOSTLuo tai korvaa kokonaan yhden tuotteen
/merchant/productsGETLukee takaisin yhden tuodun tuotteen source- ja external_id-arvojen perusteella
/merchant/productsPATCHPäivittää osittain yhden tuotteen (lue-yhdistä-kirjoita)
/merchant/productsDELETEArkistoi tuotteen pehmeästi (status=archived)
/merchant/products/listGETSelaa tuotuja tuotteita sivutettuna ylläpitotaulukoita varten
/merchant/products/imagesPOSTLataa tuotekuvan ja palauttaa julkisen HTTPS-URL-osoitteen
/merchant/collectionsGET / POSTListaa tai luo manuaalisia kokoelmia
/merchant/collections/{id}GET / PUT / DELETELukee, korvaa tai arkistoi yhden kokoelman
/merchant/inventoryGETListaa varastorivit (tuote- ja varianttimäärät)
/merchant/inventory/adjustPOSTAsettaa seurattavan määrän tuotteelle tai variantille

Onnistuneet tuotetallennukset pyytävät Shoplya rakentamaan kaupan indeksin uudelleen. Kunnes tämä uudelleenrakennus valmistuu, vastaukset ilmoittavat index_status: "pending". Julkaistut tuotteet näkyvät tämän jälkeen sekä tuoteindeksissä että tiedossa, jota SiteChat-keskustelu käyttää.

Kuka voi käyttää näitä API-rajapintoja?

  • Kauppasi on oltava SiteChat-tili (app_platform on SiteChat).
  • Shopify-kauppa-avaimet (mukaan lukien kaikki *.myshopify.com-verkkotunnukset) hylätään.
  • Todennuksen on käytettävä joko kelvollista kaupan omistajan API-salaisuutta tai SiteChatin ylläpitäjän käyttöoikeustunnusta täsmälleen pyynnön store_key-arvolle.
  • Shopify Admin API -tunnukset eivät voi kutsua näitä reittejä.

Luo tai kierrätä omistajan salaisuus samalla tavalla kuin muissakin Merchant API -integraatioissa: How to Use the Shoply Merchant API. SiteChatin ylläpitokonsolissa avaa Product Catalog hallitaksesi tuotteita, kokoelmia ja varastoa — tai tuodaksesi CSV- tai Excel-tiedoston — ilman, että sinun tarvitsee hallita salaisuutta itse.

Miten todennus toimii?

Palvelinyhdistimestä

Kutsu APIa luotetusta taustajärjestelmästä HTTPS:n yli. Laita JSON-merkkijono Authorization-otsakkeeseen:

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

store_owner_api_secrete on julkinen kenttänimi, mukaan lukien historiallinen kirjoitusasu. store_owner_api_secret hyväksytään myös. Tämä ei ole Bearer-tunnus.

SiteChatin ylläpidosta

Product Catalog -sivu lähettää sen sijaan sisäänkirjautuneen ylläpitäjäistuntosi:

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

access_token hyväksytään admin_auth_token-aliaksena.

store_key-kyselyparametrin on vastattava otsaketta. Säilytä omistajan salaisuudet vain palvelinpuolen ympäristömuuttujissa — älä koskaan storefront-skriptissä, URL-osoitteessa tai julkisessa repositoriossa.

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

Miten lataan tuotteita?

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"} } ] } ] }

Pakolliset kentät ja säännöt

  • Pakolliset tuotekentät: external_id, title, url, currency, price ja available. status on oletuksena published.
  • Valinnainen varasto: aseta tracks_inventory arvoon true ja ei-negatiivinen quantity tuotteelle tai variantille. Tällöin Shoply johtaa saatavuuden varastosta (quantity > 0) ja tallentaa total_inventory-arvon ylläpitolistoja varten.
  • source nimeää katalogiyhteyden (ei välttämättä alustan). Käytä vakaata nimeä kuten woocommerce-main. Sallitut merkit: pienet kirjaimet, numerot, alaviivat ja yhdysmerkit; enintään 64 merkkiä. Ylläpidossa lomakkeella luotujen tuotteiden oletuslähde on admin.
  • Tuotteen identiteetti on kaupan, lähteen ja ulkoisen tunnisteen yhdistelmä. Erä- ja yksittäiset POST-upsertit ovat täysiä korvauksia, eivät korjauksia: pois jätetyt valinnaiset kentät tyhjennetään. Käytä PATCH-metodia osittaisiin päivityksiin.
  • Erät sisältävät 1–50 tuotetta ja enintään 2 000 000 pyyntötavua. Kunkin tuotteen validoitu JSON on rajoitettu 128 000 tavuun, ja variantteja voi olla enintään 250.
  • Suosi desimaalimerkkijonoja hinnoille. Valuutta on kolmikirjaiminen isoilla kirjaimilla kirjoitettu koodi.
  • Tuote- ja kuva-URL-osoitteiden on oltava HTTP(S)-muotoisia. Tuonti ei nouda näitä URL-osoitteita puolestasi.
  • Käytä julkisia metafields-kenttiä haettaville tuoteominaisuuksille (SiteChatin vastine Shopifyn tuotemetakentille). Arvojen on oltava pelkkiä merkkijonoja. Vanha attributes hyväksytään aliaksena. Yksityistä tuotteen metadata-kenttää ei enää tueta.
  • draft- ja archived-tuotteet jätetään pois seuraavasta julkaistusta indeksistä. Loppuunmyydyt julkaistut tuotteet pysyvät indeksoituina saatavuustiedon kanssa.
  • Manuaaliset kokoelmat tallentavat otsikon, kuvauksen, tilan ja luettelon tuotejäsenyyksistä (source + external_id). Älykkäitä/sääntöpohjaisia kokoelmia ei tueta tässä julkaisussa.

Esimerkkivastaus onnistumisesta

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

Shoply validoi koko pyynnön ennen kirjoittamista. HTTP 200 voi silti sisältää joitakin failed-tuloksia virheellä error: "storage_error". Tarkista jokainen tulos ja yritä epäonnistuneita tuotteita uudelleen. Jos index_status on request_failed, tallennus onnistui mutta indeksointia ei ajastettu — yritä myös tallennetut tuotteet uudelleen.

Python-esimerkki

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")

Miten varmistan tuodun tuotteen?

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

Käytä samaa Authorization-otsaketta. Vastaus sisältää schema_version, updated_at, index_status ja normalisoidun product-objektin. Puuttuvat tietueet palauttavat HTTP 404.

Kun taustaindeksoija julkaisee uudelleenrakennuksen, tuotekohtainen takaisinlukutila muuttuu arvoon indexed, excluded (luonnos- tai arkistoiduille tuotteille) tai limit_exceeded. Käytä GET /merchant/products/list ylläpitolistaukseen. Pehmeästi arkistoi DELETE /merchant/products-kutsulla (tai aseta status arvoon archived / draft) pitääksesi tuotteen poissa seuraavasta julkaistusta indeksistä; tässä julkaisussa ei ole kovaa poistoa.

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"])

Voinko ladata tuotekuvia?

Kyllä. Jos kuva on jo saatavilla pysyvässä julkisessa HTTPS-URL-osoitteessa, lisää kyseinen URL tuotteen images-listaan tai variantin image-kenttään. Julkiset S3 HTTPS -URL-osoitteet toimivat. Raa’at s3://-polut ja lyhytikäiset allekirjoitetut URL-osoitteet eivät toimi.

Jos haluat Shoplyn isännöivän tiedostoa, lataa raa’at kuvatavut taustajärjestelmästäsi:

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

Lähetä raa’at tiedostotavut, ei JSONia, base64:ää tai multipart-lomakedataa. JPEG, PNG ja WebP hyväksytään, enintään 10 MiB ja 20 miljoonaa pikseliä. Animoituja kuvia ei tueta. Shoply muuntaa kuvan WebP-muotoon ja poistaa upotetun metadatan.

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"]

HTTP 201 palauttaa url, content_type, size_bytes, width ja height. Pelkkä kuvan lataaminen ei liitä sitä tuotteeseen eikä pyydä indeksointia. Sisällytä palautettu URL täydelliseen tuotteeseen ja lähetä se uudelleen /merchant/products/batch-reitin kautta.

Saman kuvan lataaminen uudelleen samalle tilille käyttää uudelleen sen URL-osoitetta. Muuttunut kuva saa uuden URL-osoitteen. Tässä julkaisussa ei ole kuvan poistopäätepistettä.

Milloin tuotteet näkyvät chatissa ja haussa?

Onnistuneen erätallennuksen jälkeen Shoply pyytää taustalla indeksin uudelleenrakennusta. Vastaukset ilmoittavat index_status: "pending", kunnes työntekijä julkaisee uuden indeksin. Kiinteää valmistumisaikatakuuta ei ole.

  • Julkaistut tuotteet tulevat sekä tuotehakuun että tietoon, jota SiteChat-keskustelu käyttää.
  • Luonnos- ja arkistoidut tuotteet suljetaan pois seuraavassa uudelleenrakennuksessa.
  • Jos indeksointia ei ajastettu (index_status: "request_failed"), yritä erää uudelleen niille tuotteille, jotka jo tallentuivat onnistuneesti.

Mitä virheitä minun pitäisi odottaa?

HTTP statusMerkitys
403Puuttuva, virheellinen, vanhentunut tai peruutettu salaisuus; väärä kauppa; tai muu kuin SiteChat-tili
404Pyydettyä tuotua tuotetta ei ole olemassa
413Pyyntö tai kuva ylittää kokorajan
415Kuvan latauksessa käytettiin tukematonta Content-Type-arvoa
422Virheellisiä kenttiä, päällekkäisiä tunnisteita, animoituja tai liian suuria kuvia, tai mallirajat ylitetty
503Tilapäinen tallennusvirhe

Salaisuudet vanhenevat 90 päivän jälkeen. Luo korvaava arvo kohdassa Settings → Store owner API secret ennen vanhenemista ja peruuta kaikki salaisuudet, joita et enää tarvitse. Samalla salaisuudella voi myös kutsua analytiikka-, keskustelu- ja tietopäätepisteitä, jotka on dokumentoitu Merchant API guide -oppaassa.

Jos tarvitset apua integraation kanssa, ota yhteyttä Shoply AI:hin.