allegro / allegro-api

Issue tracker and wiki for Allegro REST API
https://developer.allegro.pl/
217 stars 39 forks source link

Error code 422 przy wystawianiu oferty 'Unknown properties found in the request #10293

Open jansas124 opened 1 day ago

jansas124 commented 1 day ago

Witam Serdecznie, od dłuższego czasu korzystam z programu pomagającego w tworzeniu i edycji szkicy na allegro, niestety od prawie miesiąca nie mogę stworzyć nawet szkicu :-(

Error code 422 {'errors': [{'code': 'UnknownJSONProperty', 'message': 'Unknown properties found in the request.', 'details': None, 'path': None, 'userMessage': 'The uploaded data includes unsupported properties. Contact your software vendor.', 'metadata': {'unknownProperties': '...base'}}]}

422 {} Listing failed... 422

{'name': 'Philips Satinelle Essential BRE225/00 Kompaktowy depilator - Do nóg - 2', 'productSet': [{'product': {'name': 'Philips Satinelle Essential BRE225/00 Kompaktowy depilator - Do nóg - 2', 'parameters': [{'id': '224017', 'valuesIds': [], 'values': ['ONQXT9LTBG'], 'rangeValue': None}, {'id': '237206', 'valuesIds': [], 'values': ['sprawdź opis'], 'rangeValue': None}, {'id': '248135', 'valuesIds': ['248135_859076'], 'values': ['OtherManufacturer'], 'rangeValue': None}], 'images': ['https://a.allegroimg.com/original/1187f3/da7278354a6db113eae2320611a4', 'https://a.allegroimg.com/original/11826b/8bfdf7d34ac9906c1c2452c84258', 'https://a.allegroimg.com/original/115e13/56894cf7460aa13dd19a7cd04b0a', 'https://a.allegroimg.com/original/11cb76/fec66a404787981cc93ff9cf92bb', 'https://a.allegroimg.com/original/119eff/71a0b0e54b2ba525a5df85faf3c4', 'https://a.allegroimg.com/original/110b14/a5b23ddb4effa2103db8ceab578c']}, 'quantity': {'value': 1}}], 'external': {'id': 'B07M86Y5J2|pl'}, 'description': {'sections': [{'items': [{'type': 'TEXT', 'content': '

Philips Satinelle Essential BRE225/00 Kompaktowy depilator - Do nóg - 2 ustawienia prędkości - Zasilany sieciowo - Delikatne dyski depilujące - Ergonomiczny uchwyt - 15 V

\n\n

\nInformacje o produkcie:

\n'}, {'type': 'IMAGE', 'url': 'https://a.allegroimg.com/original/1187f3/da7278354a6db113eae2320611a4'}]}]}, 'images': ['https://a.allegroimg.com/original/1187f3/da7278354a6db113eae2320611a4', 'https://a.allegroimg.com/original/11826b/8bfdf7d34ac9906c1c2452c84258', 'https://a.allegroimg.com/original/115e13/56894cf7460aa13dd19a7cd04b0a', 'https://a.allegroimg.com/original/11cb76/fec66a404787981cc93ff9cf92bb', 'https://a.allegroimg.com/original/119eff/71a0b0e54b2ba525a5df85faf3c4', 'https://a.allegroimg.com/original/110b14/a5b23ddb4effa2103db8ceab578c'], 'stock': {'available': 84, 'unit': 'UNIT'}, 'parameters': [{'id': '11323', 'valuesIds': ['11323_1'], 'values': [], 'rangeValue': None}], 'delivery': {'shippingRates': {'id': '9d965fdd-faf8-46e4-9023-1e5388ec17d7'}, 'handlingTime': 'PT0S', 'additionalInfo': None, 'shipmentDate': None}, 'payments': {'invoice': 'VAT'}, 'afterSalesServices': {'impliedWarranty': {'id': '38001d12-0626-486f-9084-e8325ca6d559'}, 'returnPolicy': {'id': '860d8413-a843-4ffe-bc26-08c23d3d4d28'}, 'warranty': None}, 'location': {'countryCode': 'PL', 'province': 'LUBELSKIE', 'city': 'Lublin', 'postCode': '20-573'}, 'language': 'pl-PL', 'publication': {'status': 'INACTIVE', 'marketplaces': {'base': {'id': 'allegro-pl'}, 'additional': [{'id': 'allegro-cz'}]}}, 'sellingMode': {'format': 'BUY_NOW', 'price': {'amount': 1968.15, 'currency': 'PLN'}}, 'category': {'id': '1329'}}

Czy ktoś mógłby pomóc / podpowiedzieć co jest nie tak ?

Dziękuję ślicznie i Pozdrawiam Serdecznie

MaciejFrackowiak commented 1 day ago

W polu "metadata" zwróciliśmy informację o nadmiarowym tworze "unknownProperties': '...base" - odnosząc się do struktury jest to pole "publication.marketplaces.base", które jest nadmiarowe względem struktury POST /sale/product-offers.

jansas124 commented 1 day ago

Szanowny Panie Macieju rozumiem , a czy mógłbym poprosić informację jak to naprawić abym mógł ponownie wystawiać oferty? Ten program nie ukrywam że pomaga mi znacznie automatyzować wystawianie ofert poprzez tworzenie szkicu , a w API jestem zielony :-(

MaciejFrackowiak commented 1 day ago

Autor programu zatem powinien nanieść odpowiednie poprawki, aby spełnić obecne wymagania.

jansas124 commented 1 day ago

rozumiem, czyli niestety samemu nie mam możliwości dokonania tych poprawek. Dziękuję w takim razie i pozdrawiam serdecznie

ryszardlet commented 1 day ago

Ja ze swojej strony dopowiem. Mamy podobny problem... Korzystam z pliku swagger, który teoretycznie sam generuje odpowiednie klasy a mimo to dalej mam błąd: 422 Unprocessable Entity: "{"errors":[{"code":"UnknownJSONProperty","message":"Unknown properties found in the request.","details":null,"path":null,"userMessage":"The uploaded data includes unsupported properties. Contact your software vendor.","metadata":{"unknownProperties":"...present"}}]}"

Tworząc api zapominają Państwo o wersjonowaniu. To generuje olbrzymie koszty nie tylko dla dostawców, ale przede wszystkim dla Państwa klientów. Twórcy API przerzucają odpowiedzialność na "autorów programów" zapominając o tym, że niektórzy nie mają łatwego dostępu do wspomnianych autorów. Aktualizacje powinny odbywać się w jakimś sensownym cyklu, który mógłby być opisany.

Proszę zauważyć, że nasi klienci dostają wsparcie, ale nie zawsze mogą otrzymać odpowiednią "łatkę". Newsletter to jednak trochę za mało.

MaciejFrackowiak commented 1 day ago

@ryszardlet Komunikujemy zmiany w aktualnościach na devportalu, na forum GitHub oraz przesyłamy nowości w postaci newslettera. Zmiany kluczowe zapowiadamy ze stosownym wyprzedzeniem. Serwis się rozwija i zmienia, nie możemy sobie pozwolić na opóźnianie zmian.

ryszardlet commented 1 day ago

Zgadzam się z Panem (rozwój to podstawa). Dobrą praktyką z jaką ja się spotkałem było wersjonowanie API oraz cykl wprowadzania nowych wersji samego API. Pozwolę sobie dodać, że taka sytuacja w systemach płaności nie występuje (przynajmniej nie doświadczyłem takich problemów, że ktoś zapowiada zmianę w lipcu po czym blokuje użytkowników, korzystających z systemu wg starych zasad po 3 miesiącach od wprowadzenia zmiany). Dzięki temu możemy systematycznie włączać w cykl rozwoju naszego oprogramowania aktualizacjie np. API płatności, integracji ERP, itp. Dzięki temu klienci nasi nie ponoszą dodatkowych kosztów a same aktualizacje stają się bezbolesne (możemy je często bardzo gruntownie przetestować). Praca przy dużym systemie z wieloma poziomami i integracjami wymaga zapewnienia bezawaryjności systemu i odpowiedniej dostępności. Wspomniana bezawaryjność jest wynikiem wielu godzin testów rożnych składowych systemu.

Nie wiem co stoi za blokowaniem wprowadzania zmian w ofertach poprzez nadmiarowe parametry - zwłszcza, że wystąpiły one w poprzedniej wersji samego API. Proszę pamiętać - Państwa klienci korzystają z API i wykorzystują przy tym olbrzymie systemy, które charakteryzują się wysoką "bezwładnością" (o ile można tak powiedzieć).

Jeżeli to możliwe to prosiłbym o informację (na podstawie wklejonego komunikatu) o jaki parametr chodzi. Czy udostępniony plik swagger jest aktualny?

MaciejFrackowiak commented 1 day ago

@ryszardlet Tak, plik swagger jest aktualny. Proszę podaj trace-id wywołania, dla którego zwróciliśmy błąd - postaram się sprawdzić w logach szczegóły.

ryszardlet commented 1 day ago

Niestety nie mam możliwości sprawdzić tego dokładnie (komplet komunikatów logowany jest w miejscu obecnie niedostępnym). A chociaż może wiadomo o jaki parametr może chodzić? Wcześniej miałem błąd dotyczący pola tax - zlokalizowałem i usunąłem. Komunikat był wtedy podobny: org.springframework.web.client.HttpClientErrorException$UnprocessableEntity: 422 Unprocessable Entity: "{"errors":[{"code":"UnknownJSONProperty","message":"Unknown properties found in the request.","details":null,"path":null,"userMessage":"The uploaded data includes unsupported properties. Contact your software vendor.","metadata":{"unknownProperties":"...present, tax"}}]}" at

MaciejFrackowiak commented 20 hours ago

@ryszardlet Na podstawie wskazanej przez Ciebie informacji wynika, że w requeście przekazywane jest pole "present", które nie jest dostępne w strukturze POST /sale/product-offers. Niestety, ale bez trace-id nie mam możliwości zlokalizowania tych danych dokładniej.

ryszardlet commented 17 hours ago

Dziękuję za odpowiedź. Sprawdzałem w pliku swagger i nie mogę znaleźć takiego pola. Czy to jest coś starego? Coś co było kiedyś? Czy może kojarzy pan takie pole?

MaciejFrackowiak commented 17 hours ago

@ryszardlet Niestety, bez konkretnego przykładu wywołania możemy się "bawić" tylko w zgadywanie.

ryszardlet commented 17 hours ago

Rozumiem. Dziękuję za odpowiedź.

W nowszej wersji naszego systemu - po testach - wszystko działa poprawnie (w naszej aplikacji). Niestety nie możemy łatwo wykonać upgradu na produkcji (czas przedświąteczny).