Jak wystawić ofertę w Allegro REST API

Offer model

1. Przygotuj draft

Na początku tworzysz draft oferty za pomocą POST /sale/offers. Taką ofertę oznaczymy w polu status jako “INACTIVE”. Draft oferty nie musi być kompletną ofertą, gotową do opublikowania w serwisie. Draft może być zalążkiem do dalszej pracy na ofercie. W każdym momencie będziesz mógł uzupełnić Draft o więcej informacji za pomocą zasobu PUT/sale/offers/{offerId}. Dzięki draftom możesz:

  • trzymać dane o ofertach na naszych serwerach,
  • łatwo przygotować podgląd oferty.


2. Wystaw ofertę

Aktywuj kompletny draft (status=INACTIVE), dla którego nie zwracamy żadnych błędów w sekcji “validation”. Zrobisz to za pomocą akcji ACTIVATE w PUT /sale/offer-publication-commands/{commandId}. Od momentu publikacji oferty w serwisie, będzie ona miała status przejściowy - ACTIVATING. Status ACTIVATING dotyczy również ofert zaplanowanych do wystawienia w przyszłości.

Walidację przeprowadzamy za każdym razem, gdy wprowadzasz zmiany w ofercie. Jeśli wysyłasz zmiany, które zawierają:

  • błędne dane, identyfikatory itp. - to w odpowiedzi otrzymasz: status 422,
  • błędy logiczne, które blokują wystawienie oferty, np. nie podałeś kwoty minimalnej dla licytacji- to w sekcji “validation” otrzymasz opis błędu.


3. Sprawdź status oferty

Gdy wystawisz ofertę w serwisie, wówczas jej status zmienimy na ACTIVE. Dokładny termin wystawienia takiej oferty wyświetlamy w polu scheduledAt w odpowiedzi dla GET /sale/offer-publication-commands/{commandId}/tasks. Tą samą metodą możesz również zakończyć ofertę - wystarczy że wykonasz akcję END.

Wystaw ofertę w kilku krokach

Pamiętaj! Wszystkie żądania musisz wykonywać z tokenem OAuth 2.0.

Uzupełnij:

Warunki ofert - Opisz warunki reklamacji, zwrotów i gwarancji. Warunki reklamacji i zwrotów są obowiązkowe dla kont firmowych. Jeśli zmienisz warunki, będzie to widoczne w ofertach, do których je przypisałeś.

Tabele rozmiarów - dzięki tabelom, kupujący znajdą informacje o rozmiarach w spójnym formacie i zawsze w tym samym miejscu w ofercie. Tabele stworzysz w Moim Allegro w zakładce Tabele rozmiarów.

1. Niezbędne dane

Skorzystaj z metod pomocniczych, dzięki którym pobierzesz ID elementów. Przekażesz je później, aby zbudować nową ofertę. Takich jak:

Ustawienia dostawy

Pobierzesz je przy pomocy zasobu GET /sale/delivery-settings.

Przykładowy request:

  curl -X GET
  https://api.allegro.pl/sale/delivery-settings
  -H 'Authorization: Bearer {token}'
  -H 'Accept: application/vnd.allegro.public.v1+json'
  -H 'Content-Type: application/vnd.allegro.public.v1+json'
Przykładowy response:
  {
  	"freeDelivery": {
    	"amount": 4.04,				-- minimalna kwota zamówienia
       	"currency": "PLN"			kwalifikująca się do darmowej dostawy
   	},
   	"joinPolicy": {
    	"strategy": "MAX"			-- sposób obliczania kosztów dostawy
    },
	"customCost": {
    	"allowed": true				-- czy klient może wpisać koszt
    								dostawy	ustalony ze sprzedawcą
   },
   "updatedAt": "2019-08-21T10:13:40.036Z"
  }

Ustawienia dostawy możesz edytować przy pomocy zasobu PUT /sale/delivery-settings. Więcej informacji na temat nowych zasobów znajdziesz w naszej dokumentacji.

Cennik dostaw

Najpierw za pomocą GET /sale/delivery-methods pobierz identyfikatory i nazwy metod dostawy, które są dostępne w Allegro. Wykorzystasz je, gdy będziesz tworzyć nowy cennik dostawy.

Przykładowy request:

  curl -X GET \
  https://api.allegro.pl/sale/delivery-methods \
  -H 'Authorization: Bearer {token}' \
  -H 'Accept: application/vnd.allegro.public.v1+json'

Kliknij, żeby zobaczyć przykładowy response:
{

  "deliveryMethods": [
    {
        "id": "7203cb90-864c-4cda-bf08-dc883f0c78ad",   -- ogólny identyfikator danej metody dostawy
        "name": "Przesyłka kurierska",                  -- ogólna nazwa danej metody dostawy
        "paymentPolicy": "IN_ADVANCE",                  -- rodzaj płatności. Dostępne są dwie
                                                        wartości IN_ADVANCE (opłata z góry)
                                                        i CASH_ON_DELIVERY (opłata przy odbiorze)
        "allegroEndorsed": false,                       -- czy dana dostawa jest sygnowana
                                                        przez Allegro, pole pozwala łatwo rozróżnić
                                                        podobne metody dostawy z różnymi ograniczeniami,
                                                        np. Allegro Paczkomaty 24/7 InPost od Paczkomaty 24/7
        "shippingRatesConstraints": {
            "allowed": true,                            -- czy możesz dodać dany sposób dostawy
                                                        do nowego, bądź już istniejącego cennika dostaw
            "maxQuantityPerPackage": {                  -- maksymalna wartość, jaką możesz podać
                                                        dla pola "liczba w paczce"
                "max": 999999
            },
            "firstItemRate": {                          -- warunki dla pola "cena przesyłki"
                "min": "0.00",
                "max": "100000000.00",
                "currency": "PLN"
            },
            "nextItemRate": {                           -- warunki dla pola "cena kolejnej sztuki"
                "min": "0.00",
                "max": "100000000.00",
                "currency": "PLN"
            },
            "shippingTime": {                           -- warunki dla pola "czas dostawy"
                "default": {
                    "from": "PT24H",
                    "to": "PT48H"
                },
                "customizable": true                    -- informacja, czy możesz zmienić czas dostawy
            }
        }
    }, {
        "id": "aa1d05e0-943b-47cb-a759-9d8c16707129",
        "name": "Allegro Przesyłka polecona",
        "paymentPolicy": "IN_ADVANCE",
        "allegroEndorsed": true,
        "shippingRatesConstraints": {
            "allowed": true,
            "maxQuantityPerPackage": {
                "max": 999999
            },
            "firstItemRate": {
                "min": "0.00",
                "max": "5.90",
                "currency": "PLN"
            },
            "nextItemRate": {
                "min": "0.00",
                "max": "0.00",
                "currency": "PLN"
            },
            "shippingTime": {
                "default": {
                    "from": "PT96H",
                    "to": "PT120H"
                },
                "customizable": false
            }
        }
    },
    ...
    {
        "id": "845efe05-0c96-47c3-a8cb-aa4699c158ce",
        "name": "Przesyłka kurierska pobranie",
        "paymentPolicy": "CASH_ON_DELIVERY",
        "allegroEndorsed": false,
        "shippingRatesConstraints": {
            "allowed": true,
            "maxQuantityPerPackage": {
                "max": 999999
            },
            "firstItemRate": {
                "min": "0.00",
                "max": "100000000.00",
                "currency": "PLN"
            },
            "nextItemRate": {
                "min": "0.00",
                "max": "100000000.00",
                "currency": "PLN"
            },
            "shippingTime": {
                "default": {
                    "from": "PT24H",
                    "to": "PT48H"
                },
                "customizable": true
            }
        }
    }
    ]

Jeśli masz ofertę, do której nie przypisałeś cennika dostawy, skorzystaj z GET /sale/offers/{offerId}/shipping-rates, dzięki temu pobierzesz informacje o metodach dostawy, które zostały dodane do oferty.

Przykładowy request:

  curl -X GET \
  'https://api.allegro.pl/sale/offers/8151913057/shipping-rates' \
  -H 'Accept: application/vnd.allegro.beta.v1+json’
Przykładowy response:
  {
    "rates": [
        {
            "deliveryMethod": {
                "id": "845efe05-0c96-47c3-a8cb-aa4699c158ce"	-- identyfikator danej
																metody dostawy
            },
            "maxQuantityPerPackage": 1,							-- liczba w paczce
            "firstItemRate": {									-- cena przesyłki
                "amount": "11.00",
                "currency": "PLN"
            },
            "nextItemRate": {									-- cena kolejnej sztuki
                "amount": "0.00",
                "currency": "PLN"
            },
            "shippingTime": {                                   -- czas dostawy
                "from": "PT72H",
                "to": "PT120H"
            }
        }
    ]
  }

Teraz za pomocą POST /sale/shipping-rates/ możesz utworzyć Cennik dostawy. Jego identyfikator użyjesz, gdy będziesz tworzyć ofertę.

Ważne! Na jednym koncie możesz mieć maksymalnie 250 cenników dostawy.

Kliknij, żeby zobaczyć przykładowy request:
curl -X POST \
  https://api.allegro.pl/sale/shipping-rates \
  -H 'Accept: application/vnd.allegro.public.v1+json' \
  -H 'Authorization: {token}' \
  -H 'Content-Type: application/vnd.allegro.public.v1+json' \
  -d '{
    "name": "Nowy cennik dostawy",                              -- wymagane, nazwa
                                                                danego cennika dostaw
    "rates": [
        {
            "deliveryMethod": {
                "id": "845efe05-0c96-47c3-a8cb-aa4699c158ce"    -- wymagane, identyfikator
                                                                danej metody dostawy
            },
            "maxQuantityPerPackage": 10,                        -- wymagane, liczba w paczce
            "firstItemRate": {                                  -- wymagane, cena przesyłki
                "amount": "12.58",
                "currency": "PLN"
            },
            "nextItemRate": {                                   -- wymagane, cena
                                                                kolejnej sztuki
                "amount": "12.58",
                "currency": "PLN"
            },
            "shippingTime": {                                   -- czas dostawy, może być podany tylko dla
                                                                niektórych metod dostawy
                                                                (np. "845efe05-0c96-47c3-a8cb-aa4699c158ce").
                                                                Jeśli nie został podany, zostanie użyty
                                                                domyślny czas wysyłki danej metody dostawy.
                "from": "PT72H",                                podaj wielokrotność 24H,
                "to": "PT120H"                                  zgodnie z formatem ISO 8601
            }
        },
        {
            "deliveryMethod": {
                "id": "2488f7b7-5d1c-4d65-b85c-4cbcf253fd93"
            },
            "maxQuantityPerPackage": 1,
            "firstItemRate": {
                "amount": "7.99",
                "currency": "PLN"
            },
            "nextItemRate": {
                "amount": "0.00",
                "currency": "PLN"
            }
        }
    ]
}'
Kliknij, żeby zobaczyć przykładowy response:
{
     "id": "73491425-dea3-420b-b2bb-680310d764e4",
     "name": "Nowy cennik dostawy",
    "rates": [
        {
            "deliveryMethod": {
                "id": "845efe05-0c96-47c3-a8cb-aa4699c158ce"
            },
            "maxQuantityPerPackage": 10,
            "firstItemRate": {
                "amount": "12.58",
                "currency": "PLN"
            },
            "nextItemRate": {
                "amount": "12.58",
                "currency": "PLN"
            },
            "shippingTime": {
                "from": "PT72H",
                "to": "PT120H"
            }
        },
        {
            "deliveryMethod": {
                "id": "2488f7b7-5d1c-4d65-b85c-4cbcf253fd93"
            },
            "maxQuantityPerPackage": 1,
            "firstItemRate": {
                "amount": "7.99",
                "currency": "PLN"
            },
            "nextItemRate": {
                "amount": "0.00",
                "currency": "PLN"
            },
            "shippingTime": null
        }
    ],
    "lastModified": "2018-04-03T13:46:54.722Z"
 }

