Ideal House
Przejdź do treści

Odpowiedzi na błędy#

Stan HTTPZnaczenieZalecane działanie
400 Bad RequestTreść żądania lub parametry zapytania są nieprawidłowe.Popraw żądanie przed ponowną próbą.
401 UnauthorizedBrakuje danych uwierzytelniających, są one nieprawidłowe, wygasły lub nie są aktywne.Sprawdź nagłówki uwierzytelniania lub skontaktuj się z Ideal House.
403 ForbiddenWartość shopId w żądaniu nie jest powiązana z danymi uwierzytelniającymi.Użyj Shop ID przypisanego do tych danych uwierzytelniających.
404 Not FoundBrak statusu importu lub pasującego produktu.Sprawdź Shop ID oraz żądany identyfikator produktu lub SKU.
409 ConflictDla sklepu trwa już inne zadanie importu.Poczekaj na zakończenie bieżącego zadania importu.
429 Too Many RequestsCzęstotliwość żądań jest zbyt wysoka.Ponawiaj próby, wykładniczo zwiększając odstępy i dodając losowe opóźnienie.
500 Internal Server ErrorUsługa napotkała nieoczekiwany błąd.Ponawiaj próby, wykładniczo zwiększając czas oczekiwania. Jeśli błąd się utrzymuje, skontaktuj się z Ideal House.
502 Bad Gateway lub 503 Service UnavailableAPI jest chwilowo niedostępne.Ponów próbę, wykładniczo zwiększając czas oczekiwania.

Błąd sprawdzania poprawności może mieć następujący format:

json
{
  "message": ["shopId should not be empty"],
  "error": "Bad Request",
  "statusCode": 400
}

Tekst w polu message może się różnić. Opieraj logikę programu na kodzie stanu HTTP i udokumentowanych polach odpowiedzi.

Wskazówki dotyczące ponawiania prób i odzyskiwania#

  • Odpytuj o status co 2–5 sekund, dopóki zadanie ma status pending lub running.
  • W przypadku odpowiedzi 429, 500, 502 i 503 wykładniczo zwiększaj odstępy między próbami, dodawaj losowe opóźnienie i ustaw maksymalną liczbę ponownych prób.
  • Nie ponawiaj automatycznie żądań zakończonych odpowiedzią 400, 401 lub 403 bez poprawienia żądania lub danych uwierzytelniających.
  • Po odpowiedzi 409 poczekaj, aż aktywne zadanie osiągnie status completed lub failed.
  • Jeśli upłynie limit czasu przesyłania, zanim otrzymasz odpowiedź, zapytaj punkt końcowy stanu przed ponownym przesłaniem partii.
  • Ponowna próba tego samego produktu z tym samym kodem SKU jest bezpieczna, ponieważ importy korzystają z zachowania polegającego na utworzeniu lub aktualizacji.
  • Po zakończeniu zadania z błędami na poziomie pozycji prześlij nową partię zawierającą wyłącznie produkty, które uległy błędom.
  • Po błędzie na poziomie zadania produkty uwzględnione w successCount mogły już zostać zaktualizowane. Ponowne przesłanie pierwotnej partii z tymi samymi SKU jest bezpieczne.
  • Usunięcie mogło już zostać wykonane, nawet jeśli żądanie zwraca 503. Powtórzenie tego samego żądania usunięcia jest bezpieczne.

Punkt końcowy statusu służy do śledzenia aktywnego lub ostatniego zadania, a nie do przechowywania trwałej historii importu. Zapisuj przesłaną partię, jobId, odpowiedzi ze statusem i wynik końcowy we własnym systemie, aby móc uzgadniać dane i rozwiązywać problemy.

Lista kontrolna przed uruchomieniem produkcyjnym#

  • Przechowuj Client Secret w menedżerze sekretów lub chronionym środowisku serwerowym.
  • Użyj stabilnego, unikalnego SKU dla każdego produktu.
  • Wyślij nie więcej niż 500 produktów na jedno żądanie.
  • Upewnij się, że adresy URL obrazów są publicznie dostępne i pozostają dostępne przez cały czas przetwarzania.
  • Ustawiaj jawnie processImages: true tylko wtedy, gdy potrzebna jest wstępna obróbka obrazów i akceptowana jest opłata 1 kredytu za przetworzenie obrazu. W przeciwnym razie pomiń pole lub ustaw je na false.
  • Włączaj dzielenie obrazów podłogi wyłącznie przez ustawienie zarówno processImages, jak i processFloorImages na true.
  • Dla każdego produktu podaj name, imageUrl, productUrl, width, height oraz obsługiwaną wartość productType.
  • Jeśli podajesz status, ustaw go na active, inactive, out_of_stock lub invalid.
  • Wysyłaj wymiary jako wartości dodatnie z obsługiwaną jednostką albo pomiń jednostkę, aby użyć cali; zapisywane wartości są normalizowane do cali.
  • Zapisz trwale zwrócony jobId i porównuj go z kolejnymi odpowiedziami ze statusem.
  • Traktuj completed z failedCount > 0 jako częściowy sukces.
  • Pobieraj listę produktów strona po stronie zamiast żądać całego katalogu bez ograniczeń.
  • Przy usuwaniu podaj dokładnie jeden identyfikator: productId albo sku.
  • Ogranicz liczbę ponownych prób, wykładniczo zwiększaj odstępy między nimi i dodawaj losowe opóźnienie.

W sprawie danych uwierzytelniających, wartości przekazywanych podczas wdrożenia, mapowania typów produktów lub utrzymujących się problemów z integracją skontaktuj się ze swoim przedstawicielem ds. integracji w Ideal House.