Aktualizacja produktów

Aktualizacja produktów

🛡
To API jest zabezpieczone — w requestach w nagłówku Authorization należy przekazać token dostępowy.

Aktualizacja produktów przez API

Przykładowy request aktualizacji produktów:

POST https://feeder.backend.adshero.io/v1/public/product HTTP/2
Content-Type: application/json

{
  "entries": [
    {
      "batchId": "1",
      "method": "UPSERT",
      "product": {
        "id": "549795f4abe49940801b381b",
        "title": "Pillow",
        "link": "http://shop-url/link-to-pillow",
        "price": 12.23,
        "isAvailable": true,
        "brand": "Brand Name",
        "feedId": "17f4ca82-f4a4-4f3a-8372-64fb250e564v",
        "imageLink": "https://image-source/pillow.jpg",
        "salePrice": 54.12,
        "gtin": "3332221112332",
        "googleProductCategory": "6565",
        "mpn": "7656",
        "productType": "Pillow",
        "shipping": [
          {
            "country": "PL",
            "region": "Interan region",
            "price": "10.99 PLN",
            "minHandlingTime": "5 days",
            "maxHandlingTime": "12 days",
            "minTransitTime": "5 days",
            "maxTransitTime": "15 days",
          }
        ],
        "unitPricingMeasure": "2.5 kg",
        "adult": true,
        "energyEfficiencyClass": "A+++",
        "ageGroup": "",
        "color": "black",
        "gender": "male",
        "material": "Leather",
        "pattern": "striped",
        "size": "XS",
        "productDetails": [
          {
            "sectionName": "Pillow additional attributes",
            "attributeName": "size",
            "attributeValue" "12x43"
          }
        ],
        "externalSellerId": "341",
        "externalSellerName": "Seller name",
        "deepLink": "http://produkt-link.png"
               
      }
    }
  ]
}
curl -X 'POST' \
  'https://feeder.backend.adshero.io/v1/public/product' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
  "entries": [
    {
      "batchId": "1",
      "method": "UPSERT",
      "product": {
        "id": "549795f4abe49940801b381b",
        "title": "Pillow",
        "link": "http://shop-url/link-to-pillow",
        "price": 12.23,
        "isAvailable": true,
        "brand": "Brand Name",
        "feedId": "17f4ca82-f4a4-4f3a-8372-64fb250e564v",
        "imageLink": "https://image-source/pillow.jpg",
        "salePrice": 54.12,
        "gtin": "3332221112332",
        "googleProductCategory": "6565",
        "mpn": "7656",
        "productType": "Pillow",
        "shipping": [
          {
            "country": "PL",
            "region": "Interan region",
            "price": "10.99 PLN",
            "minHandlingTime": "5 days",
            "maxHandlingTime": "12 days",
            "minTransitTime": "5 days",
            "maxTransitTime": "15 days",
          }
        ],
        "unitPricingMeasure": "2.5 kg",
        "adult": true,
        "energyEfficiencyClass": "A+++",
        "ageGroup": "12+",
        "color": "black",
        "gender": "male",
        "material": "Leather",
        "pattern": "striped",
        "size": "XS",
        "productDetails": [
          {
            "sectionName": "Pillow additional attributes",
            "attributeName": "size",
            "attributeValue" "12x43"
          }
        ],
        "externalSellerId": "341",
        "externalSellerName": "Seller name",
        "deepLink": "http://produkt-link.png"
               
      }
    }
  ]
}'

W odpowiedzi dostaniemy:

HTTP/2 202 ACCEPTED

Znaczenie pól:

  • entries: Lista produktów do aktualizacji (maksymalna, dopuszczalna ilość produktów to 10000 w jednym requeście)
  • batchId: Unikalne id w ramach requestu (techniczny identyfikator grupy produktów)
  • method : Sposób aktualizacji produktów. Dopszuczalne wartości to: UPSERT (tworzy lub aktualizuje produkt jeśli istnieje) oraz DELETE
  • product: Produkt do aktualizacji