Jeśli sprzedawca utworzył już Cenniki dostawy - ich listę możesz pobrać za pomocą GET /sale/shipping-rates?seller.id={Seller_ID}. Wykorzytaj identyfikator danego cennika dostaw, gdy wystawiasz ofertę.

Przykładowy request:

  curl -X GET \
  'https://api.allegro.pl/sale/shipping-rates?seller.id={Seller_ID}' \
  -H 'Accept: application/vnd.allegro.public.v1+json' \
  -H 'Authorization: Bearer {token}'
Przykładowy response:
  {
	"shippingRates":[
		{
			"id": "fde5853c-01ce-4991-a4b3-994c1a4a408e",	-- identyfikator
															danego cennika dostaw
			"name": "Cennik dostawy dla elektroniki"		-- nazwa danego
															cennika dostaw
		},
		{
			"id": "64d7218b-cb3b-448a-9cdd-760a1eb76eb8",
			"name": "Cennik dostawy dla małegro AGD"
		},
		{
			"id": "41b8e54f-dddd-4e48-ab17-dd941ade2116",
			"name": "Cennik dostawy dla promocji świątecznej"
		}
	]
  }
Szczegóły danego cennika sprawdzisz za pomocą GET /sale/shipping-rates/{shippingRatesId}.

Przykładowy request:

  curl -X GET \
  https://api.allegro.pl/sale/shipping-rates/fde5853c-01ce-4991-a4b3-994c1a4a408e\
  -H 'Accept: application/vnd.allegro.public.v1+json' \
  -H 'Authorization: Bearer {token}'
Kliknij, żeby zobaczyć przykładowy response:
{
    "id": "ed1645ab-0895-4010-bd85-bb5d92ab0d83",               -- identyfikator
                                                                danego cennika dostaw
    "name": "Cennik dostawy test API 1",                         -- nazwa
                                                                danego cennika dostaw
    "rates": [
        {
            "deliveryMethod": {
                "id": "9081532b-5ad3-467d-80bc-9252982e9dd8"    -- identyfikator
                                                                danej metody dostawy
            },
            "maxQuantityPerPackage": 1,                         -- liczba w paczce
            "firstItemRate": {                                  -- cena przesyłki
                "amount": "10.95",
                "currency": "PLN"
            },
            "nextItemRate": {                                   -- cena kolejnej sztuki
                "amount": "0.00",
                "currency": "PLN"
            },
            "shippingTime": {                                   -- czas dostawy,
                "from": "PT72H",                                wielokrotność 24H,
                "to": "PT120H"                                  zgodnie z formatem ISO 8601
            }
        },
        {
            "deliveryMethod": {
                "id": "574d1c9e-9903-4626-903f-f72441d520d5"
            },
            "maxQuantityPerPackage": 1,
            "firstItemRate": {
                "amount": "8.60",
                "currency": "PLN"
            },
            "nextItemRate": {
                "amount": "0.00",
                "currency": "PLN"
            },
            "shippingTime": null
        }
    ],
    "lastModified": "2018-08-08T08:24:56.086Z"                  -- data ostatniej
                                                                modyfikacji danego cennika
}

W tym artykule opisaliśmy szczegółowo, jak zarządzać cennikami dostawy na koncie sprzedawcy i w jego ofertach.

Warunki ofert

Warunki zwrotów

Jak dodać informacje o warunkach zwrotów

Skorzystaj z POST /after-sales-service-conditions/return-policies, aby dodać nowe warunki zwrotów. W strukturze żądania przekaż pola:

  • name - wymagane, nazwa warunków zwrotu,
  • availability.range - wymagane, możliwość odstąpienia od umowy przez kupującego:
    • FULL - jest taka możliwość,
    • RESTRICTED - brak lub ograniczona możliwość,
  • availability.restrictionCause.name - wymagane, jeśli w polu availability.range wybrałeś wartość RESTRICTED. Poniżej znajdziesz listę dostępnych wartości wraz z opisem. Możesz wybrać tylko jedną wartość:
wartość Prawo odstąpienia od umowy bez podania przyczyny nie przysługuje konsumentowi w przypadku gdy:
SEALED_MEDIA kupujący otworzył zapieczętowane opakowanie nagrania dźwiękowego, wizualnego lub programu komputerowego (przepis z ustawy).
SEALED_ITEM_NO_RETURN_DUE_HEALTH_OR_HYGIENE kupujący otworzył zapieczętowane opakowanie towaru, którego po otwarciu nie można zwrócić ze względu na ochronę zdrowia lub względy higieniczne (przepis z ustawy).
CUSTOM_ITEM kupuje rzecz nieprefabrykowaną, wyprodukowaną według jego specyfikacji lub służącą zaspokojeniu jego zindywidualizowanych potrzeb (przepis z ustawy).
SHORT_SHELF_LIFE kupuje rzecz ulegającą szybkiemu zepsuciu lub mającą krótki termin przydatności do użycia (przepis z ustawy).
INSEPARABLY_LINKED dostarczony Towar ze względu na swój charakter został nierozłącznie połączony z innymi rzeczami (przepis z ustawy).
ALCOHOL kupuje napój alkoholowy, którego dostarczenie może nastąpić dopiero po upływie 30 dni i którego wartość zależy od wahań na rynku, nad którymi sprzedający nie ma kontroli (przepis z ustawy).
PRESS kupuje dzienniki, periodyki lub czasopisma (przepis z ustawy).
FULLY_IMPLEMENTED_SERVICE oferowana usługa została już wykonana w całości, za wyraźną zgodą kupującego poinformowanego uprzednio przez sprzedającego o utracie prawa odstąpienia od umowy (przepis z ustawy).
MEDICINAL_PRODUCT kupuje produkt leczniczy w rozumieniu prawa farmaceutycznego - wydawany bez przepisu lekarza (przepis z ustawy).
BOOKED_SERVICE kupuje świadczenie usług w zakresie zakwaterowania do celów innych niż mieszkalnych, przewozu rzeczy, najmu samochodów, gastronomii, usług związanych z wypoczynkiem, wydarzeniami rozrywkowymi, sportowymi lub kulturalnymi, jeżeli w umowie oznaczono dzień lub okres świadczenia usługi (przepis z ustawy).
NOT_RECORDED_DIGITAL_CONTENT dostarczane mu są treści cyfrowe, które nie są zapisane na nośniku materialnym, jeżeli spełnianie świadczenia rozpoczęło się za wyraźną zgodą konsumenta przed upływem terminu do odstąpienia od umowy i po poinformowaniu go przez sprzedającego o utracie prawa odstąpienia od umowy (przepis z ustawy).
  • withdrawalPeriod - wymagane, jeśli w polu availability.range wybrałeś wartość FULL. Czas na odstąpienie umowy w formacie ISO 8601. Jako wartość możesz przekazać tylko dni, np. “P14D”,
  • returnCost.coveredBy - wymagane, jeśli w polu availability.range wybrałeś wartość FULL. Informacja o tym, kto pokrywa koszt przesyłki zwrotnej. Dostępne wartości to SELLER lub BUYER,
  • address - wymagane, adres do zwrotów,
  • description - niewymagane, dodatkowe informacje, które chcesz przekazać. Możesz także skorzystać z tagów HTML: <p>, <b>, <ul>, <ol>, <li>. Inne znaczniki zignorujemy.

Kliknij, żeby zobaczyć przykładowy request:
  curl -X POST \
  'https://api.allegro.pl/after-sales-service-conditions/return-policies' \
  -H 'Authorization: Bearer {token}' \
  -H 'Accept: application/vnd.allegro.public.v1+json' \
  -H 'Content-Type: application/vnd.allegro.public.v1+json'
  -d ‘{
    "name": "Główne warunki zwrotu",            -- wymagane, nazwa warunków zwrotu
    "availability": {                           -- wymagane, informacje o
                                                możliwości odstąpienia od
                                                umowy przez kupującego
        "range": "RESTRICTED",
        "restrictionCause": {                   -- wymagane, jeśli wybrałeś RESTRICTED
            "name": "NOT_RECORDED_DIGITAL_CONTENT"
        }
    },
    "withdrawalPeriod": "P30D",                 -- wymagane, czas na
                                                odstąpienie umowy
    "returnCost": {
        "coveredBy": "BUYER"                    -- wymagane, informacja o
                                                tym, kto pokrywa koszty
                                                przesyłki zwrotnej
    },
    "address": {                                -- wymagane, adres do
                                                zwrotów
        "name": "Testowa",
        "street": "100",
        "postCode": "61-132",
        "city": "Poznań",
        "countryCode": "PL"
    },
    "description":                              -- niewymagane, dodatkowe
                                                informacje
  "<p>Czy mogę dokonać zwrotu produktu / odstąpić od umowy?
  <b>Tak, jeżeli kupiłeś produkt jako konsument&#xa0;</b></p>
  <p>Ile mam czasu na zwrot produktu? 30 dni od dnia otrzymania przesyłki</b></p>"
  }’
Kliknij, żeby zobaczyć przykładowy response:
 {
    "id": "a1552d88-2536-4fb3-8aea-7394266a4ea4",
    "seller": {
        "id": "6273997540"
    },
    "name": "Główne warunki zwrotów",
    "availability": {
        "range": "RESTRICTED",
        "restrictionCause": {
            "name": "NOT_RECORDED_DIGITAL_CONTENT",
            "description": "Prawo odstąpienia od umowy bez podania przyczyny nie przysługuje konsumentowi w przypadku, gdy dostarczane mu są treści cyfrowe, które nie są zapisane na nośniku materialnym, jeżeli spełnianie świadczenia rozpoczęło się za wyraźną zgodą konsumenta przed upływem terminu do odstąpienia od umowy i po poinformowaniu go przez sprzedającego o utracie prawa odstąpienia od umowy (<a href=\"https://allegro.pl/pomoc/faq/tresci-cyfrowe-eyD2m0RA3Im\" target=\"_blank\">przepis z ustawy</a>)."
        }
    },
    "withdrawalPeriod": "P30D",
    "returnCost": {
        "coveredBy": "BUYER"
    },
    "attachment": {                             -- ustawowy wzór odstąpienia od umowy,
                                                dodajemy automatycznie do każdego
                                                requestu
        "id": "d7be84bc-5408-42d2-8d0d-acf3ea02feba",
        "name": "Przykładowy formularz odstąpienia od umów.pdf",
        "url": "https://after-sales.allegrostatic.com/after-sales-service-d2/d7be84bc-5408-42d2-8d0d-acf3ea02feba"
    },
    "address": {
        "name": "Testowa",
        "street": "100",
        "postCode": "61-132",
        "city": "Poznań",
        "countryCode": "PL"
    },
    "description": "<p>Czy mogę dokonać zwrotu produktu / odstąpić od umowy? <b>Tak, jeżeli kupiłeś produkt jako konsument</b></p><p>Ile mam czasu na zwrot produktu?30 dni od dnia otrzymania przesyłki</p>"
}

Jak pobrać warunki zwrotów przypisane do konta

Za pomocą GET /after-sales-service-conditions/return-policies?seller.id={seller.id} pobierzesz warunki zwrotów przypisane do zautoryzowanego konta. W odpowiedzi otrzymasz listę 60 warunków, która zawiera informacje o identyfikatorze oraz nazwie warunku. Możesz ją dostosować do własnych potrzeb za pomocą filtrów:

  • limit - liczba wyników w odpowiedzi. Domyślna i maksymalna wartość to 60,
  • offset - miejsce, od którego chcesz pobrać następną porcję danych.

