Czego się dowiesz?
- Jak definiujemy produkt oraz ofertę produktu.
- Jak wystawić ofertę produktu na podstawie danych z Katalogu Produktów.
- Jak wystawić ofertę produktu, którego nie ma w Katalogu Produktów.
- Na co zwrócić uwagę podczas wystawiania oferty oraz jakie dane możesz uzupełnić oraz nadpisać.
- Jak odszukać produkt w Katalogu Produktów.
{
"productSet": [
{
"product": {
"name": "iPhone 5s",
"category": {
"id": "257931"
},
"id": "5902719471797",
"idType": "GTIN",
"parameters": [
{
"id": "string",
"name": "string",
"rangeValue": {
"from": "string",
"to": "string"
},
"values": [
"string"
],
"valuesIds": [
"string"
]
}
],
"images": [
"string"
]
},
"quantity": {
"value": 1
},
"responsiblePerson": {
"id": "string",
"name": "string"
}
}
],
"b2b": {
"buyableOnlyByBusiness": false
},
"attachments": [
{
"id": "string"
}
],
"fundraisingCampaign": {
"id": "string",
"name": "string"
},
"additionalServices": {
"id": "string",
"name": "string"
},
"stock": {
"available": 99,
"unit": "UNIT"
},
"delivery": {
"handlingTime": "PT24H",
"shippingRates": null,
"additionalInfo": "string",
"shipmentDate": "2019-08-24T14:15:22Z"
},
"publication": {
"duration": "PT24H",
"endingAt": "2031-01-04T11:01:59Z",
"startingAt": "2031-01-04T11:01:59Z",
"status": "INACTIVE",
"endedBy": "USER",
"republish": false,
"marketplaces": {}
},
"additionalMarketplaces": {
"allegro-cz": {
"sellingMode": {
"price": {
"amount": "233.01",
"currency": "CZK"
}
}
}
},
"compatibilityList": {
"items": [
{
"type": "TEXT",
"text": "CITROËN C6 (TD_) 2005/09-2011/12 2.7 HDi 204KM/150kW"
}
]
},
"language": "pl-PL",
"category": {
"id": "257931"
},
"parameters": [
{
"id": "string",
"name": "string",
"rangeValue": {
"from": "string",
"to": "string"
},
"values": [
"string"
],
"valuesIds": [
"string"
]
}
],
"afterSalesServices": {
"impliedWarranty": {
"id": "09f0b4cc-7880-11e9-8f9e-2a86e4085a59",
"name": "string"
},
"returnPolicy": {
"id": "09f0b4cc-7880-11e9-8f9e-2a86e4085a59",
"name": "string"
},
"warranty": {
"id": "09f0b4cc-7880-11e9-8f9e-2a86e4085a59",
"name": "string"
}
},
"sizeTable": {
"id": "string",
"name": "string"
},
"contact": {
"id": "string",
"name": "string"
},
"discounts": {
"wholesalePriceList": {
"id": "string",
"name": "string"
}
},
"name": "string",
"payments": {
"invoice": "VAT"
},
"sellingMode": {
"format": "BUY_NOW",
"price": {
"amount": "123.45",
"currency": "PLN"
},
"minimalPrice": {
"amount": "123.45",
"currency": "PLN"
},
"startingPrice": {
"amount": "123.45",
"currency": "PLN"
}
},
"location": {
"city": "string",
"countryCode": "PL",
"postCode": "00-999",
"province": "string"
},
"images": [
"string"
],
"description": {
"sections": [
{
"items": [
{
"type": "string"
}
]
}
]
},
"external": {
"id": "AH-129834"
},
"tax": {
"id": "ae727432-8b72-4bfe-b732-6f163a2bf32a",
"rate": "23.00",
"subject": "GOODS",
"exemption": "MONEY_EQUIVALENT",
"percentage": "23.00"
},
"taxSettings": {
"rates": [
{
"rate": "23.00",
"countryCode": "PL"
}
],
"subject": "GOODS",
"exemption": "MONEY_EQUIVALENT"
},
"messageToSellerSettings": {
"mode": "OPTIONAL",
"hint": "string"
}
}
W ramach Allegro sprzedający wystawia ofertę sprzedaży, która powiązana jest z produktem (lub zestawem produktów) z naszego Katalogu Produktów. W katalogu tym gromadzimy dane o produktach (takie jak parametry, zdjęcia i opisy). Sprzedający podczas wystawiania oferty może zarówno skorzystać z istniejącego w Katalogu produktu, jak i utworzyć zupełnie nowy produkt.
Dokumentacja
Do utworzenia oferty służy endpoint POST /sale/product-offers. W dokumentacji znajdziesz dokładne opis poszczególnych pól, przyjrzyjmy się natomiast ogólnej strukturze danych.
Produkt
Produkt to przedmiot, który sprzedający wystawia na sprzedaż w ofercie. Posiada on zbiór cech, które łącznie jednoznacznie go identyfikują, jak np. parametry. Zestaw tych cech definiujemy dla kategorii, w której dany produkt jest utworzony.
Produkt definiujemy w strukturze productSet[].product. Zwróć także uwagę, że może być to także zestaw produktów w jednej ofercie - stąd tablica productSet[].
Oferta
Oferta zawiera informacje zarówno o produkcie, który wystawia sprzedający, ale także uwzględnia indywidualne informacje, zależne od danego sprzedającego, takie jak:
- cena
- liczba dostępnych sztuk
- format sprzedaży (np. Kup Teraz)
- warunki zwrotów i reklamacji
- czas trwania
- czas wysyłki
- opcje faktury
- cennik dostawy.
Parametry oferty przechowywane są poza tablicą productSet[].
Oferta, a produkt
Tym właśnie oferta różni się od produktu. Podczas, gdy produkt posiada własny zbiór cech, na podstawie których odróżniamy go od innego produktu, oferta zawiera dodatkowe dane, które wpływają na ostateczną decyzję klienta o zakupie. Tym samym może istnieć wiele ofert tego samego produktu (wystawionych przez jednego lub różnych sprzedawców).
Kategorie oraz parametry
Dzięki kategoriom możemy pogrupować produkty tego samego rodzaju i odpowiednio zaprezentować je kupującym. Na podstawie kategorii rozpoznasz cechy (parametry), które uzupełnisz w danej kategorii.
Dostępne kategorie pobierzesz za pomocą:
Dodatkowo w zidentyfikowaniu odpowiedniej kategorii dla danej nazwy produktu pomoże Ci GET /sale/matching-categories.
- Jeżeli zidentyfikujesz już odpowiednią kategorię, możesz pobrać zestaw parametrów wspieranych dla danej kategorii: GET /sale/categories/{categoryId}/parameters.
Jak utworzyć ofertę powiązaną z produktem
Ofertę utworzysz za pomocą POST /sale/product-offers.
Rozróżniamy dwa główne warianty tworzenia oferty z przypisanym produktem:
Gdy masz pewność, że produkt istnieje już w Katalogu Produktów Allegro.
import requests
import json
def create_offer_from_product(url, access_token):
try:
payload = json.dumps({
"productSet": [
{
"product": {
"id": "5902719471797",
"idType": "GTIN"
}
}
],
"sellingMode": {
"price": {
"amount": "220.85",
"currency": "PLN"
}
},
"stock": {
"available": 10
}
})
headers = {
'Accept': 'application/vnd.allegro.public.v1+json',
'Content-Type': 'application/vnd.allegro.public.v1+json',
'Accept-Language': 'pl-PL',
'Authorization': 'Bearer ' + access_token
}
response = requests.request("POST", url, headers=headers, data=payload)
return response
except requests.exceptions.HTTPError as err:
raise SystemExit(err)
def main():
access_token = "" # Acces Token sprzedającego. Uzyskasz go w procesie autoryacji, który opisaliśmy w poradniku:
# https://developer.allegro.pl/tutorials/uwierzytelnianie-i-autoryzacja-zlq9e75GdIR
url = "https://api.allegro.pl.allegrosandbox.pl/sale/product-offers" # url endpointu. Korzystamy ze środowiska testowego, stąd dodatkowo domena "allegrosandbox.pl"
response = create_offer_from_product(url, access_token)
print(response.status_code)
print(response.text)
if __name__ == "__main__":
main()
W strukturze żądania przekaż identyfikator produktu (lub GTIN) oraz cenę i liczbę sztuk. To, jak przeszukiwać Katalog Produktów za pomocą GET /sale/products, opisujemy w dalszej części poradnika.
curl -X POST
'https://api.allegro.pl/sale/product-offers'
-H 'Authorization: Bearer {token}'
-H 'Accept: application/vnd.allegro.public.v1+json'
-H 'Content-Type: application/vnd.allegro.public.v1+json'
-d '{
"productSet":
[{
"product":
{
"id": "5902719471797", // numer GTIN, MPN lub ID produktu
"idType": "GTIN" // typ wartości w polu "product.id".
// Dla GTIN wskaż "GTIN",dla numerów
// katalogowych nadanych przez producenta - "MPN".
// Jeśli wskazujesz UUID produktu, pozostaw pole puste.
}
}],
"sellingMode": {
"price": {
"amount": "220.85", // cena
"currency": "PLN"
}
},
"stock": {
"available": 10 // liczba sztuk
}
}'
Dane produktów w niektórych przypadkach mogą być niekompletne, np. w sytuacji, gdy nie ma on uzupełnionych wszystkich wymaganych do wystawienia w tym momencie parametrów.
W takiej sytuacji odpowiemy kodem 422, z komunikatem błędu wskazującym brakujące dane:
{
"errors":[
{
"code":"ConstraintViolationException.MissingRequiredParameters",
"message":"Missing required parameters: 209298, 356",
"details":"ConstraintViolationException.MissingRequiredParameters",
"path":"parameters",
"userMessage":"Uzupełnij parametry obowiązkowe: Skład zestawu, Pojemność.",
"metadata":{
}
}
]
}
Aby uzupełnić brakujące parametry obowiązkowe, przekaż je w tablicy productSet.product.parameters[]. ID parametru wraz z dostępnymi wartościami sprawdzisz za pomocą GET /sale/categories/{categoryID}/parameters.
Gdy chcesz utworzyć nowy produkt lub nie masz pewności, że produkt istnieje w Katalogu Produktów.
import requests
import json
def create_offer(url, access_token):
try:
payload = json.dumps({
"productSet": [
{
"product": {
"name": "Produkt testowy",
"category": {
"id": "165"
},
"parameters": [
{
"name": "EAN",
"values": [
"0744861045021"
]
},
{
"id": "224017",
"values": [
"test 1587459230"
]
},
{
"id": "202749",
"values": [
"5.9"
]
},
{
"id": "202869",
"values": [
"512 GB"
]
},
{
"id": "202829",
"valuesIds": [
"202829_1"
]
},
{
"id": "202685",
"valuesIds": [
"202685_212929"
]
},
{
"id": "127448",
"valuesIds": [
"127448_2"
]
},
{
"id": "202865",
"valuesIds": [
"202865_214109"
]
},
{
"id": "4388",
"valuesIds": [
"4388_1"
]
},
{
"id": "202717",
"values": [
100
]
},
{
"id": "219",
"values": [
"Bluetooth"
]
},
{
"id": "202821",
"values": [
"Dual SIM"
]
},
{
"name": "Marka telefonu",
"valuesIds": [
"246705_598617"
]
},
{
"name": "Model telefonu",
"values": [
"Armor 24"
]
},
{
"name": "Transmisja danych",
"values": [
"5G"
]
},
{
"name": "Średnica obiektywu",
"values": [
"8"
]
}
],
"images": [
"https://assets.allegrostatic.com/opbox/allegro.pl/homepage/Main%20Page/6lJEwSSohvBIIWNlJUU9sx-w1200-h1200.png"
]
}
}
],
"parameters": [
{
"id": "11323",
"valuesIds": [
"11323_2"
]
}
],
"images": [
"https://assets.allegrostatic.com/opbox/allegro.pl/homepage/Main%20Page/6lJEwSSohvBIIWNlJUU9sx-w1200-h1200.png"
],
"sellingMode": {
"price": {
"amount": "12.43",
"currency": "PLN"
}
},
"stock": {
"available": 10
}
})
headers = {
'Accept': 'application/vnd.allegro.public.v1+json',
'Content-Type': 'application/vnd.allegro.public.v1+json',
'Accept-Language': 'pl-PL',
'Authorization': 'Bearer ' + access_token
}
response = requests.request("POST", url, headers=headers, data=payload)
return response
except requests.exceptions.HTTPError as err:
raise SystemExit(err)
def main():
access_token = "" # Acces Token sprzedającego. Uzyskasz go w procesie autoryacji, który opisaliśmy w poradniku:
# https://developer.allegro.pl/tutorials/uwierzytelnianie-i-autoryzacja-zlq9e75GdIR
url = "https://api.allegro.pl.allegrosandbox.pl/sale/product-offers" # url endpointu. Korzystamy ze środowiska testowego, stąd dodatkowo domena "allegrosandbox.pl"
response = create_offer(url, access_token)
print(response.status_code)
print(response.text)
if __name__ == "__main__":
main()
W strukturze żądania w obiekcie product przekaż komplet danych, które opisują sprzedawany produkt. Zestaw parametrów wspieranych dla danej kategorii pobierz za pomocą GET /sale/categories/{categoryId}/parameters. Równocześnie nie przekazuj żadnej wartości w polu product.id. Request uzupełnij o cenę produktu i liczbę sztuk.
curl -X POST
'https://api.allegro.pl/sale/product-offers'
-H 'Authorization: Bearer {token}'
-H 'Accept: application/vnd.allegro.public.v1+json'
-H 'Content-Type: application/vnd.allegro.public.v1+json'
-d '{
"productSet": [{
"product": {
"name": "Produkt testowy",
"category": {
"id": "89060"
},
"parameters": [{
"name": "EAN",
"values": [
"0744861045021"
]
},
{
"id": "237218",
"values": [
"Testowy tytuł"
]
}
],
"images": [
"https://...adres-pierwszego-obrazka.jpeg"
]
}
}],
"sellingMode": {
"price": {
"amount": "220.85",
"currency": "PLN"
}
},
"stock": {
"available": 10
}
}'
Jeśli na podstawie przekazanych danych rozpoznamy, że produkt istnieje w naszym Katalogu, to uwzględnimy jego dane w wystawionej ofercie. Będą to:
- kategoria i parametry
- zdjęcia
- opis produktu (jeśli nie przekażesz własnego)
- numery GTIN
- sekcja pasuje do
- specyfikacja techniczna TecDoc.
Może zdarzyć się sytuacja, że rozpoznamy produkt, jednak kategoria lub część przekazanych wartości parametrów nie jest zgodna z zapisanymi w naszym Katalogu Produktów - zwrócimy wtedy odpowiedź z kodem 422.
{
"errors": [
{
"code": "PARAMETER_MISMATCH",
"message": "The provided parameter 'Wysokość produktu'(223329) value (202.00) does not match
the existing parameter value (22.00)",
"details": null,
"path": "productSet[0].product.parameters",
"userMessage": "The specified product exists. The specified parameter `Wysokość produktu` with
the value `202.00` does not match the product parameter `22.00`.",
"metadata": {
"productId": "8b6270a8-06c6-4ad7-a9c2-7443a79ea4ab"
}
}
]
}
W takiej sytuacji skoryguj te wartości. W polu metadata wskazujemy id rozpoznanego produktu. Możesz go wykorzystać do utworzenia oferty z produktem zgodnie z procesem opisanym w punkcie nr 1.
Jeżeli masz pewność, że przekazane wartości są prawidłowe, możesz zasugerować zmianę w produkcie za pomocą POST /sale/products/{productId}/change-proposals.
Jaki rezultat oczekiwać?
Niezależnie od wybranej ścieżki - w serwisie pojawi się aktywna oferta sprzedaży wskazanego produktu, nie musisz wywoływać osobnej komendy publikacji. Pozostałych informacji wymaganych do wystawienia oferty nie musisz nam przesyłać - uzupełnimy je wtedy wartościami domyślnymi, które znajdziesz w poniższej tabeli. W dalszej części przedstawiamy także, jak konstruować żądanie, gdy chcesz przesłać inne dane niż wartości domyślne.
Wartości domyślne
Pole | Wartość |
---|---|
Status publikacji | Wartość Oferta zostanie natychmiast aktywowana |
Format sprzedaży | Wartość Kup teraz |
Typ jednostek | Wartość Sztuki |
Wysyłka z | Wartość Dane z ustawień konta Allegro (Twój adres) |
Opcje faktury | Wartość Faktura VAT |
Czas wysyłki | Wartość 24 godziny |
Czas trwania | Wartość Do wyczerpania przedmiotów |
Język oferty | Wartość Wartość ustawimy na podstawie domyślnego języka serwisu bazowego użytkownika. |
Cennik dostawy | Wartość Jeżeli posiadasz jeden cennik dostawy, to przypiszemy go do oferty. W przypadku większej liczby, użyjemy cennika o nazwie default. Jeżeli nie posiadasz cennika o takiej nazwie, zwrócimy błąd 422. |
Warunki reklamacji i Warunki zwrotów | Wartość Jeżeli posiadasz konto firma i po jednej opcji dla tych pól, to przypiszemy ją do oferty. W przypadku większej liczby, użyjemy wariantu o nazwie default. Jeżeli nie posiadasz wariantu o takiej nazwie, zwrócimy błąd 422. Dla kont zwykłych nie podstawimy żadnej wartości. |
Gdy masz pewność, że produkt istnieje już w Katalogu Produktów Allegro
W tym wariancie, posługując się środowiskiem Sandbox, spróbujemy utworzyć ofertę w najprostszy sposób - gdy mamy pewność, że dany produkt istnieje w Katalogu Produktów oraz nie nadpisując wartości domyślnych.
Upewnij się, że na koncie testowym zdefiniowano domyślny cennik dostawy oraz warunki reklamacji i zwrotów.
Przeszukanie Katalogu Produktów
curl -X GET \
'https://api.allegro.pl.allegrosandbox.pl/sale/products?phrase=888462600712&language=pl-PL&mode=GTIN \
-H 'Authorization: Bearer {token}' \
-H 'Accept: application/vnd.allegro.public.v1+json'
W pierwszej kolejności, za pomocą GET /sale/products, wyszukaj w Katalogu interesujący Cię przedmiot.
Zwrócimy listę pasujących dla danej frazy produktów wraz z podstawowymi informacjami na ich temat.
{
"products": [
{
"id": "5272069b-0759-4283-8ba7-7f05b416f1d9", // identyfikator produktu - użyj go w ofercie,
by powiązać ją z produktem
"name": "Smartfon Apple iPhone 6S srebrny 128 GB", // nazwa produktu
"category": {
"id": "253002", // kategoria produktu
"path": [ // ścieżka kategorii głównej wskazanej
w “category.id”
{
"id": "954b95b6-43cf-4104-8354-dea4d9b10ddf",
"name": "Allegro"
},
{
"id": "42540aec-367a-4e5e-b411-17c09b08e41f",
"name": "Elektronika"
},
{
"id": "4",
"name": "Telefony i Akcesoria"
},
{
"id": "165",
"name": "Smartfony i telefony komórkowe"
},
{
"id": "48978",
"name": "Apple"
},
{
"id": "253002",
"name": "iPhone 6S"
}
],
"similar": [
{
"id": "316188",
"path": [ // ścieżka kategorii podobnej wskazanej
w “category.similar.id”
{
"id": "954b95b6-43cf-4104-8354-dea4d9b10ddf",
"name": "Allegro"
},
{
"id": "42540aec-367a-4e5e-b411-17c09b08e41f",
"name": "Elektronika"
},
{
"id": "4",
"name": "Telefony i Akcesoria"
},
{
"id": "165",
"name": "Smartfony i telefony komórkowe"
},
{
"id": "48978",
"name": "Apple"
},
{
"id": "316188",
"name": "iPhone 12"
}
]
},
"parameters": [ // parametry produktu
{
"id": "224017", // identyfikator parametru
"name": "Kod producenta", -- nazwa parametru
"valuesLabels": [ // etykieta wartości parametru
"MKQU2PM/A"
],
"values": [
"MKQU2PM/A" // wartość parametru - dla typu string
],
"unit": null, // jednostka wartości parametru. Jeśli
dany parametr nie ma jednostki,
zwracamy wartość null
"options": {
"identifiesProduct": true // czy parametr identyfikuje produkt.
// Wartości parametrów oznaczonych
//jako true nie nie możesz nadpisać
}
},
{
"id": "127448", // identyfikator parametru
"name": "Kolor", // nazwa parametru
"valuesLabels": [ // etykieta wartości parametru
"srebrny"
],
"valuesIds": [ // identyfikator wartości parametru,
"127448_8" dla typu słownikowego
],
"unit": null, // jednostka wartości parametru. Jeśli
dany parametr nie ma jednostki,
zwracamy wartość null
"options": {
"identifiesProduct": true
}
},
{
"id": "202733", // identyfikator parametru
"name": "Funkcje aparatu", // nazwa parametru
"valuesLabels": [ // etykiety wartości parametrów
"HDR",
"autofocus",
"lampa błyskowa",
"panorama",
"samowyzwalacz",
"wykrywanie twarzy",
"zdjęcia seryjne"
],
"valuesIds": [ // identyfikatory wartości parametru,
"202733_1024", dla typu słownikowego wielowartościowego
"202733_2",
"202733_1",
"202733_4",
"202733_128",
"202733_32",
"202733_64"
],
"unit": null, // jednostka wartości parametru. Jeśli
dany parametr nie ma jednostki,
zwracamy wartość null
"options": {
"identifiesProduct": false
}
},
{
"id": "225693", // identyfikator parametru
"name": "EAN", // nazwa parametru
"valuesLabels": [
"888462600712" // etykieta wartości parametru
],
"values": [
"888462600712" // wartość parametru
],
"unit": null,
"options": {
"identifiesProduct": true,
"isGTIN": true // czy parametr jest
GTIN-em. Jeśli parametr ma wiele
wartości, przekaż tylko jedną z nich.
},
...
],
"images": [ // zdjęcia produktu
{
"url": "https://a.allegroimg.com/original/00e0c9/1d7c95614fd6a7c713b075d0251a/
Smartfon-Apple-iPhone-6S-srebrny-128-GB"
}
],
"isDraft": false,
"publication": {
"status": "LISTED" // status produktu. "PROPOSED" zwracamy dla
nowych propozycji produktów i produktów z katalogu,
które nie zostały przez nas sprawdzone, "LISTED" dla
produktów z katalogu, które zostały przez nas sprawdzone,
np. zweryfikowaliśmy, że podany numer GTIN znajduje się w oficjalnej bazie GS1
},
"aiCoCreatedContent": { // informacja o tym, czy określona część produktu
(zwrócona w polu „paths”) została wygenerowana przez AI
"paths": []
}
}]}
Katalog produktów
W dalszej części poradnika szczegółowo opisujemy, jakie udostępniamy możliwości przeszukiwania Katalogu Produktów.
Pobierz pełne dane produktu
curl -X GET \
'https://api.allegro.pl.allegrosandbox.pl/sale/products/b2b61e23-b580-4471-b653-6ed25fd179f7' \
-H 'Authorization: Bearer {token}' \
-H 'Accept: application/vnd.allegro.public.v1+json'
Po wybraniu produktu możesz pobrać szczegółowe informacje na jego temat.
Zwrócimy jeszcze bogatszy zestaw danych na temat produktu.
{
"id": "634238b1-4385-4de7-9c00-dfa49fce16ab", // identyfikator produktu - użyj go w ofercie,
by powiązać ją z produktem
"name": "Harry Potter i Książę Półkrwi", // nazwa produktu
"category": {
"id": "91447", // kategoria produktu
"path": [ // ścieżka kategorii głównej wskazanej
w “category.id”
{
"id": "954b95b6-43cf-4104-8354-dea4d9b10ddf",
"name": "Allegro"
},
{
"id": "38d588fd-7e9c-4c42-a4ae-6831775eca45",
"name": "Kultura i rozrywka"
},
{
"id": "7",
"name": "Książki i Komiksy"
},
{
"id": "260379",
"name": "Książki dla młodzieży"
}
],
"similar": [
{
"id": "66794",
"path": [ // ścieżka kategorii podobnej wskazanej
w “category.similar.id”
{
"id": "954b95b6-43cf-4104-8354-dea4d9b10ddf",
"name": "Allegro"
},
{
"id": "38d588fd-7e9c-4c42-a4ae-6831775eca45",
"name": "Kultura i rozrywka"
},
{
"id": "7",
"name": "Książki i Komiksy"
},
{
"id": "66794",
"name": "Książki do nauki języka obcego"
}
]
}
]
},
"parameters": [ // parametry produktu
{
"id": "245669", // parametr GTIN
"name": "ISBN",
"valuesLabels": [
"9788380082434"
],
"values": [
"9788380082434"
],
"unit": null,
"options": {
"identifiesProduct": true,
"isGTIN": true
}
},
{
"id": "7773",
"name": "Okładka",
"valuesLabels": [
"twarda"
],
"valuesIds": [
"7773_3"
],
"unit": null, // jednostka wartości parametru. Jeśli
dany parametr nie ma jednostki,
zwracamy wartość null
"options": {
"identifiesProduct": true
}
},
...
],
"images": [ // zdjęcia produktu
{
"url": "https://e.allegroimg.com/original/05239b/a708a8864b2bb2c9b23e450bd98e/
Harry-Potter-i-Ksiaze-Polkrwi-J-K-Rowling-a708a8864b2bb2c9b23e450bd98e"
},
{
"url": "https://5.allegroimg.com/original/00cc55/670c94c04db19158b020d827c715/
Harry-Potter-i-Ksiaze-Polkrwi-J-K-Rowling"
}
],
"offerRequirements": { // jakie wymagania musi spełniać oferta,
"id": null by można ją było powiązać z danym produktem np. Stan = Nowy
"parameters": [
{
"id": "11323",
"name": "Stan",
"valuesLabels": [
"Nowy"
],
"valuesIds": [
"11323_1"
],
"options": {
"identifiesProduct": false
}
}
]
},
"compatibilityList": {
"id": "d04e8a0c-40a1-4c53-8902-ffee7261845e-cf5b236d0f72d0abc0418669fe6569d73432b49250032a21f044696eed7e7d70-2",
// identyfikator sekcji Pasuje do
"type": "PRODUCT_BASED", // typ sekcji Pasuje do
"items": [ // tekstowa reprezentacja sekcji Pasuje do
{
"text": "ALFA ROMEO 147 (937_) 1.6 16V T.SPARK (937.AXA1A, 937.AXB1A, 937.BXB1A) 2001/01-2010/03120KM/88kW"
},
...
{
"text": "SKODA RAPID Spaceback (NH1) 1.2 TSI 2012/07-105KM/77kW"
}
]
},
"tecdocSpecification": {
"id": "e3725f4b-1b4b-4e39-ad7f-331a2c858a7f", // identyfikator specyfikacji technicznej TecDoc
"items": [ // tekstowa reprezentacja specyfikacji technicznej TecDoc
{
"name": "Wysokość [mm]",
"values": [
"51"
]
},
...
{
"name": "Wersja TecDoc",
"values": [
"TecDoc 0619"
]
}
]
},
"isDraft": false, // czy produkt jest draftem
"publication": {
"status": "LISTED" // status produktu. "PROPOSED" zwracamy dla
nowych propozycji produktów i produktów z katalogu,
które nie zostały przez nas sprawdzone, "LISTED" dla
produktów z katalogu, które zostały przez nas sprawdzone,
np. zweryfikowaliśmy, że podany numer GTIN znajduje się w oficjalnej bazie GS1
},
"aiCoCreatedContent": { // informacja o tym, czy określona część produktu
(zwrócona w polu „paths”) została wygenerowana przez AI
"paths": []
}
}
Utwórz ofertę z wybranym produktem
curl -X POST
'https://api.allegro.pl.allegrosandbox.pl/sale/product-offers'
-H 'Authorization: Bearer {token}'
-H 'Accept: application/vnd.allegro.public.v1+json'
-H 'Content-Type: application/vnd.allegro.public.v1+json'
-d '{
"productSet": [{
"product": {
"id": "5902719471797",
"idType": "GTIN"
}}],
"sellingMode": {
"price": {
"amount": "220.85",
"currency": "PLN"
}
},
"stock": {
"available": 10
}
}'
Po wybraniu produktu i upewnieniu się, że jest prawidłowy, skorzystaj z niego, wykonując żądanie POST /sale/product-offers.
Fragment kodu - Python
import requests
import json
def create_offer_from_product(url, access_token):
try:
payload = json.dumps({
"productSet": [
{
"product": {
"id": "5902719471797",
"idType": "GTIN"
}
}
],
"sellingMode": {
"price": {
"amount": "220.85",
"currency": "PLN"
}
},
"stock": {
"available": 10
}
})
headers = {
'Accept': 'application/vnd.allegro.public.v1+json',
'Content-Type': 'application/vnd.allegro.public.v1+json',
'Accept-Language': 'pl-PL',
'Authorization': 'Bearer ' + access_token
}
response = requests.request("POST", url, headers=headers, data=payload)
return response
except requests.exceptions.HTTPError as err:
raise SystemExit(err)
def main():
access_token = "" # Acces Token sprzedającego. Uzyskasz go w procesie autoryacji, który opisaliśmy w poradniku:
# https://developer.allegro.pl/tutorials/uwierzytelnianie-i-autoryzacja-zlq9e75GdIR
url = "https://api.allegro.pl.allegrosandbox.pl/sale/product-offers" # url endpointu. Korzystamy ze środowiska testowego, stąd dodatkowo domena "allegrosandbox.pl"
response = create_offer_from_product(url, access_token)
print(response.status_code)
print(response.text)
if __name__ == "__main__":
main()
Gdy chcesz utworzyć nowy produkt lub nie masz pewności, że produkt istnieje w Katalogu Produktów
W tym wariancie posługując się środowiskiem Sandbox spróbujemy utworzyć ofertę dla nieco bardziej skomplikowanego przypadku - gdy chcesz utworzyć nowy produkt lub nie masz pewności, że produkt istnieje w Katalogu Produktów.
Upewnij się, że na koncie testowym zdefiniowano domyślny cennik dostawy oraz warunki reklamacji i zwrotów.
W requeście musisz podać komplet informacji o produkcie. Przekazane dane posłużą do zgłoszenia propozycji produktu. Zweryfikujemy je, a zaakceptowane przez nas dane produktu będą dostępne na platformie. Część danych może być weryfikowana automatycznie, część po pewnym czasie.
Przygotuj następujące dane, by zaproponować produkt:
- sugerowaną nazwę produktu
- kategorię
- parametry i wartości parametrów
- zdjęcia
- opis produktu.
Uzupełnij kategorię i parametry
"productSet": [{
"product": {
"category":{
"id":"165"
},
"parameters": [
{
"name": "EAN",
"values": [
"0744861045021"
]
},
{
"id": "224017",
"values": [
"test 1587459230"
]
},
{
"id": "202749",
"values": [
"5.9"
]
},
{
"id": "202869",
"values": [
"512 GB"
]
},
{
"id": "202829",
"valuesIds": [
"202829_1"
]
},
{
"id": "202685",
"valuesIds": [
"202685_212929"
]
},
{
"id": "127448",
"valuesIds": [
"127448_2"
]
},
{
"id": "202865",
"valuesIds": [
"202865_214109"
]
},
{
"id": "4388",
"valuesIds": [
"4388_1"
]
},
{
"id": "202717",
"values": [
100
]
},
{
"id": "219",
"values": [
"Bluetooth"
]
},
{
"id": "202821",
"values": [
"Dual SIM"
]
},
{
"name": "Marka telefonu",
"valuesIds": [
"246705_598617"
]
},
{
"name": "Model telefonu",
"values": [
"Armor 24"
]
},
{
"name": "Transmisja danych",
"values": [
"5G"
]
},
{
"name": "Średnica obiektywu",
"values": [
"8"
]
}
...
]
}}]
...
Dostępne kategorie pobierzesz za pomocą:
Wywołując GET /sale/categories, otrzymasz listę kategorii głównych. Gdy odpytasz GET /sale/categories?parent.id={categoryId}, wykorzystując ID jednej z kategorii głównych, zwrócimy listę podkategorii. Nawigując w ten sposób po drzewie kategorii, możesz znaleźć odpowiednią kategorię. Ofertę możesz utworzyć w tzw. liściu, czyli w kategorii najniższego rzędu - oznaczonej flagą "leaf": true.
Gdy już zmapujesz odpowiednią kategorię, skorzystaj z GET /sale/categories/{categoryId}/parameters aby pobrać dostępne w niej parametry. W polu requiredForProduct znajdziesz informację, czy dany parametr jest wymagany, gdy tworzysz nowy produkt.
Zamiast identyfikatorów parametrów możesz użyć ich nazw. Dla parametrów:
- słownikowych (typu dictionary) w polu values możesz także przekazać samą nazwę
- zakresowych (typu range) w polu values możesz przekazać dwie wartości, które będą odpowiadać “from” i “to”.
Przekaż GTIN jako parametr
"productSet": [{
"product": {
...
"parameters": [
{
"name": "EAN",
"values": [
"0744861045021"
]
},
...
]}}]
…
Przekaż numer GTIN jako parametr w sekcji parameters.
Za pomocą GET /sale/categories/{categoryId}/parameters sprawdź, czy w danej kategorii musisz przekazać numer EAN, ISBN lub ISSN, gdy chcesz dodać produkt. Świadczy o tym wartość true w polu requiredForProduct parametru GTIN.
Dodaj zdjęcia produktu
"productSet": [{
"product": {
...
"images": [
"https://...zewnetrzny-adres-pierwszego-obrazka.jpeg",
"https://...zewnetrzny-adres-drugiego-obrazka.jpeg"
]
...
W sekcji images dodaj obrazki, które prezentują produkt. Zdjęcia mogą pochodzić z zewnętrznych serwerów.
Każda oferta musi mieć minimum 1 zdjęcie, maksymalna ich liczba to 16. Więcej o obowiązujących zasadach dotyczących zdjęć przeczytasz w Pomocy dla sprzedających.
Uzupełnij pozostałe dane
curl -X POST
'https://api.allegro.pl.allegrosandbox.pl/sale/product-offers'
-H 'Authorization: Bearer {token}'
-H 'Accept: application/vnd.allegro.public.v1+json'
-H 'Content-Type: application/vnd.allegro.public.v1+json'
-d '{
"productSet": [
{
"product": {
"name": "Produkt testowy",
"category": {
"id": "165"
},
"parameters": [
{
"name": "EAN",
"values": [
"0744861045021"
]
},
{
"id": "224017",
"values": [
"test 1587459230"
]
},
{
"id": "202749",
"values": [
"5.9"
]
},
{
"id": "202869",
"values": [
"512 GB"
]
},
{
"id": "202829",
"valuesIds": [
"202829_1"
]
},
{
"id": "202685",
"valuesIds": [
"202685_212929"
]
},
{
"id": "127448",
"valuesIds": [
"127448_2"
]
},
{
"id": "202865",
"valuesIds": [
"202865_214109"
]
},
{
"id": "4388",
"valuesIds": [
"4388_1"
]
},
{
"id": "202717",
"values": [
100
]
},
{
"id": "219",
"values": [
"Bluetooth"
]
},
{
"id": "202821",
"values": [
"Dual SIM"
]
},
{
"name": "Marka telefonu",
"valuesIds": [
"246705_598617"
]
},
{
"name": "Model telefonu",
"values": [
"Armor 24"
]
},
{
"name": "Transmisja danych",
"values": [
"5G"
]
},
{
"name": "Średnica obiektywu",
"values": [
"8"
]
}
],
"images": [
"https://assets.allegrostatic.com/opbox/allegro.pl/homepage/Main%20Page/6lJEwSSohvBIIWNlJUU9sx-w1200-h1200.png"
]
}
}
],
"parameters": [
{
"id": "11323",
"valuesIds": [
"11323_2"
]
}
],
"images": [
"https://assets.allegrostatic.com/opbox/allegro.pl/homepage/Main%20Page/6lJEwSSohvBIIWNlJUU9sx-w1200-h1200.png"
],
"sellingMode": {
"price": {
"amount": "12.43",
"currency": "PLN"
}
},
"stock": {
"available": 10
}
}
'
Aby wystawić ofertę, to oprócz podstawowych danych opisujących produkt, musisz również uzupełnić cenę, liczbę sztuk oraz parametry ofertowe (jeżeli są wymagane).
Fragment kodu - Python
import requests
import json
def create_offer(url, access_token):
try:
payload = json.dumps({
"productSet": [
{
"product": {
"name": "Produkt testowy",
"category": {
"id": "165"
},
"parameters": [
{
"name": "EAN",
"values": [
"0744861045021"
]
},
{
"id": "224017",
"values": [
"test 1587459230"
]
},
{
"id": "202749",
"values": [
"5.9"
]
},
{
"id": "202869",
"values": [
"512 GB"
]
},
{
"id": "202829",
"valuesIds": [
"202829_1"
]
},
{
"id": "202685",
"valuesIds": [
"202685_212929"
]
},
{
"id": "127448",
"valuesIds": [
"127448_2"
]
},
{
"id": "202865",
"valuesIds": [
"202865_214109"
]
},
{
"id": "4388",
"valuesIds": [
"4388_1"
]
},
{
"id": "202717",
"values": [
100
]
},
{
"id": "219",
"values": [
"Bluetooth"
]
},
{
"id": "202821",
"values": [
"Dual SIM"
]
},
{
"name": "Marka telefonu",
"valuesIds": [
"246705_598617"
]
},
{
"name": "Model telefonu",
"values": [
"Armor 24"
]
},
{
"name": "Transmisja danych",
"values": [
"5G"
]
},
{
"name": "Średnica obiektywu",
"values": [
"8"
]
}
],
"images": [
"https://assets.allegrostatic.com/opbox/allegro.pl/homepage/Main%20Page/6lJEwSSohvBIIWNlJUU9sx-w1200-h1200.png"
]
}
}
],
"parameters": [
{
"id": "11323",
"valuesIds": [
"11323_2"
]
}
],
"images": [
"https://assets.allegrostatic.com/opbox/allegro.pl/homepage/Main%20Page/6lJEwSSohvBIIWNlJUU9sx-w1200-h1200.png"
],
"sellingMode": {
"price": {
"amount": "12.43",
"currency": "PLN"
}
},
"stock": {
"available": 10
}
})
headers = {
'Accept': 'application/vnd.allegro.public.v1+json',
'Content-Type': 'application/vnd.allegro.public.v1+json',
'Accept-Language': 'pl-PL',
'Authorization': 'Bearer ' + access_token
}
response = requests.request("POST", url, headers=headers, data=payload)
return response
except requests.exceptions.HTTPError as err:
raise SystemExit(err)
def main():
access_token = "" # Acces Token sprzedającego. Uzyskasz go w procesie autoryacji, który opisaliśmy w poradniku:
# https://developer.allegro.pl/tutorials/uwierzytelnianie-i-autoryzacja-zlq9e75GdIR
url = "https://api.allegro.pl.allegrosandbox.pl/sale/product-offers" # url endpointu. Korzystamy ze środowiska testowego, stąd dodatkowo domena "allegrosandbox.pl"
response = create_offer(url, access_token)
print(response.status_code)
print(response.text)
if __name__ == "__main__":
main()
HTTP/1.1 201 Created
{
"name": "Ulefone Power telefon",
"productSet": [
{
"product": {
"id": "2f771572-8302-4c09-b304-391f039e3195",
"publication": {
"status": "LISTED"
},
"parameters": [
{
"id": "246705",
"name": "Marka telefonu",
"values": [
"Ulefone"
],
"valuesIds": [
"246705_598617"
],
"rangeValue": null
},
{
"id": "225693",
"name": "EAN (GTIN)",
"values": [
"0744861045021",
"744861045021"
],
"valuesIds": null,
"rangeValue": null
},
{
"id": "202869",
"name": "Wbudowana pamięć",
"values": [
"512 GB"
],
"valuesIds": [
"202869_214181"
],
"rangeValue": null
},
{
"id": "202865",
"name": "Pamięć RAM",
"values": [
"16 GB"
],
"valuesIds": [
"202865_214109"
],
"rangeValue": null
},
{
"id": "236462",
"name": "Średnica obiektywu",
"values": [
"8.00"
],
"valuesIds": null,
"rangeValue": null
},
{
"id": "224017",
"name": "Kod producenta",
"values": [
"test 1587459230"
],
"valuesIds": null,
"rangeValue": null
},
{
"id": "202749",
"name": "Przekątna ekranu",
"values": [
"5.90"
],
"valuesIds": null,
"rangeValue": null
},
{
"id": "202829",
"name": "Funkcje w telefonach komórkowych",
"values": [
"kalkulator"
],
"valuesIds": [
"202829_1"
],
"rangeValue": null
},
{
"id": "202685",
"name": "Typ",
"values": [
"Smartfon"
],
"valuesIds": [
"202685_212929"
],
"rangeValue": null
},
{
"id": "127448",
"name": "Kolor",
"values": [
"biały"
],
"valuesIds": [
"127448_2"
],
"rangeValue": null
},
{
"id": "4388",
"name": "System operacyjny",
"values": [
"Android"
],
"valuesIds": [
"4388_1"
],
"rangeValue": null
},
{
"id": "202717",
"name": "Pojemność akumulatora",
"values": [
"100"
],
"valuesIds": null,
"rangeValue": null
},
{
"id": "219",
"name": "Komunikacja",
"values": [
"Bluetooth"
],
"valuesIds": [
"219_2"
],
"rangeValue": null
},
{
"id": "202821",
"name": "Opcje SIM",
"values": [
"Dual SIM"
],
"valuesIds": [
"202821_213909"
],
"rangeValue": null
},
{
"id": "246737",
"name": "Model telefonu",
"values": [
"Armor 24"
],
"valuesIds": [
"246737_1785892"
],
"rangeValue": null
},
{
"id": "217",
"name": "Transmisja danych",
"values": [
"5G"
],
"valuesIds": [
"217_2048"
],
"rangeValue": null
},
{
"id": "202741",
"name": "Materiał",
"values": [
"aluminium"
],
"valuesIds": [
"202741_1"
],
"rangeValue": null
},
{
"id": "227381",
"name": "Szerokość",
"values": [
"99.00"
],
"valuesIds": null,
"rangeValue": null
},
{
"id": "227357",
"name": "Wysokość",
"values": [
"11.00"
],
"valuesIds": null,
"rangeValue": null
},
{
"id": "245581",
"name": "Głębokość",
"values": [
"11.00"
],
"valuesIds": null,
"rangeValue": null
},
{
"id": "202705",
"name": "Waga",
"values": [
"11.00"
],
"valuesIds": null,
"rangeValue": null
},
{
"id": "17448",
"name": "Waga produktu z opakowaniem jednostkowym",
"values": [
"11.000"
],
"valuesIds": null,
"rangeValue": null
},
{
"id": "202745",
"name": "Rodzaj wyświetlacza",
"values": [
"LCD IPS"
],
"valuesIds": [
"202745_213201"
],
"rangeValue": null
},
{
"id": "202873",
"name": "Ekran dotykowy",
"values": [
"tak"
],
"valuesIds": [
"202873_214265"
],
"rangeValue": null
}
]
},
"quantity": {
"value": 1
},
"responsiblePerson": null
}
],
"parameters": [
{
"id": "11323",
"name": "Stan",
"values": [
"Używany"
],
"valuesIds": [
"11323_2"
],
"rangeValue": null
}
],
"images": [
"https://a.allegroimg.allegrosandbox.pl/original/11ecc5/3c986dc84419b206015a2e6f1c65"
],
"afterSalesServices": {
"impliedWarranty": {
"id": "f86078a6-9f42-4b76-9696-1e5c0646a60a"
},
"returnPolicy": {
"id": "f54ba3c2-9710-4108-b275-28ee9be2b7b7"
},
"warranty": null
},
"payments": {
"invoice": "VAT"
},
"sellingMode": {
"format": "BUY_NOW",
"price": {
"amount": "12.43",
"currency": "PLN"
},
"startingPrice": null,
"minimalPrice": null
},
"stock": {
"available": 10,
"unit": "UNIT"
},
"location": {
"countryCode": "PL",
"province": "WIELKOPOLSKIE",
"city": "Poznań",
"postCode": "66-166"
},
"delivery": {
"shippingRates": {
"id": "17221a3c-f4cf-4e47-953a-8e125013b014"
},
"handlingTime": "PT24H",
"additionalInfo": null,
"shipmentDate": null
},
"description": {
"sections": [
{
"items": [
{
"type": "TEXT",
"content": "<p>Produkt testowy</p><p>Cechy produktu:</p><ul><li> Typ:Smartfon</li> <li> Kolor: biały</li> <li> Przekątna ekranu: 5,9</li> <li> Rodzaj wyświetlacza: </li> <li> Wbudowana pamięć: 512 GB</li> <li> Pamięć RAM: 16 GB},{</li> </ul><p> </p>"
}
]
}
]
},
"external": null,
"category": {
"id": "165"
},
"tax": null,
"taxSettings": null,
"sizeTable": null,
"discounts": {
"wholesalePriceList": null
},
"contact": null,
"fundraisingCampaign": null,
"messageToSellerSettings": null,
"attachments": [],
"b2b": {
"buyableOnlyByBusiness": false
},
"additionalServices": null,
"compatibilityList": null,
"additionalMarketplaces": {
"allegro-cz": {
"sellingMode": null,
"publication": {
"state": "NOT_REQUESTED",
"refusalReasons": []
}
},
"allegro-sk": {
"sellingMode": null,
"publication": {
"state": "NOT_REQUESTED",
"refusalReasons": []
}
},
"allegro-business-cz": {
"sellingMode": null,
"publication": {
"state": "NOT_REQUESTED",
"refusalReasons": []
}
},
"allegro-hu": {
"sellingMode": null,
"publication": {
"state": "NOT_REQUESTED",
"refusalReasons": []
}
}
},
"id": "7770274320",
"language": "pl-PL",
"publication": {
"status": "INACTIVE",
"duration": null,
"endedBy": null,
"endingAt": null,
"startingAt": null,
"republish": false,
"marketplaces": {
"base": {
"id": "allegro-pl"
},
"additional": []
}
},
"validation": {
"errors": [],
"warnings": [],
"validatedAt": "2024-06-30T08:16:36.128Z"
},
"createdAt": "2024-06-30T08:16:36.000Z",
"updatedAt": "2024-06-30T08:16:36.142Z"
}
HTTP/1.1 202 Accepted
location: https://api.allegro.pl/sale/product-offers/9531382307/operations/eadb2e97-9850-4c51-bd27-68888b6d7d5d
retry-after: 5
{
"name": "Ulefone Power telefon",
"productSet": [
{
"product": {
"id": "2f771572-8302-4c09-b304-391f039e3195",
"publication": {
"status": "LISTED"
},
"parameters": [
{
"id": "246705",
"name": "Marka telefonu",
"values": [
"Ulefone"
],
"valuesIds": [
"246705_598617"
],
"rangeValue": null
},
{
"id": "225693",
"name": "EAN (GTIN)",
"values": [
"0744861045021",
"744861045021"
],
"valuesIds": null,
"rangeValue": null
},
{
"id": "202869",
"name": "Wbudowana pamięć",
"values": [
"512 GB"
],
"valuesIds": [
"202869_214181"
],
"rangeValue": null
},
{
"id": "202865",
"name": "Pamięć RAM",
"values": [
"16 GB"
],
"valuesIds": [
"202865_214109"
],
"rangeValue": null
},
{
"id": "236462",
"name": "Średnica obiektywu",
"values": [
"8.00"
],
"valuesIds": null,
"rangeValue": null
},
{
"id": "224017",
"name": "Kod producenta",
"values": [
"test 1587459230"
],
"valuesIds": null,
"rangeValue": null
},
{
"id": "202749",
"name": "Przekątna ekranu",
"values": [
"5.90"
],
"valuesIds": null,
"rangeValue": null
},
{
"id": "202829",
"name": "Funkcje w telefonach komórkowych",
"values": [
"kalkulator"
],
"valuesIds": [
"202829_1"
],
"rangeValue": null
},
{
"id": "202685",
"name": "Typ",
"values": [
"Smartfon"
],
"valuesIds": [
"202685_212929"
],
"rangeValue": null
},
{
"id": "127448",
"name": "Kolor",
"values": [
"biały"
],
"valuesIds": [
"127448_2"
],
"rangeValue": null
},
{
"id": "4388",
"name": "System operacyjny",
"values": [
"Android"
],
"valuesIds": [
"4388_1"
],
"rangeValue": null
},
{
"id": "202717",
"name": "Pojemność akumulatora",
"values": [
"100"
],
"valuesIds": null,
"rangeValue": null
},
{
"id": "219",
"name": "Komunikacja",
"values": [
"Bluetooth"
],
"valuesIds": [
"219_2"
],
"rangeValue": null
},
{
"id": "202821",
"name": "Opcje SIM",
"values": [
"Dual SIM"
],
"valuesIds": [
"202821_213909"
],
"rangeValue": null
},
{
"id": "246737",
"name": "Model telefonu",
"values": [
"Armor 24"
],
"valuesIds": [
"246737_1785892"
],
"rangeValue": null
},
{
"id": "217",
"name": "Transmisja danych",
"values": [
"5G"
],
"valuesIds": [
"217_2048"
],
"rangeValue": null
},
{
"id": "202741",
"name": "Materiał",
"values": [
"aluminium"
],
"valuesIds": [
"202741_1"
],
"rangeValue": null
},
{
"id": "227381",
"name": "Szerokość",
"values": [
"99.00"
],
"valuesIds": null,
"rangeValue": null
},
{
"id": "227357",
"name": "Wysokość",
"values": [
"11.00"
],
"valuesIds": null,
"rangeValue": null
},
{
"id": "245581",
"name": "Głębokość",
"values": [
"11.00"
],
"valuesIds": null,
"rangeValue": null
},
{
"id": "202705",
"name": "Waga",
"values": [
"11.00"
],
"valuesIds": null,
"rangeValue": null
},
{
"id": "17448",
"name": "Waga produktu z opakowaniem jednostkowym",
"values": [
"11.000"
],
"valuesIds": null,
"rangeValue": null
},
{
"id": "202745",
"name": "Rodzaj wyświetlacza",
"values": [
"LCD IPS"
],
"valuesIds": [
"202745_213201"
],
"rangeValue": null
},
{
"id": "202873",
"name": "Ekran dotykowy",
"values": [
"tak"
],
"valuesIds": [
"202873_214265"
],
"rangeValue": null
}
]
},
"quantity": {
"value": 1
},
"responsiblePerson": null
}
],
"parameters": [
{
"id": "11323",
"name": "Stan",
"values": [
"Używany"
],
"valuesIds": [
"11323_2"
],
"rangeValue": null
}
],
"images": [
"https://a.allegroimg.allegrosandbox.pl/original/11ecc5/3c986dc84419b206015a2e6f1c65"
],
"afterSalesServices": {
"impliedWarranty": {
"id": "f86078a6-9f42-4b76-9696-1e5c0646a60a"
},
"returnPolicy": {
"id": "f54ba3c2-9710-4108-b275-28ee9be2b7b7"
},
"warranty": null
},
"payments": {
"invoice": "VAT"
},
"sellingMode": {
"format": "BUY_NOW",
"price": {
"amount": "12.43",
"currency": "PLN"
},
"startingPrice": null,
"minimalPrice": null
},
"stock": {
"available": 10,
"unit": "UNIT"
},
"location": {
"countryCode": "PL",
"province": "WIELKOPOLSKIE",
"city": "Poznań",
"postCode": "66-166"
},
"delivery": {
"shippingRates": {
"id": "17221a3c-f4cf-4e47-953a-8e125013b014"
},
"handlingTime": "PT24H",
"additionalInfo": null,
"shipmentDate": null
},
"description": {
"sections": [
{
"items": [
{
"type": "TEXT",
"content": "<p>Produkt testowy</p><p>Cechy produktu:</p><ul><li> Typ:Smartfon</li> <li> Kolor: biały</li> <li> Przekątna ekranu: 5,9</li> <li> Rodzaj wyświetlacza: </li> <li> Wbudowana pamięć: 512 GB</li> <li> Pamięć RAM: 16 GB},{</li> </ul><p> </p>"
}
]
}
]
},
"external": null,
"category": {
"id": "165"
},
"tax": null,
"taxSettings": null,
"sizeTable": null,
"discounts": {
"wholesalePriceList": null
},
"contact": null,
"fundraisingCampaign": null,
"messageToSellerSettings": null,
"attachments": [],
"b2b": {
"buyableOnlyByBusiness": false
},
"additionalServices": null,
"compatibilityList": null,
"additionalMarketplaces": {
"allegro-cz": {
"sellingMode": null,
"publication": {
"state": "NOT_REQUESTED",
"refusalReasons": []
}
},
"allegro-sk": {
"sellingMode": null,
"publication": {
"state": "NOT_REQUESTED",
"refusalReasons": []
}
},
"allegro-business-cz": {
"sellingMode": null,
"publication": {
"state": "NOT_REQUESTED",
"refusalReasons": []
}
},
"allegro-hu": {
"sellingMode": null,
"publication": {
"state": "NOT_REQUESTED",
"refusalReasons": []
}
}
},
"id": "7770273738",
"language": "pl-PL",
"publication": {
"status": "INACTIVE",
"duration": null,
"endedBy": null,
"endingAt": null,
"startingAt": null,
"republish": false,
"marketplaces": {
"base": {
"id": "allegro-pl"
},
"additional": []
}
},
"validation": {
"errors": [],
"warnings": [],
"validatedAt": "2024-06-30T08:11:36.862Z"
},
"createdAt": "2024-06-30T08:11:36.000Z",
"updatedAt": "2024-06-30T08:11:36.925Z"
}
Żądanie jest przetwarzane asynchronicznie. W odpowiedzi otrzymasz dane oferty z aktualnym jej stanem - nieuwzględniającym zmian, które wciąż są procesowane.
Aby sprawdzić status publikacji, skorzystaj z adresu otrzymanego w nagłówku Location - jest to odnośnik do zasobu, który należy odpytywać, aby sprawdzić status wykonania żądania. Z kolei w nagłówku retry-after przekazujemy informację, po jakim czasie (w sekundach) możesz ponownie odpytać zasób.
Skorzystaj z metody GET oraz otrzymanego adresu w Location (GET /sale/product-offers/{offerId}/operations/{operationId}). Do czasu zakończenia operacji w odpowiedzi na to żądanie wyślemy status 202 Accepted.
Przykładowy request:
curl -X GET \ 'https://api.allegro.pl/sale/product-offers/9531382307/7770273738/eadb2e97-9850-4c51-bd27-68888b6d7d5d' -H 'Authorization: Bearer {token}' -H 'Accept: application/vnd.allegro.public.v1+json' -H 'Content-Type: application/vnd.allegro.public.v1+json'
Przykładowy response:
{ HTTP/1.1 202 Accepted location: https://api.allegro.pl/sale/product-offers/7770273738/operations/eadb2e97-9850-4c51-bd27-68888b6d7d5d retry-after: 5 { "offer": { "id": "7770273738" }, "operation": { "id": "ef5dd966-d370-44f7-bb30-3631e3511536", "status": "IN_PROGRESS", "startedAt": "2024-06-30T08:11:36.000Z" } }
Gdy zakończymy przetwarzać operację, w odpowiedzi na żądanie GET /sale/product-offers/{offerId}/operations/{operationId} wyślemy status HTTP 303 See Other, a w nagłówku Location przekażemy odnośnik kierujący do zasobu z danymi oferty.
Przykładowy request:
curl -X GET 'https://api.allegro.pl/sale/product-offers/7770273738/operations/eadb2e97-9850-4c51-bd27-68888b6d7d5d' -H 'Authorization: Bearer {token}' -H 'Accept: application/vnd.allegro.public.v1+json' -H 'Content-Type: application/vnd.allegro.public.v1+json'
Przykładowy response:
HTTP/1.1: 303 See other location: https://api.allegro.pl/sale/product-offers/7770273738
Możesz teraz skorzystać z metody GET oraz otrzymanego odnośnika w nagłówku Location, aby uzyskać aktualne dane oferty. Utworzysz dzięki temu żądanie w następującej formie: GET /sale/product-offers/{offerId}.
Przykładowy request:
curl -X GET 'https://api.allegro.pl/sale/product-offers/7770273738' -H 'Authorization: Bearer {token}' -H 'Accept: application/vnd.allegro.public.v1+json' -H 'Content-Type: application/vnd.allegro.public.v1+json'
{
"name": "Ulefone Power telefon",
"productSet": [
{
"product": {
"id": "2f771572-8302-4c09-b304-391f039e3195",
"publication": {
"status": "LISTED"
},
"parameters": [
{
"id": "246705",
"name": "Marka telefonu",
"values": [
"Ulefone"
],
"valuesIds": [
"246705_598617"
],
"rangeValue": null
},
{
"id": "202869",
"name": "Wbudowana pamięć",
"values": [
"512 GB"
],
"valuesIds": [
"202869_214181"
],
"rangeValue": null
},
{
"id": "202865",
"name": "Pamięć RAM",
"values": [
"16 GB"
],
"valuesIds": [
"202865_214109"
],
"rangeValue": null
},
{
"id": "236462",
"name": "Średnica obiektywu",
"values": [
"8"
],
"valuesIds": null,
"rangeValue": null
},
{
"id": "224017",
"name": "Kod producenta",
"values": [
"test 1587459230"
],
"valuesIds": null,
"rangeValue": null
},
{
"id": "202749",
"name": "Przekątna ekranu",
"values": [
"5.9"
],
"valuesIds": null,
"rangeValue": null
},
{
"id": "202829",
"name": "Funkcje w telefonach komórkowych",
"values": [
"kalkulator"
],
"valuesIds": [
"202829_1"
],
"rangeValue": null
},
{
"id": "202685",
"name": "Typ",
"values": [
"Smartfon"
],
"valuesIds": [
"202685_212929"
],
"rangeValue": null
},
{
"id": "127448",
"name": "Kolor",
"values": [
"biały"
],
"valuesIds": [
"127448_2"
],
"rangeValue": null
},
{
"id": "4388",
"name": "System operacyjny",
"values": [
"Android"
],
"valuesIds": [
"4388_1"
],
"rangeValue": null
},
{
"id": "202717",
"name": "Pojemność akumulatora",
"values": [
"100"
],
"valuesIds": null,
"rangeValue": null
},
{
"id": "219",
"name": "Komunikacja",
"values": [
"Bluetooth"
],
"valuesIds": [
"219_2"
],
"rangeValue": null
},
{
"id": "202821",
"name": "Opcje SIM",
"values": [
"Dual SIM"
],
"valuesIds": [
"202821_213909"
],
"rangeValue": null
},
{
"id": "246737",
"name": "Model telefonu",
"values": [
"Armor 24"
],
"valuesIds": [
"246737_1785892"
],
"rangeValue": null
},
{
"id": "217",
"name": "Transmisja danych",
"values": [
"5G"
],
"valuesIds": [
"217_2048"
],
"rangeValue": null
},
{
"id": "202741",
"name": "Materiał",
"values": [
"aluminium"
],
"valuesIds": [
"202741_1"
],
"rangeValue": null
},
{
"id": "227381",
"name": "Szerokość",
"values": [
"99"
],
"valuesIds": null,
"rangeValue": null
},
{
"id": "227357",
"name": "Wysokość",
"values": [
"11"
],
"valuesIds": null,
"rangeValue": null
},
{
"id": "245581",
"name": "Głębokość",
"values": [
"11"
],
"valuesIds": null,
"rangeValue": null
},
{
"id": "202705",
"name": "Waga",
"values": [
"11"
],
"valuesIds": null,
"rangeValue": null
},
{
"id": "17448",
"name": "Waga produktu z opakowaniem jednostkowym",
"values": [
"11"
],
"valuesIds": null,
"rangeValue": null
},
{
"id": "202745",
"name": "Rodzaj wyświetlacza",
"values": [
"LCD IPS"
],
"valuesIds": [
"202745_213201"
],
"rangeValue": null
},
{
"id": "202873",
"name": "Ekran dotykowy",
"values": [
"tak"
],
"valuesIds": [
"202873_214265"
],
"rangeValue": null
},
{
"id": "225693",
"name": "EAN (GTIN)",
"values": [
"0744861045021"
],
"valuesIds": null,
"rangeValue": null
}
]
},
"quantity": {
"value": 1
},
"responsiblePerson": null
}
],
"parameters": [
{
"id": "11323",
"name": "Stan",
"values": [
"Używany"
],
"valuesIds": [
"11323_2"
],
"rangeValue": null
}
],
"images": [
"https://a.allegroimg.allegrosandbox.pl/original/11ecc5/3c986dc84419b206015a2e6f1c65"
],
"afterSalesServices": {
"impliedWarranty": {
"id": "f86078a6-9f42-4b76-9696-1e5c0646a60a"
},
"returnPolicy": {
"id": "f54ba3c2-9710-4108-b275-28ee9be2b7b7"
},
"warranty": null
},
"payments": {
"invoice": "VAT"
},
"sellingMode": {
"format": "BUY_NOW",
"price": {
"amount": "12.43",
"currency": "PLN"
},
"startingPrice": null,
"minimalPrice": null
},
"stock": {
"available": 10,
"unit": "UNIT"
},
"location": {
"countryCode": "PL",
"province": "WIELKOPOLSKIE",
"city": "Poznań",
"postCode": "66-166"
},
"delivery": {
"shippingRates": {
"id": "17221a3c-f4cf-4e47-953a-8e125013b014"
},
"handlingTime": "PT24H",
"additionalInfo": null,
"shipmentDate": null
},
"description": {
"sections": [
{
"items": [
{
"type": "TEXT",
"content": "<p>Produkt testowy</p><p>Cechy produktu:</p><ul><li> Typ:Smartfon</li> <li> Kolor: biały</li> <li> Przekątna ekranu: 5,9</li> <li> Rodzaj wyświetlacza: </li> <li> Wbudowana pamięć: 512 GB</li> <li> Pamięć RAM: 16 GB},{</li> </ul><p> </p>"
}
]
}
]
},
"external": null,
"category": {
"id": "165"
},
"tax": null,
"taxSettings": null,
"sizeTable": null,
"discounts": {
"wholesalePriceList": null
},
"contact": null,
"fundraisingCampaign": null,
"messageToSellerSettings": null,
"attachments": [],
"b2b": null,
"additionalServices": null,
"compatibilityList": null,
"additionalMarketplaces": {
"allegro-cz": {
"sellingMode": null,
"publication": {
"state": "NOT_REQUESTED",
"refusalReasons": []
}
},
"allegro-sk": {
"sellingMode": null,
"publication": {
"state": "NOT_REQUESTED",
"refusalReasons": []
}
},
"allegro-business-cz": {
"sellingMode": null,
"publication": {
"state": "NOT_REQUESTED",
"refusalReasons": []
}
},
"allegro-hu": {
"sellingMode": null,
"publication": {
"state": "NOT_REQUESTED",
"refusalReasons": []
}
}
},
"id": "7770273738",
"language": "pl-PL",
"publication": {
"status": "ACTIVE",
"duration": null,
"endedBy": null,
"endingAt": null,
"startingAt": null,
"republish": false,
"marketplaces": {
"base": {
"id": "allegro-pl"
},
"additional": []
}
},
"validation": {
"errors": [],
"warnings": [],
"validatedAt": "2024-06-30T08:11:36.862Z"
},
"createdAt": "2024-06-30T08:11:36.000Z",
"updatedAt": "2024-06-30T08:11:41.714Z"
}
Warianty testowe produktów
Lista wariantów produktów na Sandbox, które ułatwią Ci przeprowadzić różne testy dla różnych sytuacji, które możesz napotkać podczas wystawiania oferty z produktem:
- Produkt bez uzupełnionego EAN: 8ff859fc-09fa-44f9-bada-0366126cb556.
- 2 produkty z takimi samym numerem EAN: d7187e51-36cc-4999-861e-a4336aa165f0, 17ef2e7a-a759-42e9-84c2-93bf1a578ba6.
- Produkt bez wypełnionego parametru wymaganego: df7e4db9-0dc6-4708-af86-84360469a152.
- Produkt, którego podpięcie powoduje błąd parametrów własnych, jeżeli ich nie przekażesz (kod błędu OfferCustomParametersException): 5222c367-c86d-44d7-8840-c1adec7d4178.
Jak przekazać własne wartości w żądaniu
Możesz rozszerzyć swój request, nadpisując wartości domyślne lub przekazując dodatkowe, niewymagane dane.
Przypomnijmy, że struktura żądania dzieli się na dwie części:
produktową - w której przekazujesz:
numer GTIN lub id produktu, jeżeli chcesz powiązać ofertę z produktem, który znajduje się w naszym Katalogu
komplet informacji o produkcie, jeżeli chcesz powiązać ofertę z produktem, którego nie ma w naszym Katalogu. Są to dane, które identyfikują określony produkt.
ofertową - dane, które określają warunki w konkretnej ofercie, np. cena, liczba sztuk, lokalizacja, informacje o fakturze, etc. Wartości związane z ofertą możesz nadpisać, a także dodać nowe. W dalszej części poradnika znajdziesz opis, jak to wykonać.
Tytuł oferty
curl -X POST
'https://api.allegro.pl/sale/product-offers'
-H 'Authorization: Bearer {token}'
-H 'Accept: application/vnd.allegro.public.v1+json'
-H 'Content-Type: application/vnd.allegro.public.v1+json'
-d '{
"productSet": [{
"product": {
"id": "5902719471797",
"idType": "GTIN"
}}],
"name": "Mój własny tytuł",
"sellingMode": {
"price": {
"amount": "220.85",
"currency": "PLN"
}
},
"stock": {
"available": 1
}
}'
Do oferty automatycznie przypiszemy tytuł powiązany z nazwą produktu. Jeśli chcesz nadać swój własny, rozszerz request o pole name:
...
"name": "Mój własny tytuł"
...
Dla tytułu dopuszczamy maksymalnie 75 znaków. Listę liter, cyfr i znaków specjalnych jakie pozwalamy wprowadzić w tytule oferty znajdziecie poniżej.
Litery: 'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','w','v','x','y','z',
'ä','ö','ü','ø','ò','ß','0','á','č','ě','í','ř','š','ů','ú','ý','ž','œ','æ','à','â','ç','é','è','ê','ë','î',
'ï','ô','û','ù','ü','ÿ','€','×','ą','ć','ę','ł','ń','ó','ś','ź','ż','µ','⌀',
Cyfry: '0','1','2','3','4','5','6','7','8','9',
Znaki specjalne:'!','@','[',']','#','$','%','^','&','*','{','}','(',')','.',',','/','\\','|','?',' ',';','~','²','³',
'`','\'','’','´','\"','”','"','„','“','″','<','>','_','\t',':','-','=','+','0','…','–','°','°'
Niektóre litery jak i znaki specjalne są zamieniane na encje, dlatego zajmują więcej niż jeden znak. Przykładowo znak & jest encjonowany jako & dlatego zajmuje 5 miejsc w tytule.
{
"parameters": [ // lista dostępnych parametrów dla
wskazanej kategorii
{
"id": "11323", // unikalny identyfikator danego parametru
"name": "Stan", // nazwa parametru
"type": “dictionary”, // typ parametru, obecnie mamy dostępne wartości:
dictionary (słownik wyboru, może być jednokrotnego,
bądź wielokrotnego wyboru, w zależności od wartości
w polu multipleChoices), integer (liczba całkowita),
float (liczby zmiennoprzecinkowe), string (możesz dodać
jedną lub wiele wartości)
"required":true, // informacja, czy dany parametr jest obowiązkowy,
dostępne są dwie wartości: true (tak) i false (nie)
"unit": null,
"requiredForProduct": true // czy musisz przekazać wartość dla tego
parametru , gdy tworzysz nowy produkt,
"requiredIf": null, // informacje o zależnej wymagalności parametru
"displayedIf": null, // informacje o zależnym wyświetlaniu parametru
"options": {
"variantsAllowed": false,
"variantsEqual": false
"ambiguousValueId": "216917_41" // id wartości niejednoznacznej, np.
"inna", "pozostałe", etc.
"dependsOnParameterId": null // id parametru, od którego zależne są
dostępne wartości tego parametru
"describesProduct": true, // czy parametr opisuje produkt
"customValuesEnabled": false // czy w danym parametrze możesz dodać własną wartość
dla parametru z wartością niejednoznaczną
},
"dictionary": [
{
"id": "11323_1",
"value": "Nowy",
"dependsOnValueIds": []
},
{
"id": "11323_2",
"value": "Używany",
"dependsOnValueIds": []
}
],
"restrictions": {
"multipleChoices": false // parametr z możliwym wyborem jednej lub
wielu wartości, dostępne są dwie wartości:
true (tak) i false (nie)
}
},
{
"id": "211966",
"name": "Zakres regulacji wysokości koszenia (cm)",
"type": "float",
"required": false,
"unit": null,
"requiredForProduct": true,
"restrictions": {
"min": 0,
"max": 1000,
"range": true, // parametr zakresowy, należy podać
minimalną i maksymalną wartość.
"precision": 2
}
},
{
"id": "17448",
"name": "waga (z opakowaniem)",
"type": "float",
"required":false,
"restrictions": {
"min": 5,
"max": 10,
"range": true, // parametr zakresowy. Sekcje range
min i max oznaczają minalną i maksymalna
wartość danego parametru.
"precision": 3 // określa z jaką dokładnością możemy podać
wartość danego parametru. W tym przypadku
możemy podać wartość z dokładnością do
3 miejsc po przecinku
}
},
{
"id": "216917",
"name": "Załączone wyposażenie",
"type": "string",
"required": false,
"unit": null,
"requiredForProduct": false,
"options": {
"variantsAllowed": false,
"variantsEqual": false
"ambiguousValueId": "216917_41" -- id wartości niejednoznacznej, np.
"inna", "pozostałe", etc.
"dependsOnParameterId": null,
"describesProduct": true,
"customValuesEnabled": false
},
"restrictions": {
"minLength": 1,
"maxLength": 40,
"allowedNumberOfValues": 10 // informacja o tym, ile wartości możesz
podać w danym parametrze
}
}
]
}
Za pomocą GET /sale/categories/{categoryId}/parameters pobierzesz parametry dostępne w danej kategorii. W odpowiedzi zwrócimy parametry, które możesz ustawić dla kategorii wskazanej jako categoryId.
curl -X POST
'https://api.allegro.pl/sale/product-offers'
-H 'Authorization: Bearer {token}'
-H 'Accept: application/vnd.allegro.public.v1+json'
-H 'Content-Type: application/vnd.allegro.public.v1+json'
-d '{
"productSet": [{
"product": {
"id": "5902719471797",
"idType": "GTIN"
}}],
"name": "Mój własny tytuł",
"parameters": [
{
"id": "11323",
"valuesIds": [
"11323_2"
]
}
],
"sellingMode": {
"price": {
"amount": "220.85",
"currency": "PLN"
}
},
"stock": {
"available": 1
}
}'
Parametry ofertowe są związane z indywidualną ofertą, np. stan, data ważności, etc., a nie z cechą konkretnego produktu. Informację o tym, które parametry są ofertowe, a które produktowe, znajdziesz w polu options.describesProduct:
- true - parametr produktowy
- false - parametr ofertowy.
Poniżej znajdziesz przykłady prawidłowo uzupełnionych struktur przykładowych parametrów, w zależności od ich typu:
- dla parametrów słownikowych (wybór jednego lub wielu wartości z wielu):
{ "id": "209878", "valuesIds": [ "209878_2", "209878_1" ], "values": [], "rangeValue": null }
- dla parametrów zakresowych:
{ "id": "212570", "valuesIds": [], "values": [], "rangeValue": { "from": "80", "to": "100" } }
- dla parametrów, w których samodzielnie uzupełniasz ich wartość:
{ "id": "216325", "valuesIds": [], "values": [ "zielony", "żółty", "czerwony" ], "rangeValue": null }
Jeżeli chcesz zdefiniować np. stan produktu w ofercie jako używany, rozszerz swój request o poniższą strukturę:
...
"parameters": [
{
"id": "11323",
"valuesIds": [
"11323_2"
]
}
]
...
Zamiast identyfikatorów możesz skorzystać z nazw parametrów i ich wartości:
...
"parameters": [
"name": "Stan",
{
"values": [
"Używany"
]
}
]
...
Własna wartość parametru
Jeżeli nie znajdziesz odpowiedniej wartości parametru, dla wybranych parametrów z wartością niejednoznaczną możesz zdefiniować własną wartość. Wartości niejednoznaczne parametru to wartości typu: “inne”, “pozostałe”, etc. np. “inna” w parametrze “Marka”. Identyfikator takiej wartości zwracamy w polu ambiguousValueId w sekcji options w odpowiedzi dla GET /sale/categories/{categoryId}/parameters.
Aby dodać własną wartość:
- za pomocą GET /sale/categories/{categoryId}/parameters sprawdź:
- w polu customValuesEnabled, czy w danym parametrze wybranej kategorii możesz dodać własną wartość;
- w polu ambiguousValueId identyfikator wartości niejednoznacznej;
{ "parameters": [ { "id": "129033", "name": "Marka", "type": “dictionary”, "required":true, "unit": null, "requiredForProduct": true "options": { "variantsAllowed": false, "variantsEqual": false, "ambiguousValueId": "129033_13" // id wartości niejednoznacznej, w tym przypadku jest to wartość “inna” "dependsOnParameterId": null, "describesProduct": true, "customValuesEnabled": true // czy w danym prarametrze możesz dodać własną wartość }, ... }
- gdy tworzysz draft lub edytujesz ofertę, w sekcji parameters przekaż poniższą strukturę:
{ "id": "129033", // id parametru "valuesIds": [ "129033_13" // id wartości niejednoznacznej ], "values": [ "Nazwa brakującej marki" ], // wartość, którą chcesz przekazać, uzupełnij to pole. "rangeValue": null }
Czas trwania i wznowienie oferty
curl -X POST
'https://api.allegro.pl/sale/product-offers'
-H 'Authorization: Bearer {token}'
-H 'Accept: application/vnd.allegro.public.v1+json'
-H 'Content-Type: application/vnd.allegro.public.v1+json'
-d '{
"productSet": [{
"product": {
"id": "5902719471797",
"idType": "GTIN"
}}],
"name": "Mój własny tytuł",
"parameters": [
{
"id": "11323",
"valuesIds": [
"11323_2"
]
}
],
"sellingMode": {
"price": {
"amount": "220.85",
"currency": "PLN"
}
},
"stock": {
"available": 1
},
"publication": {
"duration": "P30D",
"republish": true
}
}'
Jeżeli chcesz ustawić czas trwania oferty inny niż do wyczerpania zapasów, rozszerz swój request o pole publication.duration i wskaż jedną z dostępnych wartości czasu trwania oferty:
...
"publication": {
"duration": "P30D"
...
},
...
Dostępne wartości to:
- null (do wyczerpania zapasów),
- P3D (3 dni)
- P5D (5 dni)
- P7D (7 dni)
- P10D (10 dni)
- P20D (20 dni)
- P30D (30 dni).
Czas trwania możesz podać też w godzinach, np.: P72H (3 dni).
Aby oferta została automatycznie wznowiona po zakończeniu, przekaż wartość true w polu publication.republish. Pamiętaj, że możesz automatycznie wznowić ofertę i licytację:
ofertę wznowimy ze stałą początkową liczbą przedmiotów niezależnie od tego, ile przedmiotów sprzedasz
licytację wznowimy tylko, gdy nie zakończyła się sprzedażą.
Wystawienie oferty w przyszłości
curl -X POST
'https://api.allegro.pl/sale/product-offers'
-H 'Authorization: Bearer {token}'
-H 'Accept: application/vnd.allegro.public.v1+json'
-H 'Content-Type: application/vnd.allegro.public.v1+json'
-d '{
"productSet": [{
"product": {
"id": "5902719471797",
"idType": "GTIN"
}}],
"name": "Mój własny tytuł",
"parameters": [
{
"id": "11323",
"valuesIds": [
"11323_2"
]
}
],
"sellingMode": {
"price": {
"amount": "220.85",
"currency": "PLN"
}
},
"stock": {
"available": 1
},
"publication": {
"duration": "P30D",
"startingAt ": "2021-01-20T08:56:00Z"
}
}'
curl -X POST
'https://api.allegro.pl/sale/product-offers'
-H 'Authorization: Bearer {token}'
-H 'Accept: application/vnd.allegro.public.v1+json'
-H 'Content-Type: application/vnd.allegro.public.v1+json'
-d '{
"productSet": [{
"product": {
"id": "5902719471797",
"idType": "GTIN"
}}],
"name": "Mój własny tytuł",
"parameters": [
{
"id": "11323",
"valuesIds": [
"11323_2"
]
}
],
"location": {
"countryCode": "PL",
"province": "LUBUSKIE",
"city": "Gorzów Wielkopolski",
"postCode": "66-400"
},
"sellingMode": {
"price": {
"amount": "220.85",
"currency": "PLN"
}
},
"stock": {
"available": 1
}
}'
Jeżeli wysyłasz przedmioty z innego adresu, niż przypisany do twojego konta - przekaż odpowiednie wartości w poniższy sposób:
...
"location": {
"countryCode": "PL",
"province": "LUBUSKIE",
"city": "Gorzów Wielkopolski",
"postCode": "66-400"
}
...
Listę dozwolonych wartości w polu location.province znajdziesz w naszej dokumentacji.
Jeśli chcesz zmienić adres przypisany do konta, skorzystaj z naszej strony internetowej.
Jak przypisać do oferty wybrany cennik dostawy
curl -X POST
'https://api.allegro.pl/sale/product-offers'
-H 'Authorization: Bearer {token}'
-H 'Accept: application/vnd.allegro.public.v1+json'
-H 'Content-Type: application/vnd.allegro.public.v1+json'
-d '{
"productSet": [{
"product": {
"id": "5902719471797",
"idType": "GTIN"
}}],
"name": "Mój własny tytuł",
"parameters": [
{
"id": "11323",
"valuesIds": [
"11323_2"
]
}
],
"delivery": {
"shippingRates": {
"id": "c446793c-33f0-407f-b0ed-1aeec6090a7a"
}
},
"location": {
"countryCode": "PL",
"province": "LUBUSKIE",
"city": "Gorzów Wielkopolski",
"postCode": "66-400"
},
"sellingMode": {
"price": {
"amount": "220.85",
"currency": "PLN"
}
},
"stock": {
"available": 1
}
}'
Możesz ustawić dowolny cennik dostawy. Przykładowo - jeżeli posiadasz cennik o nazwie małe gabaryty i chcesz go użyć w ofercie, wystarczy, że rozszerzysz request o dodatkowe pole z:
nazwą cennika:
... "delivery": { "shippingRates": { "name": "małe gabaryty" } }, ...
lub identyfikatorem cennika:
... "delivery": { "shippingRates": { "id": "c446793c-33f0-407f-b0ed-1aeec6090a7a" } } ...
Nazwę i ID swoich cenników sprawdzisz za pomocą GET /sale/shipping-rates.
Jak przypisać do oferty wybrany cennik hurtowy
curl -X POST
'https://api.allegro.pl/sale/product-offers'
-H 'Authorization: Bearer {token}'
-H 'Accept: application/vnd.allegro.public.v1+json'
-H 'Content-Type: application/vnd.allegro.public.v1+json'
-d '{
"productSet": [
{
"product": {
"id": "5902719471797",
"idType": "GTIN"
}
}
],
"name": "Mój własny tytuł",
"parameters": [
{
"id": "11323",
"valuesIds": [
"11323_2"
]
}
],
"location": {
"countryCode": "PL",
"province": "LUBUSKIE",
"city": "Gorzów Wielkopolski",
"postCode": "66-400"
},
"sellingMode": {
"price": {
"amount": "220.85",
"currency": "PLN"
}
},
"stock": {
"available": 1
},
"publication": {
"duration": "P30D",
"startingAt ": "2021-01-20T08:56:00Z"
},
"discounts": {
"wholesalePriceList": {
"id": "5637592a-0a24-4771-b527-d89b2767d821"
}
}
}'
Jeśli chcesz zaoferować rabat dla transakcji B2B (firma - firma), rozszerz swój request o pole discounts.wholesalePriceList.id, w którym podaj wcześniej utworzony cennik hurtowy jako:
ID:
... “discounts”: { “wholesalePriceList”: { “id”: “5637592a-0a24-4771-b527-d89b2767d821” } }, ...
lub nazwę:
... “discounts”: { “wholesalePriceList”: { “name”: “testowy cennik hurtowy” } }, ...
Czas wysyłki
curl -X POST
'https://api.allegro.pl/sale/product-offers'
-H 'Authorization: Bearer {token}'
-H 'Accept: application/vnd.allegro.public.v1+json'
-H 'Content-Type: application/vnd.allegro.public.v1+json'
-d '{
"productSet": [{
"product": {
"id": "5902719471797",
"idType": "GTIN"
}}],
"name": "Mój własny tytuł",
"parameters": [
{
"id": "11323",
"valuesIds": [
"11323_2"
]
}
],
"delivery": {
"shippingRates": {
"id": "862347c4-b2b0-42d4-b84a-1db01509a69d"
},
"handlingTime": "PT48H"
},
"location": {
"countryCode": "PL",
"province": "LUBUSKIE",
"city": "Gorzów Wielkopolski",
"postCode": "66-400"
},
"sellingMode": {
"price": {
"amount": "220.85",
"currency": "PLN"
}
},
"stock": {
"available": 1
}
}'
Aby wystawić przedmiot z czasem wysyłki innym niż 24H, ustaw w polu handlingTime w sekcji delivery wartość w formacie ISO 8601. Dostępne wartości to: PT0S (natychmiast), PT24H (24 godziny), P2D (2 dni), P3D (3 dni), P4D (4 dni), P5D (5 dni), P7D (7 dni), P10D (10 dni), P14D (14 dni), P21D (21 dni), P30D (30 dni), P60D (60 dni). Można również podać te wartości w godzinach, np. PT72H (3 dni).
Przykładowo, jeżeli chcesz ustawić czas wysyłki na 2 dni, prześlij w polu handlingTime wartość PT48H lub P2D:
...
"delivery": {
"handlingTime": "PT48H"
}
...
Dodatkowe informacje o dostawie
Rozszerz swój request o sekcję delivery z polem additionalInfo, aby uwzględnić w ofercie dodatkowe informacje o dostawie:
...
"delivery": {
"additionalInfo": "Dodatkowe informacje o dostawie"
}
...
Warunki reklamacji i zwrotów
Jak ustawić wybrane warunki reklamacji
curl -X POST
'https://api.allegro.pl/sale/product-offers'
-H 'Authorization: Bearer {token}'
-H 'Accept: application/vnd.allegro.public.v1+json'
-H 'Content-Type: application/vnd.allegro.public.v1+json'
-d '{
"productSet": [{
"product": {
"id": "5902719471797",
"idType": "GTIN"
}}],
"name": "Mój własny tytuł",
"parameters": [
{
"id": "11323",
"valuesIds": [
"11323_2"
]
}
],
"delivery": {
"shippingRates": {
"id": "862347c4-b2b0-42d4-b84a-1db01509a69d"
},
"handlingTime": "PT48H",
"additionalInfo": "Dodatkowe informacje o dostawie"
},
"location": {
"countryCode": "PL",
"province": "LUBUSKIE",
"city": "Gorzów Wielkopolski",
"postCode": "66-400"
},
"sellingMode": {
"price": {
"amount": "220.85",
"currency": "PLN"
}
},
"afterSalesServices": {
"impliedWarranty": {
"name": "zabawki"
}
},
"stock": {
"available": 1
}
}'
Jeśli chcesz ustawić inne warunki reklamacji niż domyślne, użyj ich nazwy lub ID . Przykładowo, jeżeli posiadasz warunki reklamacji o nazwie zabawki, których ID to 913174eb-35ed-48df-b3b9-b9eb66b1b7a4 i chcesz użyć ich w ofercie, wystarczy, że rozszerzysz request o dodatkowe pole, w którym przekażesz:
nazwę warunków reklamacji:
... "impliedWarranty": { "name": "zabawki" } ...
lub identyfikator warunków reklamacji:
... "impliedWarranty": { "id": "913174eb-35ed-48df-b3b9-b9eb66b1b7a4" } ...
Nazwę oraz ID warunków reklamacji otrzymasz za pomocą GET /after-sales-service-conditions/implied-warranties.
Jak ustawić wybrane warunki zwrotów
curl -X POST
'https://api.allegro.pl/sale/product-offers'
-H 'Authorization: Bearer {token}'
-H 'Accept: application/vnd.allegro.public.v1+json'
-H 'Content-Type: application/vnd.allegro.public.v1+json'
-d '{
"productSet": [{
"product": {
"id": "5902719471797",
"idType": "GTIN"
}}],
"name": "Mój własny tytuł",
"parameters": [
{
"id": "11323",
"valuesIds": [
"11323_2"
]
}
],
"delivery": {
"shippingRates": {
"id": "862347c4-b2b0-42d4-b84a-1db01509a69d"
},
"handlingTime": "PT48H",
"additionalInfo": "Dodatkowe informacje o dostawie"
},
"location": {
"countryCode": "PL",
"province": "LUBUSKIE",
"city": "Gorzów Wielkopolski",
"postCode": "66-400"
},
"sellingMode": {
"price": {
"amount": "220.85",
"currency": "PLN"
}
},
"afterSalesServices": {
"impliedWarranty": {
"name": "zabawki"
},
"returnPolicy": {
"name": "30 dni"
}
},
"stock": {
"available": 1
}
}'
Jeśli chcesz ustawić inne warunki zwrotów niż domyślne, użyj ich nazwy lub ID. Przykładowo - jeśli posiadasz warunki zwrotów o nazwie 30 dni o ID a375a08e-86ee-48a4-baf7-fabe01fe2631, to przekaż:
nazwę warunków zwrotu:
... "returnPolicy": { "name": "30 dni" } ...
lub identyfikator warunków zwrotów:
... "returnPolicy": { "id": "a375a08e-86ee-48a4-baf7-fabe01fe2631" } ...
Nazwę oraz ID warunków zwrotów otrzymasz za pomocą GET /after-sales-service-conditions/return-policies.
Warunkami reklamacji i zwrotów możesz zarządzać za pomocą dedykowanych zasobów. Więcej infromacji znajdziesz w naszych poradnikach:
Tabela rozmiarów
curl -X POST
'https://api.allegro.pl/sale/product-offers'
-H 'Authorization: Bearer {token}'
-H 'Accept: application/vnd.allegro.public.v1+json'
-H 'Content-Type: application/vnd.allegro.public.v1+json'
-d '{
"productSet": [{
"product": {
"id": "5902719471797",
"idType": "GTIN"
}}],
"name": "Mój własny tytuł",
"parameters": [
{
"id": "11323",
"valuesIds": [
"11323_2"
]
}
],
"delivery": {
"shippingRates": {
"id": "862347c4-b2b0-42d4-b84a-1db01509a69d"
},
"handlingTime": "PT48H",
"additionalInfo": "Dodatkowe informacje o dostawie"
},
"location": {
"countryCode": "PL",
"province": "LUBUSKIE",
"city": "Gorzów Wielkopolski",
"postCode": "66-400"
},
"sellingMode": {
"price": {
"amount": "220.85",
"currency": "PLN"
}
},
"afterSalesServices": {
"impliedWarranty": {
"name": "zabawki"
},
"returnPolicy": {
"name": "30 dni"
}
},
"stock": {
"available": 1
},
"sizeTable": {
"name": “Przykładowa tabela rozmiarów”
}
}'
Rozszerz swój request o sekcję sizeTable, aby dodać do oferty tabelę rozmiarów. Wystarczy, że w żądaniu przekażesz:
nazwę tabeli rozmiarów:
... "sizeTable": { "name": “Przykładowa tabela rozmiarów” } ...
lub identyfikator tabeli rozmiarów:
... "sizeTable": { "id": “5727b598-6608-4bd3-b198-f165b011bb69” } ...
Nazwy i identyfikatory swoich tabel rozmiarów sprawdzisz za pomocą GET /sale/size-tables.
Tabelami rozmiarów możesz zarządzać za pomocą dedykowanych zasobów.
Opcje faktury i stawki VAT
Jak zmienić opcje faktury
curl -X POST
'https://api.allegro.pl/sale/product-offers'
-H 'Authorization: Bearer {token}'
-H 'Accept: application/vnd.allegro.public.v1+json'
-H 'Content-Type: application/vnd.allegro.public.v1+json'
-d '{
"productSet": [{
"product": {
"id": "5902719471797",
"idType": "GTIN"
}}],
"name": "Mój własny tytuł",
"parameters": [{
"id": "11323",
"valuesIds": [
"11323_2"
]
}],
"delivery": {
"shippingRates": {
"id": "862347c4-b2b0-42d4-b84a-1db01509a69d"
},
"handlingTime": "PT48H",
"additionalInfo": "Dodatkowe informacje o dostawie"
},
"sellingMode": {
"price": {
"amount": "220.85",
"currency": "PLN"
}
},
"afterSalesServices": {
"impliedWarranty": {
"name": "zabawki"
},
"returnPolicy": {
"name": "30 dni"
}
},
"location": {
"countryCode": "PL",
"province": "LUBUSKIE",
"city": "Gorzów Wielkopolski",
"postCode": "66-400"
},
"payments": {
"invoice": "NO_INVOICE"
},
"stock": {
"available": 1
}
}'
Jeżeli nie wystawiasz faktury VAT, lub wystawiasz inną jej formę, możesz ustawić ją za pomocą pola payments.invoice:
...
"payments": {
"invoice": "NO_INVOICE"
}
...
Obecnie dostępne są 4 wartości:
- VAT (faktura VAT)
- VAT_MARGIN (faktura VAT marża)
- WITHOUT_VAT (faktura bez VAT)
- NO_INVOICE (nie wystawiam faktury).
Jak ustawić stawkę VAT na fakturze
curl -X POST
'https://api.allegro.pl/sale/product-offers'
-H 'Authorization: Bearer {token}' \
-H 'Accept: application/vnd.allegro.public.v1+json' \
-H 'Content-Type: application/vnd.allegro.public.v1+json' \
-d '{
"productSet": [
{
"product": {
"id": "5902719471797",
"idType": "GTIN"
}
}
],
"name": "Mój własny tytuł",
"parameters": [
{
"id": "11323",
"valuesIds": [
"11323_2"
]
}
],
"delivery": {
"shippingRates": {
"id": "862347c4-b2b0-42d4-b84a-1db01509a69d"
},
"handlingTime": "PT48H",
"additionalInfo": "Dodatkowe informacje o dostawie"
},
"sellingMode": {
"price": {
"amount": "220.85",
"currency": "PLN"
}
},
"afterSalesServices": {
"impliedWarranty": {
"name": "zabawki"
},
"returnPolicy": {
"name": "30 dni"
}
},
"location": {
"countryCode": "PL",
"province": "LUBUSKIE",
"city": "Gorzów Wielkopolski",
"postCode": "66-400"
},
"taxSettings": {
"subject": "GOODS",
"exemption": "MONEY_EQUIVALENT",
"rates": [
{
"rate": "23.00",
"countryCode": "PL"
}
]
},
"publication": {
"status": "ACTIVE"
},
"stock": {
"available": 1
}
}'
W ofercie możesz wskazać konkretną stawkę VAT, niezależnie od ustawionej opcji faktury.
Dostępne ustawienia i identyfikatory stawek VAT w danej kategorii sprawdzisz za pomocą GET /sale/tax-settings?category.id={categoryId}. W odpowiedzi zwrócimy stawki VAT dla wszystkich dostępnych krajów dostawy. Jeśli chcesz wyfiltrować wyniki, skorzystaj z opcjonalnego parametru “countryCode”, np. GET /sale/tax-settings?category.id=315261&countryCode=CZ
curl -X POST
'https://api.allegro.pl/sale/product-offers'
-H 'Authorization: Bearer {token}'
-H 'Accept: application/vnd.allegro.public.v1+json'
-H 'Content-Type: application/vnd.allegro.public.v1+json'
-d '{
"productSet": [{
"product": {
"id": "5902719471797"
}}],
"name": "Mój własny tytuł",
"parameters": [{
"id": "11323",
"valuesIds": [
"11323_2"
]
}],
"delivery": {
"shippingRates": {
"id": "862347c4-b2b0-42d4-b84a-1db01509a69d"
},
"handlingTime": "PT48H",
"additionalInfo": "Dodatkowe informacje o dostawie"
},
"sellingMode": {
"price": {
"amount": "220.85",
"currency": "PLN"
}
},
"afterSalesServices": {
"impliedWarranty": {
"name": "zabawki"
},
"returnPolicy": {
"name": "30 dni"
}
},
"location": {
"countryCode": "PL",
"province": "LUBUSKIE",
"city": "Gorzów Wielkopolski",
"postCode": "66-400"
},
"payments": {
"invoice": "NO_INVOICE"
},
"publication": {
"status": "INACTIVE"
},
"stock": {
"available": 1
}
}'
Maksymalnie możesz utworzyć 20 000 draftów. Po przekroczeniu limitu nie będziesz mógł utworzyć nowego draftu. Otrzymasz komunikat - “You cannot create new drafts - your account has exceeded the maximum number 20 000 of drafts.” Usuń niepotrzebne za pomocą DELETE /sale/offers/{offerId}.
Draft oferty przechowujemy do 120 dni. Po tym okresie usuniemy taki draft. Jeśli go edytujesz, wydłużymy jego ważność o kolejne 120 dni.
curl -X POST
'https://api.allegro.pl/sale/product-offers'
-H 'Authorization: Bearer {token}'
-H 'Accept: application/vnd.allegro.public.v1+json'
-H 'Content-Type: application/vnd.allegro.public.v1+json'
-d '{
"productSet": [{
"product": {
"id": "5902719471797"
}}],
"name": "Mój własny tytuł",
"parameters": [{
"id": "11323",
"valuesIds": [
"11323_2"
]
}],
"delivery": {
"shippingRates": {
"id": "862347c4-b2b0-42d4-b84a-1db01509a69d"
},
"handlingTime": "PT48H",
"additionalInfo": "Dodatkowe informacje o dostawie"
},
"sellingMode": {
"price": {
"amount": "220.85",
"currency": "PLN"
}
},
"afterSalesServices": {
"impliedWarranty": {
"name": "zabawki"
},
"returnPolicy": {
"name": "30 dni"
}
},
"location": {
"countryCode": "PL",
"province": "LUBUSKIE",
"city": "Gorzów Wielkopolski",
"postCode": "66-400"
},
"payments": {
"invoice": "NO_INVOICE"
},
"publication": {
"status": "INACTIVE"
},
"images": [
"https://...zewnetrzny-adres-pierwszego-obrazka.jpeg",
"https://...zewnetrzny-adres-drugiego-obrazka.jpeg"
],
"stock": {
"available": 1
}
}'
Do oferty automatycznie dołączymy zdjęcia produktu. Możesz także dodać swoje własne, które przedstawiają konkretny egzemplarz produktu. Aby załączyć do oferty własne zdjęcia, rozszerz swój request o sekcję images:
...
"images": [
"https://...zewnetrzny-adres-pierwszego-obrazka.jpeg",
"https://...zewnetrzny-adres-drugiego-obrazka.jpeg"
]
...
Jeśli chcesz w ofercie zaprezentować wyłącznie własne zdjęcia, bez obrazków, które pochodzą z naszego Katalogu, przekaż w polu product.images pustą tablicę:
{
"productSet": [
{
"product": {
"id": "990de42f-8a68-4f0c-aedb-060141ffd8e3",
"images": []
}
}],
...
"images": [
"https://...zewnetrzny-adres-pierwszego-obrazka.jpeg",
"https://...zewnetrzny-adres-drugiego-obrazka.jpeg"
]
...
}
Jeśli nie przekażesz swojego własnego opisu dla oferty, a produkt:
- wskazany przez product.id lub
- rozpoznany przez nas na podstawie przekazanych danych (gdy nie podasz product.id)
w naszym Katalogu go posiada i zawarte są w nim zdjęcia, to wraz z opisem do oferty przypiszemy zdjęcia produktu - nawet jeśli w sekcji product.images przekażesz pustą tablicę. Jeśli zatem chcesz, aby w ofercie były wyłącznie twoje zdjęcia, dodaj swój własny opis.
Zdjęcia są cache’owane przez 7 dni - gdy wyślesz kolejne żądanie z tym samym, zewnętrznym adresem URL, zdjęcia możemy pobrać z wewnętrznego cache Allegro, zamiast bezpośrednio z zewnętrznego serwera.
Jeżeli chcesz, aby czas cache’owania był krótszy, serwer powinien wysłać nagłówek Cache-Control z odpowiednią wartością parametru max-age.
Jeżeli nie chcesz, abyśmy cache’owali zdjęcia, serwer powinien wysłać nagłówek Cache-Control z parametrem Private, No-Cache lub No-Store.
curl -X POST
'https://api.allegro.pl/sale/product-offers'
-H 'Authorization: Bearer {token}'
-H 'Accept: application/vnd.allegro.public.v1+json'
-H 'Content-Type: application/vnd.allegro.public.v1+json'
-d '{
"productSet": [{
"product": {
"id": "5902719471797"
}}],
"name": "Mój własny tytuł",
"parameters": [{
"id": "11323",
"valuesIds": [
"11323_2"
]
}],
"delivery": {
"shippingRates": {
"id": "862347c4-b2b0-42d4-b84a-1db01509a69d"
},
"handlingTime": "PT48H",
"additionalInfo": "Dodatkowe informacje o dostawie"
},
"sellingMode": {
"price": {
"amount": "220.85",
"currency": "PLN"
}
},
"afterSalesServices": {
"impliedWarranty": {
"name": "zabawki"
},
"returnPolicy": {
"name": "30 dni"
}
},
"location": {
"countryCode": "PL",
"province": "LUBUSKIE",
"city": "Gorzów Wielkopolski",
"postCode": "66-400"
},
"payments": {
"invoice": "NO_INVOICE"
},
"publication": {
"status": "INACTIVE"
},
"images": [
"https://...zewnetrzny-adres-pierwszego-obrazka.jpeg",
"https://...zewnetrzny-adres-drugiego-obrazka.jpeg"
],
"description": {
"sections": [{
"items": [{
"type": "TEXT",
"content": "<p>Przykładowy opis oferty</p>"
}]
}]
},
"stock": {
"available": 1
}
}'
Do oferty możesz dodać swój własny opis. Przy jego braku do oferty automatycznie przypiszemy opis z produktu, który wskazałeś w żądaniu.
Aby dodać opis dodatkowy, rozszerz request o sekcję description:
...
"description": {
"sections": [
{
"items": [
{
"type": "TEXT",
"content": "<p>Przykładowy opis oferty</p>"
}
]
}
]
}
...
Szczegółowe informacje o zasadach dla ofert znajdziesz na stronie dla sprzedających.
Najważniejsze informacje
- maksymalna wielkość całego opisu jaki możesz przesłać to 40000 bajtów
- możesz korzystać tylko z określonych znaczników HTML:
- h1 - tytuł
- h2 - podtytuł
- p - akapit
- ul - wypunktowanie
- ol - wylistowanie
- li - element listy
- b - pogrubienie.
- w opisie możesz wykorzystać tylko zdjęcia, które przesyłasz w tablicy images.
Jeśli chcesz ułatwić sobie pracę nad opisami ofert i produktów, skorzystaj z naszej publicznej biblioteki JavaScript - convert-description, która konwertuje opis produktu i oferty w HTML do formatu wspieranego przez Allegro REST API.
Sugerujemy, by pierwszy opis przygotować przez formularz wystawiania. Skorzystaj z wszystkich rodzajów sekcji i opcji formatowania i pobierz ofertę za pomocą GET /sale/product-offers/{offerId}. W ten sposób najłatwiej dowiesz się jak poprawnie przygotować opis.
Jak wygląda struktura opisu
Sekcje (sections)
Opis oferty składa się z przynajmniej jednej sekcji, które umieszczasz w tablicy sections. Opis może mieć max. 100 sekcji.
{
"sections": [
{ section1 },
{ section2 },
...
]
}
Elementy opisu (item)
Sekcje grupują elementy opisu (item) w widok kolumnowy:
jedna kolumna, która zajmuje całą szerokość ekranu
{ "items" : [ { item1 } ] }
dwie kolumny, z których każda zajmuje połowę ekranu
{ "items" : [ { item1 } { item2 } ] }
- nie możesz utworzyć sekcji z większą liczbą kolumn.
Typy treści w opisie
Tekst
{
"type": "TEXT",
"content": "<p>opis tekstowy</p>"
}
Możesz tu użyć określonych znaczników HTML:
- h1 - tytuł
- h2 - podtytuł
- p - akapit
- ul - wypunktowanie
- ol - wylistowanie
- li - element listy
- b - pogrubienie.
Najważniejsze zasady
Treści musisz umieścić w znacznikach HTML. W znacznikach HTML używaj tylko małych liter.
Poprawnie
{ "type": "TEXT", "content": "<p>opis tekstowy</p>" }
Niepoprawnie
{ "type": "TEXT", "content": "opis tekstowy" }
Nie możesz dodatkowo formatować tagów h1 i h2.
Poprawnie
{ "type": "TEXT", "content": "<h1>Tytuł sekcji</h1>" }
Niepoprawnie
{ "type": "TEXT", "content": "<h1><b>Tytuł sekcji<b></h1>" }
Możesz użyć pogrubienia < b > < /b > w znacznikach:
- < p > < /p > - akapit
- < ul > < /ul > - lista wypunktowana
- < ol > < /ol > - lista numerowana
Możesz użyć znacznika akapitu < p > < /p > w znacznikach:
- < ul > < /ul > - lista wypunktowana
- < ol > < /ol > - lista numerowana
Przykład, jak poprawnie łączyć znaczniki HTML:
<h1>Lorem ipsum dolor sit amet, consectetur adipiscing elit</h1>
<p><b>Aliquam vitae nisi ac lectus gravida rhoncus</b>. Vivamus egestas, orci quis
fermentum sollicitudin, leo urna pellentesque quam, ut mattis risus nisl sed dolor.</p>
<ul>
<li><b>Nulla eu justo ut velit pellentesque porta.</b></li>
<li>Pellentesque eget arcu id ligula consequat fermentum at nec velit. Maecenas vitae nunc
non ante aliquet facilisis nec id leo.</li>
<li>Sed vitae metus vel lorem iaculis rhoncus.</li> <li>Nullam nec felis felis.</li>
</ul>
<ol>
<li><p><b>In eget vulputate purus</b></p></li>
<li><p>Integer a pharetra odio.</p></li>
<li><p>Vestibulum ut vestibulum diam.</p></li>
<li><p>Phasellus quis tempor ipsum, at tincidunt nibh.</p></li>
<li><p>Nulla sollicitudin, libero sit amet fermentum iaculis.</p></li>
</ol>
Zdjęcie
{
"type": "IMAGE",
"url": "https://...zewnetrzny-adres--obrazka.jpeg"
}
Przykładowa struktura opisu
{
"sections": [{
"items": [{
"type": "TEXT",
"content": "<p>tekstowy opis przedmiotu</p>"
}]
}, {
"items": [{
"type": "IMAGE",
"url": "https://...zewnetrzny-adres-obrazka.jpeg"
}]
}, {
"items": [{
"type": "TEXT",
"content": "<p>tekstowy opis przedmiotu</p>"
}, {
"type": "IMAGE",
"url": "https://...zewnetrzny-adres-obrazka.jpeg"
}]
}, {
"items": [{
"type": "IMAGE",
"url": "https://...zewnetrzny-adres-obrazka.jpeg"
}, {
"type": "IMAGE",
"url": "https://...zewnetrzny-adres-obrazka.jpeg"
}]
}]
}
Sygnatura
curl -X POST
'https://api.allegro.pl/sale/product-offers'
-H 'Authorization: Bearer {token}'
-H 'Accept: application/vnd.allegro.public.v1+json'
-H 'Content-Type: application/vnd.allegro.public.v1+json'
-d '{
"productSet": [
{
"product": {
"id": "5902719471797"
}
}
],
"name": "Mój własny tytuł",
"parameters": [
{
"id": "11323",
"valuesIds": [
"11323_2"
]
}
],
"delivery": {
"shippingRates": {
"id": "862347c4-b2b0-42d4-b84a-1db01509a69d"
},
"handlingTime": "PT48H",
"additionalInfo": "Dodatkowe informacje o dostawie"
},
"sellingMode": {
"price": {
"amount": "220.85",
"currency": "PLN"
}
},
"afterSalesServices": {
"impliedWarranty": {
"name": "zabawki"
},
"returnPolicy": {
"name": "30 dni"
}
},
"location": {
"countryCode": "PL",
"province": "LUBUSKIE",
"city": "Gorzów Wielkopolski",
"postCode": "66-400"
},
"payments": {
"invoice": "NO_INVOICE"
},
"publication": {
"status": "INACTIVE"
},
"images": [
"https://...zewnetrzny-adres-pierwszego-obrazka.jpeg",
"https://...zewnetrzny-adres-drugiego-obrazka.jpeg"
],
"description": {
"sections": [
{
"items": [
{
"type": "TEXT",
"content": "<p>Przykładowy opis oferty</p>"
}
]
}
]
},
"stock": {
"available": 1