allegro / allegro-api

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

[NEWS] Parametry zależne - udostępniamy nowe pola / New fields for dependent parameters #3038

Open PrzemyslawLukanowski opened 4 years ago

PrzemyslawLukanowski commented 4 years ago

Parametry zależne to parametry:

Aktualnie skupiamy się na zależnościach między wybranym parametrem, a zbiorem dostępnych wartości parametru zależnego.

Parametry zależne planujemy stopniowo wdrażać w wybranych kategoriach, w najbliższym czasie wprowadzimy je w kategorii Klipsy (123428). O kolejnych kategoriach i parametrach będziemy informować na stronie dla sprzedających. Parametry mogą być obowiązkowe, sprawdzisz to w polu required w odpowiedzi dla GET /sale/categories/{categoryId}/parameters. Za pomocą tej funkcjonalności w przyszłości ograniczymy liczbę dostępnych podkategorii, dzięki czemu uprościmy nawigację, np. Sprzedający wystawi przedmiot “Nokia 8” już w kategorii nadrzędnej “Smartfony i telefony komórkowe” - wystarczy, że odpowiednio określi Markę i Model.

W związku z tym udostępniliśmy nowe pola w odpowiedzi dla GET /sale/categories/{categoryId}/parameters:

Po tym, jak wprowadzimy pierwsze parametry zależne, nowe pola pomogą ci sprawdzić, czy próbujesz wystawić ofertę z poprawną kombinacją wartości parametrów, np. czy Nokia produkuje model, który przekazujesz w żądaniu.

Początkowo nie będziemy zwracać błędów, jeśli nie powiążesz poprawnie parametrów zależnych. Jeżeli parametr oznaczymy jako obowiązkowy, będziesz musiał uzupełnić wartość, jednak zignorujemy zależność między parametrami. Gdy zdecydujemy się wprowadzić walidację, poinformujemy o tym z odpowiednim wyprzedzeniem.

Poniżej znajdziesz przykład struktury, który tłumaczy mechanizm parametrów zależnych:

        {
            "id": "1254",
            "name": "Model",
            "type": "dictionary",
            "required": false,
            "unit": null,
            "options": {
                "variantsAllowed": true,
                "variantsEqual": false,
                "ambiguousValueId": "1254_17231",
                "dependsOnParameterId": "202689"    -- identyfikator parametru, który 
                                                    definiuje, jakich wartości można użyć 
                                                    dla tego parametru.
                                                    W tym przypadku oznacza to, że 
                                                    wartości parametru Model są zależne
                                                    od wartości parametru Marka.
         },
        "dictionary": [
                {
                    "id": "1254_1",
                    "value": "Galaxy S20",
                    "dependsOnValueIds": [
                        "202689_213101"             -- identyfikator wartości, od której 
                                                    zależna jest wartość tego parametru. 
                                                    W tym przypadku wskazuje na markę 
                                                    Samsung.
                    ]
                },
                {
                    "id": "1254_2",
                    "value": "Galaxy S20+",
                    "dependsOnValueIds": [
                        "202689_213101"
                    ]
                },
      {...},
       {
            "id": "1254_3",
                    "value": "520 Lumia",
                    "dependsOnValueIds": [
                        "202689_213102"             -- w tym przypadku wartość wskazuje 
                                                      na markę Nokia
                    ]
   },
{...},
    {
            "id": "1254_4",
                    "value": "Mi Note 10",
                    "dependsOnValueIds": [
                        "202689_213103"         -- w tym przypadku wartość wskazuje
                            na markę Xiaomi
                    ]
   },
    {
            "id": "1254_5",
                    "value": "Mi Note 10 Pro",
                    "dependsOnValueIds": [
                        "202689_213103"
                    ]
   }
]}

Dependent parameters are parameters:

We plan to introduce dependent parameters gradually in selected categories, the first will appear in Clips category (123428). We will inform you about next categories and parameters on the sellers page. The parameters may be required, you can check it in the ‘required’ field in the response for GET /sale/categories/{categoryId}/parameters. Owing to this solution we will limit the number of available categories in the future, which will simplify navigation, e.g. seller will list “Nokia 8” already in the parent category “Smartphones and mobilephones” - specifying Brand and Model accordingly.

Therefore, we have introduced new fields in response to GET /sale/categories/{categoryId}/parameters:

When we introduce first dependent parameters, new fields will help you check whether you are trying to list offer with valid combination of parameter values, e.g. whether Nokia is producing the model provided in the request.

Initially, we won’t return errors, if you don’t bind correctly dependent parameters. If parameter will be required, you will need to provide value, but we will ignore the dependency between the parameters. We will inform you in advance, when more strict validation will be implemented.

Below you can find example of a structure that explains the dependent parameters functionality:


        {
            "id": "1254",
            "name": "Model",
            "type": "dictionary",
            "required": false,
            "unit": null,
            "options": {
                "variantsAllowed": true,
                "variantsEqual": false,
                "ambiguousValueId": "1254_17231",
                "dependsOnParameterId": "202689"   -- values in the dictionary depend on
                                                    the parameter referenced by this field.
                                                    In this case it means that values
                                                    for Model parameter depends on
                                                    Brand parameter value.

         },
        "dictionary": [
                {
                    "id": "1254_1",
                    "value": "Galaxy S20",
                    "dependsOnValueIds": [
                        "202689_213101"         -- the ID of the dictionary value 
                                                   from parameter that this parameter     
                                                   value depends on. 
                                                   In this case it indicates Samsung brand.
                    ]
                },
                {
                    "id": "1254_2",
                    "value": "Galaxy S20+",
                    "dependsOnValueIds": [
                        "202689_213101"
                    ]
                },
      {...},
       {
            "id": "1254_3",
                    "value": "520 Lumia",
                    "dependsOnValueIds": [
                        "202689_213102"         --  in this case it indicates Nokia brand.
                    ]
   },
{...},
    {
            "id": "1254_4",
                    "value": "Mi Note 10",
                    "dependsOnValueIds": [
                        "202689_213103"     --  in this case it indicates Xiaomi brand.
                    ]
   },
    {
            "id": "1254_5",
                    "value": "Mi Note 10 Pro",
                    "dependsOnValueIds": [
                        "202689_213103"
                    ]
   }
]}
PhotoSoft commented 4 years ago

Taka moja luźna uwaga, bo widzę, że historia zatacza koło. Parametry zależne już kiedyś były - okazały się niewypałem. Katalog produktów już kiedyś był - okazał się niewypałem. Wszystko przez to, że dane nie były aktualizowane na bieżąco.

Musicie przyłożyć się teraz do tego lepiej, bo katalog produktów, który jest obecnie ma mało pochlebne opinie wśród moich Klientów ze względu na mnóstwo błędów. Mało kto chce z tego korzystać.

PrzemyslawLukanowski commented 4 years ago

Dziękuję za tę uwagę.

PhotoSoft commented 4 years ago

Akurat na czasie komentarz od Klienta :)

Czy API przewiduje jakiś formularz do zgłaszania błędów w produktach? Przydałoby się, bo szlag mnie trafia jak przy Słoniu Trąbalskim Tuwima pojawia się Praca zbiorowa.

PrzemyslawLukanowski commented 4 years ago

Na tę chwilę nie planujemy wprowadzić takiego zasobu, dodaję jednak ten komentarz jako sugestię rozwoju API.

PrzemyslawLukanowski commented 4 years ago

Oczywiście taki formularz jest dostępny na naszej stronie:

Screenshot_10

przykładowy link

PhotoSoft commented 4 years ago

Taki link mi wystarczy. Dziękuje.