Jeżeli chcesz pobrać szczegóły warunków zwrotu, przekaż ich identyfikator za pomocą GET /after-sales-service-conditions/return-policies/{returnPolicyId}.

Przykladowy request:

  curl -X GET \
  'https://api.allegro.pl/after-sales-service-conditions/return-policies/bbbc9778-54f1-4dff-a9d4-c9067554390d' \
  -H 'Authorization: Bearer {token}' \
  -H 'Accept: application/vnd.allegro.public.v1+json' \
  -H 'Content-Type: application/vnd.allegro.public.v1+json' \
Kliknij, żeby zobaczyć przykładowy response:
 {
    "id": "a26da092-0e33-4b71-8a4a-e42592bad96a",
    "seller": {
        "id": "6279469754"
    },
    "name": "Ograniczone warunki zwrotów ",
    "availability": {
        "range": "RESTRICTED",
        "restrictionCause": {
            "name": "SEALED_ITEM_NO_RETURN_DUE_HEALTH_OR_HYGIENE",
            "description": "Prawo odstąpienia od umowy bez podania przyczyny nie przysługuje konsumentowi w przypadku, gdy kupujący otworzył zapieczętowane opakowanie towaru, którego po otwarciu nie można zwrócić ze względu na ochronę zdrowia lub względy higieniczne (<a href=\"https://allegro.pl/pomoc/faq/przedmioty-dostarczane-w-zapieczetowanym-opakowaniu-EYy4Vzom2uG\" target=\"_blank\">przepis z ustawy</a>)."
        }
    },
    "withdrawalPeriod": "P30D",
    "returnCost": {
        "coveredBy": "SELLER"
    },
    "attachment": {
        "id": "d7be84bc-5408-42d2-8d0d-acf3ea02feba",
        "name": "Przykładowy formularz odstąpienia od umów.pdf",
        "url": "https://after-sales.allegrostatic.com/after-sales-service-d2/d7be84bc-5408-42d2-8d0d-acf3ea02feba"
    },
    "address": {
        "name": "test",
        "street": "test",
        "postCode": "11-111",
        "city": "testowo",
        "countryCode": "PL"
    },
    "description": "<p><b>Dodatkowe informacje</b></p><p>A. ODSTĄPIENIE OD UMOWY czas na zwrot: 30 dni koszt zwrotu: bezpłatny formularz zwrotu: na.allegro.pl/zwroty (najszybszy sposób) adres do zwrotu: Prologis Park Błonie, DC 6, Kopytów 44, 05-870 Błonie, Polska</p>"
}

Jak edytować informacje o warunkach zwrotu

Aby edytować informacje o warunkach zwrotu:

Kliknij, żeby zobaczyć przykładowy request:
 curl -X PUT \
'https://api.allegro.pl/after-sales-service-conditions/return-policies/bbbc9778-54f1-4dff-a9d4-c9067554390d' \
  -H 'Authorization: Bearer {token}' \
  -H 'Accept: application/vnd.allegro.public.v1+json' \
  -H 'Content-Type: application/vnd.allegro.public.v1+json' \
  -d ‘{
    "id": "bbbc9778-54f1-4dff-a9d4-c9067554390d",
    "seller": {
        "id": "6275799754"
    },
    "name": "Główne warunki zwrotów",
    "availability": {
        "range": "FULL",
        "restrictionCause": null
    },
    "withdrawalPeriod": "P30D",
    "returnCost": {
        "coveredBy": "SELLER"
    },
    "attachment": {                                     -- ustawowy wzór odstąpienia od
                                                        umowy, dodajemy automatycznie do
                                                        każdego requestu. Nie możesz
                                                        zmienić tego pola.
        "id": "d7be84bc-5408-42d2-8d0d-acf3ea02feba",
        "name": "Przykładowy formularz odstąpienia od umów.pdf",
        "url": "https://after-sales.allegrostatic.com/after-sales-service-d2/d7be84bc-5408-42d2-8x0d-acf3ea02feba"
    },
    "address": {
        "name": "dluga ",
        "street": "100",
        "postCode": "61-132",
        "city": "Poznań",
        "countryCode": "PL"
    },
    "description": "<p>Czy mogę dokonać zwrotu produktu / odstąpić od umowy?
    <b>Tak, jeżeli kupiłeś produkt jako konsument</b></p>
    <p>Ile mam czasu na zwrot produktu? <b>30 dni od dnia otrzymania przesyłki</b></p>"
}’

Warunki reklamacji

Jak dodać informacje o warunkach reklamacji

Skorzystaj z POST /after-sales-service-conditions/implied-warranties, aby dodać nowe warunki zwrotów. W strukturze żądania przekaż pola:

  • name - wymagane, nazwa dla warunków reklamacji,
  • individual.period - wymagane, czas na reklamację w formacie ISO 8601 z tytułu rękojmi. Jako wartość możesz wskazać tylko lata, np. “P3Y” oznacza 3 lata,
  • corporate.period - niewymagane, czas na reklamację w formacie ISO 8601 z tytułu rękojmi dla przedsiębiorców. Jeżeli chcesz ją wyłączyć, nie przekazuj tego pola lub przekaż wartość null,
  • address - wymagane, adres do reklamacji,
  • description - niewymagane, opis reklamacji. Możesz także skorzystać z tagów HTML: <p>, <b>, <ul>, <ol>, <li>. Inne znaczniki zostaną zignorowane.

Kliknij, żeby zobaczyć przykładowy request:
  curl -X POST \
  'https://api.allegro.pl/after-sales-service-conditions/implied-warranties' \
  -H 'Authorization: Bearer {token}' \
  -H 'Accept: application/vnd.allegro.public.v1+json' \
  -H 'Content-Type: application/vnd.allegro.public.v1+json' \
  -d’{
    "name": "Główne warunki reklamacji",    -- wymagane, nazwa warunków
                                            reklamacji
    "individual": {
        "period": "P1Y"                     -- wymagane, czas na reklamację z
                                            tytułu rękojmi
    },
    "corporate": {                          -- niewymagane, czas na reklamację
                                            z tytułu rękojmi dla przedsiębiorców.
                                            Jeżeli chcesz ją wyłączyć, przekaż
                                            wartość null.
        "period": "P1Y"
    },
    "address": {                            -- wymagane, adres do reklamacji
        "name": "test",
        "street": "ul. Testowa 7",
        "postCode": "61-135",
        "city": "Poznań",
        "countryCode": "PL"
    },
    "description":                          -- niewymagane, opis procedury
                                            reklamacji
“<p>Co musi zawierać reklamacja? Reklamacja powinna zawierać:</p>
<ul><li>Twoje imię i nazwisko oraz adres</li>
<li>numer oferty na Allegro</li><li>numer zamówienia</li>
<li>przedmiot reklamacji</li>
<li>Twoje oczekiwania: wymiana towaru na nowy, naprawa,
obniżenie ceny lub odstąpienie od umowy (zwrot pieniędzy)</li></ul>”
}’
Kliknij, żeby zobaczyć przykładowy response:
 {
    "id": "1556c6f7-c6a9-469e-9b3f-8f01eafaedc4",
    "seller": {
        "id": "62799754"
    },
    "name": "Główne warunki reklamacji",
    "individual": {
        "period": "P1Y"
    },
    "corporate": {
        "period": "P1Y"
    },
    "address": {
        "name": "test",
        "street": "ul. Testowa 7",
        "postCode": "61-135",
        "city": "Poznań",
        "countryCode": "PL"
    },
    "description": “<p>Co musi zawierać reklamacja? Reklamacja powinna zawierać:</p>
 <ul><li>Twoje imię i nazwisko oraz adres</li>
 <li>numer oferty na Allegro</li><li>numer zamówienia SO</li>
 <li>przedmiot reklamacji</li><li>Twoje oczekiwania: wymiana towaru na nowy,
 naprawa, obniżenie ceny lub odstąpienie od umowy (zwrot pieniędzy)</li></ul>”
 }

Jak pobrać warunki reklamacji przypisane do konta

Za pomocą GET /after-sales-service-conditions/implied-warranties?seller.id={seller.id} pobierzesz warunki reklamacji przypisane do zautoryzowanego konta. W odpowiedzi otrzymasz listę 60 warunków, która zawiera informacje o identyfikatorze oraz nazwie warunku. Możesz ją dostosować do własnych potrzeb za pomocą filtrów:

  • limit - liczba wyników w odpowiedzi. Domyślna i maksymalna wartość to 60,
  • offset - miejsce, od którego chcesz pobrać następną porcję danych.

Jeżeli chcesz pobrać szczegóły warunków reklamacji, przekaż ich identyfikator za pomocą GET /after-sales-service-conditions/implied-warranties/{impliedWarrantyId}.

Przykladowy request:

  curl -X GET \
  'https://api.allegro.pl/after-sales-service-conditions/implied-warranties/bbb2458-54f1-4dff-a9d4-c9067554390d' \
  -H 'Authorization: Bearer {token}' \
  -H 'Accept: application/vnd.allegro.public.v1+json' \
  -H 'Content-Type: application/vnd.allegro.public.v1+json' \
Kliknij, żeby zobaczyć przykładowy response:
 {
    "id": bbb2458-54f1-4dff-a9d4-c9067554390d",
    "seller": {
        "id": "627909754"
    },
    "name": "Główne warunki reklamacji",
    "individual": {
        "period": "P6Y"
    },
    "corporate": {
        "period": "P6Y"
    },
    "address": {
        "name": "test",
        "street": "ul. Testowa 7",
        "postCode": "61-135",
        "city": "Poznań",
        "countryCode": "PL"
    },
    "description": “<p>Co musi zawierać reklamacja? Reklamacja powinna zawierać:</p>
  <ul><li>Twoje imię i nazwisko oraz adres</li>
  <li>numer oferty na Allegro</li>
  <li>numer zamówienia SO</li><li>przedmiot reklamacji</li>
  <li>Twoje oczekiwania: wymiana towaru na nowy, naprawa,
  obniżenie ceny lub odstąpienie od umowy (zwrot pieniędzy)</li></ul>””
 }

Jak edytować informacje o warunkach reklamacji

Aby edytować informacje o warunkach zwrotu:

Kliknij, żeby zobaczyć przykładowy request:
 curl -X PUT \
'https://api.allegro.pl/after-sales-service-conditions/implied-warranties/bbbc9778-54f1-4dff-a9d4-c9067554390d' \
  -H 'Authorization: Bearer {token}' \
  -H 'Accept: application/vnd.allegro.public.v1+json' \
  -H 'Content-Type: application/vnd.allegro.public.v1+json' \
  -d ‘{
    "id": "1556c6f7-c6a9-469e-9b3f-8f01eafaedc4",
    "seller": {
        "id": "279934754"
    },
    "name": "Główne warunki reklamacji",
    "individual": {
        "period": "P1Y"
    },
    "corporate": null,
    "address": {
        "name": "test",
        "street": "ul. Testowa 7",
        "postCode": "61-135",
        "city": "Poznań",
        "countryCode": "PL"
    },
    "description": “<p>Co musi zawierać reklamacja? Reklamacja powinna zawierać:</p>
  <ul><li>Twoje imię i nazwisko oraz adres</li>
  <li>numer oferty na Allegro</li><li>numer zamówienia SO</li>
  <li>przedmiot reklamacji</li><li>Twoje oczekiwania: wymiana towaru na nowy,
  naprawa, obniżenie ceny lub odstąpienie od umowy (zwrot pieniędzy)</li></ul>””
 }’

