W najbliższym czasie przekroczony zostanie zakres 32-bitowego inta (ze znakiem) dla identyfikatorów ofert (itemów). W związku z powyższym zalecamy (w terminie możliwie najszybszym) weryfikację Państwa aplikacji, baz danych oraz wszelkich innych miejsc w których przetwarzane są identyfikatory ofert, pod kątem typu danych w jakim wspomniany identyfikator jest przechowywany. We wszystkich tych miejscach, identyfikator oferty przechowywany być powinien wyłącznie w ramach typu long.
Zignorowanie tego zalecenia spowodować może poważne problemy w działaniu aplikacji. Przykładowo - po stronie kodu PHP, wartość 2854564000 rzutowana na inta da wartość ujemną -1440403296 (przy 32-bitowym rozmiarze typu int, przy 64-bitowym rozmiarze ten problem nie występuje), a po stronie bazy danych (zakładając, że pole w bazie nie przyjmuje wartości większych niż 32 bity), próba wstawienia do niej takiej wartości może zdestabilizować aplikację lub - co gorsza - zwrócić użytkownikom dane inne od oczekiwanych (jeżeli baza zamieni wartość spoza zakresu na wartość ujemną).
Ogromna większość metod WebAPI operuje na identyfikatorach ofert w ramach typu long, istnieją jednak jeszcze takie, które - z uwagi na pewną zaszłość historyczną - zwracają te identyfikatory w intach. Jako konsekwencję opisywanej wyżej sytuacji, w najbliższy wtorek zmieniony zostanie typ danych (z int na long) niżej wymienionych pól - bardzo prosimy o weryfikację, czy Państwa aplikacje są na tego typu zmianę przygotowane:
- doFeedback, parametr wejściowy: fe-item-id,
- doFeedbackMany, parametr wejściowy: fe-item-id, przekazywany w ramach struktury feedbacks-list (FeedbackManyStruct) oraz pole: fe-item-id, zwracane w ramach struktury fe-results (FeedbackResultStruct),
- doGetFeedback, pole: f-item-id, zwracane w ramach struktury feedback-list (FeedbackList),
- doGetWaitingFeedbacks, pole: fe-item-id, zwracane w ramach struktury fe-wait-list (WaitFeedbackStruct),
- doMyBillingItem, parametr wejściowy: item-id,
- Tablica ArrayOfAuctionID zmienia się z int[] na long[], co będzie miało wpływ na wejście następujących metod:
- doGetPostBuyData, pole: items-array,
- doMyFeedback2, pole: items-array,
- doMyFeedback2Limit, pole: items-array,
- doMyAccount2, pole: items-array,
- doMyAccountItemsCount, pole: items-array,
- doMyContact, pole: auction-id-list.
Mamy nadzieję, że mimo konieczności dokonania przez nas wymaganych zmian w WSDL-u usługi oraz mimo potrzeby poświęcenia czasu przez Państwa na weryfikację aplikacji pod kątem tych zmian, całość uda się przeprowadzić sprawnie i relatywnie bezproblemowo. Wartym zaznaczenia jest też fakt, że tego typu sytuacje nie powinny się raczej zbyt często powtarzać w przyszłości.