Prośba o wsparcie przy zmniejszeniu liczby błędów tworzenia elastycznych zestawów /sale/flexible-bundles
- Langage dominant
- Aucune donnée de langage
- Étoiles
- 244
- Forks
- 40
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
Dzień dobry,
korzystamy z endpointów:
- `POST /sale/flexible-bundles`
- `PUT /sale/flexible-bundles/{bundleId}`
Zgodnie z dokumentacją zestaw elastyczny nie może zawierać m.in.:
- ofert z ograniczeniem wiekowym, np. alkoholu;
- ofert B2B;
- ofert z kategorii nieobsługiwanych przez Flexible Bundles;
- wielu ofert reprezentujących ten sam produkt;
- jednocześnie ofert One Fulfillment oraz ofert realizowanych przez sprzedawcę.
Chcielibyśmy sprawdzać wszystkie te warunki przed wysłaniem żądania POST/PUT, aby nie generować odpowiedzi HTTP 422.
Status One Fulfillment możemy odczytać z pola `isFulfillment` zwracanego przez `GET /sale/offers`. Nie znaleźliśmy natomiast w publicznym API analogicznej informacji pozwalającej jednoznacznie ustalić, czy:
1. oferta jest objęta ograniczeniem wiekowym;
2. jej kategoria obsługuje Flexible Bundles;
3. konkretna oferta lub kategoria spowoduje błąd `OffersFromBannedCategoriesException`.
`GET /sale/categories/{categoryId}` nie zwraca obecnie pola w rodzaju `flexibleBundlesSupported` lub `ageRestricted`. Nie znaleźliśmy również endpointu umożliwiającego sprawdzenie definicji zestawu bez próby jego utworzenia lub aktualizacji.
Dodatkowym problemem jest brak możliwości ustalenia kategorii powodującej odrzucenie.
Każdy slot zestawu zawiera oferty z jednej kategorii, ale jeden Flexible Bundle może składać się z wielu slotów, a więc również z wielu różnych kategorii. Sam błąd `OffersFromBannedCategoriesException` informuje jedynie, że co najmniej jedna kategoria jest niedozwolona.
Nie pozwala nam natomiast ustalić, który slot, `offerId` lub `categoryId` spowodował odrzucenie.
Nie możemy bezpiecznie uznać wszystkich kategorii przesłanych w takim żądaniu za niedozwolone, ponieważ część z nich może poprawnie obsługiwać Flexible Bundles. Nie chcemy również wykonywać kolejnych prób z różnymi kombinacjami slotów, ponieważ prowadziłoby to do generowania następnych odpowiedzi 422.
Czy istnieje obecnie wspierany sposób, aby przed wywołaniem POST/PUT:
- rozpoznać ofertę z ograniczeniem wiekowym;
- sprawdzić, czy konkretna kategoria obsługuje Flexible Bundles;
- pobrać listę kategorii obsługiwanych lub niedostępnych dla Flexible Bundles;
- zweryfikować całą definicję zestawu bez jego utworzenia;
- ustalić, który slot, `offerId` lub `categoryId` spowodował `OffersFromBannedCategoriesException`?
Jeżeli taki mechanizm obecnie nie istnieje, czy planują Państwo udostępnić jedno z następujących rozwiązań:
- flagę kwalifikacji w `GET /sale/categories/{categoryId}`;
- pole `ageRestricted` w danych oferty lub kategorii;
- maszynowo odczytywalną listę kategorii obsługiwanych albo niedostępnych dla Flexible Bundles;
- bezskutkowy endpoint walidacyjny zwracający błędy osobno dla każdego slotu i oferty;
- identyfikator niedozwolonej kategorii lub oferty w odpowiedzi 422, np. w polach `path`, `details` albo `metadata`?
Obsługujemy wielu sprzedawców, w tym konta oferujące alkohol oraz asortyment 18+. Bez wcześniejszej walidacji jedynym sposobem poznania ograniczenia może być otrzymanie odpowiedzi 422 z właściwego endpointu publikacyjnego.
Zależy nam na unikaniu takich prób, szczególnie że duża liczba odpowiedzi 422 może skutkować ograniczeniem dostępu aplikacji do endpointu. Jednocześnie nie chcemy wyłączać poprawnych kategorii wyłącznie dlatego, że znalazły się w jednym zestawie razem z kategorią niedozwoloną.
Będziemy wdzięczni za wskazanie rekomendowanego sposobu przeprowadzenia takiej walidacji.
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Évaluation
Cette issue n'a pas encore été évaluée.