Informacje o gwarancjach

Jak dodać załącznik do informacji o gwarancjach

Utwórz obiekt załącznika za pomocą POST /after-sales-service-conditions/attachments. W strukturze przekaż nazwę pliku w formacie .pdf.

Przykładowy request:

  curl -X POST \
  'https://api.allegro.pl/after-sales-service-conditions/attachments' \
  -H 'Authorization: Bearer {token}' \
  -H 'Accept: application/vnd.allegro.public.v1+json' \
  -H 'Content-Type: application/vnd.allegro.public.v1+json' \
  -d’
  {
	“name”: “warranty.pdf” 				-- nazwa pliku, który chcesz
										załączyć
  }’
Przykładowy response:
  {
    "id": "7c8f40bc-3e50-408b-a66b-48122e05d84e",
    "name": "warranty.pdf",
    "url": null
  }

Teraz użyj PUT /after-sales-service-conditions/attachments/{attachmentId} - jako attachmentId przekaż wartość id, którą otrzymałeś krok wcześniej. Pamiętaj, aby użyć adresu, który zwróciliśmy w nagłówku location.

Przykładowy request:

  curl -X PUT \
  'https://upload.allegro.pl/after-sales-service-conditions/attachments/7c8f40bc-3e50-408b-a66b-48122e05d84e' \
  -H 'Authorization: Bearer {token}' \
  -H 'Accept: application/vnd.allegro.public.v1+json'
  -H ‘Content-Type: application/pdf’
  --data-binary "@warranty.pdf"                                -- wymagany, zawartość pliku z
                                                               załącznikiem w postaci binarnej
Przykładowy response:
  {
    "id": "7c8f40bc-3e50-408b-a66b-48122e05d84e",
    "name": "warranty.pdf",
    "url": "https://after-sales.allegrostatic.com/after-sales-service-5c/7c8f40bc-3e50-408b-a66b-48122e05d84e"
 }

Obiekt, który otrzymałeś, możesz dodać do informacji o gwarancjach w polu attachment. W dalszej części poradnika opisujemy ten proces.

Jak dodać informacje o gwarancjach

Skorzystaj z POST /after-sales-service-conditions/warranties, aby dodać nowe informacje o gwarancjach. W strukturze żądania przekaż pola:

  • name - wymagane, nazwa dla informacji o gwarancji,
  • type - wymagane, rodzaj gwarancji, dostępne wartości to MANUFACTURER (od producenta/dystrybutora) lub SELLER (od sprzedawcy),
  • individual.period - wymagane, okres gwarancji w formacie ISO 8601. Jako wartość możesz wskazać tylko miesiące, np. “P12M”, co oznacza 12 miesięcy. Jeżeli chcesz wskazać dożywotnią gwarancję, pozostaw to miejsce puste, a w polu individual.lifetime przekaż wartość true,
  • corporate.period - niewymagane, okres gwarancji w formacie ISO 8601 dla przedsiębiorców. Jako wartość możesz wskazać tylko miesiące, np. “P12M” oznacza 12 miesięcy. Jeżeli chcesz wskazać dożywotnią gwarancję, pozostaw to miejsce puste, a w polu individual.lifetime przekaż wartość true,
  • attachment - niewymagane, załącznik do gwarancji,
  • description - niewymagane, informacje dodatkowe np. gdzie szukać informacji, z kim i jak ma się kontaktować, jakie dokumenty będą potrzebne itp.

Kliknij, żeby zobaczyć przykładowy request:
  curl -X POST \
  'https://api.allegro.pl/after-sales-service-conditions/warranties' \
  -H 'Authorization: Bearer {token}' \
  -H 'Accept: application/vnd.allegro.public.v1+json' \
  -H 'Content-Type: application/vnd.allegro.public.v1+json' \
  -d ‘{
  "name": "12 miesięcy",                    -- wymagane, nazwa informacji o
                                            gwarancjach
  "type": "MANUFACTURER",                   -- wymagane, rodzaj gwarancji
  "individual": {
    "period": "P12M",                       -- wymagane, okres gwarancji
    "lifetime": false                       -- niewymagane, czy gwarancja jest
                                            dożywotnia,
  },
  "corporate": {                            -- niewymagane, okres gwarancji dla
                                            przedsiębiorców
    "period": "P12M",
    "lifetime": false
  },
  "attachment": {                           -- niewymagane, informacje o
                                            załączniku
    "id": "54702c96-4ccd-4c0e-b4c7-382a71e810b5",
    "name": "warranty.pdf",
    "url": "https://after-sales.allegrostatic.com/after-sales-service-5c/7c8f40bc-3e50-408x-a66b-48122e05d84e"
}
  },
  "description":                            -- niewymagane, informacje
                                            dodatkowe
  "<p>Gwarancja producenta na 12 miesięcy</p>"
}’
Kliknij, żeby zobaczyć przykładowy response:
  {
    "id": "bce9e4ad-4e06-4478-8038-04f3cbed73f4",
    "seller": {
        "id": "6279923754"
    },
    "name": "12 miesięcy",
    "type": "MANUFACTURER",
    "individual": {
        "period": "P12M",
        "lifetime": false
    },
    "corporate": {
        "period": "P12M",
        "lifetime": false
    },
    "attachment": {
        "id": "54702c96-4ccd-4c0e-b4c7-382a71e810b5",
        "name": "warranty.pdf",
        "url": "https://after-sales.allegrostatic.com/after-sales-service-00/54702c96-4ccd-4c0e-b4c7-382a71e810b5"
    },
    "description": "<p>Gwarancja producenta na 12 miesięcy</p>"
  }

Jak pobrać informacje o gwarancjach przypisanych do konta

Za pomocą GET /after-sales-service-conditions/warranties?seller.id={seller.id} pobierzesz informacje o gwarancjach przypisanych do zautoryzowanego konta. W odpowiedzi otrzymasz listę 60 gwarancji, która zawiera informacje o identyfikatorze oraz nazwie warunków. Możesz ją dostosować do własnych potrzeb za pomocą filtrów:

  • limit - liczba wyników w odpowiedzi. Domyślna i maksymalna wartość to 60,
  • offset - miejsce, od którego chcesz pobrać następną porcję danych.

Jeżeli chcesz pobrać szczegóły informacji o gwarancji, przekaż ich identyfikator za pomocą GET /after-sales-service-conditions/warranties/{warrantyId}.

Przykładowy request:

  curl -X GET \
  'https://api.allegro.pl/after-sales-service-conditions/warranties/bbb2458-54f1-4dff-a9d4-c9067554390d' \
  -H 'Authorization: Bearer {token}' \
  -H 'Accept: application/vnd.allegro.public.v1+json' \
  -H 'Content-Type: application/vnd.allegro.public.v1+json' \
Kliknij, żeby zobaczyć przykładowy response:
  {
    "id": "bbb2458-54f1-4dff-a9d4-c9067554390d",
    "seller": {
        "id": "627120754"
    },
    "name": "default",
    "type": "MANUFACTURER",
    "individual": {
        "period": null,
        "lifetime": true
    },
    "corporate": {
        "period": null,
        "lifetime": true
    },
    "attachment": {
        "id": "564c8680-505c-4d34-a6d3-bd8e4d20b49d",
        "name": "uploaded_file.pdf",
        "url": "https://after-sales.allegrostatic.com/after-sales-service-b5/564c8680-505c-4d34-a6d3-bd8e4d20b49d"
    },
    "description": null,
}

Jak edytować informacje o gwarancjach

Aby edytować informacje o gwarancjach:

Kliknij, żeby zobaczyć przykładowy request:
  curl -X PUT \
  'https://api.allegro.pl/after-sales-service-conditions/warranties/bbbc9712-54f1-4dff-a9d4-c9067554390d' \
  -H 'Authorization: Bearer {token}' \
  -H 'Accept: application/vnd.allegro.public.v1+json' \
  -H 'Content-Type: application/vnd.allegro.public.v1+json' \
  -d ‘{
    "id": "62c9bede-82be-4d17-831d-af66270d1ade",
    "seller": {
        "id": "62799754"
    },
    "name": "default",
    "type": "MANUFACTURER",
    "individual": {
        "period": null,
        "lifetime": true
    },
    "corporate": {
        "period": null,
        "lifetime": true
    },
    "attachment": {
        "id": "564c8680-505c-4d34-a6d3-bd8e4d20b49d",
        "name": "uploaded_file.pdf",
        "url": "https://after-sales.allegrostatic.com/after-sales-service-b5/564c8680-505c-4d34-a6d3-bd8e4d20b49d"
    },
    "description": null,
}’

Usługi dodatkowe

Identyfikatory usług dodatkowych pobierzesz przy pomocy GET /sale/offer-additional-services/groups?user.id={Seller_ID}.

Tabele rozmiarów

Identyfikatory tabeli rozmiarów wraz z ich zawartością pobierzesz przy pomocy zasobów:

Więcej informacji na temat Tabel rozmiarów w REST API znajdziesz w naszym newsie.

Dane kontaktowe

Pobierzesz je przy pomocy GET /sale/offer-contacts?seller.id={Seller_ID}.

2. Kategorie i parametry

Skorzystaj z poniższych zasobów, by pobrać identyfikator wybranej kategorii i parametry, jakie powinieneś uzupełnić:

Identyfikator kategorii

Dzięki GET /sale/categories?parent.id={categoryId} pobierzesz listę kategorii, które należą do podanej kategorii nadrzędnej.

Ważne!

  • Jeśli wywołasz GET /sale/categories bez podania kategorii, wówczas otrzymasz identyfikatory głównych kategorii na Allegro. Takie identyfikatory możesz następnie użyć w wywołaniu zasobu, aby dotrzeć do interesującej kategorii najniższego rzędu.

  • Pamiętaj, że ofertę wystawisz tylko w kategorii najniższego rzędu, która jest oznaczona “leaf”: true.

  • Zadbaj o powiązanie oferty z produktem. Opcja ta jest dostępna w wybranych kategoriach, w których grupujemy oferty z tym samym produktem. Tylko w nich otrzymasz dane o produktach. Kategorie te oznaczyliśmy “offersWithProductPublicationEnabled”: true.

Przykładowy request

  curl -X GET \
    'https://api.allegro.pl/sale/categories?parent.id={categoryId}
    -H 'Accept: application/vnd.allegro.public.v1+json' \
	-H 'Accept-Language: pl-PL' \
    -H 'Authorization: Bearer {token}'
Kliknij, żeby zobaczyć przykładowy response:
{
 "categories":[
  {
   "id": "348",                                 -- identyfikator kategorii
   "name": "Akcesoria GSM",                     -- nazwa kategorii
   "parent": {                                  -- identyfikator kategorii nadrzędnej
    "id": "4"                                   dla kategorii głównych parent, ma wartość null
   },
   "leaf": false,                               -- czy dana kategoria jest
                                                kategorią najniższego rzędu, dostępne są
                                                dwie wartości true (jest liściem)
                                                i false (nie jest liściem)
   "options": {                                 -- cechy kategorii
    "advertisement": false,                     -- informacja, czy w danej kategorii
                                                lub jej podkategoriach można wystawić ofertę
                                                ogłoszeniową.
    "advertisementPriceOptional": false,        -- czy w danej
                                                kategorii ogłoszeniowej cena oferty jest
                                                opcjonalna. Dostępne są dwie wartości:
                                                true (cenę można pominąć),
                                                false (cena oferty musi być podana).
    "offersWithProductPublicationEnabled": true, -- czy w danej w danej kategorii możesz
                                                wiązać ofertę z produktem. Więcej na ten temat
                                                znajdziesz w poradniku - Jak powiązać ofertę
                                                z produktem.
    "productCreationEnabled": false,                -- czy w danej kategorii możesz
                                                utworzyć produkt. Więcej na ten temat
                                                znajdziesz w poradniku - Jak powiązać ofertę
                                                z produktem.
    "productEANRequired": false                 -- czy w danej kategorii, podczas tworzenia
                                                produktu, musisz podać przynajmniej jeden
                                                numer EAN. Więcej na ten temat
                                                znajdziesz w poradniku - Jak powiązać ofertę
                                                z produktem.
    }
}]
}

