@@ -11,11 +11,14 @@ Basic Search
1111
1212 parameters = {
1313 " author" : " jim butcher" ,
14- " sort" : [" current_SALES" , " asc" ],
14+ " sort" : [[ " current_SALES" , " asc" ] ],
1515 " perPage" : 100 ,
1616 }
1717 asins = api.product_finder(parameters)
1818
19+ Sort values follow the backend schema: pass a list of ``[field, direction] ``
20+ pairs, where direction is ``"asc" `` or ``"desc" ``.
21+
1922Validated Parameters
2023--------------------
2124:class: `keepa.ProductParams ` validates backend field names before a request
@@ -25,7 +28,7 @@ consumes tokens. Unknown names raise a validation error.
2528
2629 parameters = keepa.ProductParams(
2730 author = " jim butcher" ,
28- sort = [" current_SALES" , " asc" ],
31+ sort = [[ " current_SALES" , " asc" ] ],
2932 perPage = 100 ,
3033 )
3134 asins = api.product_finder(parameters)
@@ -47,6 +50,26 @@ The backend exposes more than a thousand filters. Inspect them through
4750``ProductParams.model_json_schema() ``, or
4851``keepa.backend_models.ProductFinderRequest.model_json_schema() ``.
4952
53+ Backend Filter Shapes
54+ ---------------------
55+ Keep product-finder field names exactly as Keepa documents them. Range filters
56+ use suffixes such as ``_gte `` and ``_lte ``; list-like filters accept either a
57+ single string or a list of strings when the backend supports multiple values.
58+
59+ .. code-block :: python
60+
61+ request = keepa.ProductParams(
62+ buyBoxSellerId = [" A2L77EE7U53NWQ" , " ATVPDKIKX0DER" ],
63+ partNumber = [" MX-1000" , " MX-1001" ],
64+ current_SALES_lte = 50000 ,
65+ sort = [[" current_SALES" , " desc" ]],
66+ )
67+ asins = api.product_finder(request)
68+
69+ This preserves backend payloads for fields such as ``buyBoxSellerId ``,
70+ ``partNumber ``, ``categories_include ``, and ``sort `` instead of rewriting them
71+ into client-specific names.
72+
5073Result Limits and Pages
5174-----------------------
5275``n_products `` sets ``perPage `` only when the supplied parameters do not
0 commit comments