Cel
API umożliwia pobieranie danych o produktach, stanach magazynowych oraz cenach w formacie XML.
Zależy nam, aby to aktualne rozwiązanie jak najlepiej wspierało Państwa pracę, zwłaszcza w zakresie automatyzacji procesów.
Ze względu na nowość funkcjonalności, mogą potencjalnie występować drobne poprawki w strukturach XML w najbliższym czasie związane ze zgłaszanymi przez Państwa propozycjami i uwagami, prosimy o wyrozumiałość w tym zakresie:
-potencjalne zmiany będą zapowiadane odpowiednio wcześniej, zeby dać Państwu czas na adaptację,
-ewentualne naprawy typu `hotfix` będą realizowane niezwłocznie.
Endpointy
Główne źródłowe pliki XML udostępniane przez platformę sprzedażową b2b.led-europe.pl znajdują się poniżej.
UWAGA: Łańcuch YOUR_TOKEN
w żądaniu należy zamienić na własny unikalny token dostępowy (opisano ponizej w sekcji `Token`).
Katalog produktów
https://b2b.led-europe.pl/p/ledxmlplugin/get?token=YOUR_TOKEN
Stany magazynowe
https://b2b.led-europe.pl/p/ledstockplugin/get?token=YOUR_TOKEN
Ceny produktów
https://b2b.led-europe.pl/p/Exporter/Index/prices?token=YOUR_TOKEN
Zachęcamy do integracji na podstawie powyższych źródłowych endpointów (preferowane ze względu na stabilność i najmniejsze opóźnienia aktualizacji stanów magazynowych). Jeśli jednak Państwa integracje są ograniczone do wskazywania maksymalnie jedynie jednego lub dwóch plików (SkyShop, Baselinker), można korzystać z alternatywnych endpointów agregujących powyższe dane:
W przypadku ograniczenia do jednego pliku XML:
Katalog produktów + stany magazynowe + ceny (w jednym pliku)
https://api.led-europe.pl/xml?resource=consolidate_all&token=YOUR_TOKEN
W przypadku ograniczenia do dwóch plików XML:
Katalog produktów
https://b2b.led-europe.pl/p/ledxmlplugin/get?token=YOUR_TOKEN
Ceny produktów + stany magazynowe (w jednym pliku)
https://api.led-europe.pl/xml?resource=stocks_and_prices&token=YOUR_TOKEN
Platforma SkyShop aktualnie opracowuje modyfikację, po której będzie możliwość integracji z 3 plikami XML, do tego czasu można korzystać z powyższych alternatyw.
Token
- Wszystkie endpointy wymagają podania parametru
token
(wartość parametru jest reprezentowana w dokumentacji jako placeholderYOUR_TOKEN
), który podpisuje żądanie. - Token można uzyskać posiadając zarejestrowane konto B2B i uzyskując go od swojego opiekuna ze strony LED Europe lub pisząc na adres.
- Prosimy nie udostępniać tokenów podmiotom trzecim, gdyż każdy token jest jednoznacznie skojarzony z konkretnym Klientem platformy B2B.
Struktura danych XML
Uwaga: W opisie wskazano zastosowanie sekcji CDATA, które służą do oznaczania niezinterpretowanego tekstu dla określonych wartości węzłów.
Katalog produktów
<products>
Węzeł grupujący dla elementów<product>
.<product>
Węzeł zawierający szczegóły konkretnego produktu.<id>
Id produktu (jedynie do użytku wewnętrznego LED Europe).<sku>
Kod SKU produktu.<ean>
Kod EAN produktu.<url>
Link do karty produktu w sklepie B2B.<categories>
Węzeł grupujący dla elementów<cat>
.<cat>
Ścieżka kategorii produktu w określonym kontekście.<name>
Nazwa produktu. [CDATA]<imgs>
Węzeł grupujący dla elementów<image>
.<image>
Link do zdjęcia produktu.<description>
Opis produktu. [CDATA]<short_description>
Bardzo krótki opis produktu. [CDATA]<unit>
Jednostka miary produktu.<related_sku>
Kod SKU zamiennika produktu. Opcjonalny atrybuttype
(older
/newer
) oznacza czy podany w tym węźle kod jest odpowiednio starszy czy nowszy od produktu z węzła-rodzica<sku>
.<weight>
Waga produktu.<pure_description>
Opis produktu jak w węźle<description>
, ale pozbawiony parametrów produktu oraz informacji GPSR. [CDATA]<params>
Węzeł grupujący dla elementów<param>
.<param>
Wybrany parametr produktu.<name>
Nazwa parametru.<value>
Wartość parametru. [CDATA]<gpsr>
Informacje zgodne z rozporządzeniem GPSR. [CDATA]<files>
Węzeł grupujący dla elementów<file>
.<file>
Link pliku do pobrania pliku dotyczacego produktu (lub jego składowych w przypadku zestawów). Zawiera atrybuttype
kategoryzujący plik:
-card
kartY katalogowe produktu,
-manual
instrukcje dotyczące produktu,
-energy_label
etykieta energetyczna,
-certificate
certyfikaty,
-information
karty informacyjne,
-other
nieskategoryzowane inne rodzaje plików.
Stany magazynowe
<products>
Węzeł grupujący dla elementów<product>
.<product>
Węzeł zawierający szczegóły konkretnego produktu.<sku>
Kod SKU produktu.<stock_pl>
Dostępna ilość w magazynie w Polsce.<stock_central>
Dostępna ilość w magazynie centralnym EU.<stocking_up_date>
Planowana data dostawy do magazynu centralnego EU.
Ceny produktów
<products>
Węzeł grupujący dla elementów<product>
.<product>
Węzeł zawierający szczegóły konkretnego produktu.<sku>
Kod SKU produktu.<price>
Cena produktu.
Przykłady XML
Dla czytelności przykładów długie łańcuchy znaków zastąpiono przez placeholder: (...)
.
Uwagi
- Kluczem głównym wiążącym wszystkie pliki XML jest kod SKU produktu zawarty w węźle
<sku>
. - Dane XML z produktami są aktualizowane raz dziennie, XML stanów magazynowych z częstotliwością co 10 minut, natomiast XML z cenami jest generowany dla Klienta na każde żądanie (request).
- Waga XML produktowego wynosi kilkadziesiąt MB. Dlatego ze względu na szybkość zapytań i odpowiedzi serwera o XML prosimy we własnych cyklicznych pracach cron lub harmonogramu zadań o niestandardowe godziny pobierania XMLa produktowego (tzn. nie o pełnych godzinach typu 6:00, 7:00 - skumulowane requesty w tym czasie od wielu Klientów mogą powodować u Państwa timeout zapytania).
- XML z cenami generuje się dynamicznie na żądanie (strumieniowo linia po linii), dlatego należy uwzględnić odpowiednio długi czas oczekiwania na odpowiedź. Proces może trwać od kilkudziesięciu do nawet kilkuset sekund, w zależności od rabatów i promocji przypisanych do Państwa konta B2B.
- Ze względu na rozmiar plików (zwłaszcza XML produktowego) oraz generowania XML z cenami "w locie" (XML z cenami), przeglądarka może niepoprawnie je parsować. Aby uniknąć błędów, należy użyć dedykowanego parsera dopiero po pełnym pobraniu pliku.
- Obsługiwane statusy
HTTP: 200
(sukces),500
(błąd serwera).502
występuje w przypadku requestu do błędnego zasobu lub nieprawidłowego tokena (błąd autoryzacji). - Ze względu na minimalizację objętości plików XML (szybsze pobieranie przez Klientów) nie wszystkie węzły są gwarantowane: puste węzły (bez zawartości np. brak określonego parametru) mogą nie być obecne w plikach XML.
- Dla węzłów bez wartości mogą występować tzw. znaczniki samozamykające zgodnie ze standardem XML, czyli
<node />
zamiast<node></node>
. - Pliki XML są kodowane w
UTF-8
. - Separatorem dziesiętnym dla wartości liczbowych w plikach XML jest
,
(przecinek). - Daty są w formacie
YYYY-MM-DD
. - Systemy będącymi klientami API XML należy opracowywać tak, by były "odporne" na dodawanie przez nas nowych węzłów, do czasu ich ewentualnego wdrożenia przez Państwa. Innymi słowy dodanie przez nas nowego węzła nie powinno powodować u Państwa żadnych problemów.
- Produkcyjnie limit zapytań o XML produktowy oraz cenowy na każdy token wynosi 10 zapytań na dobę na każdy zasób. Wdrożeniowo zezwalamy na większą liczbę zapytań, aby ułatwić Państwu testy. Plik XML stanów magazynowych nie ma limitu zapytań i jest z naszej strony odświeżany z częstotliwością co 10 minut.
- Wszelkie błędy lub propozycje rozbudowy prosimy kierować na adres.
Przykłady zapytań
Changelog i aktualne informacje
- Wersja 1.0.1 (21.02.2025): Dodanie wagi produktu w pliku z produktami.
- Wersja 1.0.0 (18.02.2025): Dodanie plików agregujących stany i ceny.
- Wersja 1.0.0 (31.01.2025): Pierwsze wdrożenie.