Parametry

Dostępne parametry dla danej kategorii pobierzesz przy pomocy GET /sale/categories/{categoryId}/parameters.

Tym zasobem pobierzesz listy parametrów, które są dostępne w kategorii, którą wskazałeś. Każdorazowo zwracamy listę parametrów, które możesz ustawić w kategorii jaką podałeś na wejściu.

Przykładowy request:

  curl -X GET \
    'https://api.allegro.pl/sale/categories/{catId}/parameters
    -H 'Accept: application/vnd.allegro.public.v1+json' \
	-H 'Accept-Language: pl-PL' \
    -H 'Authorization: Bearer {token}' \
Kliknij, żeby zobaczyć przykładowy response:
  {
    "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,
        "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
        },
        "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,
        "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,
        "options": {
            "variantsAllowed": false,
            "variantsEqual": false
            "ambiguousValueId": "216917_41" -- id wartości niejednoznacznej, np.
                                            "inna", "pozostałe", etc.
            "dependsOnParameterId": null
        },
        "restrictions": {
            "minLength": 1,
            "maxLength": 40,
            "allowedNumberOfValues": 10     -- informacja o tym, ile wartości możesz
                                            podać w danym parametrze
        }
    }
    ]
  }

Ważne! Parametry pobieraj, sprawdzaj i aktualizuj, w szczególności te słownikowe, bo mogą zmieniać się ich wartości.

Dla metod PUT i POST podaj identyfikatory, a nie wartości parametru. Przykład poprawnej struktury parametrów podczas wystawiania oferty w zależności od jego 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
    	}

Własna wartość parametru

Jeżeli nie znajdziesz odpowiedniej wartości parametru, w wybranych kategoriach możesz zdefiniować własną wartość dla parametru z wartością niejednoznaczną. 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ść, sprawdź wartość pola ambiguousValueId w wybranej kategorii za pomocą GET /sale/categories/{categoryId}/parameters:

 
  {
    "parameters": [
      {
        "id": "129033",
        "name": "Marka",
        "type": “dictionary”,
        "required":true,
        "unit": null,
        "options": {
            "variantsAllowed": false,
            "variantsEqual": false,
            "ambiguousValueId": "129033_13"      	-- id wartości niejednoznacznej,
                                                    w tym przypadku jest to wartość “inna”
        },
        ...
   }
 

Następnie, 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
  }
 

Własną wartość parametru niejednoznacznego możesz dodać tylko w wybranych kategoriach.

3. Zdjęcia

Przy pomocy POST /sale/images prześlesz zdjęcie na nasze serwery po protokole HTTP i HTTPS (tylko z ważnym certyfiaktem). W odpowiedzi otrzymasz link do grafiki, którą dodałeś. Ważne! Informacje odnośnie zasad dla zdjęć w galerii i opisie znajdziesz tutaj. Możesz przesłać zdjęcie na dwa sposoby:

  • w postaci linku UWAGA! Pamiętaj aby podać adres domeny, nie podawaj adresu IP.
      curl -X POST \
        https://upload.allegro.pl/sale/images \
        -H 'Authorization: Bearer {token}' \
        -H 'Accept: application/vnd.allegro.public.v1+json' \
        -H 'Content-Type: application/vnd.allegro.public.v1+json' \
        -d '{
             "url":"https://imgur.com/1aOIvg3E.jpg"       -- wymagane, link do obrazka
            }'

  • w postaci binarnej
      curl -X POST \
        'https://upload.allegro.pl/sale/images
        -H 'Authorization: Bearer {token}' \
        -H 'Accept: application/vnd.allegro.public.v1+json' \
        -H 'Content-Type: "image/jpeg", "image/png"' \
        -H 'Accept-Language: pl-PL', (albo en-EN) \
        --data-binary "@file_to_upload.png"				-- wymagane, zawartość pliku z
    													obrazkiem w postaci binarnej

Przykładowy response:

  • 401 - unauthorized

  • 413 - za duży obrazek

  • 415 - nieodpowiedni typ obrazka

  • 201 - poprawnie dodany obrazek, response body:

	{
    	"expiresAt":"2018-04-06T16:38:04.930Z",			-- data, kiedy usuniemy grafikę z
														serwera. Nie usuniemy jej, jeśli
														wykorzystasz grafikę w ofercie.
    	"location":"https://1.allegroimg.com/original/110843/cd7d40b84968ab8d79ab8a2e47a1"
														-- link do zdjęcia, które przesłałeś
	}

4. Tytuł oferty

Dopuszczamy maksymalnie 50 znaków w tytule oferty. 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','…','–','°','°'
Ważne! 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.

5. Opis oferty

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.

  • możesz wykorzystać tylko zdjęcia z galerii w ofercie, które przesyłasz w tablicy images.

Sugerujemy, by pierwszy opis przygotować przez formularz wystawiania. Skorzystaj z wszystkich rodzajów sekcji i opcji formatowania i pobierz ofertę za pomocą GET /sale/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. structure

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

  1. 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"
    	}
     

  2. 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>"
    	}
     

  3. Możesz użyć pogrubienia < b > < /b > w znacznikach:

    • < p > < /p > - akapit
    • < ul > < /ul > - lista wypunktowana
    • < ol > < /ol > - lista numerowana
  4. 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ęcia

Możesz użyć tylko takich zdjęć, które wcześniej przesłałeś za pomocą POST /sale/images.

	{
    	"type": "IMAGE",
    	"url": "https://d.allegroimg.com/original/0313bd/338d11a74b059fea784beee0084d"
	}

Przykładowa struktura opisu

{
	[
		{
    		"sections": [{
        	"items": [{
            	"type": "TEXT",
            	"content": "<p>tekstowy opis przedmiotu</p>"
        	}]
    	}, {
        	"items": [{
            	"type": "IMAGE",
            	"url": "https://d.allegroimg.com/original/0313bd/338d11a74b059fea784beee0084d"
        	}]
    	}, {
        	"items": [{
            	"type": "TEXT",
            	"content": "<p>tekstowy opis przedmiotu</p>"
        	}, {
            	"type": "IMAGE",
            	"url": "https://f.allegroimg.com/original/037738/bc72c2f24784b50774d7d078c7ef"
        	}]
    	}, {
        	"items": [{
            	"type": "IMAGE",
            	"url": "https://0.allegroimg.com/original/032ac4/9c10035846bb970cf208f6982fc0"
        	}, {
            	"type": "IMAGE",
            	"url": "https://d.allegroimg.com/original/0313bd/338d11a74b059fea784beee0084d"
        	}]
    	}]
	}

6. Opcje dodatkowe

Dodaj tagi do oferty

Do swojej aktywnej oferty możesz także przypisać tagi ofertowe. Najpierw sprawdź, jakie tagi wcześniej utworzyłeś na swoim koncie. Pobierzesz je za pomocą GET /sale/offer-tags?user.id={sellerId}. Domyślnie otrzymasz pierwsze 1000 tagów, jakie masz przypisane do swojego konta. Możesz również pobrać listę tagów, która jest dostosowana do twoich potrzeb, używając parametrów:

  • offset - wskaż miejsce, od którego chcesz pobrać kolejną porcję danych (przyjmuje wartości z zakresu, jaki obejmuje typ danych integer). Domyślnie 0.
  • limit - określ liczbę tagów, jaką mamy zwrócić w odpowiedzi (przyjmuje wartości z zakresu, jaki obejmuje typ danych integer). Domyślnie 1000.

np. GET /sale/offer-tags?user.id={userId}&offset=0&limit=10 zwróci listę 10 tagów licząc od pierwszego.

Przykładowy request:

  curl -X GET \
    http://api.allegro.pl/sale/offer-tags?user.id={userId} \
    -H 'Accept: application/vnd.allegro.public.v1+json' \
    -H 'Authorization: Bearer {token}
Przykładowy response:
  {
    "tags": [
        {
            "id": "500fedd3-2140-4225-87d4-a22484222776",   -- identyfikator taga,
            "name": "Komiksy",                              -- nazwa taga,
            "hidden": false                                 -- czy tag jest ukryty,
															przyjmuje wartości false
															(tag jest widoczny) oraz
                                                            true (tag jest ukryty),
        },
        {
            "id": "d2d2d475-7049-493d-bb95-f4ea59983ecb",
            "name": "Filmy",
            "hidden": false
        },
        {
            "id": "4b876428-d827-492b-a30e-aee3f5be791a",
            "name": "Muzyka",
            "hidden": false
        }
    ]
  }

Teraz, gdy wiesz już jakich tagów możesz użyć, przypisz wybrane tagi do swojej oferty. Zrobisz to za pomocą POST sale/offers/{offerId}/tags.

Przykładowy request:

  curl -X POST \
    http://api.allegro.pl/sale/offers/{offerId}/tags \
    -H 'Content-Type: application/vnd.allegro.public.v1+json'
    -H 'Accept: application/vnd.allegro.public.v1+json' \
    -H 'Authorization: Bearer {token}' \
    -d '{
      "tags": [
        {
            "id": "500fedd3-2140-4225-87d4-a22484222776"   -- wymagany, identyfikator taga,
        }
    ]
  }'
Przykładowy response 200 - OK - poprawnie przypisane tagi
Uwaga! Każde kolejne przypisanie tagów do tej oferty nadpisuje poprzednie przypisania. Oznacza to, że jeśli chcesz usunąć przypisania tagów do oferty i nie dopisywać do niej nowych, wywołaj ten zasób i przekaż w body pustą strukturę tags.

	{
 		"tags":[]
 	}

Dodaj załączniki do oferty

Do ofert możesz dodawać załączniki w formacie *.pdf. Wyświetlimy je pod opisem oferty w sekcji Dodatkowe informacje. Załączników może być maksymalnie 7 - po jednym załączniku z listy:

  • Poradnik (MANUAL)

  • Regulamin promocji (SPECIAL_OFFER_RULES)

  • Regulamin konkursu (COMPETITION_RULES)

  • Fragment książki (BOOK_EXCERPT)

  • Instrukcję obsługi (USER_MANUAL)

  • Instrukcję montażu (INSTALLATION_INSTRUCTIONS)

  • Instrukcję gry (GAME_INSTRUCTIONS)

Jeśli chcesz dodać załącznik do oferty:

  1. Stwórz obiekt załącznika, dzięki czemu otrzymasz identyfikator załącznika oraz adres URL, na który wyślesz załącznik,
  2. Na ten URL prześlij plik *.pdf, który chcesz dodać do oferty,
  3. Przesłany załącznik podłącz do oferty.

Stwórz obiekt załącznika

Aby dodać załącznik, najpierw musisz stworzyć na swoim koncie obiekt załącznika. Zrobisz to za pomocą POST /sale/offer-attachments. Gdy utworzysz obiekt, będziesz miał:

  • identyfikator załącznika,

  • adres URL, za pomocą którego prześlesz plik na nasz serwer.

Przykładowy request:

  curl -X POST \
    https://api.allegro.pl/sale/offer-attachments \
    -H 'Accept: application/vnd.allegro.public.v1+json' \
    -H 'Content-Type: application/vnd.allegro.public.v1+json' \
    -H 'Authorization: Bearer {token}'
    -d '{
      "type": "SPECIAL_OFFER_RULES",                      -- wymagany, rodzaj załącznika,
                                                          dostępne wartości MANUAL,
                                                          SPECIAL_OFFER_RULES,
                                                          COMPETITION_RULES,
                                                          BOOK_EXCERPT, USER_MANUAL,
                                                          INSTALLATION_INSTRUCTIONS,
                                                          GAME_INSTRUCTIONS,
      "file": {
        "name": "abcde.pdf"                               -- wymagany, nazwa pliku, który dodasz,
    }
}'