Pola produktu (Atrybuty wymagane i opcjonalne dla produktów):

  • id: Unikalny identyfikator produktu (g:id)
  • productId: Identyfikator produktu w bazie sklepu do użytku, gdy wiele produktów w feedzie (ofert) odpowiada jednemu produktowi w sklepie (ah:productId)
  • title: Nazwa produktu (g:title)
  • description: Opis produktu (g:description)
  • link: Link do produktu w sklepie (g:link)
  • price: Cena produktu (g:price)
  • isAvailable: Dostępność produktu (g:availability)
  • brand: Nazwa marki Twojego produktu (g:brand)
  • feedId: Unikalny identyfikator feeda (wewnętrzny identyfikator feeda w bazie Adshero)
  • imageLink: URL do głównego obrazka produktu (g:image_link)
  • salePrice: Cena promocyjna produktu (g:sale_price)
  • gtin: Globalny Numer Jednostki Handlowej (GTIN) Twojego produktu (g:gtin)
  • googleProductCategory: Zdefiniowana przez Google kategoria Twojego produktu (g:google_product_category)
  • mpn: Unikalny numer identyfikujący produkt (g:MPN)
  • productType: Kategoria produktu, którą definiujesz dla swojego produktu (g:product_type)
  • shipping: Koszt i czas dostawy produktów oraz kraje, do których wysyłasz produkty (g:shipping)
    • country: Kraj
    • region: Region
    • price: Cena
    • minHandlingTime: Minimalny czas obsługi zamówienia
    • maxHandlingTime: Maksymalny czas obsługi zamówienia
    • minTransitTime: Minimalny czas przewozu
    • maxTransitTime: Maksymalny czas przewozu
  • unitPricingMeasure: Miara ceny jednostkowej (g:unit_pricing_measure)
  • adult: Atrybut określa, czy produkt jest przeznaczony dla osób dorosłych (g:adult)
  • energyEfficiencyClass: Klasa efektywności energetycznej (g:energy_efficiency_class)
  • ageGroup: Grupa wiekowa określająca grupę demograficzną, dla której jest produkt (g:age_group)
  • color: Kolor Twojego produktu (g:color)
  • gender: Płeć, dla której jest przeznaczony produkt (g:gender)
  • material: Materiał z jakiego jest wykonany produkt (g:material)
  • pattern: Wzór lub nadruk graficzny produktu (g:pattern)
  • size: Rozmiar produktu (g:size)
  • productDetails: Dane techniczne lub dodatkowe szczegóły produktu (g:product_detail)
    • sectionName: Nazwa sekcji dodatkowych atrybutów produktu
    • attributeName: Nazwa atrybutu produktu
    • attributeValue: Wartość atrybutu produktu
  • externalSellerId: Zewnętrzne ID sprzedawcy (g:external_seller_id)
  • externalSellerName: Zewnętrzna nazwa sprzedawcy (ah:external_seller_name)
  • deepLink: Link do produktu w aplikacji mobilnej (g:deep_link)
  • certification: Certyfikaty produktu, zgodność z przepisami lub standardy branżowe (g:certification)
    • certificationAuthority: Nazwa organu wydającego certyfikat
    • certificationName: Nazwa certyfikatu
    • certificationCode: Unikalny kod lub identyfikator certyfikatu
    • certificationValue: Wartość lub poziom certyfikatu
  • itemGroupId: Identyfikator grupy używany do łączenia wariantów tego samego produktu (g:item_group_id)
  • labels: Niestandardowe etykiety, które można wykorzystać do własnego grupowania produktów lub zarządzania kampaniami (ah:labels)
  • condition: Atrybut służący do poinformowania potencjalnych klientów o stanie sprzedawanego produktu (g:condition)

Walidacja produktów

Maksymalna ilość produktów możliwa do aktualizacji w jednym zapytaniu to 10000.

Przy podanej metodzie UPSERT wymagane pola to:

  • feedId
  • id
  • title
  • price
  • isAvailable
  • link
  • imageLink

Dla metody (DELETE) wymagane pola to:

  • feedId
  • id

Deduplikacja produktów w trakcie emisji

Mechanizm deduplikacji zapewnia unikalność produktów w trakcie emisji reklam (w ramach jednego zapytania o reklamy). Produkty feeda mają 4 pola, które są lub mogą być wykorzystywane do deduplikacji:

  • itemGroupId
  • productId
  • gtin
  • id

Pola sprawdzane są w kolejności jak wyżej tzn. jeżeli itemGroupId nie jest puste - to to pole będzie kluczem deduplikacji. Jeżeli jest puste - to sprawdzane jest kolejne pole, czyli productId itd.