Ważne! Adres URL, za pomocą którego prześlesz plik na nasz serwer, znajdziesz w nagłówku response. Adres ten jest jednorazowy i unikalny. Jego format może zmieniać się w czasie, dlatego za każdym razem korzystaj z adresu z nagłówka. Nie składaj samodzielnie adresu z dostępnych elementów.

Przykładowy response 201 - created - obiekt załącznika utworzony prawidłowo
Nagłówek response’a:

	Location: http://upload.allegro.pl/sale/offer-attachments/e9d1bf7c-804e-4faf-9e24-b2d3aa3eda05

Body response’a:

  {
    "id": "e9d1bf7c-804e-4faf-9e24-b2d3aa3eda05",              -- identyfikator draftu załącznika,
    "type": "SPECIAL_OFFER_RULES",                             -- rodzaj załącznika,
    "file": {
        "name": "abcde.pdf"                                    -- nazwa pliku, który dodasz,
    }
  }

Prześlij plik *.pdf

Teraz możesz przesłać załącznik na nasz serwer. Do tego celu użyj adresu, który otrzymałeś w nagłówku odpowiedzi (w polu Location) na poprzednie wywołanie.

Przykładowy request:

  curl -X PUT \
  http://upload.allegro.pl/sale/offer-attachments/{attachmentId} \
    -H 'Accept: application/vnd.allegro.public.v1+json' \
    -H 'Content-Type: application/pdf' \
    -H 'Authorization: Bearer {token}
    --data-binary "@abcde.pdf"                             -- wymagany, zawartość pliku z
                                                           załącznikiem w postaci binarnej

Przykładowy response:
  {
    "id": "07ee5e36-afc7-41eb-af49-3df5354ef858",          -- identyfikator draftu załącznika,
    "type": "SPECIAL_OFFER_RULES",                         -- rodzaj załącznika,
    "file":
        "name": "abcde.pdf",                               -- nazwa pliku, który dodasz,
        "url": {adres_pliku}                               -- adres, pod którym jest dostępny
                                                           załącznik.
    }
  }

Podłącz załącznik do oferty

Za pomocą PUT /sale/offers/{offerId} dodaj załącznik do oferty - dodaj jego identyfikator w strukturze attachments.

	"attachments": [
            {
                "id": "07ee5e36-afc7-41eb-af49-3df5354ef858"
            }
        ]

7. Draft oferty

Utworzysz go za pomocą POST /sale/offers. Musisz być uwierzytelnionym i zautoryzowanym użytkownikiem. Gdy utworzysz DRAFT oferty, możesz go później opublikować w serwisie. Możesz przesłać częściowe dane (przynajmniej tytuł) - taki DRAFT oferty uzupełnisz później o wszystkie wymagane pola za pomocą PUT /sale/offers/{offerId}. Jeśli prześlesz niekompletne dane, to w polu “validation” wyświetlimy:

  • co powinieneś uzupełnić

  • błędy, jakie pojawiły się w twojej ofercie.


information
  • 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 60 dni. Po tym okresie usuniemy taki draft. Jeśli zmienisz coś w nim, wydłużymy jego ważność o 60 dni.

Przykładowy request

  curl -X POST \
    'https://api.allegro.pl/sale/offers'
    -H 'Authorization: Bearer {token}' \
    -H 'Accept: application/vnd.allegro.public.v1+json' \
    -H 'Content-Type: application/vnd.allegro.public.v1+json' \
    -d '{
      "name": "Oferta testowa"                        -- wymagane, tytuł oferty
  }

Kliknij, żeby zobaczyć przykładowy response:
{
    "id": "7276377308",
    "name": "Oferta testowa",
    "category": null,
    "parameters": [],
    "ean": null,
    "description": null,
    "images": null,
    "sellingMode": null,
    "stock": null,
    "publication": {
        "republish": null,
        "duration": null,
        "status": "INACTIVE",
        "startingAt": null,                         -- wartość w odpowiedzi
                                                    zawsze przyjmuje null,
        "endingAt": null
    },
    "delivery": null,
    "payments": {
        "invoice": "NO_INVOICE"
    },
    "afterSalesServices": null,
    "additionalServices": null,
    "sizeTable": null,
    "promotion": null,
    "location": null,
    "external": null,
    "attachments": [],
    "contact": null,
    "validation": {
        "errors": [
            {
                "code": "VALIDATION_ERROR",
                "message": "Location may not be empty.",
                "details": "",
                "path": "",
                "userMessage": "Location may not be empty."
            },
            {
                "code": "VALIDATION_ERROR",
                "message": "Payments may not be empty.",
                "details": "",
                "path": "",
                "userMessage": "Payments may not be empty."
            },
            {
                "code": "VALIDATION_ERROR",
                "message": "New offer description is required.",
                "details": "",
                "path": "",
                "userMessage": "New offer description is required."
            },
            {
                "code": "VALIDATION_ERROR",
                "message": "You must select at least one selling mode and provide the required prices.",
                "details": "",
                "path": "",
                "userMessage": "You must select at least one selling mode and provide the required prices."
            },
            {
                "code": "VALIDATION_ERROR",
                "message": "Category may not be empty.",
                "details": "",
                "path": "",
                "userMessage": "Category may not be empty."
            },
            {
                "code": "VALIDATION_ERROR",
                "message": "Describe your offer.",
                "details": "",
                "path": "",
                "userMessage": "Describe your offer."
            }
        ],
        "validatedAt": "2018-04-06T09:29:47.544Z"
    },
    "createdAt": "2018-04-06T09:29:47Z",
    "updatedAt": "2018-04-06T09:29:47.544Z"
}

8. Dane w ofercie

Wykorzystaj PUT /sale/offers/{offerId}, aby uzupełnić dane w drafcie oferty. Jeśli chcesz wystawić ofertę i opublikować draft, prześlij kompletny zestaw informacji. Jeśli prześlesz niekompletne dane, to w polu validation wyświetli błędy logiczne, które blokują wystawienie oferty, np. nie podałeś kwoty minimalnej dla licytacji. Poza draftem możesz wykorzystać PUT /sale/offers/{offerId} do edycji oferty.

Uwaga! Jeżeli chcesz zaktualizować ofertę, pobierz ją przez GET /sale/offers/{offerId}. Następnie, gdy aktualizujesz ofertę za pomocą PUT /sale/offers/{offerId}, prześlij analogiczną strukturę, jaką wcześniej otrzymałeś w odpowiedzi. Nawet jeśli aktualizujesz wartość tylko w jednym polu, to musisz przesłać pełną strukturę pól oferty.

Uzupełnij draft oferty

Za pomocą PUT /sale/offers/{offerId} uzupełnij dane w drafcie oferty. Poniżej opisaliśmy pola, które możesz przesłać, jeśli chcesz opublikować ofertę w serwisie.

Ważne! Aby zapisać czas wysyłki w drafcie musisz jednocześnie przesłać również informacje o identyfikatorze cennika dostawy i formacie sprzedaży.

Kliknij, żeby zobaczyć przykładowy request:
curl -X PUT \

  'https://api.allegro.pl/sale/offers/{offerId}
  -H 'Authorization: Bearer {token}' \
  -H 'Accept: application/vnd.allegro.public.v1+json' \
  -H 'Content-Type: application/vnd.allegro.public.v1+json' \
  -d '{
    "id": "7276261934",                             -- numer identyfikacyjny oferty
    "name": "Oferta testowa",                       -- wymagane, tytuł pobranej oferty
    "product": {
     "id": "634238b1-4385-4de7-9c00-dfa49fce16ab"   -- identyfikator produktu
    "category": {
        "id": "257150"                          -- wymagane, kategoria najniższego rzędu, w której
                                                znajduje się oferta. Aktualne numery kategorii
                                                pobierzesz za GET  /sale/categories?parent.id={catId}
    },
    "parameters": [                             -- wymagane, parametry oferty, aktualne parametry
                                                dostępne w danej kategorii
                                                sprawdzisz za pomocą
                                                GET /sale/categories/{categoryId}/parameters
        {
            "id": "11323",
            "valuesIds": [
                "11323_1"
            ],
            "values": [],
            "rangeValue": null
        },
        {
            "id": "128188",
            "valuesIds": [
                "128188_1"
            ],
            "values": [],
            "rangeValue": null
        },
        {
            "id": "127448",
            "valuesIds": [
                "127448_1"
            ],
            "values": [],
            "rangeValue": null
        },
        {
            "id": "4386",
            "valuesIds": [
                "4386_1"
            ],
            "values": [],
            "rangeValue": null
        },
        {
            "id": "219",
            "valuesIds": [
                "219_2",
                "219_256",
                "219_4"
            ],
            "values": [],
            "rangeValue": null
        }
    ],
    "ean": "6901443187416",                         -- niewymagane, numer Europejskiego
                                                    Kodu Towarowego (EAN) dla danego przedmiotu
    "description": {                                -- wymagane, opis oferty
        "sections": [
            {
                "items": [
                    {
                        "type": "TEXT",
                        "content": "<p>Tekstowy opis przedmiotu</p>"
                    },
                    {
                        "type": "IMAGE",
                        "url": "https://e.allegroimg.com/original/01fd60/4ea8d18e4275b0878b7f0562067e"
                    }
                ]
            },
            {
                "items": [
                    {
                        "type": "TEXT",
                        "content": ""<p>Tekstowy opis przedmiotu</p>""
                    }
                ]
            }
        ]
    },
    "images": [                                     -- wymagane ścieżki obrazków, zdjęcia
                                                    prześlesz przy pomocy
                                                    POST /sale/images.
                                                    Pierwsze zdjęcie w tablicy jest jednocześnie
                                                    pierwszym zdjęciem w ofercie (miniaturką).
        {
            "url": "https://e.allegroimg.com/original/01fd60/4ea8d18e4275b0878b7f0562067e"
        },
        {
            "url": "https://e.allegroimg.com/original/018474/c62b54a74120a7983b09d0fa4a4e"
        },
        {
            "url": "https://8.allegroimg.com/original/013a51/4dd0904a4169ad8b0d25a8984b48"
        },
        {
            "url": "https://2.allegroimg.com/original/01b48e/6e777def4a71ba68952358bd2072"
        }
    ],
    "compatibilityList": {                          -- niewymagane, sekcja Pasuje do
        "id": "d04e8a0c-40a1-4c53-8902-ffee7261845e-922db1ed6fa1c9731d50ce251007ab400247b0ebb62f1006493f5b6c418bb0fa-2",
        "type": "PRODUCT_BASED"
    },
    "tecdocSpecification": {                        -- niewymagane, specyfikacja techniczna TecDoc
                                                    dla części motoryzacyjnych
        "id": "e3725f4b-1b4b-4e39-ad7f-331a2c858a7f"
    },
    "sellingMode": {                                -- wymagane, format sprzedaży, obecnie
                                                    dostępne są trzy wartości: BUY_NOW (Kup Teraz);
                                                    AUCTION (licytacja); ADVERTISEMENT (ogłoszenie)
        "format": "BUY_NOW",
        "price": {
            "amount": "1499",                       -- wymagane, cena dla oferty w formacie
                                                    BUY_NOW (Kup Teraz), ADVERTISEMENT (ogłoszenie)
            "currency": "PLN"
        },
        "startingPrice": null,                      -- cena początkowa licytacji, dostępna w
                                                    formacie sprzedaży AUCTION (licytacja)
        "minimalPrice": null                        -- cena minimalna, dostępna w
                                                    formacie sprzedaży AUCTION (licytacja)
    },
    "stock": {
        "available": 4,                             -- wymagane, liczba aktualnie dostępnych
                                                    przedmiotów, WAŻNE! Nie uzupełniaj dla oferty
                                                    typu ADVERTISEMENT (ogłoszenie), natomiast
                                                    dla ogłoszenia typu AUCTION (licytacja) podaj wartość 1
        "unit": "UNIT"                              -- wymagane, obecnie dostępne są trzy
                                                    wartości: UNIT (sztuki); SET (komplety);
                                                    PAIR (pary). WAŻNE! Nie uzupełniaj tego
                                                    pola dla oferty typu ADVERTISEMENT (ogłoszenie)
    },
    "publication": {
        "republish": true,                          -- niewymagane, automatyczne wznowienie oferty.
                                                    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żą.
        "duration": null,                           -- wymagane, czas trwania oferty, dostępne
                                                    wartości: null (do wyczerpania zapasów),
                                                    P3D (3 dni); P5D (5 dni); P7D (7 dni);
                                                    P10D (10 dni); P20D (20 dni); P30D (30 dni), czas
                                                    możesz podać też w godzinach - np.: P72H (3 dni).
                                                    Dla oferty typu AUCTION (licytacja) nie możesz
                                                    podać wartości null i dostępne są wartości:
                                                    P1D (1 dzień); P3D (3 dni); P5D (5 dni); P7D (7 dni);
                                                    P10D (10 dni); Natomiast dla ofert typu
                                                    ADVERTISMENT (ogłoszenia) dostępne są wartości:
                                                    null (na czas nieokreślony - opłaty naliczane co 10 dni);
                                                    P10D (10 dni); P20D (20 dni); P30D (30 dni)
        "status": "INACTIVE",                       -- status oferty, dostępne są obecnie trzy
                                                    wartości: ACTIVE (oferta aktywna w serwisie),
                                                    INACTIVE (oferta nieaktywna), ENDED (zakończona oferta)
        "startingAt": null,                         -- niewymagane, czas startu oferty, dotyczy
                                                    ofert do publikacji w przyszłości
        "endingAt": null,                           -- niewymagane, data zakończenia oferty
        "endedBy": null                             -- niewymagane, powód zakończenia oferty.
                                                    Dostępne wartości: USER (przez użytkownika),
                                                    ADMIN (przez pracownika allegro),
                                                    EXPIRATION (zgodnie z planowaną datą lub oferta się
                                                    wyprzedała), ERROR (w wyniku wewnętrznego błędu)
    },
    "delivery": {
        "shippingRates": {
            "id": "4b9ad5b9-7ee9-409b-86f5-578672c13df8"    -- wymagane, numer identyfikacyjny
                                                            cennika dostawy, pobierzesz go
                                                            za pomocą
                                                            GET /sale/shipping-rates?seller.id={Seller_ID}.
                                                            Dla formatu sprzedaży typu  ADVERTISEMENT
                                                            (ogłoszenie) zostaw to
                                                            pole puste - prześlij "delivery": null
        },
        "handlingTime": "PT168H",                           -- czas wysyłki, obecnie dostępne są
                                                            wartości: 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).
                                                            Niewymagane dla formatu sprzedaży
                                                            typu ADVERTISEMENT (ogłoszenie).
        "additionalInfo": "Dodatkowe informacje o dostawie" -- niewymagane, dodatkowe
                                                            informacje o dostawie, możesz tutaj wpisać
                                                            informację w formie tekstowej, którą wyświetlimy
                                                            w ofercie w sekcji “Dostawa i płatność”.
        "shipmentDate":"2018-04-01T08:00:00Z"               -- wysyłka od - np.dla przedsprzedaży.
                                                            Uzupełnij datę w formacie zgodnym z ISO 8601.
    },
    "payments": {
        "invoice": "VAT"                                    -- wymagane, informacja o fakturze;
                                                            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)
    },
    "afterSalesServices": {                                 --warunki dla oferty, wymagane dla
                                                            kont firma. Dla formatu sprzedażu
                                                            ADVERTISEMENT (ogłoszenie) ta
                                                            opcja jest niedostępna, prześlij
                                                            "afterSalesServices": null.
        "impliedWarranty": {
            "id": "b0590fac-9858-4d01-8487-1c6a09c55a68"    -- wymagane dla kont firma,
                                                            informacje o reklamacji; identyfikator
                                                            pobierzesz za pomocą
                                                            GET /after-sales-service-conditions/implied-warranties
        },
        "returnPolicy": {
            "id": "c27c2ddd-f587-44db-b3c8-1f181964ea4d"    -- wymagane dla kont firma, polityka
                                                            zwrotów; identyfikator pobierzesz za pomocą
                                                            GET /after-sales-service-conditions/return-policies
        },
        "warranty": {
            "id": "f8694df6-f020-4a27-ac0a-f4f959969e14"    -- niewymagane, informacje o
                                                            gwarancjach, identyfikator pobierzesz za pomocą
                                                            GET /after-sales-service-conditions/warranties
        }
    },
    "additionalServices": null,                             -- usługi dodatkowe; identyfikatory swoich
                                                            grup usług dodatkowych pobierzesz za pomocą metody
                                                            GET /sale/offer-additional-services/groups.
                                                            Opcja niedostępna dla formatu sprzedaży
                                                            typu ADVERTISEMENT (ogłoszenie), prześlij
                                                            "additionalServices": null.
    "sizeTable": null,                                      -- identyfikator tabeli rozmiarów,
                                                            pobierzesz go przy pomocy
                                                            GET /sale/size-tables?user.id={Seller_ID}
    "promotion": {                                          --  niewymagane, opcje promowania,
                                                            przy każdej z opcji należy wybrać
                                                            jedną z wartości: false (opcja nieaktywna);
                                                            true (opcja aktywna)
        "emphasized": true,                                 -- wyróżnienie
        "bold": false,                                      -- pogrubienie
        "highlight": false,                                 -- podświetlenie
        "departmentPage": false,                            -- oferta promowana na stronie kategorii
        "emphasizedHighlightBoldPackage": false             -- pakiet promowania: wyróżnienie,
                                                            podświetlenie i pogrubienie oferty
    },
    "location": {                                           -- wymagane, dla ofert z wysyłką, to miejsce,
                                                            z którego paczka zostanie wysłana.
                                                            Dla ofert z odbiorem osobistym, jest to miejsce odbioru,
                                                            dodatkowo zalecamy użycie punktów odbioru
                                                            Przed uzupełniem tego pola przypisz wcześniej cennik
                                                            dostawy oraz określ format sprzedaży.

        "countryCode": "PL",                                -- wymagane, kod kraju zgodny ze
                                                            standardem ISO 3166-1 alpha-2
        "province": "WIELKOPOLSKIE",                        -- wymagane dla countryCode “PL”, województwo,
                                                            dostępne wartości: DOLNOSLASKIE; KUJAWSKO_POMORSKIE;
                                                            LUBELSKIE; LUBUSKIE; LODZKIE; MALOPOLSKIE; MAZOWIECKIE;
                                                            OPOLSKIE; PODKARPACKIE; PODLASKIE; POMORSKIE; SLASKIE;
                                                            SWIETOKRZYSKIE; WARMINSKO_MAZURSKIE;
                                                            WIELKOPOLSKIE; ZACHODNIOPOMORSKIE.
                                                            Dla innych krajów nie należy podawać tej wartości.
        "city": "Poznań",                                   -- wymagane, miejscowość
        "postCode": "60-166"                                -- wymagane dla adresów w Polsce, kod pocztowy
    },
    "external": {                                           -- niewymagany, zewnętrzny ID / sygnatura,
        "id":"4131asdsad40011"                              który nadaje sprzedający, np. aby powiązać ofertę
                },                                          z produktem w swoim magazynie. Możesz wprowadzić
                                                            tutaj dowolny ciąg znaków - będzie on dostępny
                                                            również po wznowieniu oferty.
    "attachments": [
            {
        "id": "07ee5e36-afc7-41eb-af49-3df5354ef858"        -- niewymagany, identyfikator załącznika
            }
        ]
    "contact": null,                                        -- niewymagane, identyfikator
                                                            danych kontaktowych identyfikator danych kontaktowych
                                                            dla oferty w formacie ADVERTISEMENT (ogłoszenie),
                                                            pobierzesz go za pomocą
                                                            GET /sale/offer-contacts
    "validation": {
        "errors": [],                                       --  informacje o ewentualnych błędach,
                                                            poinformujemy cię o tym jeśli na przykład podasz
                                                            niepoprawny numer ID cennika.
        "validatedAt": "2018-04-06T08:29:37.461Z"           -- informacje, kiedy odbyła się
                                                            ostatnia walidacja oferty
    },
    "createdAt": "2018-04-06T08:26:32Z",                    -- wymagane, data utworzenia oferty
    "updatedAt": "2018-04-06T08:29:38.664Z"                 -- wymagane, data ostatniej aktualizacji oferty
}'

Kliknij, żeby zobaczyć przykładowy response:
{
    "id": "7276377308",
    "name": "Oferta testowa",
    "category": {
        "id": "257150"
    },
    "parameters": [
        {
            "id": "11323",
            "valuesIds": [
                "11323_1"
            ],
            "values": [],
            "rangeValue": null
        },
        {
            "id": "128188",
            "valuesIds": [
                "128188_1"
            ],
            "values": [],
            "rangeValue": null
        },
        {
            "id": "127448",
            "valuesIds": [
                "127448_1"
            ],
            "values": [],
            "rangeValue": null
        },
        {
            "id": "4386",
            "valuesIds": [
                "4386_1"
            ],
            "values": [],
            "rangeValue": null
        },
        {
            "id": "219",
            "valuesIds": [
                "219_2",
                "219_256",
                "219_4"
            ],
            "values": [],
            "rangeValue": null
        }
    ],
    "ean": "6901443187416",
    "description": {
        "sections": [
            {
                "items": [
                    {
                        "type": "TEXT",
                        "content": "<p>Tekstowy opis przedmiotu</p>"
                    },
                    {
                        "type": "IMAGE",
                        "url": "https://e.allegroimg.com/original/01fd60/4ea8d18e4275b0878b7f0562067e"
                    }
                ]
            },
            {
                "items": [
                    {
                        "type": "TEXT",
                        "content": "<p>Tekstowy opis przedmiotu</p>"
                    }
                ]
            }
        ]
    },
    "images": [
        {
            "url": "https://e.allegroimg.com/original/01fd60/4ea8d18e4275b0878b7f0562067e"
        },
        {
            "url": "https://e.allegroimg.com/original/018474/c62b54a74120a7983b09d0fa4a4e"
        },
        {
            "url": "https://8.allegroimg.com/original/013a51/4dd0904a4169ad8b0d25a8984b48"
        },
        {
            "url": "https://2.allegroimg.com/original/01b48e/6e777def4a71ba68952358bd2072"
        }
    ],
    "compatibilityList": {
        "id": "d04e8a0c-40a1-4c53-8902-ffee7261845e-922db1ed6fa1c9731d50ce251007ab400247b0ebb62f1006493f5b6c418bb0fa-2",
        "type": "PRODUCT_BASED",
        "items": [
            {
                "text": "ALFA ROMEO 147 (937_) 1.6 16V T.SPARK (937.AXA1A, 937.AXB1A, 937.BXB1A) (AR 32104) 1598ccm 120KM/88kW 2001/01-2010/03, szczegóły: Strona zabudowy: z lewej, z prawej, Oś tylna, System hamulcowy: LUCAS, dla numeru artykułu: 343599, 343598"
            },
        ...

            {
                "text": "SKODA RAPID Spaceback (NH1) 1.2 TSI (CBZB) 1197ccm 105KM/77kW 2012/07-, szczegóły: Strona zabudowy: z prawej, Oś tylna, z lewej, System hamulcowy: LUCAS, dla numeru artykułu: 342966, 342967, dla numeru PR: 1KT"
            }
        ]
    },
    "tecdocSpecification": {
        "id": "e3725f4b-1b4b-4e39-ad7f-331a2c858a7f",
        "items": [
            {
                "name": "Wysokość [mm]",
                "values": [
                    "51"
                ]
            },
            {
                "name": "Materiał",
                "values": [
                    "stal"
                ]
            },
            {
                "name": "średnica [mm]",
                "values": [
                    "38"
                ]
            },
            {
                "name": "Wersja TecDoc",
                "values": [
                    "TecDoc 0619"
                ]
            }
        ]
    },
    "sellingMode": {
        "format": "BUY_NOW",
        "price": {
            "amount": "1499",
            "currency": "PLN"
        },
        "startingPrice": null,
        "minimalPrice": null
    },
    "stock": {
        "available": 4,
        "unit": "UNIT"
    },
    "publication": {
        "republish": true,
        "duration": null,
        "status": "INACTIVE",
        "startingAt": null,
        "endingAt": null
    },
    "delivery": {
        "shippingRates": {
            "id": "4b9ad5b9-7ee9-409b-86f5-578672c13df8"
        },
        "handlingTime": "PT168H",
        "additionalInfo": ""
        "shipmentDate":"2018-04-01T08:00:00Z"
    },
    "payments": {
        "invoice": "VAT"
    },
    "afterSalesServices": {
        "impliedWarranty": {
            "id": "b0590fac-9858-4d01-8487-1c6a09c55a68"
        },
        "returnPolicy": {
            "id": "c27c2ddd-f587-44db-b3c8-1f181964ea4d"
        },
        "warranty": {
            "id": "f8694df6-f020-4a27-ac0a-f4f959969e14"
        }
    },
    "additionalServices": null,
    "sizeTable": null,
    "promotion": {
        "emphasized": true,
        "bold": false,
        "highlight": false,
        "departmentPage": false,
        "emphasizedHighlightBoldPackage": false
    },
    "location": {
        "countryCode": "PL",
        "province": "WIELKOPOLSKIE",
        "city": "Poznań",
        "postCode": "60-166"
    },
    "external": {                               -- niewymagany, zewnętrzny ID / sygnatura,
        "id":"4131asdsad40011"                  który nadaje sprzedający, np. aby powiązać ofertę
                },                              z produktem w swoim magazynie. Możesz wprowadzić
                                                tutaj dowolny ciąg znaków - będzie on dostępny
                                                również po wznowieniu oferty.
    "attachments": [],
    "contact": null,
    "validation": {
        "errors": [],
        "validatedAt": "2018-04-06T09:34:40.142Z"
    },
    "createdAt": "2018-04-06T09:29:47Z",
    "updatedAt": "2018-04-06T09:34:40.142Z"
}

Wystaw podobną ofertę

Jeśli już wystawiłeś ofertę i chcesz na jej podstawie wystawić podobną, to wystarczy, że pobierzesz ją przez GET /sale/offers/{offerId}. Za pomocą GET /sale/offers/{offerId} pobierzesz wszystkie pola wskazanej oferty. Musisz być uwierzytelniony i zautoryzowany jako sprzedawca, który wystawił tę ofertę. Całą pobraną strukturę z wyłączeniem:

  • numeru identyfikacyjnego oferty

  • informacji, kiedy odbyła się ostatnia walidacja oferty

  • daty utworzenia oferty

  • daty ostatniej aktualizacji oferty

  • sekcję “publication”

prześlij za pomocą POST /sale/offers Dzięki temu stworzysz nowy draft oferty na podstawie danych z oferty, którą wcześniej pobrałeś. Gdy uzupełniasz draft, możesz wprowadzić zmiany w strukturze, którą pobrałeś zasobem GET /sale/offers/{offerId}.

9. Publikacja oferty

Jeśli oferta jest już kompletna i poprawnie zwalidowana, to za pomocą PUT /sale/offer-publication-commands/{commandId} możesz ją opublikować w serwisie. Jest to metoda asynchroniczna. W polu commandId podaj wartość w formacie UUID (universally unique identifier). Jest to globalnie unikatowy identyfikator, który składa się z 32 liczb szesnastkowych (np.: 21ae4ed1-eab7-34ea-b605-cf2e22b5eed3). Identyfikator generujesz we własnym zakresie.
WAŻNE! Przy pomocy tej metody możesz również:

  • zakończyć wybrane oferty - wystarczy, że w polu action podasz wartość END,

  • zaplanować wystawienie oferty w przyszłości - wystarczy, że w polu scheduleFor ustawisz datę planowanej publikacji oferty,

  • wznowić zakończone oferty - w statusie ENDED. Przekaż dla takich ofert wartość ‘ACTIVATE’ w polu action. Udostępnimy je ponownie w serwisie.


Przykładowy request:

  curl -X PUT \
    'https://api.allegro.pl/sale/offer-publication-commands/{commandId}
    -H 'Authorization: Bearer {token}' \
    -H 'Accept: application/vnd.allegro.public.v1+json' \
    -H 'Content-Type: application/vnd.allegro.public.v1+json' \
    -d '{
      "publication": {
        "action": "ACTIVATE",               -- wymagane, dostępne są dwie wartości:
                                            ACTIVATE (aktywowanie danych ofert) i
                                            END (zakończenie danych ofert)
        "scheduledFor":"2018-03-28T12:00:00.000Z"   -- niewymagane, wysyłasz jeśli chcesz
                                            zaplanować wystawienie oferty w przyszłości
    },
      "offerCriteria": [
        {
            "offers":[                      -- wymagane, tablica obiektów z
                                            numerami identyfikacyjnymi ofert -
											maksymalnie 1000 ofert
                {
                    "id": "7276377308"
                }
            ],
            "type": "CONTAINS_OFFERS"       -- wymagane, obecnie dostępna jest
                                            jedna wartość:
                                            CONTAINS_OFFERS (oferty, w których zmienimy status)
        }
    ]
  }
Przykładowy response:
  {
    "id": "3380d97f-0d32-4747-8a17-1da38f9499de",
    "taskCount": {
        "total": 0,
        "success": 0,
        "failed": 0
    }
  }

10. Sprawdź status swojej oferty

Status zadania, jakie zleciłeś w kroku 7 (wystawienia lub zakończenia oferty), sprawdzisz za pomocą:

Zestawienie zadań

GET /sale/offer-publication-commands/{commandId}

Za pomocą tego zasobu możesz pobrać informacje o statusie zadania publikacji ofert w serwisie. W odpowiedzi otrzymasz zestawienie, ile ofert wystawiło się poprawnie, a z iloma wystąpił jakiś problem.
Przykładowy request:

  curl -X GET \
    'https://api.allegro.pl/sale/offer-publication-commands/{commandId}
    -H 'Authorization: Bearer {token}' \
    -H 'Accept: application/vnd.allegro.public.v1+json' \

Przykładowy request:
  {
    "id": "3380d97f-0d32-4747-8a17-1da38f9499de",
    "taskCount": {
        "total": 1,
        "success": 1,
        "failed": 0
    }
  }

Informacje o publikacji

GET /sale/offer-publication-commands/{commandId}/tasks

Za pomocą tego zasobu możesz pobrać informacje o statusie publikacji ofert w serwisie. W odpowiedzi otrzymasz:

  • identyfikatory ofert, które chciałeś opublikować w serwisie,

  • status modyfikacji oferty - czy zakończyła się sukcesem,

  • datę zlecenia modyfikacji oferty,

  • datę wykonania danego zadania - wystawienia lub zakończenia oferty.

Przykładowy request:

  curl -X GET \
    'https://api.allegro.pl/sale/offer-publication-commands/{commandId}/tasks
    -H 'Authorization: Bearer {token}' \
    -H 'Accept: application/vnd.allegro.public.v1+json' \

Przykładowy response:
  [
    {
            "offer": {
                "id": "7168735300"
            },
            "message": "",                      	-- opis dlaczego nie udało się  opublikować
                                                	oferty w serwisie
            "status": "SUCCESS",                	-- status publikacji oferty w serwisie,
                                                	dostępne są trzy wartości: SUCCESS (publikacja
                                                	zakończona pomyśle, oferta powinna
                                                	być aktywna w ciągu 60 min.); FAIL
                                                	(wystąpiły błędy przy publikacji i oferta nie
                                                	jest aktywna w serwisie); NEW (trwa publikacja
                                                	oferty w serwisie, akcja nie została jeszcze
													zakończona)
            "scheduledAt": "2018-03-01T11:02:50.005+01:00",
            "finishedAt": "2018-03-01T11:02:51.691+01:00",
            "field": "publication"
        }
    ]

Pytania i odpowiedzi

1. Jak wystawić licytację z opcją Kup Teraz?

Jeśli chcesz wystawić taką ofertę wystarczy, że prześlesz w polu “format” wartość AUCTION i uzupełnisz pola:

  • startingPrice - cena początkowa

  • minimalPrice - cena minimalna. To pole nie jest wymagane.

2. Dlaczego wprowadziliśmy funkcję draftów?

Dzięki draftom możesz przygotować zalążek oferty, na którym możesz pracować w innym terminie - np. gdy chcesz wypracować ostateczny kształt opisu. Możesz również od razu przygotować kompletny draft i opublikować ofertę w serwisie.

3. Dlaczego wprowadziliśmy osobny zasób dla zdjęć?

W ramach oferty możesz udostępnić zdjęcia w bardzo dużej rozdzielczości. Wiąże się to z olbrzymią wagą takiego pliku. To, że wprowadziliśmy osobny zasób dedykowany zdjęciom pozwoli zmniejszyć rozmiar requestu. Wpłynie to na krótszy czas wystawienia oferty.

4. Dlaczego wprowadziliśmy osobny zasób dla cenników dostaw?

Dzięki temu, że ceny wysyłki są niezależne od oferty i dzięki osobnemu zasobowi do cenników dostawy, będziesz mógł szybciej przeprowadzić hurtową edycję cen dostawy. Wystarczy, że wprowadzisz zmianę w cenniku dostawy, a koszt przesyłki zmieni się we wszystkich ofertach, do których przypiąłeś dany cennik. Takie rozwiązanie pozwoli dynamicznie reagować na zmiany cen u przewoźników.

5. Jak zaplanować wystawienie oferty w przyszłości?

Termin do wystawienia ofert w przyszłości możesz ustawić za pomocą komendy PUT na zasobie /sale/offer-publication-commands/{commandId}. Wystarczy, że w polu scheduledFor podasz planowany czas wystawienia oferty w przyszłości.

6. Otrzymałem komunikat - “You cannot create new drafts - your account has exceeded the maximum number {maxInactiveOffers} of drafts.” Co powinienem zrobić?

Otrzymałeś taki komunikat, ponieważ przekroczyłeś dostępny limit szkiców ofert (draftów), dotyczy to ofert ze statusem “INACTIVE” - obecny limit to 20 000. Aby rozwiązać ten problem: