wildberries-sdk 0.1.17__py3-none-any.whl → 0.1.18__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. wildberries_sdk/analytics/__init__.py +3 -7
  2. wildberries_sdk/analytics/api/__init__.py +1 -3
  3. wildberries_sdk/analytics/api/default_api.py +4670 -0
  4. wildberries_sdk/analytics/api_client.py +1 -1
  5. wildberries_sdk/analytics/configuration.py +1 -1
  6. wildberries_sdk/communications/__init__.py +1 -5
  7. wildberries_sdk/communications/api/__init__.py +0 -2
  8. wildberries_sdk/communications/api/default_api.py +4282 -858
  9. wildberries_sdk/communications/api_client.py +1 -1
  10. wildberries_sdk/communications/configuration.py +1 -1
  11. wildberries_sdk/finances/__init__.py +1 -3
  12. wildberries_sdk/finances/api/__init__.py +0 -1
  13. wildberries_sdk/finances/api/default_api.py +367 -2
  14. wildberries_sdk/finances/api_client.py +1 -1
  15. wildberries_sdk/finances/configuration.py +1 -1
  16. wildberries_sdk/general/__init__.py +3 -7
  17. wildberries_sdk/general/api/__init__.py +1 -3
  18. wildberries_sdk/general/api/{api.py → default_api.py} +560 -1
  19. wildberries_sdk/general/api_client.py +1 -1
  20. wildberries_sdk/general/configuration.py +1 -1
  21. wildberries_sdk/in_store_pickup/__init__.py +3 -5
  22. wildberries_sdk/in_store_pickup/api/__init__.py +1 -2
  23. wildberries_sdk/in_store_pickup/api/{api.py → default_api.py} +1798 -2
  24. wildberries_sdk/in_store_pickup/api_client.py +1 -1
  25. wildberries_sdk/in_store_pickup/configuration.py +1 -1
  26. wildberries_sdk/orders_dbs/__init__.py +3 -5
  27. wildberries_sdk/orders_dbs/api/__init__.py +1 -2
  28. wildberries_sdk/orders_dbs/api/{dbs_api.py → default_api.py} +1819 -2
  29. wildberries_sdk/orders_dbs/api_client.py +1 -1
  30. wildberries_sdk/orders_dbs/configuration.py +1 -1
  31. wildberries_sdk/orders_dbw/__init__.py +3 -5
  32. wildberries_sdk/orders_dbw/api/__init__.py +1 -2
  33. wildberries_sdk/orders_dbw/api/{dbw_api.py → default_api.py} +1821 -1
  34. wildberries_sdk/orders_dbw/api_client.py +1 -1
  35. wildberries_sdk/orders_dbw/configuration.py +1 -1
  36. wildberries_sdk/orders_fbs/__init__.py +3 -5
  37. wildberries_sdk/orders_fbs/api/__init__.py +1 -2
  38. wildberries_sdk/orders_fbs/api/default_api.py +10043 -0
  39. wildberries_sdk/orders_fbs/api_client.py +1 -1
  40. wildberries_sdk/orders_fbs/configuration.py +1 -1
  41. wildberries_sdk/orders_fbw/__init__.py +3 -5
  42. wildberries_sdk/orders_fbw/api/__init__.py +1 -2
  43. wildberries_sdk/orders_fbw/api/default_api.py +2368 -0
  44. wildberries_sdk/orders_fbw/api_client.py +1 -1
  45. wildberries_sdk/orders_fbw/configuration.py +1 -1
  46. wildberries_sdk/products/__init__.py +1 -7
  47. wildberries_sdk/products/api/__init__.py +0 -3
  48. wildberries_sdk/products/api/default_api.py +12348 -2
  49. wildberries_sdk/products/api_client.py +1 -1
  50. wildberries_sdk/products/configuration.py +1 -1
  51. wildberries_sdk/products/models/content_v2_get_cards_list_post200_response_cards_inner_tags_inner.py +1 -1
  52. wildberries_sdk/promotion/__init__.py +1 -3
  53. wildberries_sdk/promotion/api/__init__.py +0 -1
  54. wildberries_sdk/promotion/api/default_api.py +10107 -1059
  55. wildberries_sdk/promotion/api_client.py +1 -1
  56. wildberries_sdk/promotion/configuration.py +1 -1
  57. wildberries_sdk/reports/__init__.py +3 -13
  58. wildberries_sdk/reports/api/__init__.py +1 -6
  59. wildberries_sdk/{promotion/api/api.py → reports/api/default_api.py} +2245 -2381
  60. wildberries_sdk/reports/api_client.py +1 -1
  61. wildberries_sdk/reports/configuration.py +1 -1
  62. wildberries_sdk/tariffs/__init__.py +1 -3
  63. wildberries_sdk/tariffs/api/__init__.py +0 -1
  64. wildberries_sdk/tariffs/api/default_api.py +1147 -34
  65. wildberries_sdk/tariffs/api_client.py +1 -1
  66. wildberries_sdk/tariffs/configuration.py +1 -1
  67. wildberries_sdk/wbd/__init__.py +1 -3
  68. wildberries_sdk/wbd/api/__init__.py +0 -1
  69. wildberries_sdk/wbd/api/default_api.py +1662 -89
  70. wildberries_sdk/wbd/api_client.py +1 -1
  71. wildberries_sdk/wbd/configuration.py +1 -1
  72. wildberries_sdk/wbd/models/offer_create_request.py +1 -1
  73. wildberries_sdk/wbd/models/offer_update_request.py +1 -1
  74. wildberries_sdk-0.1.18.dist-info/METADATA +395 -0
  75. {wildberries_sdk-0.1.17.dist-info → wildberries_sdk-0.1.18.dist-info}/RECORD +78 -88
  76. wildberries_sdk/analytics/api/api.py +0 -1490
  77. wildberries_sdk/analytics/api/csv_api.py +0 -1178
  78. wildberries_sdk/communications/api/api.py +0 -1166
  79. wildberries_sdk/finances/api/api.py +0 -404
  80. wildberries_sdk/general/api/api_api.py +0 -341
  81. wildberries_sdk/general/api/wbapi_api.py +0 -291
  82. wildberries_sdk/orders_fbs/api/fbs_api.py +0 -2683
  83. wildberries_sdk/orders_fbw/api/api.py +0 -1153
  84. wildberries_sdk/products/api/api.py +0 -3891
  85. wildberries_sdk/reports/api/api.py +0 -350
  86. wildberries_sdk/reports/api/c_api.py +0 -361
  87. wildberries_sdk/tariffs/api/api.py +0 -1151
  88. wildberries_sdk/wbd/api/api.py +0 -1611
  89. wildberries_sdk-0.1.17.dist-info/METADATA +0 -191
  90. {wildberries_sdk-0.1.17.dist-info → wildberries_sdk-0.1.18.dist-info}/LICENSE +0 -0
  91. {wildberries_sdk-0.1.17.dist-info → wildberries_sdk-0.1.18.dist-info}/WHEEL +0 -0
  92. {wildberries_sdk-0.1.17.dist-info → wildberries_sdk-0.1.18.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,4670 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Аналитика и данные
5
+
6
+ <div class=\"description_important\"> Узнать больше об аналитике и данных можно в <a href=\"https://seller.wildberries.ru/instructions/ru/ru/subcategory/seller-analytics\">справочном центре</a> </div> В разделе описаны методы получения: 1. [Воронки продаж](/openapi/analytics#tag/Voronka-prodazh) 2. [Поисковых запросов по вашим товарам](/openapi/analytics#tag/Poiskovye-zaprosy-po-vashim-tovaram) 3. [Истории остатков](/openapi/analytics#tag/Istoriya-ostatkov) 4. [Аналитики продавца в формате CSV](/openapi/analytics#tag/Analitika-prodavca-CSV)
7
+
8
+ The version of the OpenAPI document: analytics
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """ # noqa: E501
13
+
14
+ import warnings
15
+ from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
16
+ from typing import Any, Dict, List, Optional, Tuple, Union
17
+ from typing_extensions import Annotated
18
+
19
+ from pydantic import Field, StrictBytes, StrictStr
20
+ from typing import List, Optional, Tuple, Union
21
+ from typing_extensions import Annotated
22
+ from uuid import UUID
23
+ from wildberries_sdk.analytics.models.api_v2_nm_report_downloads_post_request import ApiV2NmReportDownloadsPostRequest
24
+ from wildberries_sdk.analytics.models.api_v2_search_report_product_orders_post200_response import ApiV2SearchReportProductOrdersPost200Response
25
+ from wildberries_sdk.analytics.models.api_v2_search_report_product_search_texts_post200_response import ApiV2SearchReportProductSearchTextsPost200Response
26
+ from wildberries_sdk.analytics.models.api_v2_search_report_report_post200_response import ApiV2SearchReportReportPost200Response
27
+ from wildberries_sdk.analytics.models.api_v2_search_report_table_details_post200_response import ApiV2SearchReportTableDetailsPost200Response
28
+ from wildberries_sdk.analytics.models.api_v2_search_report_table_groups_post200_response import ApiV2SearchReportTableGroupsPost200Response
29
+ from wildberries_sdk.analytics.models.api_v2_stocks_report_offices_post200_response import ApiV2StocksReportOfficesPost200Response
30
+ from wildberries_sdk.analytics.models.api_v2_stocks_report_products_groups_post200_response import ApiV2StocksReportProductsGroupsPost200Response
31
+ from wildberries_sdk.analytics.models.api_v2_stocks_report_products_products_post200_response import ApiV2StocksReportProductsProductsPost200Response
32
+ from wildberries_sdk.analytics.models.api_v2_stocks_report_products_sizes_post200_response import ApiV2StocksReportProductsSizesPost200Response
33
+ from wildberries_sdk.analytics.models.common_shipping_office_filters import CommonShippingOfficeFilters
34
+ from wildberries_sdk.analytics.models.common_size_filters import CommonSizeFilters
35
+ from wildberries_sdk.analytics.models.grouped_history_request import GroupedHistoryRequest
36
+ from wildberries_sdk.analytics.models.main_request import MainRequest
37
+ from wildberries_sdk.analytics.models.nm_report_create_report_response import NmReportCreateReportResponse
38
+ from wildberries_sdk.analytics.models.nm_report_get_reports_response import NmReportGetReportsResponse
39
+ from wildberries_sdk.analytics.models.nm_report_retry_report_request import NmReportRetryReportRequest
40
+ from wildberries_sdk.analytics.models.nm_report_retry_report_response import NmReportRetryReportResponse
41
+ from wildberries_sdk.analytics.models.post_sales_funnel_grouped_history200_response import PostSalesFunnelGroupedHistory200Response
42
+ from wildberries_sdk.analytics.models.post_sales_funnel_products200_response import PostSalesFunnelProducts200Response
43
+ from wildberries_sdk.analytics.models.product_history_request import ProductHistoryRequest
44
+ from wildberries_sdk.analytics.models.product_history_response_inner import ProductHistoryResponseInner
45
+ from wildberries_sdk.analytics.models.product_orders_request import ProductOrdersRequest
46
+ from wildberries_sdk.analytics.models.product_search_texts_request import ProductSearchTextsRequest
47
+ from wildberries_sdk.analytics.models.products_request import ProductsRequest
48
+ from wildberries_sdk.analytics.models.table_details_request import TableDetailsRequest
49
+ from wildberries_sdk.analytics.models.table_group_request import TableGroupRequest
50
+ from wildberries_sdk.analytics.models.table_group_request_st import TableGroupRequestSt
51
+ from wildberries_sdk.analytics.models.table_product_request import TableProductRequest
52
+
53
+ from wildberries_sdk.analytics.api_client import ApiClient, RequestSerialized
54
+ from wildberries_sdk.analytics.api_response import ApiResponse
55
+ from wildberries_sdk.analytics.rest import RESTResponseType
56
+
57
+
58
+ class DefaultApi:
59
+ """NOTE: This class is auto generated by OpenAPI Generator
60
+ Ref: https://openapi-generator.tech
61
+
62
+ Do not edit the class manually.
63
+ """
64
+
65
+ def __init__(self, api_client=None) -> None:
66
+ if api_client is None:
67
+ api_client = ApiClient.get_default()
68
+ self.api_client = api_client
69
+
70
+
71
+ @validate_call
72
+ def api_v2_nm_report_downloads_file_download_id_get(
73
+ self,
74
+ download_id: Annotated[UUID, Field(description="ID отчёта")],
75
+ _request_timeout: Union[
76
+ None,
77
+ Annotated[StrictFloat, Field(gt=0)],
78
+ Tuple[
79
+ Annotated[StrictFloat, Field(gt=0)],
80
+ Annotated[StrictFloat, Field(gt=0)]
81
+ ]
82
+ ] = None,
83
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
84
+ _content_type: Optional[StrictStr] = None,
85
+ _headers: Optional[Dict[StrictStr, Any]] = None,
86
+ _host_index: Annotated[StrictInt, Field(ge=0, le=1)] = 0,
87
+ ) -> bytearray:
88
+ """Получить отчёт
89
+
90
+ Метод возвращает отчёт с расширенной аналитикой продавца по ID [задания на генерацию](/openapi/analytics#tag/Analitika-prodavca-CSV/paths/~1api~1v2~1nm-report~1downloads/post). <br><br> Можно получить отчёт, который сгенерирован за последние 48 часов.<br>Отчёт будет загружен внутри архива ZIP в формате CSV. <div class=\"description_limit\"> <a href=\"/openapi/api-information#tag/Vvedenie/Limity-zaprosov\">Лимит запросов</a> на один аккаунт продавца: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 минута | 3 запроса | 20 секунд | 3 запроса | </div>
91
+
92
+ :param download_id: ID отчёта (required)
93
+ :type download_id: UUID
94
+ :param _request_timeout: timeout setting for this request. If one
95
+ number provided, it will be total request
96
+ timeout. It can also be a pair (tuple) of
97
+ (connection, read) timeouts.
98
+ :type _request_timeout: int, tuple(int, int), optional
99
+ :param _request_auth: set to override the auth_settings for an a single
100
+ request; this effectively ignores the
101
+ authentication in the spec for a single request.
102
+ :type _request_auth: dict, optional
103
+ :param _content_type: force content-type for the request.
104
+ :type _content_type: str, Optional
105
+ :param _headers: set to override the headers for a single
106
+ request; this effectively ignores the headers
107
+ in the spec for a single request.
108
+ :type _headers: dict, optional
109
+ :param _host_index: set to override the host_index for a single
110
+ request; this effectively ignores the host_index
111
+ in the spec for a single request.
112
+ :type _host_index: int, optional
113
+ :return: Returns the result object.
114
+ """ # noqa: E501
115
+
116
+ _param = self._api_v2_nm_report_downloads_file_download_id_get_serialize(
117
+ download_id=download_id,
118
+ _request_auth=_request_auth,
119
+ _content_type=_content_type,
120
+ _headers=_headers,
121
+ _host_index=_host_index
122
+ )
123
+
124
+ _response_types_map: Dict[str, Optional[str]] = {
125
+ '200': "bytearray",
126
+ '400': "ApiV2NmReportDownloadsGet400Response",
127
+ '401': "PostSalesFunnelProducts401Response",
128
+ '403': "ApiV2NmReportDownloadsGet403Response",
129
+ '429': "PostSalesFunnelProducts401Response",
130
+ }
131
+ response_data = self.api_client.call_api(
132
+ *_param,
133
+ _request_timeout=_request_timeout
134
+ )
135
+ response_data.read()
136
+ return self.api_client.response_deserialize(
137
+ response_data=response_data,
138
+ response_types_map=_response_types_map,
139
+ ).data
140
+
141
+
142
+ @validate_call
143
+ def api_v2_nm_report_downloads_file_download_id_get_with_http_info(
144
+ self,
145
+ download_id: Annotated[UUID, Field(description="ID отчёта")],
146
+ _request_timeout: Union[
147
+ None,
148
+ Annotated[StrictFloat, Field(gt=0)],
149
+ Tuple[
150
+ Annotated[StrictFloat, Field(gt=0)],
151
+ Annotated[StrictFloat, Field(gt=0)]
152
+ ]
153
+ ] = None,
154
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
155
+ _content_type: Optional[StrictStr] = None,
156
+ _headers: Optional[Dict[StrictStr, Any]] = None,
157
+ _host_index: Annotated[StrictInt, Field(ge=0, le=1)] = 0,
158
+ ) -> ApiResponse[bytearray]:
159
+ """Получить отчёт
160
+
161
+ Метод возвращает отчёт с расширенной аналитикой продавца по ID [задания на генерацию](/openapi/analytics#tag/Analitika-prodavca-CSV/paths/~1api~1v2~1nm-report~1downloads/post). <br><br> Можно получить отчёт, который сгенерирован за последние 48 часов.<br>Отчёт будет загружен внутри архива ZIP в формате CSV. <div class=\"description_limit\"> <a href=\"/openapi/api-information#tag/Vvedenie/Limity-zaprosov\">Лимит запросов</a> на один аккаунт продавца: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 минута | 3 запроса | 20 секунд | 3 запроса | </div>
162
+
163
+ :param download_id: ID отчёта (required)
164
+ :type download_id: UUID
165
+ :param _request_timeout: timeout setting for this request. If one
166
+ number provided, it will be total request
167
+ timeout. It can also be a pair (tuple) of
168
+ (connection, read) timeouts.
169
+ :type _request_timeout: int, tuple(int, int), optional
170
+ :param _request_auth: set to override the auth_settings for an a single
171
+ request; this effectively ignores the
172
+ authentication in the spec for a single request.
173
+ :type _request_auth: dict, optional
174
+ :param _content_type: force content-type for the request.
175
+ :type _content_type: str, Optional
176
+ :param _headers: set to override the headers for a single
177
+ request; this effectively ignores the headers
178
+ in the spec for a single request.
179
+ :type _headers: dict, optional
180
+ :param _host_index: set to override the host_index for a single
181
+ request; this effectively ignores the host_index
182
+ in the spec for a single request.
183
+ :type _host_index: int, optional
184
+ :return: Returns the result object.
185
+ """ # noqa: E501
186
+
187
+ _param = self._api_v2_nm_report_downloads_file_download_id_get_serialize(
188
+ download_id=download_id,
189
+ _request_auth=_request_auth,
190
+ _content_type=_content_type,
191
+ _headers=_headers,
192
+ _host_index=_host_index
193
+ )
194
+
195
+ _response_types_map: Dict[str, Optional[str]] = {
196
+ '200': "bytearray",
197
+ '400': "ApiV2NmReportDownloadsGet400Response",
198
+ '401': "PostSalesFunnelProducts401Response",
199
+ '403': "ApiV2NmReportDownloadsGet403Response",
200
+ '429': "PostSalesFunnelProducts401Response",
201
+ }
202
+ response_data = self.api_client.call_api(
203
+ *_param,
204
+ _request_timeout=_request_timeout
205
+ )
206
+ response_data.read()
207
+ return self.api_client.response_deserialize(
208
+ response_data=response_data,
209
+ response_types_map=_response_types_map,
210
+ )
211
+
212
+
213
+ @validate_call
214
+ def api_v2_nm_report_downloads_file_download_id_get_without_preload_content(
215
+ self,
216
+ download_id: Annotated[UUID, Field(description="ID отчёта")],
217
+ _request_timeout: Union[
218
+ None,
219
+ Annotated[StrictFloat, Field(gt=0)],
220
+ Tuple[
221
+ Annotated[StrictFloat, Field(gt=0)],
222
+ Annotated[StrictFloat, Field(gt=0)]
223
+ ]
224
+ ] = None,
225
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
226
+ _content_type: Optional[StrictStr] = None,
227
+ _headers: Optional[Dict[StrictStr, Any]] = None,
228
+ _host_index: Annotated[StrictInt, Field(ge=0, le=1)] = 0,
229
+ ) -> RESTResponseType:
230
+ """Получить отчёт
231
+
232
+ Метод возвращает отчёт с расширенной аналитикой продавца по ID [задания на генерацию](/openapi/analytics#tag/Analitika-prodavca-CSV/paths/~1api~1v2~1nm-report~1downloads/post). <br><br> Можно получить отчёт, который сгенерирован за последние 48 часов.<br>Отчёт будет загружен внутри архива ZIP в формате CSV. <div class=\"description_limit\"> <a href=\"/openapi/api-information#tag/Vvedenie/Limity-zaprosov\">Лимит запросов</a> на один аккаунт продавца: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 минута | 3 запроса | 20 секунд | 3 запроса | </div>
233
+
234
+ :param download_id: ID отчёта (required)
235
+ :type download_id: UUID
236
+ :param _request_timeout: timeout setting for this request. If one
237
+ number provided, it will be total request
238
+ timeout. It can also be a pair (tuple) of
239
+ (connection, read) timeouts.
240
+ :type _request_timeout: int, tuple(int, int), optional
241
+ :param _request_auth: set to override the auth_settings for an a single
242
+ request; this effectively ignores the
243
+ authentication in the spec for a single request.
244
+ :type _request_auth: dict, optional
245
+ :param _content_type: force content-type for the request.
246
+ :type _content_type: str, Optional
247
+ :param _headers: set to override the headers for a single
248
+ request; this effectively ignores the headers
249
+ in the spec for a single request.
250
+ :type _headers: dict, optional
251
+ :param _host_index: set to override the host_index for a single
252
+ request; this effectively ignores the host_index
253
+ in the spec for a single request.
254
+ :type _host_index: int, optional
255
+ :return: Returns the result object.
256
+ """ # noqa: E501
257
+
258
+ _param = self._api_v2_nm_report_downloads_file_download_id_get_serialize(
259
+ download_id=download_id,
260
+ _request_auth=_request_auth,
261
+ _content_type=_content_type,
262
+ _headers=_headers,
263
+ _host_index=_host_index
264
+ )
265
+
266
+ _response_types_map: Dict[str, Optional[str]] = {
267
+ '200': "bytearray",
268
+ '400': "ApiV2NmReportDownloadsGet400Response",
269
+ '401': "PostSalesFunnelProducts401Response",
270
+ '403': "ApiV2NmReportDownloadsGet403Response",
271
+ '429': "PostSalesFunnelProducts401Response",
272
+ }
273
+ response_data = self.api_client.call_api(
274
+ *_param,
275
+ _request_timeout=_request_timeout
276
+ )
277
+ return response_data.response
278
+
279
+
280
+ def _api_v2_nm_report_downloads_file_download_id_get_serialize(
281
+ self,
282
+ download_id,
283
+ _request_auth,
284
+ _content_type,
285
+ _headers,
286
+ _host_index,
287
+ ) -> RequestSerialized:
288
+
289
+ _hosts = [
290
+ 'https://seller-analytics-api.wildberries.ru'
291
+ ]
292
+ _host = _hosts[_host_index]
293
+
294
+ _collection_formats: Dict[str, str] = {
295
+ }
296
+
297
+ _path_params: Dict[str, str] = {}
298
+ _query_params: List[Tuple[str, str]] = []
299
+ _header_params: Dict[str, Optional[str]] = _headers or {}
300
+ _form_params: List[Tuple[str, str]] = []
301
+ _files: Dict[
302
+ str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
303
+ ] = {}
304
+ _body_params: Optional[bytes] = None
305
+
306
+ # process the path parameters
307
+ if download_id is not None:
308
+ _path_params['downloadId'] = download_id
309
+ # process the query parameters
310
+ # process the header parameters
311
+ # process the form parameters
312
+ # process the body parameter
313
+
314
+
315
+ # set the HTTP header `Accept`
316
+ if 'Accept' not in _header_params:
317
+ _header_params['Accept'] = self.api_client.select_header_accept(
318
+ [
319
+ 'application/zip',
320
+ 'application/json'
321
+ ]
322
+ )
323
+
324
+
325
+ # authentication setting
326
+ _auth_settings: List[str] = [
327
+ 'HeaderApiKey'
328
+ ]
329
+
330
+ return self.api_client.param_serialize(
331
+ method='GET',
332
+ resource_path='/api/v2/nm-report/downloads/file/{downloadId}',
333
+ path_params=_path_params,
334
+ query_params=_query_params,
335
+ header_params=_header_params,
336
+ body=_body_params,
337
+ post_params=_form_params,
338
+ files=_files,
339
+ auth_settings=_auth_settings,
340
+ collection_formats=_collection_formats,
341
+ _host=_host,
342
+ _request_auth=_request_auth
343
+ )
344
+
345
+
346
+
347
+
348
+ @validate_call
349
+ def api_v2_nm_report_downloads_get(
350
+ self,
351
+ filter_download_ids: Annotated[Optional[List[UUID]], Field(description="ID отчёта")] = None,
352
+ _request_timeout: Union[
353
+ None,
354
+ Annotated[StrictFloat, Field(gt=0)],
355
+ Tuple[
356
+ Annotated[StrictFloat, Field(gt=0)],
357
+ Annotated[StrictFloat, Field(gt=0)]
358
+ ]
359
+ ] = None,
360
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
361
+ _content_type: Optional[StrictStr] = None,
362
+ _headers: Optional[Dict[StrictStr, Any]] = None,
363
+ _host_index: Annotated[StrictInt, Field(ge=0, le=1)] = 0,
364
+ ) -> NmReportGetReportsResponse:
365
+ """Получить список отчётов
366
+
367
+ Метод возвращает список отчётов с расширенной аналитикой продавца. Ответ содержит ID [созданных отчётов](/openapi/analytics#tag/Analitika-prodavca-CSV/paths/~1api~1v2~1nm-report~1downloads/post) и статусы генерации. <div class=\"description_limit\"> <a href=\"/openapi/api-information#tag/Vvedenie/Limity-zaprosov\">Лимит запросов</a> на один аккаунт продавца: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 минута | 3 запроса | 20 секунд | 3 запроса | </div>
368
+
369
+ :param filter_download_ids: ID отчёта
370
+ :type filter_download_ids: List[UUID]
371
+ :param _request_timeout: timeout setting for this request. If one
372
+ number provided, it will be total request
373
+ timeout. It can also be a pair (tuple) of
374
+ (connection, read) timeouts.
375
+ :type _request_timeout: int, tuple(int, int), optional
376
+ :param _request_auth: set to override the auth_settings for an a single
377
+ request; this effectively ignores the
378
+ authentication in the spec for a single request.
379
+ :type _request_auth: dict, optional
380
+ :param _content_type: force content-type for the request.
381
+ :type _content_type: str, Optional
382
+ :param _headers: set to override the headers for a single
383
+ request; this effectively ignores the headers
384
+ in the spec for a single request.
385
+ :type _headers: dict, optional
386
+ :param _host_index: set to override the host_index for a single
387
+ request; this effectively ignores the host_index
388
+ in the spec for a single request.
389
+ :type _host_index: int, optional
390
+ :return: Returns the result object.
391
+ """ # noqa: E501
392
+
393
+ _param = self._api_v2_nm_report_downloads_get_serialize(
394
+ filter_download_ids=filter_download_ids,
395
+ _request_auth=_request_auth,
396
+ _content_type=_content_type,
397
+ _headers=_headers,
398
+ _host_index=_host_index
399
+ )
400
+
401
+ _response_types_map: Dict[str, Optional[str]] = {
402
+ '200': "NmReportGetReportsResponse",
403
+ '400': "ApiV2NmReportDownloadsGet400Response",
404
+ '401': "PostSalesFunnelProducts401Response",
405
+ '403': "ApiV2NmReportDownloadsGet403Response",
406
+ '429': "PostSalesFunnelProducts401Response",
407
+ }
408
+ response_data = self.api_client.call_api(
409
+ *_param,
410
+ _request_timeout=_request_timeout
411
+ )
412
+ response_data.read()
413
+ return self.api_client.response_deserialize(
414
+ response_data=response_data,
415
+ response_types_map=_response_types_map,
416
+ ).data
417
+
418
+
419
+ @validate_call
420
+ def api_v2_nm_report_downloads_get_with_http_info(
421
+ self,
422
+ filter_download_ids: Annotated[Optional[List[UUID]], Field(description="ID отчёта")] = None,
423
+ _request_timeout: Union[
424
+ None,
425
+ Annotated[StrictFloat, Field(gt=0)],
426
+ Tuple[
427
+ Annotated[StrictFloat, Field(gt=0)],
428
+ Annotated[StrictFloat, Field(gt=0)]
429
+ ]
430
+ ] = None,
431
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
432
+ _content_type: Optional[StrictStr] = None,
433
+ _headers: Optional[Dict[StrictStr, Any]] = None,
434
+ _host_index: Annotated[StrictInt, Field(ge=0, le=1)] = 0,
435
+ ) -> ApiResponse[NmReportGetReportsResponse]:
436
+ """Получить список отчётов
437
+
438
+ Метод возвращает список отчётов с расширенной аналитикой продавца. Ответ содержит ID [созданных отчётов](/openapi/analytics#tag/Analitika-prodavca-CSV/paths/~1api~1v2~1nm-report~1downloads/post) и статусы генерации. <div class=\"description_limit\"> <a href=\"/openapi/api-information#tag/Vvedenie/Limity-zaprosov\">Лимит запросов</a> на один аккаунт продавца: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 минута | 3 запроса | 20 секунд | 3 запроса | </div>
439
+
440
+ :param filter_download_ids: ID отчёта
441
+ :type filter_download_ids: List[UUID]
442
+ :param _request_timeout: timeout setting for this request. If one
443
+ number provided, it will be total request
444
+ timeout. It can also be a pair (tuple) of
445
+ (connection, read) timeouts.
446
+ :type _request_timeout: int, tuple(int, int), optional
447
+ :param _request_auth: set to override the auth_settings for an a single
448
+ request; this effectively ignores the
449
+ authentication in the spec for a single request.
450
+ :type _request_auth: dict, optional
451
+ :param _content_type: force content-type for the request.
452
+ :type _content_type: str, Optional
453
+ :param _headers: set to override the headers for a single
454
+ request; this effectively ignores the headers
455
+ in the spec for a single request.
456
+ :type _headers: dict, optional
457
+ :param _host_index: set to override the host_index for a single
458
+ request; this effectively ignores the host_index
459
+ in the spec for a single request.
460
+ :type _host_index: int, optional
461
+ :return: Returns the result object.
462
+ """ # noqa: E501
463
+
464
+ _param = self._api_v2_nm_report_downloads_get_serialize(
465
+ filter_download_ids=filter_download_ids,
466
+ _request_auth=_request_auth,
467
+ _content_type=_content_type,
468
+ _headers=_headers,
469
+ _host_index=_host_index
470
+ )
471
+
472
+ _response_types_map: Dict[str, Optional[str]] = {
473
+ '200': "NmReportGetReportsResponse",
474
+ '400': "ApiV2NmReportDownloadsGet400Response",
475
+ '401': "PostSalesFunnelProducts401Response",
476
+ '403': "ApiV2NmReportDownloadsGet403Response",
477
+ '429': "PostSalesFunnelProducts401Response",
478
+ }
479
+ response_data = self.api_client.call_api(
480
+ *_param,
481
+ _request_timeout=_request_timeout
482
+ )
483
+ response_data.read()
484
+ return self.api_client.response_deserialize(
485
+ response_data=response_data,
486
+ response_types_map=_response_types_map,
487
+ )
488
+
489
+
490
+ @validate_call
491
+ def api_v2_nm_report_downloads_get_without_preload_content(
492
+ self,
493
+ filter_download_ids: Annotated[Optional[List[UUID]], Field(description="ID отчёта")] = None,
494
+ _request_timeout: Union[
495
+ None,
496
+ Annotated[StrictFloat, Field(gt=0)],
497
+ Tuple[
498
+ Annotated[StrictFloat, Field(gt=0)],
499
+ Annotated[StrictFloat, Field(gt=0)]
500
+ ]
501
+ ] = None,
502
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
503
+ _content_type: Optional[StrictStr] = None,
504
+ _headers: Optional[Dict[StrictStr, Any]] = None,
505
+ _host_index: Annotated[StrictInt, Field(ge=0, le=1)] = 0,
506
+ ) -> RESTResponseType:
507
+ """Получить список отчётов
508
+
509
+ Метод возвращает список отчётов с расширенной аналитикой продавца. Ответ содержит ID [созданных отчётов](/openapi/analytics#tag/Analitika-prodavca-CSV/paths/~1api~1v2~1nm-report~1downloads/post) и статусы генерации. <div class=\"description_limit\"> <a href=\"/openapi/api-information#tag/Vvedenie/Limity-zaprosov\">Лимит запросов</a> на один аккаунт продавца: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 минута | 3 запроса | 20 секунд | 3 запроса | </div>
510
+
511
+ :param filter_download_ids: ID отчёта
512
+ :type filter_download_ids: List[UUID]
513
+ :param _request_timeout: timeout setting for this request. If one
514
+ number provided, it will be total request
515
+ timeout. It can also be a pair (tuple) of
516
+ (connection, read) timeouts.
517
+ :type _request_timeout: int, tuple(int, int), optional
518
+ :param _request_auth: set to override the auth_settings for an a single
519
+ request; this effectively ignores the
520
+ authentication in the spec for a single request.
521
+ :type _request_auth: dict, optional
522
+ :param _content_type: force content-type for the request.
523
+ :type _content_type: str, Optional
524
+ :param _headers: set to override the headers for a single
525
+ request; this effectively ignores the headers
526
+ in the spec for a single request.
527
+ :type _headers: dict, optional
528
+ :param _host_index: set to override the host_index for a single
529
+ request; this effectively ignores the host_index
530
+ in the spec for a single request.
531
+ :type _host_index: int, optional
532
+ :return: Returns the result object.
533
+ """ # noqa: E501
534
+
535
+ _param = self._api_v2_nm_report_downloads_get_serialize(
536
+ filter_download_ids=filter_download_ids,
537
+ _request_auth=_request_auth,
538
+ _content_type=_content_type,
539
+ _headers=_headers,
540
+ _host_index=_host_index
541
+ )
542
+
543
+ _response_types_map: Dict[str, Optional[str]] = {
544
+ '200': "NmReportGetReportsResponse",
545
+ '400': "ApiV2NmReportDownloadsGet400Response",
546
+ '401': "PostSalesFunnelProducts401Response",
547
+ '403': "ApiV2NmReportDownloadsGet403Response",
548
+ '429': "PostSalesFunnelProducts401Response",
549
+ }
550
+ response_data = self.api_client.call_api(
551
+ *_param,
552
+ _request_timeout=_request_timeout
553
+ )
554
+ return response_data.response
555
+
556
+
557
+ def _api_v2_nm_report_downloads_get_serialize(
558
+ self,
559
+ filter_download_ids,
560
+ _request_auth,
561
+ _content_type,
562
+ _headers,
563
+ _host_index,
564
+ ) -> RequestSerialized:
565
+
566
+ _hosts = [
567
+ 'https://seller-analytics-api.wildberries.ru'
568
+ ]
569
+ _host = _hosts[_host_index]
570
+
571
+ _collection_formats: Dict[str, str] = {
572
+ 'filter[downloadIds]': 'multi',
573
+ }
574
+
575
+ _path_params: Dict[str, str] = {}
576
+ _query_params: List[Tuple[str, str]] = []
577
+ _header_params: Dict[str, Optional[str]] = _headers or {}
578
+ _form_params: List[Tuple[str, str]] = []
579
+ _files: Dict[
580
+ str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
581
+ ] = {}
582
+ _body_params: Optional[bytes] = None
583
+
584
+ # process the path parameters
585
+ # process the query parameters
586
+ if filter_download_ids is not None:
587
+
588
+ _query_params.append(('filter[downloadIds]', filter_download_ids))
589
+
590
+ # process the header parameters
591
+ # process the form parameters
592
+ # process the body parameter
593
+
594
+
595
+ # set the HTTP header `Accept`
596
+ if 'Accept' not in _header_params:
597
+ _header_params['Accept'] = self.api_client.select_header_accept(
598
+ [
599
+ 'application/json'
600
+ ]
601
+ )
602
+
603
+
604
+ # authentication setting
605
+ _auth_settings: List[str] = [
606
+ 'HeaderApiKey'
607
+ ]
608
+
609
+ return self.api_client.param_serialize(
610
+ method='GET',
611
+ resource_path='/api/v2/nm-report/downloads',
612
+ path_params=_path_params,
613
+ query_params=_query_params,
614
+ header_params=_header_params,
615
+ body=_body_params,
616
+ post_params=_form_params,
617
+ files=_files,
618
+ auth_settings=_auth_settings,
619
+ collection_formats=_collection_formats,
620
+ _host=_host,
621
+ _request_auth=_request_auth
622
+ )
623
+
624
+
625
+
626
+
627
+ @validate_call
628
+ def api_v2_nm_report_downloads_post(
629
+ self,
630
+ api_v2_nm_report_downloads_post_request: Optional[ApiV2NmReportDownloadsPostRequest] = None,
631
+ _request_timeout: Union[
632
+ None,
633
+ Annotated[StrictFloat, Field(gt=0)],
634
+ Tuple[
635
+ Annotated[StrictFloat, Field(gt=0)],
636
+ Annotated[StrictFloat, Field(gt=0)]
637
+ ]
638
+ ] = None,
639
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
640
+ _content_type: Optional[StrictStr] = None,
641
+ _headers: Optional[Dict[StrictStr, Any]] = None,
642
+ _host_index: Annotated[StrictInt, Field(ge=0, le=1)] = 0,
643
+ ) -> NmReportCreateReportResponse:
644
+ """Создать отчёт
645
+
646
+ Метод создаёт задание на генерацию отчёта с расширенной аналитикой продавца.<br><br> Вы можете создать CSV-версии отчётов по [воронке продаж](/openapi/analytics#tag/Voronka-prodazh) или [параметрам поиска](/openapi/analytics#tag/Poiskovye-zaprosy-po-vashim-tovaram) с группировкой по: * артикулам WB * предметам, брендам и ярлыкам В отчётах по воронке продаж можно группировать данные по дням, неделям или месяцам.<br><br> Также можете создать CSV-версии отчётов по [текстам поисковых запросов](/openapi/analytics#tag/Poiskovye-zaprosy/paths/~1api~1v2~1search-report~1product~1search-texts/post) и [истории остатков](/openapi/analytics#tag/Istoriya-ostatkov).<br><br> Набор параметров запроса в объекте `params` зависит от типа отчёта. Чтобы получить описание параметров, выберите тип отчёта в раскрывающемся списке в описании параметра `reportType`.<br><br> Параметры `includeSubstitutedSKUs` и `includeSearchTexts` не могут одновременно иметь значение `false`.<br><br> Если не удалось [получить отчёт](/openapi/analytics#tag/Analitika-prodavca-CSV/paths/~1api~1v2~1nm-report~1downloads~1file~1%7BdownloadId%7D/get), можно создать [повторное задание на генерацию](/openapi/analytics#tag/Analitika-prodavca-CSV/paths/~1api~1v2~1nm-report~1downloads~1retry/post). Также можно [получить список и проверить статусы](/openapi/analytics#tag/Analitika-prodavca-CSV/paths/~1api~1v2~1nm-report~1downloads/get) отчётов. <div class=\"description_important\"> Отчёт по <a href=\"https://seller.wildberries.ru/content-analytics/history-remains\">истории остатков</a> — тип <code>STOCK_HISTORY_REPORT_CSV</code> — можно создать без подписки <a href=\"https://seller.wildberries.ru/monetization/jam\">Джем</a> </div> <div class=\"description_limit\"> <a href=\"/openapi/api-information#tag/Vvedenie/Limity-zaprosov\">Лимит запросов</a> на один аккаунт продавца: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 минута | 3 запроса | 20 секунд | 3 запроса | </div>
647
+
648
+ :param api_v2_nm_report_downloads_post_request:
649
+ :type api_v2_nm_report_downloads_post_request: ApiV2NmReportDownloadsPostRequest
650
+ :param _request_timeout: timeout setting for this request. If one
651
+ number provided, it will be total request
652
+ timeout. It can also be a pair (tuple) of
653
+ (connection, read) timeouts.
654
+ :type _request_timeout: int, tuple(int, int), optional
655
+ :param _request_auth: set to override the auth_settings for an a single
656
+ request; this effectively ignores the
657
+ authentication in the spec for a single request.
658
+ :type _request_auth: dict, optional
659
+ :param _content_type: force content-type for the request.
660
+ :type _content_type: str, Optional
661
+ :param _headers: set to override the headers for a single
662
+ request; this effectively ignores the headers
663
+ in the spec for a single request.
664
+ :type _headers: dict, optional
665
+ :param _host_index: set to override the host_index for a single
666
+ request; this effectively ignores the host_index
667
+ in the spec for a single request.
668
+ :type _host_index: int, optional
669
+ :return: Returns the result object.
670
+ """ # noqa: E501
671
+
672
+ _param = self._api_v2_nm_report_downloads_post_serialize(
673
+ api_v2_nm_report_downloads_post_request=api_v2_nm_report_downloads_post_request,
674
+ _request_auth=_request_auth,
675
+ _content_type=_content_type,
676
+ _headers=_headers,
677
+ _host_index=_host_index
678
+ )
679
+
680
+ _response_types_map: Dict[str, Optional[str]] = {
681
+ '200': "NmReportCreateReportResponse",
682
+ '400': "ApiV2NmReportDownloadsGet400Response",
683
+ '401': "PostSalesFunnelProducts401Response",
684
+ '403': "ApiV2NmReportDownloadsGet403Response",
685
+ '429': "ApiV2NmReportDownloadsPost429Response",
686
+ }
687
+ response_data = self.api_client.call_api(
688
+ *_param,
689
+ _request_timeout=_request_timeout
690
+ )
691
+ response_data.read()
692
+ return self.api_client.response_deserialize(
693
+ response_data=response_data,
694
+ response_types_map=_response_types_map,
695
+ ).data
696
+
697
+
698
+ @validate_call
699
+ def api_v2_nm_report_downloads_post_with_http_info(
700
+ self,
701
+ api_v2_nm_report_downloads_post_request: Optional[ApiV2NmReportDownloadsPostRequest] = None,
702
+ _request_timeout: Union[
703
+ None,
704
+ Annotated[StrictFloat, Field(gt=0)],
705
+ Tuple[
706
+ Annotated[StrictFloat, Field(gt=0)],
707
+ Annotated[StrictFloat, Field(gt=0)]
708
+ ]
709
+ ] = None,
710
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
711
+ _content_type: Optional[StrictStr] = None,
712
+ _headers: Optional[Dict[StrictStr, Any]] = None,
713
+ _host_index: Annotated[StrictInt, Field(ge=0, le=1)] = 0,
714
+ ) -> ApiResponse[NmReportCreateReportResponse]:
715
+ """Создать отчёт
716
+
717
+ Метод создаёт задание на генерацию отчёта с расширенной аналитикой продавца.<br><br> Вы можете создать CSV-версии отчётов по [воронке продаж](/openapi/analytics#tag/Voronka-prodazh) или [параметрам поиска](/openapi/analytics#tag/Poiskovye-zaprosy-po-vashim-tovaram) с группировкой по: * артикулам WB * предметам, брендам и ярлыкам В отчётах по воронке продаж можно группировать данные по дням, неделям или месяцам.<br><br> Также можете создать CSV-версии отчётов по [текстам поисковых запросов](/openapi/analytics#tag/Poiskovye-zaprosy/paths/~1api~1v2~1search-report~1product~1search-texts/post) и [истории остатков](/openapi/analytics#tag/Istoriya-ostatkov).<br><br> Набор параметров запроса в объекте `params` зависит от типа отчёта. Чтобы получить описание параметров, выберите тип отчёта в раскрывающемся списке в описании параметра `reportType`.<br><br> Параметры `includeSubstitutedSKUs` и `includeSearchTexts` не могут одновременно иметь значение `false`.<br><br> Если не удалось [получить отчёт](/openapi/analytics#tag/Analitika-prodavca-CSV/paths/~1api~1v2~1nm-report~1downloads~1file~1%7BdownloadId%7D/get), можно создать [повторное задание на генерацию](/openapi/analytics#tag/Analitika-prodavca-CSV/paths/~1api~1v2~1nm-report~1downloads~1retry/post). Также можно [получить список и проверить статусы](/openapi/analytics#tag/Analitika-prodavca-CSV/paths/~1api~1v2~1nm-report~1downloads/get) отчётов. <div class=\"description_important\"> Отчёт по <a href=\"https://seller.wildberries.ru/content-analytics/history-remains\">истории остатков</a> — тип <code>STOCK_HISTORY_REPORT_CSV</code> — можно создать без подписки <a href=\"https://seller.wildberries.ru/monetization/jam\">Джем</a> </div> <div class=\"description_limit\"> <a href=\"/openapi/api-information#tag/Vvedenie/Limity-zaprosov\">Лимит запросов</a> на один аккаунт продавца: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 минута | 3 запроса | 20 секунд | 3 запроса | </div>
718
+
719
+ :param api_v2_nm_report_downloads_post_request:
720
+ :type api_v2_nm_report_downloads_post_request: ApiV2NmReportDownloadsPostRequest
721
+ :param _request_timeout: timeout setting for this request. If one
722
+ number provided, it will be total request
723
+ timeout. It can also be a pair (tuple) of
724
+ (connection, read) timeouts.
725
+ :type _request_timeout: int, tuple(int, int), optional
726
+ :param _request_auth: set to override the auth_settings for an a single
727
+ request; this effectively ignores the
728
+ authentication in the spec for a single request.
729
+ :type _request_auth: dict, optional
730
+ :param _content_type: force content-type for the request.
731
+ :type _content_type: str, Optional
732
+ :param _headers: set to override the headers for a single
733
+ request; this effectively ignores the headers
734
+ in the spec for a single request.
735
+ :type _headers: dict, optional
736
+ :param _host_index: set to override the host_index for a single
737
+ request; this effectively ignores the host_index
738
+ in the spec for a single request.
739
+ :type _host_index: int, optional
740
+ :return: Returns the result object.
741
+ """ # noqa: E501
742
+
743
+ _param = self._api_v2_nm_report_downloads_post_serialize(
744
+ api_v2_nm_report_downloads_post_request=api_v2_nm_report_downloads_post_request,
745
+ _request_auth=_request_auth,
746
+ _content_type=_content_type,
747
+ _headers=_headers,
748
+ _host_index=_host_index
749
+ )
750
+
751
+ _response_types_map: Dict[str, Optional[str]] = {
752
+ '200': "NmReportCreateReportResponse",
753
+ '400': "ApiV2NmReportDownloadsGet400Response",
754
+ '401': "PostSalesFunnelProducts401Response",
755
+ '403': "ApiV2NmReportDownloadsGet403Response",
756
+ '429': "ApiV2NmReportDownloadsPost429Response",
757
+ }
758
+ response_data = self.api_client.call_api(
759
+ *_param,
760
+ _request_timeout=_request_timeout
761
+ )
762
+ response_data.read()
763
+ return self.api_client.response_deserialize(
764
+ response_data=response_data,
765
+ response_types_map=_response_types_map,
766
+ )
767
+
768
+
769
+ @validate_call
770
+ def api_v2_nm_report_downloads_post_without_preload_content(
771
+ self,
772
+ api_v2_nm_report_downloads_post_request: Optional[ApiV2NmReportDownloadsPostRequest] = None,
773
+ _request_timeout: Union[
774
+ None,
775
+ Annotated[StrictFloat, Field(gt=0)],
776
+ Tuple[
777
+ Annotated[StrictFloat, Field(gt=0)],
778
+ Annotated[StrictFloat, Field(gt=0)]
779
+ ]
780
+ ] = None,
781
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
782
+ _content_type: Optional[StrictStr] = None,
783
+ _headers: Optional[Dict[StrictStr, Any]] = None,
784
+ _host_index: Annotated[StrictInt, Field(ge=0, le=1)] = 0,
785
+ ) -> RESTResponseType:
786
+ """Создать отчёт
787
+
788
+ Метод создаёт задание на генерацию отчёта с расширенной аналитикой продавца.<br><br> Вы можете создать CSV-версии отчётов по [воронке продаж](/openapi/analytics#tag/Voronka-prodazh) или [параметрам поиска](/openapi/analytics#tag/Poiskovye-zaprosy-po-vashim-tovaram) с группировкой по: * артикулам WB * предметам, брендам и ярлыкам В отчётах по воронке продаж можно группировать данные по дням, неделям или месяцам.<br><br> Также можете создать CSV-версии отчётов по [текстам поисковых запросов](/openapi/analytics#tag/Poiskovye-zaprosy/paths/~1api~1v2~1search-report~1product~1search-texts/post) и [истории остатков](/openapi/analytics#tag/Istoriya-ostatkov).<br><br> Набор параметров запроса в объекте `params` зависит от типа отчёта. Чтобы получить описание параметров, выберите тип отчёта в раскрывающемся списке в описании параметра `reportType`.<br><br> Параметры `includeSubstitutedSKUs` и `includeSearchTexts` не могут одновременно иметь значение `false`.<br><br> Если не удалось [получить отчёт](/openapi/analytics#tag/Analitika-prodavca-CSV/paths/~1api~1v2~1nm-report~1downloads~1file~1%7BdownloadId%7D/get), можно создать [повторное задание на генерацию](/openapi/analytics#tag/Analitika-prodavca-CSV/paths/~1api~1v2~1nm-report~1downloads~1retry/post). Также можно [получить список и проверить статусы](/openapi/analytics#tag/Analitika-prodavca-CSV/paths/~1api~1v2~1nm-report~1downloads/get) отчётов. <div class=\"description_important\"> Отчёт по <a href=\"https://seller.wildberries.ru/content-analytics/history-remains\">истории остатков</a> — тип <code>STOCK_HISTORY_REPORT_CSV</code> — можно создать без подписки <a href=\"https://seller.wildberries.ru/monetization/jam\">Джем</a> </div> <div class=\"description_limit\"> <a href=\"/openapi/api-information#tag/Vvedenie/Limity-zaprosov\">Лимит запросов</a> на один аккаунт продавца: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 минута | 3 запроса | 20 секунд | 3 запроса | </div>
789
+
790
+ :param api_v2_nm_report_downloads_post_request:
791
+ :type api_v2_nm_report_downloads_post_request: ApiV2NmReportDownloadsPostRequest
792
+ :param _request_timeout: timeout setting for this request. If one
793
+ number provided, it will be total request
794
+ timeout. It can also be a pair (tuple) of
795
+ (connection, read) timeouts.
796
+ :type _request_timeout: int, tuple(int, int), optional
797
+ :param _request_auth: set to override the auth_settings for an a single
798
+ request; this effectively ignores the
799
+ authentication in the spec for a single request.
800
+ :type _request_auth: dict, optional
801
+ :param _content_type: force content-type for the request.
802
+ :type _content_type: str, Optional
803
+ :param _headers: set to override the headers for a single
804
+ request; this effectively ignores the headers
805
+ in the spec for a single request.
806
+ :type _headers: dict, optional
807
+ :param _host_index: set to override the host_index for a single
808
+ request; this effectively ignores the host_index
809
+ in the spec for a single request.
810
+ :type _host_index: int, optional
811
+ :return: Returns the result object.
812
+ """ # noqa: E501
813
+
814
+ _param = self._api_v2_nm_report_downloads_post_serialize(
815
+ api_v2_nm_report_downloads_post_request=api_v2_nm_report_downloads_post_request,
816
+ _request_auth=_request_auth,
817
+ _content_type=_content_type,
818
+ _headers=_headers,
819
+ _host_index=_host_index
820
+ )
821
+
822
+ _response_types_map: Dict[str, Optional[str]] = {
823
+ '200': "NmReportCreateReportResponse",
824
+ '400': "ApiV2NmReportDownloadsGet400Response",
825
+ '401': "PostSalesFunnelProducts401Response",
826
+ '403': "ApiV2NmReportDownloadsGet403Response",
827
+ '429': "ApiV2NmReportDownloadsPost429Response",
828
+ }
829
+ response_data = self.api_client.call_api(
830
+ *_param,
831
+ _request_timeout=_request_timeout
832
+ )
833
+ return response_data.response
834
+
835
+
836
+ def _api_v2_nm_report_downloads_post_serialize(
837
+ self,
838
+ api_v2_nm_report_downloads_post_request,
839
+ _request_auth,
840
+ _content_type,
841
+ _headers,
842
+ _host_index,
843
+ ) -> RequestSerialized:
844
+
845
+ _hosts = [
846
+ 'https://seller-analytics-api.wildberries.ru'
847
+ ]
848
+ _host = _hosts[_host_index]
849
+
850
+ _collection_formats: Dict[str, str] = {
851
+ }
852
+
853
+ _path_params: Dict[str, str] = {}
854
+ _query_params: List[Tuple[str, str]] = []
855
+ _header_params: Dict[str, Optional[str]] = _headers or {}
856
+ _form_params: List[Tuple[str, str]] = []
857
+ _files: Dict[
858
+ str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
859
+ ] = {}
860
+ _body_params: Optional[bytes] = None
861
+
862
+ # process the path parameters
863
+ # process the query parameters
864
+ # process the header parameters
865
+ # process the form parameters
866
+ # process the body parameter
867
+ if api_v2_nm_report_downloads_post_request is not None:
868
+ _body_params = api_v2_nm_report_downloads_post_request
869
+
870
+
871
+ # set the HTTP header `Accept`
872
+ if 'Accept' not in _header_params:
873
+ _header_params['Accept'] = self.api_client.select_header_accept(
874
+ [
875
+ 'application/json'
876
+ ]
877
+ )
878
+
879
+ # set the HTTP header `Content-Type`
880
+ if _content_type:
881
+ _header_params['Content-Type'] = _content_type
882
+ else:
883
+ _default_content_type = (
884
+ self.api_client.select_header_content_type(
885
+ [
886
+ 'application/json'
887
+ ]
888
+ )
889
+ )
890
+ if _default_content_type is not None:
891
+ _header_params['Content-Type'] = _default_content_type
892
+
893
+ # authentication setting
894
+ _auth_settings: List[str] = [
895
+ 'HeaderApiKey'
896
+ ]
897
+
898
+ return self.api_client.param_serialize(
899
+ method='POST',
900
+ resource_path='/api/v2/nm-report/downloads',
901
+ path_params=_path_params,
902
+ query_params=_query_params,
903
+ header_params=_header_params,
904
+ body=_body_params,
905
+ post_params=_form_params,
906
+ files=_files,
907
+ auth_settings=_auth_settings,
908
+ collection_formats=_collection_formats,
909
+ _host=_host,
910
+ _request_auth=_request_auth
911
+ )
912
+
913
+
914
+
915
+
916
+ @validate_call
917
+ def api_v2_nm_report_downloads_retry_post(
918
+ self,
919
+ nm_report_retry_report_request: NmReportRetryReportRequest,
920
+ _request_timeout: Union[
921
+ None,
922
+ Annotated[StrictFloat, Field(gt=0)],
923
+ Tuple[
924
+ Annotated[StrictFloat, Field(gt=0)],
925
+ Annotated[StrictFloat, Field(gt=0)]
926
+ ]
927
+ ] = None,
928
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
929
+ _content_type: Optional[StrictStr] = None,
930
+ _headers: Optional[Dict[StrictStr, Any]] = None,
931
+ _host_index: Annotated[StrictInt, Field(ge=0, le=1)] = 0,
932
+ ) -> NmReportRetryReportResponse:
933
+ """Сгенерировать отчёт повторно
934
+
935
+ Метод создает повторное [задание на генерацию](/openapi/analytics#tag/Analitika-prodavca-CSV/paths/~1api~1v2~1nm-report~1downloads/post) отчёта с расширенной аналитикой продавца. Необходимо, если при генерации отчёта вы [получили статус](/openapi/analytics#tag/Analitika-prodavca-CSV/paths/~1api~1v2~1nm-report~1downloads/get) `FAILED`. <div class=\"description_limit\"> <a href=\"/openapi/api-information#tag/Vvedenie/Limity-zaprosov\">Лимит запросов</a> на один аккаунт продавца: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 минута | 3 запроса | 20 секунд | 3 запроса | </div>
936
+
937
+ :param nm_report_retry_report_request: (required)
938
+ :type nm_report_retry_report_request: NmReportRetryReportRequest
939
+ :param _request_timeout: timeout setting for this request. If one
940
+ number provided, it will be total request
941
+ timeout. It can also be a pair (tuple) of
942
+ (connection, read) timeouts.
943
+ :type _request_timeout: int, tuple(int, int), optional
944
+ :param _request_auth: set to override the auth_settings for an a single
945
+ request; this effectively ignores the
946
+ authentication in the spec for a single request.
947
+ :type _request_auth: dict, optional
948
+ :param _content_type: force content-type for the request.
949
+ :type _content_type: str, Optional
950
+ :param _headers: set to override the headers for a single
951
+ request; this effectively ignores the headers
952
+ in the spec for a single request.
953
+ :type _headers: dict, optional
954
+ :param _host_index: set to override the host_index for a single
955
+ request; this effectively ignores the host_index
956
+ in the spec for a single request.
957
+ :type _host_index: int, optional
958
+ :return: Returns the result object.
959
+ """ # noqa: E501
960
+
961
+ _param = self._api_v2_nm_report_downloads_retry_post_serialize(
962
+ nm_report_retry_report_request=nm_report_retry_report_request,
963
+ _request_auth=_request_auth,
964
+ _content_type=_content_type,
965
+ _headers=_headers,
966
+ _host_index=_host_index
967
+ )
968
+
969
+ _response_types_map: Dict[str, Optional[str]] = {
970
+ '200': "NmReportRetryReportResponse",
971
+ '400': "ApiV2NmReportDownloadsGet400Response",
972
+ '401': "PostSalesFunnelProducts401Response",
973
+ '403': "ApiV2NmReportDownloadsGet403Response",
974
+ '429': "PostSalesFunnelProducts401Response",
975
+ }
976
+ response_data = self.api_client.call_api(
977
+ *_param,
978
+ _request_timeout=_request_timeout
979
+ )
980
+ response_data.read()
981
+ return self.api_client.response_deserialize(
982
+ response_data=response_data,
983
+ response_types_map=_response_types_map,
984
+ ).data
985
+
986
+
987
+ @validate_call
988
+ def api_v2_nm_report_downloads_retry_post_with_http_info(
989
+ self,
990
+ nm_report_retry_report_request: NmReportRetryReportRequest,
991
+ _request_timeout: Union[
992
+ None,
993
+ Annotated[StrictFloat, Field(gt=0)],
994
+ Tuple[
995
+ Annotated[StrictFloat, Field(gt=0)],
996
+ Annotated[StrictFloat, Field(gt=0)]
997
+ ]
998
+ ] = None,
999
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
1000
+ _content_type: Optional[StrictStr] = None,
1001
+ _headers: Optional[Dict[StrictStr, Any]] = None,
1002
+ _host_index: Annotated[StrictInt, Field(ge=0, le=1)] = 0,
1003
+ ) -> ApiResponse[NmReportRetryReportResponse]:
1004
+ """Сгенерировать отчёт повторно
1005
+
1006
+ Метод создает повторное [задание на генерацию](/openapi/analytics#tag/Analitika-prodavca-CSV/paths/~1api~1v2~1nm-report~1downloads/post) отчёта с расширенной аналитикой продавца. Необходимо, если при генерации отчёта вы [получили статус](/openapi/analytics#tag/Analitika-prodavca-CSV/paths/~1api~1v2~1nm-report~1downloads/get) `FAILED`. <div class=\"description_limit\"> <a href=\"/openapi/api-information#tag/Vvedenie/Limity-zaprosov\">Лимит запросов</a> на один аккаунт продавца: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 минута | 3 запроса | 20 секунд | 3 запроса | </div>
1007
+
1008
+ :param nm_report_retry_report_request: (required)
1009
+ :type nm_report_retry_report_request: NmReportRetryReportRequest
1010
+ :param _request_timeout: timeout setting for this request. If one
1011
+ number provided, it will be total request
1012
+ timeout. It can also be a pair (tuple) of
1013
+ (connection, read) timeouts.
1014
+ :type _request_timeout: int, tuple(int, int), optional
1015
+ :param _request_auth: set to override the auth_settings for an a single
1016
+ request; this effectively ignores the
1017
+ authentication in the spec for a single request.
1018
+ :type _request_auth: dict, optional
1019
+ :param _content_type: force content-type for the request.
1020
+ :type _content_type: str, Optional
1021
+ :param _headers: set to override the headers for a single
1022
+ request; this effectively ignores the headers
1023
+ in the spec for a single request.
1024
+ :type _headers: dict, optional
1025
+ :param _host_index: set to override the host_index for a single
1026
+ request; this effectively ignores the host_index
1027
+ in the spec for a single request.
1028
+ :type _host_index: int, optional
1029
+ :return: Returns the result object.
1030
+ """ # noqa: E501
1031
+
1032
+ _param = self._api_v2_nm_report_downloads_retry_post_serialize(
1033
+ nm_report_retry_report_request=nm_report_retry_report_request,
1034
+ _request_auth=_request_auth,
1035
+ _content_type=_content_type,
1036
+ _headers=_headers,
1037
+ _host_index=_host_index
1038
+ )
1039
+
1040
+ _response_types_map: Dict[str, Optional[str]] = {
1041
+ '200': "NmReportRetryReportResponse",
1042
+ '400': "ApiV2NmReportDownloadsGet400Response",
1043
+ '401': "PostSalesFunnelProducts401Response",
1044
+ '403': "ApiV2NmReportDownloadsGet403Response",
1045
+ '429': "PostSalesFunnelProducts401Response",
1046
+ }
1047
+ response_data = self.api_client.call_api(
1048
+ *_param,
1049
+ _request_timeout=_request_timeout
1050
+ )
1051
+ response_data.read()
1052
+ return self.api_client.response_deserialize(
1053
+ response_data=response_data,
1054
+ response_types_map=_response_types_map,
1055
+ )
1056
+
1057
+
1058
+ @validate_call
1059
+ def api_v2_nm_report_downloads_retry_post_without_preload_content(
1060
+ self,
1061
+ nm_report_retry_report_request: NmReportRetryReportRequest,
1062
+ _request_timeout: Union[
1063
+ None,
1064
+ Annotated[StrictFloat, Field(gt=0)],
1065
+ Tuple[
1066
+ Annotated[StrictFloat, Field(gt=0)],
1067
+ Annotated[StrictFloat, Field(gt=0)]
1068
+ ]
1069
+ ] = None,
1070
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
1071
+ _content_type: Optional[StrictStr] = None,
1072
+ _headers: Optional[Dict[StrictStr, Any]] = None,
1073
+ _host_index: Annotated[StrictInt, Field(ge=0, le=1)] = 0,
1074
+ ) -> RESTResponseType:
1075
+ """Сгенерировать отчёт повторно
1076
+
1077
+ Метод создает повторное [задание на генерацию](/openapi/analytics#tag/Analitika-prodavca-CSV/paths/~1api~1v2~1nm-report~1downloads/post) отчёта с расширенной аналитикой продавца. Необходимо, если при генерации отчёта вы [получили статус](/openapi/analytics#tag/Analitika-prodavca-CSV/paths/~1api~1v2~1nm-report~1downloads/get) `FAILED`. <div class=\"description_limit\"> <a href=\"/openapi/api-information#tag/Vvedenie/Limity-zaprosov\">Лимит запросов</a> на один аккаунт продавца: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 минута | 3 запроса | 20 секунд | 3 запроса | </div>
1078
+
1079
+ :param nm_report_retry_report_request: (required)
1080
+ :type nm_report_retry_report_request: NmReportRetryReportRequest
1081
+ :param _request_timeout: timeout setting for this request. If one
1082
+ number provided, it will be total request
1083
+ timeout. It can also be a pair (tuple) of
1084
+ (connection, read) timeouts.
1085
+ :type _request_timeout: int, tuple(int, int), optional
1086
+ :param _request_auth: set to override the auth_settings for an a single
1087
+ request; this effectively ignores the
1088
+ authentication in the spec for a single request.
1089
+ :type _request_auth: dict, optional
1090
+ :param _content_type: force content-type for the request.
1091
+ :type _content_type: str, Optional
1092
+ :param _headers: set to override the headers for a single
1093
+ request; this effectively ignores the headers
1094
+ in the spec for a single request.
1095
+ :type _headers: dict, optional
1096
+ :param _host_index: set to override the host_index for a single
1097
+ request; this effectively ignores the host_index
1098
+ in the spec for a single request.
1099
+ :type _host_index: int, optional
1100
+ :return: Returns the result object.
1101
+ """ # noqa: E501
1102
+
1103
+ _param = self._api_v2_nm_report_downloads_retry_post_serialize(
1104
+ nm_report_retry_report_request=nm_report_retry_report_request,
1105
+ _request_auth=_request_auth,
1106
+ _content_type=_content_type,
1107
+ _headers=_headers,
1108
+ _host_index=_host_index
1109
+ )
1110
+
1111
+ _response_types_map: Dict[str, Optional[str]] = {
1112
+ '200': "NmReportRetryReportResponse",
1113
+ '400': "ApiV2NmReportDownloadsGet400Response",
1114
+ '401': "PostSalesFunnelProducts401Response",
1115
+ '403': "ApiV2NmReportDownloadsGet403Response",
1116
+ '429': "PostSalesFunnelProducts401Response",
1117
+ }
1118
+ response_data = self.api_client.call_api(
1119
+ *_param,
1120
+ _request_timeout=_request_timeout
1121
+ )
1122
+ return response_data.response
1123
+
1124
+
1125
+ def _api_v2_nm_report_downloads_retry_post_serialize(
1126
+ self,
1127
+ nm_report_retry_report_request,
1128
+ _request_auth,
1129
+ _content_type,
1130
+ _headers,
1131
+ _host_index,
1132
+ ) -> RequestSerialized:
1133
+
1134
+ _hosts = [
1135
+ 'https://seller-analytics-api.wildberries.ru'
1136
+ ]
1137
+ _host = _hosts[_host_index]
1138
+
1139
+ _collection_formats: Dict[str, str] = {
1140
+ }
1141
+
1142
+ _path_params: Dict[str, str] = {}
1143
+ _query_params: List[Tuple[str, str]] = []
1144
+ _header_params: Dict[str, Optional[str]] = _headers or {}
1145
+ _form_params: List[Tuple[str, str]] = []
1146
+ _files: Dict[
1147
+ str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
1148
+ ] = {}
1149
+ _body_params: Optional[bytes] = None
1150
+
1151
+ # process the path parameters
1152
+ # process the query parameters
1153
+ # process the header parameters
1154
+ # process the form parameters
1155
+ # process the body parameter
1156
+ if nm_report_retry_report_request is not None:
1157
+ _body_params = nm_report_retry_report_request
1158
+
1159
+
1160
+ # set the HTTP header `Accept`
1161
+ if 'Accept' not in _header_params:
1162
+ _header_params['Accept'] = self.api_client.select_header_accept(
1163
+ [
1164
+ 'application/json'
1165
+ ]
1166
+ )
1167
+
1168
+ # set the HTTP header `Content-Type`
1169
+ if _content_type:
1170
+ _header_params['Content-Type'] = _content_type
1171
+ else:
1172
+ _default_content_type = (
1173
+ self.api_client.select_header_content_type(
1174
+ [
1175
+ 'application/json'
1176
+ ]
1177
+ )
1178
+ )
1179
+ if _default_content_type is not None:
1180
+ _header_params['Content-Type'] = _default_content_type
1181
+
1182
+ # authentication setting
1183
+ _auth_settings: List[str] = [
1184
+ 'HeaderApiKey'
1185
+ ]
1186
+
1187
+ return self.api_client.param_serialize(
1188
+ method='POST',
1189
+ resource_path='/api/v2/nm-report/downloads/retry',
1190
+ path_params=_path_params,
1191
+ query_params=_query_params,
1192
+ header_params=_header_params,
1193
+ body=_body_params,
1194
+ post_params=_form_params,
1195
+ files=_files,
1196
+ auth_settings=_auth_settings,
1197
+ collection_formats=_collection_formats,
1198
+ _host=_host,
1199
+ _request_auth=_request_auth
1200
+ )
1201
+
1202
+
1203
+
1204
+
1205
+ @validate_call
1206
+ def api_v2_search_report_product_orders_post(
1207
+ self,
1208
+ product_orders_request: ProductOrdersRequest,
1209
+ _request_timeout: Union[
1210
+ None,
1211
+ Annotated[StrictFloat, Field(gt=0)],
1212
+ Tuple[
1213
+ Annotated[StrictFloat, Field(gt=0)],
1214
+ Annotated[StrictFloat, Field(gt=0)]
1215
+ ]
1216
+ ] = None,
1217
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
1218
+ _content_type: Optional[StrictStr] = None,
1219
+ _headers: Optional[Dict[StrictStr, Any]] = None,
1220
+ _host_index: Annotated[StrictInt, Field(ge=0, le=1)] = 0,
1221
+ ) -> ApiV2SearchReportProductOrdersPost200Response:
1222
+ """Заказы и позиции по поисковым запросам товара
1223
+
1224
+ Метод формирует данные для таблицы по количеству заказов и позиций в поиске по запросам покупателя. Данные указаны в рамках периода для [запрошенного товара](/openapi/analytics#tag/Poiskovye-zaprosy-po-vashim-tovaram/paths/~1api~1v2~1search-report~1product~1search-texts/post). <div class=\"description_limit\"> <a href=\"/openapi/api-information#tag/Vvedenie/Limity-zaprosov\">Лимит запросов</a> на один аккаунт продавца: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 минута | 3 запроса | 20 секунд | 3 запроса | </div>
1225
+
1226
+ :param product_orders_request: (required)
1227
+ :type product_orders_request: ProductOrdersRequest
1228
+ :param _request_timeout: timeout setting for this request. If one
1229
+ number provided, it will be total request
1230
+ timeout. It can also be a pair (tuple) of
1231
+ (connection, read) timeouts.
1232
+ :type _request_timeout: int, tuple(int, int), optional
1233
+ :param _request_auth: set to override the auth_settings for an a single
1234
+ request; this effectively ignores the
1235
+ authentication in the spec for a single request.
1236
+ :type _request_auth: dict, optional
1237
+ :param _content_type: force content-type for the request.
1238
+ :type _content_type: str, Optional
1239
+ :param _headers: set to override the headers for a single
1240
+ request; this effectively ignores the headers
1241
+ in the spec for a single request.
1242
+ :type _headers: dict, optional
1243
+ :param _host_index: set to override the host_index for a single
1244
+ request; this effectively ignores the host_index
1245
+ in the spec for a single request.
1246
+ :type _host_index: int, optional
1247
+ :return: Returns the result object.
1248
+ """ # noqa: E501
1249
+
1250
+ _param = self._api_v2_search_report_product_orders_post_serialize(
1251
+ product_orders_request=product_orders_request,
1252
+ _request_auth=_request_auth,
1253
+ _content_type=_content_type,
1254
+ _headers=_headers,
1255
+ _host_index=_host_index
1256
+ )
1257
+
1258
+ _response_types_map: Dict[str, Optional[str]] = {
1259
+ '200': "ApiV2SearchReportProductOrdersPost200Response",
1260
+ '400': "ErrorObject400",
1261
+ '401': "PostSalesFunnelProducts401Response",
1262
+ '403': "ErrorObject403",
1263
+ '429': "PostSalesFunnelProducts401Response",
1264
+ }
1265
+ response_data = self.api_client.call_api(
1266
+ *_param,
1267
+ _request_timeout=_request_timeout
1268
+ )
1269
+ response_data.read()
1270
+ return self.api_client.response_deserialize(
1271
+ response_data=response_data,
1272
+ response_types_map=_response_types_map,
1273
+ ).data
1274
+
1275
+
1276
+ @validate_call
1277
+ def api_v2_search_report_product_orders_post_with_http_info(
1278
+ self,
1279
+ product_orders_request: ProductOrdersRequest,
1280
+ _request_timeout: Union[
1281
+ None,
1282
+ Annotated[StrictFloat, Field(gt=0)],
1283
+ Tuple[
1284
+ Annotated[StrictFloat, Field(gt=0)],
1285
+ Annotated[StrictFloat, Field(gt=0)]
1286
+ ]
1287
+ ] = None,
1288
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
1289
+ _content_type: Optional[StrictStr] = None,
1290
+ _headers: Optional[Dict[StrictStr, Any]] = None,
1291
+ _host_index: Annotated[StrictInt, Field(ge=0, le=1)] = 0,
1292
+ ) -> ApiResponse[ApiV2SearchReportProductOrdersPost200Response]:
1293
+ """Заказы и позиции по поисковым запросам товара
1294
+
1295
+ Метод формирует данные для таблицы по количеству заказов и позиций в поиске по запросам покупателя. Данные указаны в рамках периода для [запрошенного товара](/openapi/analytics#tag/Poiskovye-zaprosy-po-vashim-tovaram/paths/~1api~1v2~1search-report~1product~1search-texts/post). <div class=\"description_limit\"> <a href=\"/openapi/api-information#tag/Vvedenie/Limity-zaprosov\">Лимит запросов</a> на один аккаунт продавца: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 минута | 3 запроса | 20 секунд | 3 запроса | </div>
1296
+
1297
+ :param product_orders_request: (required)
1298
+ :type product_orders_request: ProductOrdersRequest
1299
+ :param _request_timeout: timeout setting for this request. If one
1300
+ number provided, it will be total request
1301
+ timeout. It can also be a pair (tuple) of
1302
+ (connection, read) timeouts.
1303
+ :type _request_timeout: int, tuple(int, int), optional
1304
+ :param _request_auth: set to override the auth_settings for an a single
1305
+ request; this effectively ignores the
1306
+ authentication in the spec for a single request.
1307
+ :type _request_auth: dict, optional
1308
+ :param _content_type: force content-type for the request.
1309
+ :type _content_type: str, Optional
1310
+ :param _headers: set to override the headers for a single
1311
+ request; this effectively ignores the headers
1312
+ in the spec for a single request.
1313
+ :type _headers: dict, optional
1314
+ :param _host_index: set to override the host_index for a single
1315
+ request; this effectively ignores the host_index
1316
+ in the spec for a single request.
1317
+ :type _host_index: int, optional
1318
+ :return: Returns the result object.
1319
+ """ # noqa: E501
1320
+
1321
+ _param = self._api_v2_search_report_product_orders_post_serialize(
1322
+ product_orders_request=product_orders_request,
1323
+ _request_auth=_request_auth,
1324
+ _content_type=_content_type,
1325
+ _headers=_headers,
1326
+ _host_index=_host_index
1327
+ )
1328
+
1329
+ _response_types_map: Dict[str, Optional[str]] = {
1330
+ '200': "ApiV2SearchReportProductOrdersPost200Response",
1331
+ '400': "ErrorObject400",
1332
+ '401': "PostSalesFunnelProducts401Response",
1333
+ '403': "ErrorObject403",
1334
+ '429': "PostSalesFunnelProducts401Response",
1335
+ }
1336
+ response_data = self.api_client.call_api(
1337
+ *_param,
1338
+ _request_timeout=_request_timeout
1339
+ )
1340
+ response_data.read()
1341
+ return self.api_client.response_deserialize(
1342
+ response_data=response_data,
1343
+ response_types_map=_response_types_map,
1344
+ )
1345
+
1346
+
1347
+ @validate_call
1348
+ def api_v2_search_report_product_orders_post_without_preload_content(
1349
+ self,
1350
+ product_orders_request: ProductOrdersRequest,
1351
+ _request_timeout: Union[
1352
+ None,
1353
+ Annotated[StrictFloat, Field(gt=0)],
1354
+ Tuple[
1355
+ Annotated[StrictFloat, Field(gt=0)],
1356
+ Annotated[StrictFloat, Field(gt=0)]
1357
+ ]
1358
+ ] = None,
1359
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
1360
+ _content_type: Optional[StrictStr] = None,
1361
+ _headers: Optional[Dict[StrictStr, Any]] = None,
1362
+ _host_index: Annotated[StrictInt, Field(ge=0, le=1)] = 0,
1363
+ ) -> RESTResponseType:
1364
+ """Заказы и позиции по поисковым запросам товара
1365
+
1366
+ Метод формирует данные для таблицы по количеству заказов и позиций в поиске по запросам покупателя. Данные указаны в рамках периода для [запрошенного товара](/openapi/analytics#tag/Poiskovye-zaprosy-po-vashim-tovaram/paths/~1api~1v2~1search-report~1product~1search-texts/post). <div class=\"description_limit\"> <a href=\"/openapi/api-information#tag/Vvedenie/Limity-zaprosov\">Лимит запросов</a> на один аккаунт продавца: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 минута | 3 запроса | 20 секунд | 3 запроса | </div>
1367
+
1368
+ :param product_orders_request: (required)
1369
+ :type product_orders_request: ProductOrdersRequest
1370
+ :param _request_timeout: timeout setting for this request. If one
1371
+ number provided, it will be total request
1372
+ timeout. It can also be a pair (tuple) of
1373
+ (connection, read) timeouts.
1374
+ :type _request_timeout: int, tuple(int, int), optional
1375
+ :param _request_auth: set to override the auth_settings for an a single
1376
+ request; this effectively ignores the
1377
+ authentication in the spec for a single request.
1378
+ :type _request_auth: dict, optional
1379
+ :param _content_type: force content-type for the request.
1380
+ :type _content_type: str, Optional
1381
+ :param _headers: set to override the headers for a single
1382
+ request; this effectively ignores the headers
1383
+ in the spec for a single request.
1384
+ :type _headers: dict, optional
1385
+ :param _host_index: set to override the host_index for a single
1386
+ request; this effectively ignores the host_index
1387
+ in the spec for a single request.
1388
+ :type _host_index: int, optional
1389
+ :return: Returns the result object.
1390
+ """ # noqa: E501
1391
+
1392
+ _param = self._api_v2_search_report_product_orders_post_serialize(
1393
+ product_orders_request=product_orders_request,
1394
+ _request_auth=_request_auth,
1395
+ _content_type=_content_type,
1396
+ _headers=_headers,
1397
+ _host_index=_host_index
1398
+ )
1399
+
1400
+ _response_types_map: Dict[str, Optional[str]] = {
1401
+ '200': "ApiV2SearchReportProductOrdersPost200Response",
1402
+ '400': "ErrorObject400",
1403
+ '401': "PostSalesFunnelProducts401Response",
1404
+ '403': "ErrorObject403",
1405
+ '429': "PostSalesFunnelProducts401Response",
1406
+ }
1407
+ response_data = self.api_client.call_api(
1408
+ *_param,
1409
+ _request_timeout=_request_timeout
1410
+ )
1411
+ return response_data.response
1412
+
1413
+
1414
+ def _api_v2_search_report_product_orders_post_serialize(
1415
+ self,
1416
+ product_orders_request,
1417
+ _request_auth,
1418
+ _content_type,
1419
+ _headers,
1420
+ _host_index,
1421
+ ) -> RequestSerialized:
1422
+
1423
+ _hosts = [
1424
+ 'https://seller-analytics-api.wildberries.ru'
1425
+ ]
1426
+ _host = _hosts[_host_index]
1427
+
1428
+ _collection_formats: Dict[str, str] = {
1429
+ }
1430
+
1431
+ _path_params: Dict[str, str] = {}
1432
+ _query_params: List[Tuple[str, str]] = []
1433
+ _header_params: Dict[str, Optional[str]] = _headers or {}
1434
+ _form_params: List[Tuple[str, str]] = []
1435
+ _files: Dict[
1436
+ str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
1437
+ ] = {}
1438
+ _body_params: Optional[bytes] = None
1439
+
1440
+ # process the path parameters
1441
+ # process the query parameters
1442
+ # process the header parameters
1443
+ # process the form parameters
1444
+ # process the body parameter
1445
+ if product_orders_request is not None:
1446
+ _body_params = product_orders_request
1447
+
1448
+
1449
+ # set the HTTP header `Accept`
1450
+ if 'Accept' not in _header_params:
1451
+ _header_params['Accept'] = self.api_client.select_header_accept(
1452
+ [
1453
+ 'application/json'
1454
+ ]
1455
+ )
1456
+
1457
+ # set the HTTP header `Content-Type`
1458
+ if _content_type:
1459
+ _header_params['Content-Type'] = _content_type
1460
+ else:
1461
+ _default_content_type = (
1462
+ self.api_client.select_header_content_type(
1463
+ [
1464
+ 'application/json'
1465
+ ]
1466
+ )
1467
+ )
1468
+ if _default_content_type is not None:
1469
+ _header_params['Content-Type'] = _default_content_type
1470
+
1471
+ # authentication setting
1472
+ _auth_settings: List[str] = [
1473
+ 'HeaderApiKey'
1474
+ ]
1475
+
1476
+ return self.api_client.param_serialize(
1477
+ method='POST',
1478
+ resource_path='/api/v2/search-report/product/orders',
1479
+ path_params=_path_params,
1480
+ query_params=_query_params,
1481
+ header_params=_header_params,
1482
+ body=_body_params,
1483
+ post_params=_form_params,
1484
+ files=_files,
1485
+ auth_settings=_auth_settings,
1486
+ collection_formats=_collection_formats,
1487
+ _host=_host,
1488
+ _request_auth=_request_auth
1489
+ )
1490
+
1491
+
1492
+
1493
+
1494
+ @validate_call
1495
+ def api_v2_search_report_product_search_texts_post(
1496
+ self,
1497
+ product_search_texts_request: ProductSearchTextsRequest,
1498
+ _request_timeout: Union[
1499
+ None,
1500
+ Annotated[StrictFloat, Field(gt=0)],
1501
+ Tuple[
1502
+ Annotated[StrictFloat, Field(gt=0)],
1503
+ Annotated[StrictFloat, Field(gt=0)]
1504
+ ]
1505
+ ] = None,
1506
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
1507
+ _content_type: Optional[StrictStr] = None,
1508
+ _headers: Optional[Dict[StrictStr, Any]] = None,
1509
+ _host_index: Annotated[StrictInt, Field(ge=0, le=1)] = 0,
1510
+ ) -> ApiV2SearchReportProductSearchTextsPost200Response:
1511
+ """Поисковые запросы по товару
1512
+
1513
+ Метод формирует топ поисковых запросов по товару. Параметры выбора поисковых запросов: - `limit` — количество запросов, максимум 30 (для тарифа [Продвинутый](https://seller.wildberries.ru/monetization/tariffs) — 100) - `topOrderBy` — способ выбора топа запросов Параметры `includeSubstitutedSKUs` и `includeSearchTexts` не могут одновременно иметь значение `false`. <div class=\"description_limit\"> <a href=\"/openapi/api-information#tag/Vvedenie/Limity-zaprosov\">Лимит запросов</a> на один аккаунт продавца: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 минута | 3 запроса | 20 секунд | 3 запроса | </div>
1514
+
1515
+ :param product_search_texts_request: (required)
1516
+ :type product_search_texts_request: ProductSearchTextsRequest
1517
+ :param _request_timeout: timeout setting for this request. If one
1518
+ number provided, it will be total request
1519
+ timeout. It can also be a pair (tuple) of
1520
+ (connection, read) timeouts.
1521
+ :type _request_timeout: int, tuple(int, int), optional
1522
+ :param _request_auth: set to override the auth_settings for an a single
1523
+ request; this effectively ignores the
1524
+ authentication in the spec for a single request.
1525
+ :type _request_auth: dict, optional
1526
+ :param _content_type: force content-type for the request.
1527
+ :type _content_type: str, Optional
1528
+ :param _headers: set to override the headers for a single
1529
+ request; this effectively ignores the headers
1530
+ in the spec for a single request.
1531
+ :type _headers: dict, optional
1532
+ :param _host_index: set to override the host_index for a single
1533
+ request; this effectively ignores the host_index
1534
+ in the spec for a single request.
1535
+ :type _host_index: int, optional
1536
+ :return: Returns the result object.
1537
+ """ # noqa: E501
1538
+
1539
+ _param = self._api_v2_search_report_product_search_texts_post_serialize(
1540
+ product_search_texts_request=product_search_texts_request,
1541
+ _request_auth=_request_auth,
1542
+ _content_type=_content_type,
1543
+ _headers=_headers,
1544
+ _host_index=_host_index
1545
+ )
1546
+
1547
+ _response_types_map: Dict[str, Optional[str]] = {
1548
+ '200': "ApiV2SearchReportProductSearchTextsPost200Response",
1549
+ '400': "ErrorObject400",
1550
+ '401': "PostSalesFunnelProducts401Response",
1551
+ '403': "ErrorObject403",
1552
+ '429': "PostSalesFunnelProducts401Response",
1553
+ }
1554
+ response_data = self.api_client.call_api(
1555
+ *_param,
1556
+ _request_timeout=_request_timeout
1557
+ )
1558
+ response_data.read()
1559
+ return self.api_client.response_deserialize(
1560
+ response_data=response_data,
1561
+ response_types_map=_response_types_map,
1562
+ ).data
1563
+
1564
+
1565
+ @validate_call
1566
+ def api_v2_search_report_product_search_texts_post_with_http_info(
1567
+ self,
1568
+ product_search_texts_request: ProductSearchTextsRequest,
1569
+ _request_timeout: Union[
1570
+ None,
1571
+ Annotated[StrictFloat, Field(gt=0)],
1572
+ Tuple[
1573
+ Annotated[StrictFloat, Field(gt=0)],
1574
+ Annotated[StrictFloat, Field(gt=0)]
1575
+ ]
1576
+ ] = None,
1577
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
1578
+ _content_type: Optional[StrictStr] = None,
1579
+ _headers: Optional[Dict[StrictStr, Any]] = None,
1580
+ _host_index: Annotated[StrictInt, Field(ge=0, le=1)] = 0,
1581
+ ) -> ApiResponse[ApiV2SearchReportProductSearchTextsPost200Response]:
1582
+ """Поисковые запросы по товару
1583
+
1584
+ Метод формирует топ поисковых запросов по товару. Параметры выбора поисковых запросов: - `limit` — количество запросов, максимум 30 (для тарифа [Продвинутый](https://seller.wildberries.ru/monetization/tariffs) — 100) - `topOrderBy` — способ выбора топа запросов Параметры `includeSubstitutedSKUs` и `includeSearchTexts` не могут одновременно иметь значение `false`. <div class=\"description_limit\"> <a href=\"/openapi/api-information#tag/Vvedenie/Limity-zaprosov\">Лимит запросов</a> на один аккаунт продавца: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 минута | 3 запроса | 20 секунд | 3 запроса | </div>
1585
+
1586
+ :param product_search_texts_request: (required)
1587
+ :type product_search_texts_request: ProductSearchTextsRequest
1588
+ :param _request_timeout: timeout setting for this request. If one
1589
+ number provided, it will be total request
1590
+ timeout. It can also be a pair (tuple) of
1591
+ (connection, read) timeouts.
1592
+ :type _request_timeout: int, tuple(int, int), optional
1593
+ :param _request_auth: set to override the auth_settings for an a single
1594
+ request; this effectively ignores the
1595
+ authentication in the spec for a single request.
1596
+ :type _request_auth: dict, optional
1597
+ :param _content_type: force content-type for the request.
1598
+ :type _content_type: str, Optional
1599
+ :param _headers: set to override the headers for a single
1600
+ request; this effectively ignores the headers
1601
+ in the spec for a single request.
1602
+ :type _headers: dict, optional
1603
+ :param _host_index: set to override the host_index for a single
1604
+ request; this effectively ignores the host_index
1605
+ in the spec for a single request.
1606
+ :type _host_index: int, optional
1607
+ :return: Returns the result object.
1608
+ """ # noqa: E501
1609
+
1610
+ _param = self._api_v2_search_report_product_search_texts_post_serialize(
1611
+ product_search_texts_request=product_search_texts_request,
1612
+ _request_auth=_request_auth,
1613
+ _content_type=_content_type,
1614
+ _headers=_headers,
1615
+ _host_index=_host_index
1616
+ )
1617
+
1618
+ _response_types_map: Dict[str, Optional[str]] = {
1619
+ '200': "ApiV2SearchReportProductSearchTextsPost200Response",
1620
+ '400': "ErrorObject400",
1621
+ '401': "PostSalesFunnelProducts401Response",
1622
+ '403': "ErrorObject403",
1623
+ '429': "PostSalesFunnelProducts401Response",
1624
+ }
1625
+ response_data = self.api_client.call_api(
1626
+ *_param,
1627
+ _request_timeout=_request_timeout
1628
+ )
1629
+ response_data.read()
1630
+ return self.api_client.response_deserialize(
1631
+ response_data=response_data,
1632
+ response_types_map=_response_types_map,
1633
+ )
1634
+
1635
+
1636
+ @validate_call
1637
+ def api_v2_search_report_product_search_texts_post_without_preload_content(
1638
+ self,
1639
+ product_search_texts_request: ProductSearchTextsRequest,
1640
+ _request_timeout: Union[
1641
+ None,
1642
+ Annotated[StrictFloat, Field(gt=0)],
1643
+ Tuple[
1644
+ Annotated[StrictFloat, Field(gt=0)],
1645
+ Annotated[StrictFloat, Field(gt=0)]
1646
+ ]
1647
+ ] = None,
1648
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
1649
+ _content_type: Optional[StrictStr] = None,
1650
+ _headers: Optional[Dict[StrictStr, Any]] = None,
1651
+ _host_index: Annotated[StrictInt, Field(ge=0, le=1)] = 0,
1652
+ ) -> RESTResponseType:
1653
+ """Поисковые запросы по товару
1654
+
1655
+ Метод формирует топ поисковых запросов по товару. Параметры выбора поисковых запросов: - `limit` — количество запросов, максимум 30 (для тарифа [Продвинутый](https://seller.wildberries.ru/monetization/tariffs) — 100) - `topOrderBy` — способ выбора топа запросов Параметры `includeSubstitutedSKUs` и `includeSearchTexts` не могут одновременно иметь значение `false`. <div class=\"description_limit\"> <a href=\"/openapi/api-information#tag/Vvedenie/Limity-zaprosov\">Лимит запросов</a> на один аккаунт продавца: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 минута | 3 запроса | 20 секунд | 3 запроса | </div>
1656
+
1657
+ :param product_search_texts_request: (required)
1658
+ :type product_search_texts_request: ProductSearchTextsRequest
1659
+ :param _request_timeout: timeout setting for this request. If one
1660
+ number provided, it will be total request
1661
+ timeout. It can also be a pair (tuple) of
1662
+ (connection, read) timeouts.
1663
+ :type _request_timeout: int, tuple(int, int), optional
1664
+ :param _request_auth: set to override the auth_settings for an a single
1665
+ request; this effectively ignores the
1666
+ authentication in the spec for a single request.
1667
+ :type _request_auth: dict, optional
1668
+ :param _content_type: force content-type for the request.
1669
+ :type _content_type: str, Optional
1670
+ :param _headers: set to override the headers for a single
1671
+ request; this effectively ignores the headers
1672
+ in the spec for a single request.
1673
+ :type _headers: dict, optional
1674
+ :param _host_index: set to override the host_index for a single
1675
+ request; this effectively ignores the host_index
1676
+ in the spec for a single request.
1677
+ :type _host_index: int, optional
1678
+ :return: Returns the result object.
1679
+ """ # noqa: E501
1680
+
1681
+ _param = self._api_v2_search_report_product_search_texts_post_serialize(
1682
+ product_search_texts_request=product_search_texts_request,
1683
+ _request_auth=_request_auth,
1684
+ _content_type=_content_type,
1685
+ _headers=_headers,
1686
+ _host_index=_host_index
1687
+ )
1688
+
1689
+ _response_types_map: Dict[str, Optional[str]] = {
1690
+ '200': "ApiV2SearchReportProductSearchTextsPost200Response",
1691
+ '400': "ErrorObject400",
1692
+ '401': "PostSalesFunnelProducts401Response",
1693
+ '403': "ErrorObject403",
1694
+ '429': "PostSalesFunnelProducts401Response",
1695
+ }
1696
+ response_data = self.api_client.call_api(
1697
+ *_param,
1698
+ _request_timeout=_request_timeout
1699
+ )
1700
+ return response_data.response
1701
+
1702
+
1703
+ def _api_v2_search_report_product_search_texts_post_serialize(
1704
+ self,
1705
+ product_search_texts_request,
1706
+ _request_auth,
1707
+ _content_type,
1708
+ _headers,
1709
+ _host_index,
1710
+ ) -> RequestSerialized:
1711
+
1712
+ _hosts = [
1713
+ 'https://seller-analytics-api.wildberries.ru'
1714
+ ]
1715
+ _host = _hosts[_host_index]
1716
+
1717
+ _collection_formats: Dict[str, str] = {
1718
+ }
1719
+
1720
+ _path_params: Dict[str, str] = {}
1721
+ _query_params: List[Tuple[str, str]] = []
1722
+ _header_params: Dict[str, Optional[str]] = _headers or {}
1723
+ _form_params: List[Tuple[str, str]] = []
1724
+ _files: Dict[
1725
+ str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
1726
+ ] = {}
1727
+ _body_params: Optional[bytes] = None
1728
+
1729
+ # process the path parameters
1730
+ # process the query parameters
1731
+ # process the header parameters
1732
+ # process the form parameters
1733
+ # process the body parameter
1734
+ if product_search_texts_request is not None:
1735
+ _body_params = product_search_texts_request
1736
+
1737
+
1738
+ # set the HTTP header `Accept`
1739
+ if 'Accept' not in _header_params:
1740
+ _header_params['Accept'] = self.api_client.select_header_accept(
1741
+ [
1742
+ 'application/json'
1743
+ ]
1744
+ )
1745
+
1746
+ # set the HTTP header `Content-Type`
1747
+ if _content_type:
1748
+ _header_params['Content-Type'] = _content_type
1749
+ else:
1750
+ _default_content_type = (
1751
+ self.api_client.select_header_content_type(
1752
+ [
1753
+ 'application/json'
1754
+ ]
1755
+ )
1756
+ )
1757
+ if _default_content_type is not None:
1758
+ _header_params['Content-Type'] = _default_content_type
1759
+
1760
+ # authentication setting
1761
+ _auth_settings: List[str] = [
1762
+ 'HeaderApiKey'
1763
+ ]
1764
+
1765
+ return self.api_client.param_serialize(
1766
+ method='POST',
1767
+ resource_path='/api/v2/search-report/product/search-texts',
1768
+ path_params=_path_params,
1769
+ query_params=_query_params,
1770
+ header_params=_header_params,
1771
+ body=_body_params,
1772
+ post_params=_form_params,
1773
+ files=_files,
1774
+ auth_settings=_auth_settings,
1775
+ collection_formats=_collection_formats,
1776
+ _host=_host,
1777
+ _request_auth=_request_auth
1778
+ )
1779
+
1780
+
1781
+
1782
+
1783
+ @validate_call
1784
+ def api_v2_search_report_report_post(
1785
+ self,
1786
+ main_request: MainRequest,
1787
+ _request_timeout: Union[
1788
+ None,
1789
+ Annotated[StrictFloat, Field(gt=0)],
1790
+ Tuple[
1791
+ Annotated[StrictFloat, Field(gt=0)],
1792
+ Annotated[StrictFloat, Field(gt=0)]
1793
+ ]
1794
+ ] = None,
1795
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
1796
+ _content_type: Optional[StrictStr] = None,
1797
+ _headers: Optional[Dict[StrictStr, Any]] = None,
1798
+ _host_index: Annotated[StrictInt, Field(ge=0, le=1)] = 0,
1799
+ ) -> ApiV2SearchReportReportPost200Response:
1800
+ """Основная страница
1801
+
1802
+ Метод формирует набор данных для основной страницы отчёта по поисковым запросам с: - общей информацией - позициями товаров - данными по видимости и переходам в карточку - данными для таблицы по группам Для получения дополнительных данных в таблице используйте отдельный запрос для: - [пагинации по группам](/openapi/analytics#tag/Poiskovye-zaprosy-po-vashim-tovaram/paths/~1api~1v2~1search-report~1table~1groups/post) - [получения по товарам в группе](/openapi/analytics#tag/Poiskovye-zaprosy-po-vashim-tovaram/paths/~1api~1v2~1search-report~1table~1details/post) Дополнительный параметр выбора списка товаров в таблице: - `positionCluster` — средняя позиция в поиске Параметры `includeSubstitutedSKUs` и `includeSearchTexts` не могут одновременно иметь значение `false`. <div class=\"description_limit\"> <a href=\"/openapi/api-information#tag/Vvedenie/Limity-zaprosov\">Лимит запросов</a> на один аккаунт продавца: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 минута | 3 запроса | 20 секунд | 3 запроса | </div>
1803
+
1804
+ :param main_request: (required)
1805
+ :type main_request: MainRequest
1806
+ :param _request_timeout: timeout setting for this request. If one
1807
+ number provided, it will be total request
1808
+ timeout. It can also be a pair (tuple) of
1809
+ (connection, read) timeouts.
1810
+ :type _request_timeout: int, tuple(int, int), optional
1811
+ :param _request_auth: set to override the auth_settings for an a single
1812
+ request; this effectively ignores the
1813
+ authentication in the spec for a single request.
1814
+ :type _request_auth: dict, optional
1815
+ :param _content_type: force content-type for the request.
1816
+ :type _content_type: str, Optional
1817
+ :param _headers: set to override the headers for a single
1818
+ request; this effectively ignores the headers
1819
+ in the spec for a single request.
1820
+ :type _headers: dict, optional
1821
+ :param _host_index: set to override the host_index for a single
1822
+ request; this effectively ignores the host_index
1823
+ in the spec for a single request.
1824
+ :type _host_index: int, optional
1825
+ :return: Returns the result object.
1826
+ """ # noqa: E501
1827
+
1828
+ _param = self._api_v2_search_report_report_post_serialize(
1829
+ main_request=main_request,
1830
+ _request_auth=_request_auth,
1831
+ _content_type=_content_type,
1832
+ _headers=_headers,
1833
+ _host_index=_host_index
1834
+ )
1835
+
1836
+ _response_types_map: Dict[str, Optional[str]] = {
1837
+ '200': "ApiV2SearchReportReportPost200Response",
1838
+ '400': "ErrorObject400",
1839
+ '401': "PostSalesFunnelProducts401Response",
1840
+ '403': "ErrorObject403",
1841
+ '429': "PostSalesFunnelProducts401Response",
1842
+ }
1843
+ response_data = self.api_client.call_api(
1844
+ *_param,
1845
+ _request_timeout=_request_timeout
1846
+ )
1847
+ response_data.read()
1848
+ return self.api_client.response_deserialize(
1849
+ response_data=response_data,
1850
+ response_types_map=_response_types_map,
1851
+ ).data
1852
+
1853
+
1854
+ @validate_call
1855
+ def api_v2_search_report_report_post_with_http_info(
1856
+ self,
1857
+ main_request: MainRequest,
1858
+ _request_timeout: Union[
1859
+ None,
1860
+ Annotated[StrictFloat, Field(gt=0)],
1861
+ Tuple[
1862
+ Annotated[StrictFloat, Field(gt=0)],
1863
+ Annotated[StrictFloat, Field(gt=0)]
1864
+ ]
1865
+ ] = None,
1866
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
1867
+ _content_type: Optional[StrictStr] = None,
1868
+ _headers: Optional[Dict[StrictStr, Any]] = None,
1869
+ _host_index: Annotated[StrictInt, Field(ge=0, le=1)] = 0,
1870
+ ) -> ApiResponse[ApiV2SearchReportReportPost200Response]:
1871
+ """Основная страница
1872
+
1873
+ Метод формирует набор данных для основной страницы отчёта по поисковым запросам с: - общей информацией - позициями товаров - данными по видимости и переходам в карточку - данными для таблицы по группам Для получения дополнительных данных в таблице используйте отдельный запрос для: - [пагинации по группам](/openapi/analytics#tag/Poiskovye-zaprosy-po-vashim-tovaram/paths/~1api~1v2~1search-report~1table~1groups/post) - [получения по товарам в группе](/openapi/analytics#tag/Poiskovye-zaprosy-po-vashim-tovaram/paths/~1api~1v2~1search-report~1table~1details/post) Дополнительный параметр выбора списка товаров в таблице: - `positionCluster` — средняя позиция в поиске Параметры `includeSubstitutedSKUs` и `includeSearchTexts` не могут одновременно иметь значение `false`. <div class=\"description_limit\"> <a href=\"/openapi/api-information#tag/Vvedenie/Limity-zaprosov\">Лимит запросов</a> на один аккаунт продавца: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 минута | 3 запроса | 20 секунд | 3 запроса | </div>
1874
+
1875
+ :param main_request: (required)
1876
+ :type main_request: MainRequest
1877
+ :param _request_timeout: timeout setting for this request. If one
1878
+ number provided, it will be total request
1879
+ timeout. It can also be a pair (tuple) of
1880
+ (connection, read) timeouts.
1881
+ :type _request_timeout: int, tuple(int, int), optional
1882
+ :param _request_auth: set to override the auth_settings for an a single
1883
+ request; this effectively ignores the
1884
+ authentication in the spec for a single request.
1885
+ :type _request_auth: dict, optional
1886
+ :param _content_type: force content-type for the request.
1887
+ :type _content_type: str, Optional
1888
+ :param _headers: set to override the headers for a single
1889
+ request; this effectively ignores the headers
1890
+ in the spec for a single request.
1891
+ :type _headers: dict, optional
1892
+ :param _host_index: set to override the host_index for a single
1893
+ request; this effectively ignores the host_index
1894
+ in the spec for a single request.
1895
+ :type _host_index: int, optional
1896
+ :return: Returns the result object.
1897
+ """ # noqa: E501
1898
+
1899
+ _param = self._api_v2_search_report_report_post_serialize(
1900
+ main_request=main_request,
1901
+ _request_auth=_request_auth,
1902
+ _content_type=_content_type,
1903
+ _headers=_headers,
1904
+ _host_index=_host_index
1905
+ )
1906
+
1907
+ _response_types_map: Dict[str, Optional[str]] = {
1908
+ '200': "ApiV2SearchReportReportPost200Response",
1909
+ '400': "ErrorObject400",
1910
+ '401': "PostSalesFunnelProducts401Response",
1911
+ '403': "ErrorObject403",
1912
+ '429': "PostSalesFunnelProducts401Response",
1913
+ }
1914
+ response_data = self.api_client.call_api(
1915
+ *_param,
1916
+ _request_timeout=_request_timeout
1917
+ )
1918
+ response_data.read()
1919
+ return self.api_client.response_deserialize(
1920
+ response_data=response_data,
1921
+ response_types_map=_response_types_map,
1922
+ )
1923
+
1924
+
1925
+ @validate_call
1926
+ def api_v2_search_report_report_post_without_preload_content(
1927
+ self,
1928
+ main_request: MainRequest,
1929
+ _request_timeout: Union[
1930
+ None,
1931
+ Annotated[StrictFloat, Field(gt=0)],
1932
+ Tuple[
1933
+ Annotated[StrictFloat, Field(gt=0)],
1934
+ Annotated[StrictFloat, Field(gt=0)]
1935
+ ]
1936
+ ] = None,
1937
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
1938
+ _content_type: Optional[StrictStr] = None,
1939
+ _headers: Optional[Dict[StrictStr, Any]] = None,
1940
+ _host_index: Annotated[StrictInt, Field(ge=0, le=1)] = 0,
1941
+ ) -> RESTResponseType:
1942
+ """Основная страница
1943
+
1944
+ Метод формирует набор данных для основной страницы отчёта по поисковым запросам с: - общей информацией - позициями товаров - данными по видимости и переходам в карточку - данными для таблицы по группам Для получения дополнительных данных в таблице используйте отдельный запрос для: - [пагинации по группам](/openapi/analytics#tag/Poiskovye-zaprosy-po-vashim-tovaram/paths/~1api~1v2~1search-report~1table~1groups/post) - [получения по товарам в группе](/openapi/analytics#tag/Poiskovye-zaprosy-po-vashim-tovaram/paths/~1api~1v2~1search-report~1table~1details/post) Дополнительный параметр выбора списка товаров в таблице: - `positionCluster` — средняя позиция в поиске Параметры `includeSubstitutedSKUs` и `includeSearchTexts` не могут одновременно иметь значение `false`. <div class=\"description_limit\"> <a href=\"/openapi/api-information#tag/Vvedenie/Limity-zaprosov\">Лимит запросов</a> на один аккаунт продавца: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 минута | 3 запроса | 20 секунд | 3 запроса | </div>
1945
+
1946
+ :param main_request: (required)
1947
+ :type main_request: MainRequest
1948
+ :param _request_timeout: timeout setting for this request. If one
1949
+ number provided, it will be total request
1950
+ timeout. It can also be a pair (tuple) of
1951
+ (connection, read) timeouts.
1952
+ :type _request_timeout: int, tuple(int, int), optional
1953
+ :param _request_auth: set to override the auth_settings for an a single
1954
+ request; this effectively ignores the
1955
+ authentication in the spec for a single request.
1956
+ :type _request_auth: dict, optional
1957
+ :param _content_type: force content-type for the request.
1958
+ :type _content_type: str, Optional
1959
+ :param _headers: set to override the headers for a single
1960
+ request; this effectively ignores the headers
1961
+ in the spec for a single request.
1962
+ :type _headers: dict, optional
1963
+ :param _host_index: set to override the host_index for a single
1964
+ request; this effectively ignores the host_index
1965
+ in the spec for a single request.
1966
+ :type _host_index: int, optional
1967
+ :return: Returns the result object.
1968
+ """ # noqa: E501
1969
+
1970
+ _param = self._api_v2_search_report_report_post_serialize(
1971
+ main_request=main_request,
1972
+ _request_auth=_request_auth,
1973
+ _content_type=_content_type,
1974
+ _headers=_headers,
1975
+ _host_index=_host_index
1976
+ )
1977
+
1978
+ _response_types_map: Dict[str, Optional[str]] = {
1979
+ '200': "ApiV2SearchReportReportPost200Response",
1980
+ '400': "ErrorObject400",
1981
+ '401': "PostSalesFunnelProducts401Response",
1982
+ '403': "ErrorObject403",
1983
+ '429': "PostSalesFunnelProducts401Response",
1984
+ }
1985
+ response_data = self.api_client.call_api(
1986
+ *_param,
1987
+ _request_timeout=_request_timeout
1988
+ )
1989
+ return response_data.response
1990
+
1991
+
1992
+ def _api_v2_search_report_report_post_serialize(
1993
+ self,
1994
+ main_request,
1995
+ _request_auth,
1996
+ _content_type,
1997
+ _headers,
1998
+ _host_index,
1999
+ ) -> RequestSerialized:
2000
+
2001
+ _hosts = [
2002
+ 'https://seller-analytics-api.wildberries.ru'
2003
+ ]
2004
+ _host = _hosts[_host_index]
2005
+
2006
+ _collection_formats: Dict[str, str] = {
2007
+ }
2008
+
2009
+ _path_params: Dict[str, str] = {}
2010
+ _query_params: List[Tuple[str, str]] = []
2011
+ _header_params: Dict[str, Optional[str]] = _headers or {}
2012
+ _form_params: List[Tuple[str, str]] = []
2013
+ _files: Dict[
2014
+ str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
2015
+ ] = {}
2016
+ _body_params: Optional[bytes] = None
2017
+
2018
+ # process the path parameters
2019
+ # process the query parameters
2020
+ # process the header parameters
2021
+ # process the form parameters
2022
+ # process the body parameter
2023
+ if main_request is not None:
2024
+ _body_params = main_request
2025
+
2026
+
2027
+ # set the HTTP header `Accept`
2028
+ if 'Accept' not in _header_params:
2029
+ _header_params['Accept'] = self.api_client.select_header_accept(
2030
+ [
2031
+ 'application/json'
2032
+ ]
2033
+ )
2034
+
2035
+ # set the HTTP header `Content-Type`
2036
+ if _content_type:
2037
+ _header_params['Content-Type'] = _content_type
2038
+ else:
2039
+ _default_content_type = (
2040
+ self.api_client.select_header_content_type(
2041
+ [
2042
+ 'application/json'
2043
+ ]
2044
+ )
2045
+ )
2046
+ if _default_content_type is not None:
2047
+ _header_params['Content-Type'] = _default_content_type
2048
+
2049
+ # authentication setting
2050
+ _auth_settings: List[str] = [
2051
+ 'HeaderApiKey'
2052
+ ]
2053
+
2054
+ return self.api_client.param_serialize(
2055
+ method='POST',
2056
+ resource_path='/api/v2/search-report/report',
2057
+ path_params=_path_params,
2058
+ query_params=_query_params,
2059
+ header_params=_header_params,
2060
+ body=_body_params,
2061
+ post_params=_form_params,
2062
+ files=_files,
2063
+ auth_settings=_auth_settings,
2064
+ collection_formats=_collection_formats,
2065
+ _host=_host,
2066
+ _request_auth=_request_auth
2067
+ )
2068
+
2069
+
2070
+
2071
+
2072
+ @validate_call
2073
+ def api_v2_search_report_table_details_post(
2074
+ self,
2075
+ table_details_request: TableDetailsRequest,
2076
+ _request_timeout: Union[
2077
+ None,
2078
+ Annotated[StrictFloat, Field(gt=0)],
2079
+ Tuple[
2080
+ Annotated[StrictFloat, Field(gt=0)],
2081
+ Annotated[StrictFloat, Field(gt=0)]
2082
+ ]
2083
+ ] = None,
2084
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
2085
+ _content_type: Optional[StrictStr] = None,
2086
+ _headers: Optional[Dict[StrictStr, Any]] = None,
2087
+ _host_index: Annotated[StrictInt, Field(ge=0, le=1)] = 0,
2088
+ ) -> ApiV2SearchReportTableDetailsPost200Response:
2089
+ """Пагинация по товарам в группе
2090
+
2091
+ Метод формирует дополнительные данные к [основному отчёту](/openapi/analytics#tag/Poiskovye-zaprosy-po-vashim-tovaram/paths/~1api~1v2~1search-report~1report/post) с пагинацией по товарам в группе. Пагинация возможна вне зависимости от наличия фильтров.<br><br> Фильтры для пагинации по товарам в группе или без фильтров: - кортеж `subjectId`,`brandName`,`tagId` — фильтр для группы - `nmIds` — фильтр по карточке товара Дополнительный параметр выбора списка товаров: - `positionCluster` — средняя позиция в поиске Параметры `includeSubstitutedSKUs` и `includeSearchTexts` не могут одновременно иметь значение `false`. <div class=\"description_limit\"> <a href=\"/openapi/api-information#tag/Vvedenie/Limity-zaprosov\">Лимит запросов</a> на один аккаунт продавца: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 минута | 3 запроса | 20 секунд | 3 запроса | </div>
2092
+
2093
+ :param table_details_request: (required)
2094
+ :type table_details_request: TableDetailsRequest
2095
+ :param _request_timeout: timeout setting for this request. If one
2096
+ number provided, it will be total request
2097
+ timeout. It can also be a pair (tuple) of
2098
+ (connection, read) timeouts.
2099
+ :type _request_timeout: int, tuple(int, int), optional
2100
+ :param _request_auth: set to override the auth_settings for an a single
2101
+ request; this effectively ignores the
2102
+ authentication in the spec for a single request.
2103
+ :type _request_auth: dict, optional
2104
+ :param _content_type: force content-type for the request.
2105
+ :type _content_type: str, Optional
2106
+ :param _headers: set to override the headers for a single
2107
+ request; this effectively ignores the headers
2108
+ in the spec for a single request.
2109
+ :type _headers: dict, optional
2110
+ :param _host_index: set to override the host_index for a single
2111
+ request; this effectively ignores the host_index
2112
+ in the spec for a single request.
2113
+ :type _host_index: int, optional
2114
+ :return: Returns the result object.
2115
+ """ # noqa: E501
2116
+
2117
+ _param = self._api_v2_search_report_table_details_post_serialize(
2118
+ table_details_request=table_details_request,
2119
+ _request_auth=_request_auth,
2120
+ _content_type=_content_type,
2121
+ _headers=_headers,
2122
+ _host_index=_host_index
2123
+ )
2124
+
2125
+ _response_types_map: Dict[str, Optional[str]] = {
2126
+ '200': "ApiV2SearchReportTableDetailsPost200Response",
2127
+ '400': "ErrorObject400",
2128
+ '401': "PostSalesFunnelProducts401Response",
2129
+ '403': "ErrorObject403",
2130
+ '429': "PostSalesFunnelProducts401Response",
2131
+ }
2132
+ response_data = self.api_client.call_api(
2133
+ *_param,
2134
+ _request_timeout=_request_timeout
2135
+ )
2136
+ response_data.read()
2137
+ return self.api_client.response_deserialize(
2138
+ response_data=response_data,
2139
+ response_types_map=_response_types_map,
2140
+ ).data
2141
+
2142
+
2143
+ @validate_call
2144
+ def api_v2_search_report_table_details_post_with_http_info(
2145
+ self,
2146
+ table_details_request: TableDetailsRequest,
2147
+ _request_timeout: Union[
2148
+ None,
2149
+ Annotated[StrictFloat, Field(gt=0)],
2150
+ Tuple[
2151
+ Annotated[StrictFloat, Field(gt=0)],
2152
+ Annotated[StrictFloat, Field(gt=0)]
2153
+ ]
2154
+ ] = None,
2155
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
2156
+ _content_type: Optional[StrictStr] = None,
2157
+ _headers: Optional[Dict[StrictStr, Any]] = None,
2158
+ _host_index: Annotated[StrictInt, Field(ge=0, le=1)] = 0,
2159
+ ) -> ApiResponse[ApiV2SearchReportTableDetailsPost200Response]:
2160
+ """Пагинация по товарам в группе
2161
+
2162
+ Метод формирует дополнительные данные к [основному отчёту](/openapi/analytics#tag/Poiskovye-zaprosy-po-vashim-tovaram/paths/~1api~1v2~1search-report~1report/post) с пагинацией по товарам в группе. Пагинация возможна вне зависимости от наличия фильтров.<br><br> Фильтры для пагинации по товарам в группе или без фильтров: - кортеж `subjectId`,`brandName`,`tagId` — фильтр для группы - `nmIds` — фильтр по карточке товара Дополнительный параметр выбора списка товаров: - `positionCluster` — средняя позиция в поиске Параметры `includeSubstitutedSKUs` и `includeSearchTexts` не могут одновременно иметь значение `false`. <div class=\"description_limit\"> <a href=\"/openapi/api-information#tag/Vvedenie/Limity-zaprosov\">Лимит запросов</a> на один аккаунт продавца: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 минута | 3 запроса | 20 секунд | 3 запроса | </div>
2163
+
2164
+ :param table_details_request: (required)
2165
+ :type table_details_request: TableDetailsRequest
2166
+ :param _request_timeout: timeout setting for this request. If one
2167
+ number provided, it will be total request
2168
+ timeout. It can also be a pair (tuple) of
2169
+ (connection, read) timeouts.
2170
+ :type _request_timeout: int, tuple(int, int), optional
2171
+ :param _request_auth: set to override the auth_settings for an a single
2172
+ request; this effectively ignores the
2173
+ authentication in the spec for a single request.
2174
+ :type _request_auth: dict, optional
2175
+ :param _content_type: force content-type for the request.
2176
+ :type _content_type: str, Optional
2177
+ :param _headers: set to override the headers for a single
2178
+ request; this effectively ignores the headers
2179
+ in the spec for a single request.
2180
+ :type _headers: dict, optional
2181
+ :param _host_index: set to override the host_index for a single
2182
+ request; this effectively ignores the host_index
2183
+ in the spec for a single request.
2184
+ :type _host_index: int, optional
2185
+ :return: Returns the result object.
2186
+ """ # noqa: E501
2187
+
2188
+ _param = self._api_v2_search_report_table_details_post_serialize(
2189
+ table_details_request=table_details_request,
2190
+ _request_auth=_request_auth,
2191
+ _content_type=_content_type,
2192
+ _headers=_headers,
2193
+ _host_index=_host_index
2194
+ )
2195
+
2196
+ _response_types_map: Dict[str, Optional[str]] = {
2197
+ '200': "ApiV2SearchReportTableDetailsPost200Response",
2198
+ '400': "ErrorObject400",
2199
+ '401': "PostSalesFunnelProducts401Response",
2200
+ '403': "ErrorObject403",
2201
+ '429': "PostSalesFunnelProducts401Response",
2202
+ }
2203
+ response_data = self.api_client.call_api(
2204
+ *_param,
2205
+ _request_timeout=_request_timeout
2206
+ )
2207
+ response_data.read()
2208
+ return self.api_client.response_deserialize(
2209
+ response_data=response_data,
2210
+ response_types_map=_response_types_map,
2211
+ )
2212
+
2213
+
2214
+ @validate_call
2215
+ def api_v2_search_report_table_details_post_without_preload_content(
2216
+ self,
2217
+ table_details_request: TableDetailsRequest,
2218
+ _request_timeout: Union[
2219
+ None,
2220
+ Annotated[StrictFloat, Field(gt=0)],
2221
+ Tuple[
2222
+ Annotated[StrictFloat, Field(gt=0)],
2223
+ Annotated[StrictFloat, Field(gt=0)]
2224
+ ]
2225
+ ] = None,
2226
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
2227
+ _content_type: Optional[StrictStr] = None,
2228
+ _headers: Optional[Dict[StrictStr, Any]] = None,
2229
+ _host_index: Annotated[StrictInt, Field(ge=0, le=1)] = 0,
2230
+ ) -> RESTResponseType:
2231
+ """Пагинация по товарам в группе
2232
+
2233
+ Метод формирует дополнительные данные к [основному отчёту](/openapi/analytics#tag/Poiskovye-zaprosy-po-vashim-tovaram/paths/~1api~1v2~1search-report~1report/post) с пагинацией по товарам в группе. Пагинация возможна вне зависимости от наличия фильтров.<br><br> Фильтры для пагинации по товарам в группе или без фильтров: - кортеж `subjectId`,`brandName`,`tagId` — фильтр для группы - `nmIds` — фильтр по карточке товара Дополнительный параметр выбора списка товаров: - `positionCluster` — средняя позиция в поиске Параметры `includeSubstitutedSKUs` и `includeSearchTexts` не могут одновременно иметь значение `false`. <div class=\"description_limit\"> <a href=\"/openapi/api-information#tag/Vvedenie/Limity-zaprosov\">Лимит запросов</a> на один аккаунт продавца: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 минута | 3 запроса | 20 секунд | 3 запроса | </div>
2234
+
2235
+ :param table_details_request: (required)
2236
+ :type table_details_request: TableDetailsRequest
2237
+ :param _request_timeout: timeout setting for this request. If one
2238
+ number provided, it will be total request
2239
+ timeout. It can also be a pair (tuple) of
2240
+ (connection, read) timeouts.
2241
+ :type _request_timeout: int, tuple(int, int), optional
2242
+ :param _request_auth: set to override the auth_settings for an a single
2243
+ request; this effectively ignores the
2244
+ authentication in the spec for a single request.
2245
+ :type _request_auth: dict, optional
2246
+ :param _content_type: force content-type for the request.
2247
+ :type _content_type: str, Optional
2248
+ :param _headers: set to override the headers for a single
2249
+ request; this effectively ignores the headers
2250
+ in the spec for a single request.
2251
+ :type _headers: dict, optional
2252
+ :param _host_index: set to override the host_index for a single
2253
+ request; this effectively ignores the host_index
2254
+ in the spec for a single request.
2255
+ :type _host_index: int, optional
2256
+ :return: Returns the result object.
2257
+ """ # noqa: E501
2258
+
2259
+ _param = self._api_v2_search_report_table_details_post_serialize(
2260
+ table_details_request=table_details_request,
2261
+ _request_auth=_request_auth,
2262
+ _content_type=_content_type,
2263
+ _headers=_headers,
2264
+ _host_index=_host_index
2265
+ )
2266
+
2267
+ _response_types_map: Dict[str, Optional[str]] = {
2268
+ '200': "ApiV2SearchReportTableDetailsPost200Response",
2269
+ '400': "ErrorObject400",
2270
+ '401': "PostSalesFunnelProducts401Response",
2271
+ '403': "ErrorObject403",
2272
+ '429': "PostSalesFunnelProducts401Response",
2273
+ }
2274
+ response_data = self.api_client.call_api(
2275
+ *_param,
2276
+ _request_timeout=_request_timeout
2277
+ )
2278
+ return response_data.response
2279
+
2280
+
2281
+ def _api_v2_search_report_table_details_post_serialize(
2282
+ self,
2283
+ table_details_request,
2284
+ _request_auth,
2285
+ _content_type,
2286
+ _headers,
2287
+ _host_index,
2288
+ ) -> RequestSerialized:
2289
+
2290
+ _hosts = [
2291
+ 'https://seller-analytics-api.wildberries.ru'
2292
+ ]
2293
+ _host = _hosts[_host_index]
2294
+
2295
+ _collection_formats: Dict[str, str] = {
2296
+ }
2297
+
2298
+ _path_params: Dict[str, str] = {}
2299
+ _query_params: List[Tuple[str, str]] = []
2300
+ _header_params: Dict[str, Optional[str]] = _headers or {}
2301
+ _form_params: List[Tuple[str, str]] = []
2302
+ _files: Dict[
2303
+ str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
2304
+ ] = {}
2305
+ _body_params: Optional[bytes] = None
2306
+
2307
+ # process the path parameters
2308
+ # process the query parameters
2309
+ # process the header parameters
2310
+ # process the form parameters
2311
+ # process the body parameter
2312
+ if table_details_request is not None:
2313
+ _body_params = table_details_request
2314
+
2315
+
2316
+ # set the HTTP header `Accept`
2317
+ if 'Accept' not in _header_params:
2318
+ _header_params['Accept'] = self.api_client.select_header_accept(
2319
+ [
2320
+ 'application/json'
2321
+ ]
2322
+ )
2323
+
2324
+ # set the HTTP header `Content-Type`
2325
+ if _content_type:
2326
+ _header_params['Content-Type'] = _content_type
2327
+ else:
2328
+ _default_content_type = (
2329
+ self.api_client.select_header_content_type(
2330
+ [
2331
+ 'application/json'
2332
+ ]
2333
+ )
2334
+ )
2335
+ if _default_content_type is not None:
2336
+ _header_params['Content-Type'] = _default_content_type
2337
+
2338
+ # authentication setting
2339
+ _auth_settings: List[str] = [
2340
+ 'HeaderApiKey'
2341
+ ]
2342
+
2343
+ return self.api_client.param_serialize(
2344
+ method='POST',
2345
+ resource_path='/api/v2/search-report/table/details',
2346
+ path_params=_path_params,
2347
+ query_params=_query_params,
2348
+ header_params=_header_params,
2349
+ body=_body_params,
2350
+ post_params=_form_params,
2351
+ files=_files,
2352
+ auth_settings=_auth_settings,
2353
+ collection_formats=_collection_formats,
2354
+ _host=_host,
2355
+ _request_auth=_request_auth
2356
+ )
2357
+
2358
+
2359
+
2360
+
2361
+ @validate_call
2362
+ def api_v2_search_report_table_groups_post(
2363
+ self,
2364
+ table_group_request: TableGroupRequest,
2365
+ _request_timeout: Union[
2366
+ None,
2367
+ Annotated[StrictFloat, Field(gt=0)],
2368
+ Tuple[
2369
+ Annotated[StrictFloat, Field(gt=0)],
2370
+ Annotated[StrictFloat, Field(gt=0)]
2371
+ ]
2372
+ ] = None,
2373
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
2374
+ _content_type: Optional[StrictStr] = None,
2375
+ _headers: Optional[Dict[StrictStr, Any]] = None,
2376
+ _host_index: Annotated[StrictInt, Field(ge=0, le=1)] = 0,
2377
+ ) -> ApiV2SearchReportTableGroupsPost200Response:
2378
+ """Пагинация по группам
2379
+
2380
+ Метод формирует дополнительные данные к [основному отчёту](/openapi/analytics#tag/Poiskovye-zaprosy-po-vashim-tovaram/paths/~1api~1v2~1search-report~1report/post) с пагинацией по группам. Пагинация возможна только при наличии фильтра по бренду, предмету или ярлыку.<br><br> Дополнительный параметр выбора списка товаров в таблице: - `positionCluster` — средняя позиция в поиске Параметры `includeSubstitutedSKUs` и `includeSearchTexts` не могут одновременно иметь значение `false`. <div class=\"description_limit\"> <a href=\"/openapi/api-information#tag/Vvedenie/Limity-zaprosov\">Лимит запросов</a> на один аккаунт продавца: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 минута | 3 запроса | 20 секунд | 3 запроса | </div>
2381
+
2382
+ :param table_group_request: (required)
2383
+ :type table_group_request: TableGroupRequest
2384
+ :param _request_timeout: timeout setting for this request. If one
2385
+ number provided, it will be total request
2386
+ timeout. It can also be a pair (tuple) of
2387
+ (connection, read) timeouts.
2388
+ :type _request_timeout: int, tuple(int, int), optional
2389
+ :param _request_auth: set to override the auth_settings for an a single
2390
+ request; this effectively ignores the
2391
+ authentication in the spec for a single request.
2392
+ :type _request_auth: dict, optional
2393
+ :param _content_type: force content-type for the request.
2394
+ :type _content_type: str, Optional
2395
+ :param _headers: set to override the headers for a single
2396
+ request; this effectively ignores the headers
2397
+ in the spec for a single request.
2398
+ :type _headers: dict, optional
2399
+ :param _host_index: set to override the host_index for a single
2400
+ request; this effectively ignores the host_index
2401
+ in the spec for a single request.
2402
+ :type _host_index: int, optional
2403
+ :return: Returns the result object.
2404
+ """ # noqa: E501
2405
+
2406
+ _param = self._api_v2_search_report_table_groups_post_serialize(
2407
+ table_group_request=table_group_request,
2408
+ _request_auth=_request_auth,
2409
+ _content_type=_content_type,
2410
+ _headers=_headers,
2411
+ _host_index=_host_index
2412
+ )
2413
+
2414
+ _response_types_map: Dict[str, Optional[str]] = {
2415
+ '200': "ApiV2SearchReportTableGroupsPost200Response",
2416
+ '400': "ErrorObject400",
2417
+ '401': "PostSalesFunnelProducts401Response",
2418
+ '403': "ErrorObject403",
2419
+ '429': "PostSalesFunnelProducts401Response",
2420
+ }
2421
+ response_data = self.api_client.call_api(
2422
+ *_param,
2423
+ _request_timeout=_request_timeout
2424
+ )
2425
+ response_data.read()
2426
+ return self.api_client.response_deserialize(
2427
+ response_data=response_data,
2428
+ response_types_map=_response_types_map,
2429
+ ).data
2430
+
2431
+
2432
+ @validate_call
2433
+ def api_v2_search_report_table_groups_post_with_http_info(
2434
+ self,
2435
+ table_group_request: TableGroupRequest,
2436
+ _request_timeout: Union[
2437
+ None,
2438
+ Annotated[StrictFloat, Field(gt=0)],
2439
+ Tuple[
2440
+ Annotated[StrictFloat, Field(gt=0)],
2441
+ Annotated[StrictFloat, Field(gt=0)]
2442
+ ]
2443
+ ] = None,
2444
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
2445
+ _content_type: Optional[StrictStr] = None,
2446
+ _headers: Optional[Dict[StrictStr, Any]] = None,
2447
+ _host_index: Annotated[StrictInt, Field(ge=0, le=1)] = 0,
2448
+ ) -> ApiResponse[ApiV2SearchReportTableGroupsPost200Response]:
2449
+ """Пагинация по группам
2450
+
2451
+ Метод формирует дополнительные данные к [основному отчёту](/openapi/analytics#tag/Poiskovye-zaprosy-po-vashim-tovaram/paths/~1api~1v2~1search-report~1report/post) с пагинацией по группам. Пагинация возможна только при наличии фильтра по бренду, предмету или ярлыку.<br><br> Дополнительный параметр выбора списка товаров в таблице: - `positionCluster` — средняя позиция в поиске Параметры `includeSubstitutedSKUs` и `includeSearchTexts` не могут одновременно иметь значение `false`. <div class=\"description_limit\"> <a href=\"/openapi/api-information#tag/Vvedenie/Limity-zaprosov\">Лимит запросов</a> на один аккаунт продавца: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 минута | 3 запроса | 20 секунд | 3 запроса | </div>
2452
+
2453
+ :param table_group_request: (required)
2454
+ :type table_group_request: TableGroupRequest
2455
+ :param _request_timeout: timeout setting for this request. If one
2456
+ number provided, it will be total request
2457
+ timeout. It can also be a pair (tuple) of
2458
+ (connection, read) timeouts.
2459
+ :type _request_timeout: int, tuple(int, int), optional
2460
+ :param _request_auth: set to override the auth_settings for an a single
2461
+ request; this effectively ignores the
2462
+ authentication in the spec for a single request.
2463
+ :type _request_auth: dict, optional
2464
+ :param _content_type: force content-type for the request.
2465
+ :type _content_type: str, Optional
2466
+ :param _headers: set to override the headers for a single
2467
+ request; this effectively ignores the headers
2468
+ in the spec for a single request.
2469
+ :type _headers: dict, optional
2470
+ :param _host_index: set to override the host_index for a single
2471
+ request; this effectively ignores the host_index
2472
+ in the spec for a single request.
2473
+ :type _host_index: int, optional
2474
+ :return: Returns the result object.
2475
+ """ # noqa: E501
2476
+
2477
+ _param = self._api_v2_search_report_table_groups_post_serialize(
2478
+ table_group_request=table_group_request,
2479
+ _request_auth=_request_auth,
2480
+ _content_type=_content_type,
2481
+ _headers=_headers,
2482
+ _host_index=_host_index
2483
+ )
2484
+
2485
+ _response_types_map: Dict[str, Optional[str]] = {
2486
+ '200': "ApiV2SearchReportTableGroupsPost200Response",
2487
+ '400': "ErrorObject400",
2488
+ '401': "PostSalesFunnelProducts401Response",
2489
+ '403': "ErrorObject403",
2490
+ '429': "PostSalesFunnelProducts401Response",
2491
+ }
2492
+ response_data = self.api_client.call_api(
2493
+ *_param,
2494
+ _request_timeout=_request_timeout
2495
+ )
2496
+ response_data.read()
2497
+ return self.api_client.response_deserialize(
2498
+ response_data=response_data,
2499
+ response_types_map=_response_types_map,
2500
+ )
2501
+
2502
+
2503
+ @validate_call
2504
+ def api_v2_search_report_table_groups_post_without_preload_content(
2505
+ self,
2506
+ table_group_request: TableGroupRequest,
2507
+ _request_timeout: Union[
2508
+ None,
2509
+ Annotated[StrictFloat, Field(gt=0)],
2510
+ Tuple[
2511
+ Annotated[StrictFloat, Field(gt=0)],
2512
+ Annotated[StrictFloat, Field(gt=0)]
2513
+ ]
2514
+ ] = None,
2515
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
2516
+ _content_type: Optional[StrictStr] = None,
2517
+ _headers: Optional[Dict[StrictStr, Any]] = None,
2518
+ _host_index: Annotated[StrictInt, Field(ge=0, le=1)] = 0,
2519
+ ) -> RESTResponseType:
2520
+ """Пагинация по группам
2521
+
2522
+ Метод формирует дополнительные данные к [основному отчёту](/openapi/analytics#tag/Poiskovye-zaprosy-po-vashim-tovaram/paths/~1api~1v2~1search-report~1report/post) с пагинацией по группам. Пагинация возможна только при наличии фильтра по бренду, предмету или ярлыку.<br><br> Дополнительный параметр выбора списка товаров в таблице: - `positionCluster` — средняя позиция в поиске Параметры `includeSubstitutedSKUs` и `includeSearchTexts` не могут одновременно иметь значение `false`. <div class=\"description_limit\"> <a href=\"/openapi/api-information#tag/Vvedenie/Limity-zaprosov\">Лимит запросов</a> на один аккаунт продавца: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 минута | 3 запроса | 20 секунд | 3 запроса | </div>
2523
+
2524
+ :param table_group_request: (required)
2525
+ :type table_group_request: TableGroupRequest
2526
+ :param _request_timeout: timeout setting for this request. If one
2527
+ number provided, it will be total request
2528
+ timeout. It can also be a pair (tuple) of
2529
+ (connection, read) timeouts.
2530
+ :type _request_timeout: int, tuple(int, int), optional
2531
+ :param _request_auth: set to override the auth_settings for an a single
2532
+ request; this effectively ignores the
2533
+ authentication in the spec for a single request.
2534
+ :type _request_auth: dict, optional
2535
+ :param _content_type: force content-type for the request.
2536
+ :type _content_type: str, Optional
2537
+ :param _headers: set to override the headers for a single
2538
+ request; this effectively ignores the headers
2539
+ in the spec for a single request.
2540
+ :type _headers: dict, optional
2541
+ :param _host_index: set to override the host_index for a single
2542
+ request; this effectively ignores the host_index
2543
+ in the spec for a single request.
2544
+ :type _host_index: int, optional
2545
+ :return: Returns the result object.
2546
+ """ # noqa: E501
2547
+
2548
+ _param = self._api_v2_search_report_table_groups_post_serialize(
2549
+ table_group_request=table_group_request,
2550
+ _request_auth=_request_auth,
2551
+ _content_type=_content_type,
2552
+ _headers=_headers,
2553
+ _host_index=_host_index
2554
+ )
2555
+
2556
+ _response_types_map: Dict[str, Optional[str]] = {
2557
+ '200': "ApiV2SearchReportTableGroupsPost200Response",
2558
+ '400': "ErrorObject400",
2559
+ '401': "PostSalesFunnelProducts401Response",
2560
+ '403': "ErrorObject403",
2561
+ '429': "PostSalesFunnelProducts401Response",
2562
+ }
2563
+ response_data = self.api_client.call_api(
2564
+ *_param,
2565
+ _request_timeout=_request_timeout
2566
+ )
2567
+ return response_data.response
2568
+
2569
+
2570
+ def _api_v2_search_report_table_groups_post_serialize(
2571
+ self,
2572
+ table_group_request,
2573
+ _request_auth,
2574
+ _content_type,
2575
+ _headers,
2576
+ _host_index,
2577
+ ) -> RequestSerialized:
2578
+
2579
+ _hosts = [
2580
+ 'https://seller-analytics-api.wildberries.ru'
2581
+ ]
2582
+ _host = _hosts[_host_index]
2583
+
2584
+ _collection_formats: Dict[str, str] = {
2585
+ }
2586
+
2587
+ _path_params: Dict[str, str] = {}
2588
+ _query_params: List[Tuple[str, str]] = []
2589
+ _header_params: Dict[str, Optional[str]] = _headers or {}
2590
+ _form_params: List[Tuple[str, str]] = []
2591
+ _files: Dict[
2592
+ str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
2593
+ ] = {}
2594
+ _body_params: Optional[bytes] = None
2595
+
2596
+ # process the path parameters
2597
+ # process the query parameters
2598
+ # process the header parameters
2599
+ # process the form parameters
2600
+ # process the body parameter
2601
+ if table_group_request is not None:
2602
+ _body_params = table_group_request
2603
+
2604
+
2605
+ # set the HTTP header `Accept`
2606
+ if 'Accept' not in _header_params:
2607
+ _header_params['Accept'] = self.api_client.select_header_accept(
2608
+ [
2609
+ 'application/json'
2610
+ ]
2611
+ )
2612
+
2613
+ # set the HTTP header `Content-Type`
2614
+ if _content_type:
2615
+ _header_params['Content-Type'] = _content_type
2616
+ else:
2617
+ _default_content_type = (
2618
+ self.api_client.select_header_content_type(
2619
+ [
2620
+ 'application/json'
2621
+ ]
2622
+ )
2623
+ )
2624
+ if _default_content_type is not None:
2625
+ _header_params['Content-Type'] = _default_content_type
2626
+
2627
+ # authentication setting
2628
+ _auth_settings: List[str] = [
2629
+ 'HeaderApiKey'
2630
+ ]
2631
+
2632
+ return self.api_client.param_serialize(
2633
+ method='POST',
2634
+ resource_path='/api/v2/search-report/table/groups',
2635
+ path_params=_path_params,
2636
+ query_params=_query_params,
2637
+ header_params=_header_params,
2638
+ body=_body_params,
2639
+ post_params=_form_params,
2640
+ files=_files,
2641
+ auth_settings=_auth_settings,
2642
+ collection_formats=_collection_formats,
2643
+ _host=_host,
2644
+ _request_auth=_request_auth
2645
+ )
2646
+
2647
+
2648
+
2649
+
2650
+ @validate_call
2651
+ def api_v2_stocks_report_offices_post(
2652
+ self,
2653
+ body: CommonShippingOfficeFilters,
2654
+ _request_timeout: Union[
2655
+ None,
2656
+ Annotated[StrictFloat, Field(gt=0)],
2657
+ Tuple[
2658
+ Annotated[StrictFloat, Field(gt=0)],
2659
+ Annotated[StrictFloat, Field(gt=0)]
2660
+ ]
2661
+ ] = None,
2662
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
2663
+ _content_type: Optional[StrictStr] = None,
2664
+ _headers: Optional[Dict[StrictStr, Any]] = None,
2665
+ _host_index: Annotated[StrictInt, Field(ge=0, le=1)] = 0,
2666
+ ) -> ApiV2StocksReportOfficesPost200Response:
2667
+ """Данные по складам
2668
+
2669
+ Метод формирует набор данных об остатках по складам. <br><br> Данные по складам продавца приходят в агрегированном виде — по всем сразу, без детализации по конкретным складам — эти записи будут с `\"regionName\":\"Маркетплейс\"` и `\"offices\":[]`. <div class=\"description_limit\"> <a href=\"/openapi/api-information#tag/Vvedenie/Limity-zaprosov\">Лимит запросов</a> на один аккаунт продавца: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 минута | 3 запроса | 20 секунд | 3 запроса | </div>
2670
+
2671
+ :param body: (required)
2672
+ :type body: CommonShippingOfficeFilters
2673
+ :param _request_timeout: timeout setting for this request. If one
2674
+ number provided, it will be total request
2675
+ timeout. It can also be a pair (tuple) of
2676
+ (connection, read) timeouts.
2677
+ :type _request_timeout: int, tuple(int, int), optional
2678
+ :param _request_auth: set to override the auth_settings for an a single
2679
+ request; this effectively ignores the
2680
+ authentication in the spec for a single request.
2681
+ :type _request_auth: dict, optional
2682
+ :param _content_type: force content-type for the request.
2683
+ :type _content_type: str, Optional
2684
+ :param _headers: set to override the headers for a single
2685
+ request; this effectively ignores the headers
2686
+ in the spec for a single request.
2687
+ :type _headers: dict, optional
2688
+ :param _host_index: set to override the host_index for a single
2689
+ request; this effectively ignores the host_index
2690
+ in the spec for a single request.
2691
+ :type _host_index: int, optional
2692
+ :return: Returns the result object.
2693
+ """ # noqa: E501
2694
+
2695
+ _param = self._api_v2_stocks_report_offices_post_serialize(
2696
+ body=body,
2697
+ _request_auth=_request_auth,
2698
+ _content_type=_content_type,
2699
+ _headers=_headers,
2700
+ _host_index=_host_index
2701
+ )
2702
+
2703
+ _response_types_map: Dict[str, Optional[str]] = {
2704
+ '200': "ApiV2StocksReportOfficesPost200Response",
2705
+ '400': "ErrorObject400",
2706
+ '401': "PostSalesFunnelProducts401Response",
2707
+ '403': "ErrorObject403",
2708
+ '429': "PostSalesFunnelProducts401Response",
2709
+ }
2710
+ response_data = self.api_client.call_api(
2711
+ *_param,
2712
+ _request_timeout=_request_timeout
2713
+ )
2714
+ response_data.read()
2715
+ return self.api_client.response_deserialize(
2716
+ response_data=response_data,
2717
+ response_types_map=_response_types_map,
2718
+ ).data
2719
+
2720
+
2721
+ @validate_call
2722
+ def api_v2_stocks_report_offices_post_with_http_info(
2723
+ self,
2724
+ body: CommonShippingOfficeFilters,
2725
+ _request_timeout: Union[
2726
+ None,
2727
+ Annotated[StrictFloat, Field(gt=0)],
2728
+ Tuple[
2729
+ Annotated[StrictFloat, Field(gt=0)],
2730
+ Annotated[StrictFloat, Field(gt=0)]
2731
+ ]
2732
+ ] = None,
2733
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
2734
+ _content_type: Optional[StrictStr] = None,
2735
+ _headers: Optional[Dict[StrictStr, Any]] = None,
2736
+ _host_index: Annotated[StrictInt, Field(ge=0, le=1)] = 0,
2737
+ ) -> ApiResponse[ApiV2StocksReportOfficesPost200Response]:
2738
+ """Данные по складам
2739
+
2740
+ Метод формирует набор данных об остатках по складам. <br><br> Данные по складам продавца приходят в агрегированном виде — по всем сразу, без детализации по конкретным складам — эти записи будут с `\"regionName\":\"Маркетплейс\"` и `\"offices\":[]`. <div class=\"description_limit\"> <a href=\"/openapi/api-information#tag/Vvedenie/Limity-zaprosov\">Лимит запросов</a> на один аккаунт продавца: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 минута | 3 запроса | 20 секунд | 3 запроса | </div>
2741
+
2742
+ :param body: (required)
2743
+ :type body: CommonShippingOfficeFilters
2744
+ :param _request_timeout: timeout setting for this request. If one
2745
+ number provided, it will be total request
2746
+ timeout. It can also be a pair (tuple) of
2747
+ (connection, read) timeouts.
2748
+ :type _request_timeout: int, tuple(int, int), optional
2749
+ :param _request_auth: set to override the auth_settings for an a single
2750
+ request; this effectively ignores the
2751
+ authentication in the spec for a single request.
2752
+ :type _request_auth: dict, optional
2753
+ :param _content_type: force content-type for the request.
2754
+ :type _content_type: str, Optional
2755
+ :param _headers: set to override the headers for a single
2756
+ request; this effectively ignores the headers
2757
+ in the spec for a single request.
2758
+ :type _headers: dict, optional
2759
+ :param _host_index: set to override the host_index for a single
2760
+ request; this effectively ignores the host_index
2761
+ in the spec for a single request.
2762
+ :type _host_index: int, optional
2763
+ :return: Returns the result object.
2764
+ """ # noqa: E501
2765
+
2766
+ _param = self._api_v2_stocks_report_offices_post_serialize(
2767
+ body=body,
2768
+ _request_auth=_request_auth,
2769
+ _content_type=_content_type,
2770
+ _headers=_headers,
2771
+ _host_index=_host_index
2772
+ )
2773
+
2774
+ _response_types_map: Dict[str, Optional[str]] = {
2775
+ '200': "ApiV2StocksReportOfficesPost200Response",
2776
+ '400': "ErrorObject400",
2777
+ '401': "PostSalesFunnelProducts401Response",
2778
+ '403': "ErrorObject403",
2779
+ '429': "PostSalesFunnelProducts401Response",
2780
+ }
2781
+ response_data = self.api_client.call_api(
2782
+ *_param,
2783
+ _request_timeout=_request_timeout
2784
+ )
2785
+ response_data.read()
2786
+ return self.api_client.response_deserialize(
2787
+ response_data=response_data,
2788
+ response_types_map=_response_types_map,
2789
+ )
2790
+
2791
+
2792
+ @validate_call
2793
+ def api_v2_stocks_report_offices_post_without_preload_content(
2794
+ self,
2795
+ body: CommonShippingOfficeFilters,
2796
+ _request_timeout: Union[
2797
+ None,
2798
+ Annotated[StrictFloat, Field(gt=0)],
2799
+ Tuple[
2800
+ Annotated[StrictFloat, Field(gt=0)],
2801
+ Annotated[StrictFloat, Field(gt=0)]
2802
+ ]
2803
+ ] = None,
2804
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
2805
+ _content_type: Optional[StrictStr] = None,
2806
+ _headers: Optional[Dict[StrictStr, Any]] = None,
2807
+ _host_index: Annotated[StrictInt, Field(ge=0, le=1)] = 0,
2808
+ ) -> RESTResponseType:
2809
+ """Данные по складам
2810
+
2811
+ Метод формирует набор данных об остатках по складам. <br><br> Данные по складам продавца приходят в агрегированном виде — по всем сразу, без детализации по конкретным складам — эти записи будут с `\"regionName\":\"Маркетплейс\"` и `\"offices\":[]`. <div class=\"description_limit\"> <a href=\"/openapi/api-information#tag/Vvedenie/Limity-zaprosov\">Лимит запросов</a> на один аккаунт продавца: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 минута | 3 запроса | 20 секунд | 3 запроса | </div>
2812
+
2813
+ :param body: (required)
2814
+ :type body: CommonShippingOfficeFilters
2815
+ :param _request_timeout: timeout setting for this request. If one
2816
+ number provided, it will be total request
2817
+ timeout. It can also be a pair (tuple) of
2818
+ (connection, read) timeouts.
2819
+ :type _request_timeout: int, tuple(int, int), optional
2820
+ :param _request_auth: set to override the auth_settings for an a single
2821
+ request; this effectively ignores the
2822
+ authentication in the spec for a single request.
2823
+ :type _request_auth: dict, optional
2824
+ :param _content_type: force content-type for the request.
2825
+ :type _content_type: str, Optional
2826
+ :param _headers: set to override the headers for a single
2827
+ request; this effectively ignores the headers
2828
+ in the spec for a single request.
2829
+ :type _headers: dict, optional
2830
+ :param _host_index: set to override the host_index for a single
2831
+ request; this effectively ignores the host_index
2832
+ in the spec for a single request.
2833
+ :type _host_index: int, optional
2834
+ :return: Returns the result object.
2835
+ """ # noqa: E501
2836
+
2837
+ _param = self._api_v2_stocks_report_offices_post_serialize(
2838
+ body=body,
2839
+ _request_auth=_request_auth,
2840
+ _content_type=_content_type,
2841
+ _headers=_headers,
2842
+ _host_index=_host_index
2843
+ )
2844
+
2845
+ _response_types_map: Dict[str, Optional[str]] = {
2846
+ '200': "ApiV2StocksReportOfficesPost200Response",
2847
+ '400': "ErrorObject400",
2848
+ '401': "PostSalesFunnelProducts401Response",
2849
+ '403': "ErrorObject403",
2850
+ '429': "PostSalesFunnelProducts401Response",
2851
+ }
2852
+ response_data = self.api_client.call_api(
2853
+ *_param,
2854
+ _request_timeout=_request_timeout
2855
+ )
2856
+ return response_data.response
2857
+
2858
+
2859
+ def _api_v2_stocks_report_offices_post_serialize(
2860
+ self,
2861
+ body,
2862
+ _request_auth,
2863
+ _content_type,
2864
+ _headers,
2865
+ _host_index,
2866
+ ) -> RequestSerialized:
2867
+
2868
+ _hosts = [
2869
+ 'https://seller-analytics-api.wildberries.ru'
2870
+ ]
2871
+ _host = _hosts[_host_index]
2872
+
2873
+ _collection_formats: Dict[str, str] = {
2874
+ }
2875
+
2876
+ _path_params: Dict[str, str] = {}
2877
+ _query_params: List[Tuple[str, str]] = []
2878
+ _header_params: Dict[str, Optional[str]] = _headers or {}
2879
+ _form_params: List[Tuple[str, str]] = []
2880
+ _files: Dict[
2881
+ str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
2882
+ ] = {}
2883
+ _body_params: Optional[bytes] = None
2884
+
2885
+ # process the path parameters
2886
+ # process the query parameters
2887
+ # process the header parameters
2888
+ # process the form parameters
2889
+ # process the body parameter
2890
+ if body is not None:
2891
+ _body_params = body
2892
+
2893
+
2894
+ # set the HTTP header `Accept`
2895
+ if 'Accept' not in _header_params:
2896
+ _header_params['Accept'] = self.api_client.select_header_accept(
2897
+ [
2898
+ 'application/json'
2899
+ ]
2900
+ )
2901
+
2902
+ # set the HTTP header `Content-Type`
2903
+ if _content_type:
2904
+ _header_params['Content-Type'] = _content_type
2905
+ else:
2906
+ _default_content_type = (
2907
+ self.api_client.select_header_content_type(
2908
+ [
2909
+ 'application/json'
2910
+ ]
2911
+ )
2912
+ )
2913
+ if _default_content_type is not None:
2914
+ _header_params['Content-Type'] = _default_content_type
2915
+
2916
+ # authentication setting
2917
+ _auth_settings: List[str] = [
2918
+ 'HeaderApiKey'
2919
+ ]
2920
+
2921
+ return self.api_client.param_serialize(
2922
+ method='POST',
2923
+ resource_path='/api/v2/stocks-report/offices',
2924
+ path_params=_path_params,
2925
+ query_params=_query_params,
2926
+ header_params=_header_params,
2927
+ body=_body_params,
2928
+ post_params=_form_params,
2929
+ files=_files,
2930
+ auth_settings=_auth_settings,
2931
+ collection_formats=_collection_formats,
2932
+ _host=_host,
2933
+ _request_auth=_request_auth
2934
+ )
2935
+
2936
+
2937
+
2938
+
2939
+ @validate_call
2940
+ def api_v2_stocks_report_products_groups_post(
2941
+ self,
2942
+ table_group_request_st: TableGroupRequestSt,
2943
+ _request_timeout: Union[
2944
+ None,
2945
+ Annotated[StrictFloat, Field(gt=0)],
2946
+ Tuple[
2947
+ Annotated[StrictFloat, Field(gt=0)],
2948
+ Annotated[StrictFloat, Field(gt=0)]
2949
+ ]
2950
+ ] = None,
2951
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
2952
+ _content_type: Optional[StrictStr] = None,
2953
+ _headers: Optional[Dict[StrictStr, Any]] = None,
2954
+ _host_index: Annotated[StrictInt, Field(ge=0, le=1)] = 0,
2955
+ ) -> ApiV2StocksReportProductsGroupsPost200Response:
2956
+ """Данные по группам
2957
+
2958
+ Метод формирует набор данных об остатках по группам товаров. <br><br> Группа товаров описывается кортежем `subjectID, brandName, tagID`. <div class=\"description_limit\"> <a href=\"/openapi/api-information#tag/Vvedenie/Limity-zaprosov\">Лимит запросов</a> на один аккаунт продавца: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 минута | 3 запроса | 20 секунд | 3 запроса | </div>
2959
+
2960
+ :param table_group_request_st: (required)
2961
+ :type table_group_request_st: TableGroupRequestSt
2962
+ :param _request_timeout: timeout setting for this request. If one
2963
+ number provided, it will be total request
2964
+ timeout. It can also be a pair (tuple) of
2965
+ (connection, read) timeouts.
2966
+ :type _request_timeout: int, tuple(int, int), optional
2967
+ :param _request_auth: set to override the auth_settings for an a single
2968
+ request; this effectively ignores the
2969
+ authentication in the spec for a single request.
2970
+ :type _request_auth: dict, optional
2971
+ :param _content_type: force content-type for the request.
2972
+ :type _content_type: str, Optional
2973
+ :param _headers: set to override the headers for a single
2974
+ request; this effectively ignores the headers
2975
+ in the spec for a single request.
2976
+ :type _headers: dict, optional
2977
+ :param _host_index: set to override the host_index for a single
2978
+ request; this effectively ignores the host_index
2979
+ in the spec for a single request.
2980
+ :type _host_index: int, optional
2981
+ :return: Returns the result object.
2982
+ """ # noqa: E501
2983
+
2984
+ _param = self._api_v2_stocks_report_products_groups_post_serialize(
2985
+ table_group_request_st=table_group_request_st,
2986
+ _request_auth=_request_auth,
2987
+ _content_type=_content_type,
2988
+ _headers=_headers,
2989
+ _host_index=_host_index
2990
+ )
2991
+
2992
+ _response_types_map: Dict[str, Optional[str]] = {
2993
+ '200': "ApiV2StocksReportProductsGroupsPost200Response",
2994
+ '400': "ErrorObject400",
2995
+ '401': "PostSalesFunnelProducts401Response",
2996
+ '403': "ErrorObject403",
2997
+ '429': "PostSalesFunnelProducts401Response",
2998
+ }
2999
+ response_data = self.api_client.call_api(
3000
+ *_param,
3001
+ _request_timeout=_request_timeout
3002
+ )
3003
+ response_data.read()
3004
+ return self.api_client.response_deserialize(
3005
+ response_data=response_data,
3006
+ response_types_map=_response_types_map,
3007
+ ).data
3008
+
3009
+
3010
+ @validate_call
3011
+ def api_v2_stocks_report_products_groups_post_with_http_info(
3012
+ self,
3013
+ table_group_request_st: TableGroupRequestSt,
3014
+ _request_timeout: Union[
3015
+ None,
3016
+ Annotated[StrictFloat, Field(gt=0)],
3017
+ Tuple[
3018
+ Annotated[StrictFloat, Field(gt=0)],
3019
+ Annotated[StrictFloat, Field(gt=0)]
3020
+ ]
3021
+ ] = None,
3022
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
3023
+ _content_type: Optional[StrictStr] = None,
3024
+ _headers: Optional[Dict[StrictStr, Any]] = None,
3025
+ _host_index: Annotated[StrictInt, Field(ge=0, le=1)] = 0,
3026
+ ) -> ApiResponse[ApiV2StocksReportProductsGroupsPost200Response]:
3027
+ """Данные по группам
3028
+
3029
+ Метод формирует набор данных об остатках по группам товаров. <br><br> Группа товаров описывается кортежем `subjectID, brandName, tagID`. <div class=\"description_limit\"> <a href=\"/openapi/api-information#tag/Vvedenie/Limity-zaprosov\">Лимит запросов</a> на один аккаунт продавца: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 минута | 3 запроса | 20 секунд | 3 запроса | </div>
3030
+
3031
+ :param table_group_request_st: (required)
3032
+ :type table_group_request_st: TableGroupRequestSt
3033
+ :param _request_timeout: timeout setting for this request. If one
3034
+ number provided, it will be total request
3035
+ timeout. It can also be a pair (tuple) of
3036
+ (connection, read) timeouts.
3037
+ :type _request_timeout: int, tuple(int, int), optional
3038
+ :param _request_auth: set to override the auth_settings for an a single
3039
+ request; this effectively ignores the
3040
+ authentication in the spec for a single request.
3041
+ :type _request_auth: dict, optional
3042
+ :param _content_type: force content-type for the request.
3043
+ :type _content_type: str, Optional
3044
+ :param _headers: set to override the headers for a single
3045
+ request; this effectively ignores the headers
3046
+ in the spec for a single request.
3047
+ :type _headers: dict, optional
3048
+ :param _host_index: set to override the host_index for a single
3049
+ request; this effectively ignores the host_index
3050
+ in the spec for a single request.
3051
+ :type _host_index: int, optional
3052
+ :return: Returns the result object.
3053
+ """ # noqa: E501
3054
+
3055
+ _param = self._api_v2_stocks_report_products_groups_post_serialize(
3056
+ table_group_request_st=table_group_request_st,
3057
+ _request_auth=_request_auth,
3058
+ _content_type=_content_type,
3059
+ _headers=_headers,
3060
+ _host_index=_host_index
3061
+ )
3062
+
3063
+ _response_types_map: Dict[str, Optional[str]] = {
3064
+ '200': "ApiV2StocksReportProductsGroupsPost200Response",
3065
+ '400': "ErrorObject400",
3066
+ '401': "PostSalesFunnelProducts401Response",
3067
+ '403': "ErrorObject403",
3068
+ '429': "PostSalesFunnelProducts401Response",
3069
+ }
3070
+ response_data = self.api_client.call_api(
3071
+ *_param,
3072
+ _request_timeout=_request_timeout
3073
+ )
3074
+ response_data.read()
3075
+ return self.api_client.response_deserialize(
3076
+ response_data=response_data,
3077
+ response_types_map=_response_types_map,
3078
+ )
3079
+
3080
+
3081
+ @validate_call
3082
+ def api_v2_stocks_report_products_groups_post_without_preload_content(
3083
+ self,
3084
+ table_group_request_st: TableGroupRequestSt,
3085
+ _request_timeout: Union[
3086
+ None,
3087
+ Annotated[StrictFloat, Field(gt=0)],
3088
+ Tuple[
3089
+ Annotated[StrictFloat, Field(gt=0)],
3090
+ Annotated[StrictFloat, Field(gt=0)]
3091
+ ]
3092
+ ] = None,
3093
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
3094
+ _content_type: Optional[StrictStr] = None,
3095
+ _headers: Optional[Dict[StrictStr, Any]] = None,
3096
+ _host_index: Annotated[StrictInt, Field(ge=0, le=1)] = 0,
3097
+ ) -> RESTResponseType:
3098
+ """Данные по группам
3099
+
3100
+ Метод формирует набор данных об остатках по группам товаров. <br><br> Группа товаров описывается кортежем `subjectID, brandName, tagID`. <div class=\"description_limit\"> <a href=\"/openapi/api-information#tag/Vvedenie/Limity-zaprosov\">Лимит запросов</a> на один аккаунт продавца: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 минута | 3 запроса | 20 секунд | 3 запроса | </div>
3101
+
3102
+ :param table_group_request_st: (required)
3103
+ :type table_group_request_st: TableGroupRequestSt
3104
+ :param _request_timeout: timeout setting for this request. If one
3105
+ number provided, it will be total request
3106
+ timeout. It can also be a pair (tuple) of
3107
+ (connection, read) timeouts.
3108
+ :type _request_timeout: int, tuple(int, int), optional
3109
+ :param _request_auth: set to override the auth_settings for an a single
3110
+ request; this effectively ignores the
3111
+ authentication in the spec for a single request.
3112
+ :type _request_auth: dict, optional
3113
+ :param _content_type: force content-type for the request.
3114
+ :type _content_type: str, Optional
3115
+ :param _headers: set to override the headers for a single
3116
+ request; this effectively ignores the headers
3117
+ in the spec for a single request.
3118
+ :type _headers: dict, optional
3119
+ :param _host_index: set to override the host_index for a single
3120
+ request; this effectively ignores the host_index
3121
+ in the spec for a single request.
3122
+ :type _host_index: int, optional
3123
+ :return: Returns the result object.
3124
+ """ # noqa: E501
3125
+
3126
+ _param = self._api_v2_stocks_report_products_groups_post_serialize(
3127
+ table_group_request_st=table_group_request_st,
3128
+ _request_auth=_request_auth,
3129
+ _content_type=_content_type,
3130
+ _headers=_headers,
3131
+ _host_index=_host_index
3132
+ )
3133
+
3134
+ _response_types_map: Dict[str, Optional[str]] = {
3135
+ '200': "ApiV2StocksReportProductsGroupsPost200Response",
3136
+ '400': "ErrorObject400",
3137
+ '401': "PostSalesFunnelProducts401Response",
3138
+ '403': "ErrorObject403",
3139
+ '429': "PostSalesFunnelProducts401Response",
3140
+ }
3141
+ response_data = self.api_client.call_api(
3142
+ *_param,
3143
+ _request_timeout=_request_timeout
3144
+ )
3145
+ return response_data.response
3146
+
3147
+
3148
+ def _api_v2_stocks_report_products_groups_post_serialize(
3149
+ self,
3150
+ table_group_request_st,
3151
+ _request_auth,
3152
+ _content_type,
3153
+ _headers,
3154
+ _host_index,
3155
+ ) -> RequestSerialized:
3156
+
3157
+ _hosts = [
3158
+ 'https://seller-analytics-api.wildberries.ru'
3159
+ ]
3160
+ _host = _hosts[_host_index]
3161
+
3162
+ _collection_formats: Dict[str, str] = {
3163
+ }
3164
+
3165
+ _path_params: Dict[str, str] = {}
3166
+ _query_params: List[Tuple[str, str]] = []
3167
+ _header_params: Dict[str, Optional[str]] = _headers or {}
3168
+ _form_params: List[Tuple[str, str]] = []
3169
+ _files: Dict[
3170
+ str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
3171
+ ] = {}
3172
+ _body_params: Optional[bytes] = None
3173
+
3174
+ # process the path parameters
3175
+ # process the query parameters
3176
+ # process the header parameters
3177
+ # process the form parameters
3178
+ # process the body parameter
3179
+ if table_group_request_st is not None:
3180
+ _body_params = table_group_request_st
3181
+
3182
+
3183
+ # set the HTTP header `Accept`
3184
+ if 'Accept' not in _header_params:
3185
+ _header_params['Accept'] = self.api_client.select_header_accept(
3186
+ [
3187
+ 'application/json'
3188
+ ]
3189
+ )
3190
+
3191
+ # set the HTTP header `Content-Type`
3192
+ if _content_type:
3193
+ _header_params['Content-Type'] = _content_type
3194
+ else:
3195
+ _default_content_type = (
3196
+ self.api_client.select_header_content_type(
3197
+ [
3198
+ 'application/json'
3199
+ ]
3200
+ )
3201
+ )
3202
+ if _default_content_type is not None:
3203
+ _header_params['Content-Type'] = _default_content_type
3204
+
3205
+ # authentication setting
3206
+ _auth_settings: List[str] = [
3207
+ 'HeaderApiKey'
3208
+ ]
3209
+
3210
+ return self.api_client.param_serialize(
3211
+ method='POST',
3212
+ resource_path='/api/v2/stocks-report/products/groups',
3213
+ path_params=_path_params,
3214
+ query_params=_query_params,
3215
+ header_params=_header_params,
3216
+ body=_body_params,
3217
+ post_params=_form_params,
3218
+ files=_files,
3219
+ auth_settings=_auth_settings,
3220
+ collection_formats=_collection_formats,
3221
+ _host=_host,
3222
+ _request_auth=_request_auth
3223
+ )
3224
+
3225
+
3226
+
3227
+
3228
+ @validate_call
3229
+ def api_v2_stocks_report_products_products_post(
3230
+ self,
3231
+ table_product_request: TableProductRequest,
3232
+ _request_timeout: Union[
3233
+ None,
3234
+ Annotated[StrictFloat, Field(gt=0)],
3235
+ Tuple[
3236
+ Annotated[StrictFloat, Field(gt=0)],
3237
+ Annotated[StrictFloat, Field(gt=0)]
3238
+ ]
3239
+ ] = None,
3240
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
3241
+ _content_type: Optional[StrictStr] = None,
3242
+ _headers: Optional[Dict[StrictStr, Any]] = None,
3243
+ _host_index: Annotated[StrictInt, Field(ge=0, le=1)] = 0,
3244
+ ) -> ApiV2StocksReportProductsProductsPost200Response:
3245
+ """Данные по товарам
3246
+
3247
+ Метод формирует набор данных об остатках по товарам. <br><br> Можно получить данные как по отдельным товарам, так и в рамках всего отчёта — если в запросе отсутствуют фильтры: `nmIDs`, `subjectID`, `brandName`, `tagID`. <div class=\"description_limit\"> <a href=\"/openapi/api-information#tag/Vvedenie/Limity-zaprosov\">Лимит запросов</a> на один аккаунт продавца: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 минута | 3 запроса | 20 секунд | 3 запроса | </div>
3248
+
3249
+ :param table_product_request: (required)
3250
+ :type table_product_request: TableProductRequest
3251
+ :param _request_timeout: timeout setting for this request. If one
3252
+ number provided, it will be total request
3253
+ timeout. It can also be a pair (tuple) of
3254
+ (connection, read) timeouts.
3255
+ :type _request_timeout: int, tuple(int, int), optional
3256
+ :param _request_auth: set to override the auth_settings for an a single
3257
+ request; this effectively ignores the
3258
+ authentication in the spec for a single request.
3259
+ :type _request_auth: dict, optional
3260
+ :param _content_type: force content-type for the request.
3261
+ :type _content_type: str, Optional
3262
+ :param _headers: set to override the headers for a single
3263
+ request; this effectively ignores the headers
3264
+ in the spec for a single request.
3265
+ :type _headers: dict, optional
3266
+ :param _host_index: set to override the host_index for a single
3267
+ request; this effectively ignores the host_index
3268
+ in the spec for a single request.
3269
+ :type _host_index: int, optional
3270
+ :return: Returns the result object.
3271
+ """ # noqa: E501
3272
+
3273
+ _param = self._api_v2_stocks_report_products_products_post_serialize(
3274
+ table_product_request=table_product_request,
3275
+ _request_auth=_request_auth,
3276
+ _content_type=_content_type,
3277
+ _headers=_headers,
3278
+ _host_index=_host_index
3279
+ )
3280
+
3281
+ _response_types_map: Dict[str, Optional[str]] = {
3282
+ '200': "ApiV2StocksReportProductsProductsPost200Response",
3283
+ '400': "ErrorObject400",
3284
+ '401': "PostSalesFunnelProducts401Response",
3285
+ '403': "ErrorObject403",
3286
+ '429': "PostSalesFunnelProducts401Response",
3287
+ }
3288
+ response_data = self.api_client.call_api(
3289
+ *_param,
3290
+ _request_timeout=_request_timeout
3291
+ )
3292
+ response_data.read()
3293
+ return self.api_client.response_deserialize(
3294
+ response_data=response_data,
3295
+ response_types_map=_response_types_map,
3296
+ ).data
3297
+
3298
+
3299
+ @validate_call
3300
+ def api_v2_stocks_report_products_products_post_with_http_info(
3301
+ self,
3302
+ table_product_request: TableProductRequest,
3303
+ _request_timeout: Union[
3304
+ None,
3305
+ Annotated[StrictFloat, Field(gt=0)],
3306
+ Tuple[
3307
+ Annotated[StrictFloat, Field(gt=0)],
3308
+ Annotated[StrictFloat, Field(gt=0)]
3309
+ ]
3310
+ ] = None,
3311
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
3312
+ _content_type: Optional[StrictStr] = None,
3313
+ _headers: Optional[Dict[StrictStr, Any]] = None,
3314
+ _host_index: Annotated[StrictInt, Field(ge=0, le=1)] = 0,
3315
+ ) -> ApiResponse[ApiV2StocksReportProductsProductsPost200Response]:
3316
+ """Данные по товарам
3317
+
3318
+ Метод формирует набор данных об остатках по товарам. <br><br> Можно получить данные как по отдельным товарам, так и в рамках всего отчёта — если в запросе отсутствуют фильтры: `nmIDs`, `subjectID`, `brandName`, `tagID`. <div class=\"description_limit\"> <a href=\"/openapi/api-information#tag/Vvedenie/Limity-zaprosov\">Лимит запросов</a> на один аккаунт продавца: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 минута | 3 запроса | 20 секунд | 3 запроса | </div>
3319
+
3320
+ :param table_product_request: (required)
3321
+ :type table_product_request: TableProductRequest
3322
+ :param _request_timeout: timeout setting for this request. If one
3323
+ number provided, it will be total request
3324
+ timeout. It can also be a pair (tuple) of
3325
+ (connection, read) timeouts.
3326
+ :type _request_timeout: int, tuple(int, int), optional
3327
+ :param _request_auth: set to override the auth_settings for an a single
3328
+ request; this effectively ignores the
3329
+ authentication in the spec for a single request.
3330
+ :type _request_auth: dict, optional
3331
+ :param _content_type: force content-type for the request.
3332
+ :type _content_type: str, Optional
3333
+ :param _headers: set to override the headers for a single
3334
+ request; this effectively ignores the headers
3335
+ in the spec for a single request.
3336
+ :type _headers: dict, optional
3337
+ :param _host_index: set to override the host_index for a single
3338
+ request; this effectively ignores the host_index
3339
+ in the spec for a single request.
3340
+ :type _host_index: int, optional
3341
+ :return: Returns the result object.
3342
+ """ # noqa: E501
3343
+
3344
+ _param = self._api_v2_stocks_report_products_products_post_serialize(
3345
+ table_product_request=table_product_request,
3346
+ _request_auth=_request_auth,
3347
+ _content_type=_content_type,
3348
+ _headers=_headers,
3349
+ _host_index=_host_index
3350
+ )
3351
+
3352
+ _response_types_map: Dict[str, Optional[str]] = {
3353
+ '200': "ApiV2StocksReportProductsProductsPost200Response",
3354
+ '400': "ErrorObject400",
3355
+ '401': "PostSalesFunnelProducts401Response",
3356
+ '403': "ErrorObject403",
3357
+ '429': "PostSalesFunnelProducts401Response",
3358
+ }
3359
+ response_data = self.api_client.call_api(
3360
+ *_param,
3361
+ _request_timeout=_request_timeout
3362
+ )
3363
+ response_data.read()
3364
+ return self.api_client.response_deserialize(
3365
+ response_data=response_data,
3366
+ response_types_map=_response_types_map,
3367
+ )
3368
+
3369
+
3370
+ @validate_call
3371
+ def api_v2_stocks_report_products_products_post_without_preload_content(
3372
+ self,
3373
+ table_product_request: TableProductRequest,
3374
+ _request_timeout: Union[
3375
+ None,
3376
+ Annotated[StrictFloat, Field(gt=0)],
3377
+ Tuple[
3378
+ Annotated[StrictFloat, Field(gt=0)],
3379
+ Annotated[StrictFloat, Field(gt=0)]
3380
+ ]
3381
+ ] = None,
3382
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
3383
+ _content_type: Optional[StrictStr] = None,
3384
+ _headers: Optional[Dict[StrictStr, Any]] = None,
3385
+ _host_index: Annotated[StrictInt, Field(ge=0, le=1)] = 0,
3386
+ ) -> RESTResponseType:
3387
+ """Данные по товарам
3388
+
3389
+ Метод формирует набор данных об остатках по товарам. <br><br> Можно получить данные как по отдельным товарам, так и в рамках всего отчёта — если в запросе отсутствуют фильтры: `nmIDs`, `subjectID`, `brandName`, `tagID`. <div class=\"description_limit\"> <a href=\"/openapi/api-information#tag/Vvedenie/Limity-zaprosov\">Лимит запросов</a> на один аккаунт продавца: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 минута | 3 запроса | 20 секунд | 3 запроса | </div>
3390
+
3391
+ :param table_product_request: (required)
3392
+ :type table_product_request: TableProductRequest
3393
+ :param _request_timeout: timeout setting for this request. If one
3394
+ number provided, it will be total request
3395
+ timeout. It can also be a pair (tuple) of
3396
+ (connection, read) timeouts.
3397
+ :type _request_timeout: int, tuple(int, int), optional
3398
+ :param _request_auth: set to override the auth_settings for an a single
3399
+ request; this effectively ignores the
3400
+ authentication in the spec for a single request.
3401
+ :type _request_auth: dict, optional
3402
+ :param _content_type: force content-type for the request.
3403
+ :type _content_type: str, Optional
3404
+ :param _headers: set to override the headers for a single
3405
+ request; this effectively ignores the headers
3406
+ in the spec for a single request.
3407
+ :type _headers: dict, optional
3408
+ :param _host_index: set to override the host_index for a single
3409
+ request; this effectively ignores the host_index
3410
+ in the spec for a single request.
3411
+ :type _host_index: int, optional
3412
+ :return: Returns the result object.
3413
+ """ # noqa: E501
3414
+
3415
+ _param = self._api_v2_stocks_report_products_products_post_serialize(
3416
+ table_product_request=table_product_request,
3417
+ _request_auth=_request_auth,
3418
+ _content_type=_content_type,
3419
+ _headers=_headers,
3420
+ _host_index=_host_index
3421
+ )
3422
+
3423
+ _response_types_map: Dict[str, Optional[str]] = {
3424
+ '200': "ApiV2StocksReportProductsProductsPost200Response",
3425
+ '400': "ErrorObject400",
3426
+ '401': "PostSalesFunnelProducts401Response",
3427
+ '403': "ErrorObject403",
3428
+ '429': "PostSalesFunnelProducts401Response",
3429
+ }
3430
+ response_data = self.api_client.call_api(
3431
+ *_param,
3432
+ _request_timeout=_request_timeout
3433
+ )
3434
+ return response_data.response
3435
+
3436
+
3437
+ def _api_v2_stocks_report_products_products_post_serialize(
3438
+ self,
3439
+ table_product_request,
3440
+ _request_auth,
3441
+ _content_type,
3442
+ _headers,
3443
+ _host_index,
3444
+ ) -> RequestSerialized:
3445
+
3446
+ _hosts = [
3447
+ 'https://seller-analytics-api.wildberries.ru'
3448
+ ]
3449
+ _host = _hosts[_host_index]
3450
+
3451
+ _collection_formats: Dict[str, str] = {
3452
+ }
3453
+
3454
+ _path_params: Dict[str, str] = {}
3455
+ _query_params: List[Tuple[str, str]] = []
3456
+ _header_params: Dict[str, Optional[str]] = _headers or {}
3457
+ _form_params: List[Tuple[str, str]] = []
3458
+ _files: Dict[
3459
+ str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
3460
+ ] = {}
3461
+ _body_params: Optional[bytes] = None
3462
+
3463
+ # process the path parameters
3464
+ # process the query parameters
3465
+ # process the header parameters
3466
+ # process the form parameters
3467
+ # process the body parameter
3468
+ if table_product_request is not None:
3469
+ _body_params = table_product_request
3470
+
3471
+
3472
+ # set the HTTP header `Accept`
3473
+ if 'Accept' not in _header_params:
3474
+ _header_params['Accept'] = self.api_client.select_header_accept(
3475
+ [
3476
+ 'application/json'
3477
+ ]
3478
+ )
3479
+
3480
+ # set the HTTP header `Content-Type`
3481
+ if _content_type:
3482
+ _header_params['Content-Type'] = _content_type
3483
+ else:
3484
+ _default_content_type = (
3485
+ self.api_client.select_header_content_type(
3486
+ [
3487
+ 'application/json'
3488
+ ]
3489
+ )
3490
+ )
3491
+ if _default_content_type is not None:
3492
+ _header_params['Content-Type'] = _default_content_type
3493
+
3494
+ # authentication setting
3495
+ _auth_settings: List[str] = [
3496
+ 'HeaderApiKey'
3497
+ ]
3498
+
3499
+ return self.api_client.param_serialize(
3500
+ method='POST',
3501
+ resource_path='/api/v2/stocks-report/products/products',
3502
+ path_params=_path_params,
3503
+ query_params=_query_params,
3504
+ header_params=_header_params,
3505
+ body=_body_params,
3506
+ post_params=_form_params,
3507
+ files=_files,
3508
+ auth_settings=_auth_settings,
3509
+ collection_formats=_collection_formats,
3510
+ _host=_host,
3511
+ _request_auth=_request_auth
3512
+ )
3513
+
3514
+
3515
+
3516
+
3517
+ @validate_call
3518
+ def api_v2_stocks_report_products_sizes_post(
3519
+ self,
3520
+ body: CommonSizeFilters,
3521
+ _request_timeout: Union[
3522
+ None,
3523
+ Annotated[StrictFloat, Field(gt=0)],
3524
+ Tuple[
3525
+ Annotated[StrictFloat, Field(gt=0)],
3526
+ Annotated[StrictFloat, Field(gt=0)]
3527
+ ]
3528
+ ] = None,
3529
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
3530
+ _content_type: Optional[StrictStr] = None,
3531
+ _headers: Optional[Dict[StrictStr, Any]] = None,
3532
+ _host_index: Annotated[StrictInt, Field(ge=0, le=1)] = 0,
3533
+ ) -> ApiV2StocksReportProductsSizesPost200Response:
3534
+ """Данные по размерам
3535
+
3536
+ Метод формирует набор данных об остатках по размерам товара. <br><br> Возможны случаи: 1. Товар имеет размеры и `\"includeOffice\":true`, тогда в ответе будут данные об остатках по каждому из размеров с вложенной детализацией по складам. 2. Товар имеет размеры и `\"includeOffice\":false`, тогда в ответе будут данные об остатках по каждому из размеров без вложенной детализации по складам. 3. Товар не имеет размера и `\"includeOffice\":true`, тогда в ответе будет детализация по складам. Без данных об остатках по каждому из размеров. 4. Товар не имеет размера и `\"includeOffice\":false`, тогда тело ответа будет пустым.<br></br> Товар не имеет размера, если у него единственный размер с `\"techSize\":\"0\"`. В ответах метода получения данных по [товарам](/openapi/analytics#tag/Istoriya-ostatkov/paths/~1api~1v2~1stocks-report~1products~1products/post) у таких товаров `\"hasSizes\":false`.<br></br> Данные по складам продавца приходят в агрегированном виде — по всем сразу, без детализации по конкретным складам — эти записи будут с `\"regionName\":\"Маркетплейс\"` и `\"officeName\":\"\"`. <div class=\"description_limit\"> <a href=\"/openapi/api-information#tag/Vvedenie/Limity-zaprosov\">Лимит запросов</a> на один аккаунт продавца: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 минута | 3 запроса | 20 секунд | 3 запроса | </div>
3537
+
3538
+ :param body: (required)
3539
+ :type body: CommonSizeFilters
3540
+ :param _request_timeout: timeout setting for this request. If one
3541
+ number provided, it will be total request
3542
+ timeout. It can also be a pair (tuple) of
3543
+ (connection, read) timeouts.
3544
+ :type _request_timeout: int, tuple(int, int), optional
3545
+ :param _request_auth: set to override the auth_settings for an a single
3546
+ request; this effectively ignores the
3547
+ authentication in the spec for a single request.
3548
+ :type _request_auth: dict, optional
3549
+ :param _content_type: force content-type for the request.
3550
+ :type _content_type: str, Optional
3551
+ :param _headers: set to override the headers for a single
3552
+ request; this effectively ignores the headers
3553
+ in the spec for a single request.
3554
+ :type _headers: dict, optional
3555
+ :param _host_index: set to override the host_index for a single
3556
+ request; this effectively ignores the host_index
3557
+ in the spec for a single request.
3558
+ :type _host_index: int, optional
3559
+ :return: Returns the result object.
3560
+ """ # noqa: E501
3561
+
3562
+ _param = self._api_v2_stocks_report_products_sizes_post_serialize(
3563
+ body=body,
3564
+ _request_auth=_request_auth,
3565
+ _content_type=_content_type,
3566
+ _headers=_headers,
3567
+ _host_index=_host_index
3568
+ )
3569
+
3570
+ _response_types_map: Dict[str, Optional[str]] = {
3571
+ '200': "ApiV2StocksReportProductsSizesPost200Response",
3572
+ '400': "ErrorObject400",
3573
+ '401': "PostSalesFunnelProducts401Response",
3574
+ '403': "ErrorObject403",
3575
+ '429': "PostSalesFunnelProducts401Response",
3576
+ }
3577
+ response_data = self.api_client.call_api(
3578
+ *_param,
3579
+ _request_timeout=_request_timeout
3580
+ )
3581
+ response_data.read()
3582
+ return self.api_client.response_deserialize(
3583
+ response_data=response_data,
3584
+ response_types_map=_response_types_map,
3585
+ ).data
3586
+
3587
+
3588
+ @validate_call
3589
+ def api_v2_stocks_report_products_sizes_post_with_http_info(
3590
+ self,
3591
+ body: CommonSizeFilters,
3592
+ _request_timeout: Union[
3593
+ None,
3594
+ Annotated[StrictFloat, Field(gt=0)],
3595
+ Tuple[
3596
+ Annotated[StrictFloat, Field(gt=0)],
3597
+ Annotated[StrictFloat, Field(gt=0)]
3598
+ ]
3599
+ ] = None,
3600
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
3601
+ _content_type: Optional[StrictStr] = None,
3602
+ _headers: Optional[Dict[StrictStr, Any]] = None,
3603
+ _host_index: Annotated[StrictInt, Field(ge=0, le=1)] = 0,
3604
+ ) -> ApiResponse[ApiV2StocksReportProductsSizesPost200Response]:
3605
+ """Данные по размерам
3606
+
3607
+ Метод формирует набор данных об остатках по размерам товара. <br><br> Возможны случаи: 1. Товар имеет размеры и `\"includeOffice\":true`, тогда в ответе будут данные об остатках по каждому из размеров с вложенной детализацией по складам. 2. Товар имеет размеры и `\"includeOffice\":false`, тогда в ответе будут данные об остатках по каждому из размеров без вложенной детализации по складам. 3. Товар не имеет размера и `\"includeOffice\":true`, тогда в ответе будет детализация по складам. Без данных об остатках по каждому из размеров. 4. Товар не имеет размера и `\"includeOffice\":false`, тогда тело ответа будет пустым.<br></br> Товар не имеет размера, если у него единственный размер с `\"techSize\":\"0\"`. В ответах метода получения данных по [товарам](/openapi/analytics#tag/Istoriya-ostatkov/paths/~1api~1v2~1stocks-report~1products~1products/post) у таких товаров `\"hasSizes\":false`.<br></br> Данные по складам продавца приходят в агрегированном виде — по всем сразу, без детализации по конкретным складам — эти записи будут с `\"regionName\":\"Маркетплейс\"` и `\"officeName\":\"\"`. <div class=\"description_limit\"> <a href=\"/openapi/api-information#tag/Vvedenie/Limity-zaprosov\">Лимит запросов</a> на один аккаунт продавца: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 минута | 3 запроса | 20 секунд | 3 запроса | </div>
3608
+
3609
+ :param body: (required)
3610
+ :type body: CommonSizeFilters
3611
+ :param _request_timeout: timeout setting for this request. If one
3612
+ number provided, it will be total request
3613
+ timeout. It can also be a pair (tuple) of
3614
+ (connection, read) timeouts.
3615
+ :type _request_timeout: int, tuple(int, int), optional
3616
+ :param _request_auth: set to override the auth_settings for an a single
3617
+ request; this effectively ignores the
3618
+ authentication in the spec for a single request.
3619
+ :type _request_auth: dict, optional
3620
+ :param _content_type: force content-type for the request.
3621
+ :type _content_type: str, Optional
3622
+ :param _headers: set to override the headers for a single
3623
+ request; this effectively ignores the headers
3624
+ in the spec for a single request.
3625
+ :type _headers: dict, optional
3626
+ :param _host_index: set to override the host_index for a single
3627
+ request; this effectively ignores the host_index
3628
+ in the spec for a single request.
3629
+ :type _host_index: int, optional
3630
+ :return: Returns the result object.
3631
+ """ # noqa: E501
3632
+
3633
+ _param = self._api_v2_stocks_report_products_sizes_post_serialize(
3634
+ body=body,
3635
+ _request_auth=_request_auth,
3636
+ _content_type=_content_type,
3637
+ _headers=_headers,
3638
+ _host_index=_host_index
3639
+ )
3640
+
3641
+ _response_types_map: Dict[str, Optional[str]] = {
3642
+ '200': "ApiV2StocksReportProductsSizesPost200Response",
3643
+ '400': "ErrorObject400",
3644
+ '401': "PostSalesFunnelProducts401Response",
3645
+ '403': "ErrorObject403",
3646
+ '429': "PostSalesFunnelProducts401Response",
3647
+ }
3648
+ response_data = self.api_client.call_api(
3649
+ *_param,
3650
+ _request_timeout=_request_timeout
3651
+ )
3652
+ response_data.read()
3653
+ return self.api_client.response_deserialize(
3654
+ response_data=response_data,
3655
+ response_types_map=_response_types_map,
3656
+ )
3657
+
3658
+
3659
+ @validate_call
3660
+ def api_v2_stocks_report_products_sizes_post_without_preload_content(
3661
+ self,
3662
+ body: CommonSizeFilters,
3663
+ _request_timeout: Union[
3664
+ None,
3665
+ Annotated[StrictFloat, Field(gt=0)],
3666
+ Tuple[
3667
+ Annotated[StrictFloat, Field(gt=0)],
3668
+ Annotated[StrictFloat, Field(gt=0)]
3669
+ ]
3670
+ ] = None,
3671
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
3672
+ _content_type: Optional[StrictStr] = None,
3673
+ _headers: Optional[Dict[StrictStr, Any]] = None,
3674
+ _host_index: Annotated[StrictInt, Field(ge=0, le=1)] = 0,
3675
+ ) -> RESTResponseType:
3676
+ """Данные по размерам
3677
+
3678
+ Метод формирует набор данных об остатках по размерам товара. <br><br> Возможны случаи: 1. Товар имеет размеры и `\"includeOffice\":true`, тогда в ответе будут данные об остатках по каждому из размеров с вложенной детализацией по складам. 2. Товар имеет размеры и `\"includeOffice\":false`, тогда в ответе будут данные об остатках по каждому из размеров без вложенной детализации по складам. 3. Товар не имеет размера и `\"includeOffice\":true`, тогда в ответе будет детализация по складам. Без данных об остатках по каждому из размеров. 4. Товар не имеет размера и `\"includeOffice\":false`, тогда тело ответа будет пустым.<br></br> Товар не имеет размера, если у него единственный размер с `\"techSize\":\"0\"`. В ответах метода получения данных по [товарам](/openapi/analytics#tag/Istoriya-ostatkov/paths/~1api~1v2~1stocks-report~1products~1products/post) у таких товаров `\"hasSizes\":false`.<br></br> Данные по складам продавца приходят в агрегированном виде — по всем сразу, без детализации по конкретным складам — эти записи будут с `\"regionName\":\"Маркетплейс\"` и `\"officeName\":\"\"`. <div class=\"description_limit\"> <a href=\"/openapi/api-information#tag/Vvedenie/Limity-zaprosov\">Лимит запросов</a> на один аккаунт продавца: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 минута | 3 запроса | 20 секунд | 3 запроса | </div>
3679
+
3680
+ :param body: (required)
3681
+ :type body: CommonSizeFilters
3682
+ :param _request_timeout: timeout setting for this request. If one
3683
+ number provided, it will be total request
3684
+ timeout. It can also be a pair (tuple) of
3685
+ (connection, read) timeouts.
3686
+ :type _request_timeout: int, tuple(int, int), optional
3687
+ :param _request_auth: set to override the auth_settings for an a single
3688
+ request; this effectively ignores the
3689
+ authentication in the spec for a single request.
3690
+ :type _request_auth: dict, optional
3691
+ :param _content_type: force content-type for the request.
3692
+ :type _content_type: str, Optional
3693
+ :param _headers: set to override the headers for a single
3694
+ request; this effectively ignores the headers
3695
+ in the spec for a single request.
3696
+ :type _headers: dict, optional
3697
+ :param _host_index: set to override the host_index for a single
3698
+ request; this effectively ignores the host_index
3699
+ in the spec for a single request.
3700
+ :type _host_index: int, optional
3701
+ :return: Returns the result object.
3702
+ """ # noqa: E501
3703
+
3704
+ _param = self._api_v2_stocks_report_products_sizes_post_serialize(
3705
+ body=body,
3706
+ _request_auth=_request_auth,
3707
+ _content_type=_content_type,
3708
+ _headers=_headers,
3709
+ _host_index=_host_index
3710
+ )
3711
+
3712
+ _response_types_map: Dict[str, Optional[str]] = {
3713
+ '200': "ApiV2StocksReportProductsSizesPost200Response",
3714
+ '400': "ErrorObject400",
3715
+ '401': "PostSalesFunnelProducts401Response",
3716
+ '403': "ErrorObject403",
3717
+ '429': "PostSalesFunnelProducts401Response",
3718
+ }
3719
+ response_data = self.api_client.call_api(
3720
+ *_param,
3721
+ _request_timeout=_request_timeout
3722
+ )
3723
+ return response_data.response
3724
+
3725
+
3726
+ def _api_v2_stocks_report_products_sizes_post_serialize(
3727
+ self,
3728
+ body,
3729
+ _request_auth,
3730
+ _content_type,
3731
+ _headers,
3732
+ _host_index,
3733
+ ) -> RequestSerialized:
3734
+
3735
+ _hosts = [
3736
+ 'https://seller-analytics-api.wildberries.ru'
3737
+ ]
3738
+ _host = _hosts[_host_index]
3739
+
3740
+ _collection_formats: Dict[str, str] = {
3741
+ }
3742
+
3743
+ _path_params: Dict[str, str] = {}
3744
+ _query_params: List[Tuple[str, str]] = []
3745
+ _header_params: Dict[str, Optional[str]] = _headers or {}
3746
+ _form_params: List[Tuple[str, str]] = []
3747
+ _files: Dict[
3748
+ str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
3749
+ ] = {}
3750
+ _body_params: Optional[bytes] = None
3751
+
3752
+ # process the path parameters
3753
+ # process the query parameters
3754
+ # process the header parameters
3755
+ # process the form parameters
3756
+ # process the body parameter
3757
+ if body is not None:
3758
+ _body_params = body
3759
+
3760
+
3761
+ # set the HTTP header `Accept`
3762
+ if 'Accept' not in _header_params:
3763
+ _header_params['Accept'] = self.api_client.select_header_accept(
3764
+ [
3765
+ 'application/json'
3766
+ ]
3767
+ )
3768
+
3769
+ # set the HTTP header `Content-Type`
3770
+ if _content_type:
3771
+ _header_params['Content-Type'] = _content_type
3772
+ else:
3773
+ _default_content_type = (
3774
+ self.api_client.select_header_content_type(
3775
+ [
3776
+ 'application/json'
3777
+ ]
3778
+ )
3779
+ )
3780
+ if _default_content_type is not None:
3781
+ _header_params['Content-Type'] = _default_content_type
3782
+
3783
+ # authentication setting
3784
+ _auth_settings: List[str] = [
3785
+ 'HeaderApiKey'
3786
+ ]
3787
+
3788
+ return self.api_client.param_serialize(
3789
+ method='POST',
3790
+ resource_path='/api/v2/stocks-report/products/sizes',
3791
+ path_params=_path_params,
3792
+ query_params=_query_params,
3793
+ header_params=_header_params,
3794
+ body=_body_params,
3795
+ post_params=_form_params,
3796
+ files=_files,
3797
+ auth_settings=_auth_settings,
3798
+ collection_formats=_collection_formats,
3799
+ _host=_host,
3800
+ _request_auth=_request_auth
3801
+ )
3802
+
3803
+
3804
+
3805
+
3806
+ @validate_call
3807
+ def post_sales_funnel_grouped_history(
3808
+ self,
3809
+ grouped_history_request: GroupedHistoryRequest,
3810
+ _request_timeout: Union[
3811
+ None,
3812
+ Annotated[StrictFloat, Field(gt=0)],
3813
+ Tuple[
3814
+ Annotated[StrictFloat, Field(gt=0)],
3815
+ Annotated[StrictFloat, Field(gt=0)]
3816
+ ]
3817
+ ] = None,
3818
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
3819
+ _content_type: Optional[StrictStr] = None,
3820
+ _headers: Optional[Dict[StrictStr, Any]] = None,
3821
+ _host_index: Annotated[StrictInt, Field(ge=0, le=1)] = 0,
3822
+ ) -> PostSalesFunnelGroupedHistory200Response:
3823
+ """Статистика групп карточек товаров по дням
3824
+
3825
+ Метод возвращает статистику карточек товаров по дням или неделям. Карточки товаров сгруппированы по предметам, брендам и ярлыкам. Доступны данные по добавлениям в корзину, заказам, переходам в карточку товара и так далее.<br><br> Параметры `brandNames`, `subjectIds`, `tagIds` могут быть пустыми `[]`, тогда группировка происходит по всем карточкам продавца.<br><br> Произведение количества предметов, брендов, ярлыков в запросе может быть не больше 16. Например, 4 бренда и 4 предмета или 2 предмета, 2 ярлыка и 4 бренда.<br><br> Можно получить данные максимум за последнюю неделю. <div class=\"description_important\"> Чтобы получать отчёты за период до года, используйте методы <a href=\"/openapi/analytics#tag/Analitika-prodavca-CSV\">Аналитика продавца CSV</a>. Эти методы доступны только с подпиской на <a href='https://seller.wildberries.ru/monetization/jam'>расширенную аналитику Джем</a> </div> <div class=\"description_limit\"> <a href=\"/openapi/api-information#tag/Vvedenie/Limity-zaprosov\">Лимит запросов</a> на один аккаунт продавца: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 минута | 3 запроса | 20 секунд | 3 запроса | </div>
3826
+
3827
+ :param grouped_history_request: (required)
3828
+ :type grouped_history_request: GroupedHistoryRequest
3829
+ :param _request_timeout: timeout setting for this request. If one
3830
+ number provided, it will be total request
3831
+ timeout. It can also be a pair (tuple) of
3832
+ (connection, read) timeouts.
3833
+ :type _request_timeout: int, tuple(int, int), optional
3834
+ :param _request_auth: set to override the auth_settings for an a single
3835
+ request; this effectively ignores the
3836
+ authentication in the spec for a single request.
3837
+ :type _request_auth: dict, optional
3838
+ :param _content_type: force content-type for the request.
3839
+ :type _content_type: str, Optional
3840
+ :param _headers: set to override the headers for a single
3841
+ request; this effectively ignores the headers
3842
+ in the spec for a single request.
3843
+ :type _headers: dict, optional
3844
+ :param _host_index: set to override the host_index for a single
3845
+ request; this effectively ignores the host_index
3846
+ in the spec for a single request.
3847
+ :type _host_index: int, optional
3848
+ :return: Returns the result object.
3849
+ """ # noqa: E501
3850
+
3851
+ _param = self._post_sales_funnel_grouped_history_serialize(
3852
+ grouped_history_request=grouped_history_request,
3853
+ _request_auth=_request_auth,
3854
+ _content_type=_content_type,
3855
+ _headers=_headers,
3856
+ _host_index=_host_index
3857
+ )
3858
+
3859
+ _response_types_map: Dict[str, Optional[str]] = {
3860
+ '200': "PostSalesFunnelGroupedHistory200Response",
3861
+ '400': "ErrorObject",
3862
+ '401': "PostSalesFunnelProducts401Response",
3863
+ '403': "ErrorObject",
3864
+ '429': "PostSalesFunnelProducts401Response",
3865
+ }
3866
+ response_data = self.api_client.call_api(
3867
+ *_param,
3868
+ _request_timeout=_request_timeout
3869
+ )
3870
+ response_data.read()
3871
+ return self.api_client.response_deserialize(
3872
+ response_data=response_data,
3873
+ response_types_map=_response_types_map,
3874
+ ).data
3875
+
3876
+
3877
+ @validate_call
3878
+ def post_sales_funnel_grouped_history_with_http_info(
3879
+ self,
3880
+ grouped_history_request: GroupedHistoryRequest,
3881
+ _request_timeout: Union[
3882
+ None,
3883
+ Annotated[StrictFloat, Field(gt=0)],
3884
+ Tuple[
3885
+ Annotated[StrictFloat, Field(gt=0)],
3886
+ Annotated[StrictFloat, Field(gt=0)]
3887
+ ]
3888
+ ] = None,
3889
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
3890
+ _content_type: Optional[StrictStr] = None,
3891
+ _headers: Optional[Dict[StrictStr, Any]] = None,
3892
+ _host_index: Annotated[StrictInt, Field(ge=0, le=1)] = 0,
3893
+ ) -> ApiResponse[PostSalesFunnelGroupedHistory200Response]:
3894
+ """Статистика групп карточек товаров по дням
3895
+
3896
+ Метод возвращает статистику карточек товаров по дням или неделям. Карточки товаров сгруппированы по предметам, брендам и ярлыкам. Доступны данные по добавлениям в корзину, заказам, переходам в карточку товара и так далее.<br><br> Параметры `brandNames`, `subjectIds`, `tagIds` могут быть пустыми `[]`, тогда группировка происходит по всем карточкам продавца.<br><br> Произведение количества предметов, брендов, ярлыков в запросе может быть не больше 16. Например, 4 бренда и 4 предмета или 2 предмета, 2 ярлыка и 4 бренда.<br><br> Можно получить данные максимум за последнюю неделю. <div class=\"description_important\"> Чтобы получать отчёты за период до года, используйте методы <a href=\"/openapi/analytics#tag/Analitika-prodavca-CSV\">Аналитика продавца CSV</a>. Эти методы доступны только с подпиской на <a href='https://seller.wildberries.ru/monetization/jam'>расширенную аналитику Джем</a> </div> <div class=\"description_limit\"> <a href=\"/openapi/api-information#tag/Vvedenie/Limity-zaprosov\">Лимит запросов</a> на один аккаунт продавца: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 минута | 3 запроса | 20 секунд | 3 запроса | </div>
3897
+
3898
+ :param grouped_history_request: (required)
3899
+ :type grouped_history_request: GroupedHistoryRequest
3900
+ :param _request_timeout: timeout setting for this request. If one
3901
+ number provided, it will be total request
3902
+ timeout. It can also be a pair (tuple) of
3903
+ (connection, read) timeouts.
3904
+ :type _request_timeout: int, tuple(int, int), optional
3905
+ :param _request_auth: set to override the auth_settings for an a single
3906
+ request; this effectively ignores the
3907
+ authentication in the spec for a single request.
3908
+ :type _request_auth: dict, optional
3909
+ :param _content_type: force content-type for the request.
3910
+ :type _content_type: str, Optional
3911
+ :param _headers: set to override the headers for a single
3912
+ request; this effectively ignores the headers
3913
+ in the spec for a single request.
3914
+ :type _headers: dict, optional
3915
+ :param _host_index: set to override the host_index for a single
3916
+ request; this effectively ignores the host_index
3917
+ in the spec for a single request.
3918
+ :type _host_index: int, optional
3919
+ :return: Returns the result object.
3920
+ """ # noqa: E501
3921
+
3922
+ _param = self._post_sales_funnel_grouped_history_serialize(
3923
+ grouped_history_request=grouped_history_request,
3924
+ _request_auth=_request_auth,
3925
+ _content_type=_content_type,
3926
+ _headers=_headers,
3927
+ _host_index=_host_index
3928
+ )
3929
+
3930
+ _response_types_map: Dict[str, Optional[str]] = {
3931
+ '200': "PostSalesFunnelGroupedHistory200Response",
3932
+ '400': "ErrorObject",
3933
+ '401': "PostSalesFunnelProducts401Response",
3934
+ '403': "ErrorObject",
3935
+ '429': "PostSalesFunnelProducts401Response",
3936
+ }
3937
+ response_data = self.api_client.call_api(
3938
+ *_param,
3939
+ _request_timeout=_request_timeout
3940
+ )
3941
+ response_data.read()
3942
+ return self.api_client.response_deserialize(
3943
+ response_data=response_data,
3944
+ response_types_map=_response_types_map,
3945
+ )
3946
+
3947
+
3948
+ @validate_call
3949
+ def post_sales_funnel_grouped_history_without_preload_content(
3950
+ self,
3951
+ grouped_history_request: GroupedHistoryRequest,
3952
+ _request_timeout: Union[
3953
+ None,
3954
+ Annotated[StrictFloat, Field(gt=0)],
3955
+ Tuple[
3956
+ Annotated[StrictFloat, Field(gt=0)],
3957
+ Annotated[StrictFloat, Field(gt=0)]
3958
+ ]
3959
+ ] = None,
3960
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
3961
+ _content_type: Optional[StrictStr] = None,
3962
+ _headers: Optional[Dict[StrictStr, Any]] = None,
3963
+ _host_index: Annotated[StrictInt, Field(ge=0, le=1)] = 0,
3964
+ ) -> RESTResponseType:
3965
+ """Статистика групп карточек товаров по дням
3966
+
3967
+ Метод возвращает статистику карточек товаров по дням или неделям. Карточки товаров сгруппированы по предметам, брендам и ярлыкам. Доступны данные по добавлениям в корзину, заказам, переходам в карточку товара и так далее.<br><br> Параметры `brandNames`, `subjectIds`, `tagIds` могут быть пустыми `[]`, тогда группировка происходит по всем карточкам продавца.<br><br> Произведение количества предметов, брендов, ярлыков в запросе может быть не больше 16. Например, 4 бренда и 4 предмета или 2 предмета, 2 ярлыка и 4 бренда.<br><br> Можно получить данные максимум за последнюю неделю. <div class=\"description_important\"> Чтобы получать отчёты за период до года, используйте методы <a href=\"/openapi/analytics#tag/Analitika-prodavca-CSV\">Аналитика продавца CSV</a>. Эти методы доступны только с подпиской на <a href='https://seller.wildberries.ru/monetization/jam'>расширенную аналитику Джем</a> </div> <div class=\"description_limit\"> <a href=\"/openapi/api-information#tag/Vvedenie/Limity-zaprosov\">Лимит запросов</a> на один аккаунт продавца: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 минута | 3 запроса | 20 секунд | 3 запроса | </div>
3968
+
3969
+ :param grouped_history_request: (required)
3970
+ :type grouped_history_request: GroupedHistoryRequest
3971
+ :param _request_timeout: timeout setting for this request. If one
3972
+ number provided, it will be total request
3973
+ timeout. It can also be a pair (tuple) of
3974
+ (connection, read) timeouts.
3975
+ :type _request_timeout: int, tuple(int, int), optional
3976
+ :param _request_auth: set to override the auth_settings for an a single
3977
+ request; this effectively ignores the
3978
+ authentication in the spec for a single request.
3979
+ :type _request_auth: dict, optional
3980
+ :param _content_type: force content-type for the request.
3981
+ :type _content_type: str, Optional
3982
+ :param _headers: set to override the headers for a single
3983
+ request; this effectively ignores the headers
3984
+ in the spec for a single request.
3985
+ :type _headers: dict, optional
3986
+ :param _host_index: set to override the host_index for a single
3987
+ request; this effectively ignores the host_index
3988
+ in the spec for a single request.
3989
+ :type _host_index: int, optional
3990
+ :return: Returns the result object.
3991
+ """ # noqa: E501
3992
+
3993
+ _param = self._post_sales_funnel_grouped_history_serialize(
3994
+ grouped_history_request=grouped_history_request,
3995
+ _request_auth=_request_auth,
3996
+ _content_type=_content_type,
3997
+ _headers=_headers,
3998
+ _host_index=_host_index
3999
+ )
4000
+
4001
+ _response_types_map: Dict[str, Optional[str]] = {
4002
+ '200': "PostSalesFunnelGroupedHistory200Response",
4003
+ '400': "ErrorObject",
4004
+ '401': "PostSalesFunnelProducts401Response",
4005
+ '403': "ErrorObject",
4006
+ '429': "PostSalesFunnelProducts401Response",
4007
+ }
4008
+ response_data = self.api_client.call_api(
4009
+ *_param,
4010
+ _request_timeout=_request_timeout
4011
+ )
4012
+ return response_data.response
4013
+
4014
+
4015
+ def _post_sales_funnel_grouped_history_serialize(
4016
+ self,
4017
+ grouped_history_request,
4018
+ _request_auth,
4019
+ _content_type,
4020
+ _headers,
4021
+ _host_index,
4022
+ ) -> RequestSerialized:
4023
+
4024
+ _hosts = [
4025
+ 'https://seller-analytics-api.wildberries.ru'
4026
+ ]
4027
+ _host = _hosts[_host_index]
4028
+
4029
+ _collection_formats: Dict[str, str] = {
4030
+ }
4031
+
4032
+ _path_params: Dict[str, str] = {}
4033
+ _query_params: List[Tuple[str, str]] = []
4034
+ _header_params: Dict[str, Optional[str]] = _headers or {}
4035
+ _form_params: List[Tuple[str, str]] = []
4036
+ _files: Dict[
4037
+ str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
4038
+ ] = {}
4039
+ _body_params: Optional[bytes] = None
4040
+
4041
+ # process the path parameters
4042
+ # process the query parameters
4043
+ # process the header parameters
4044
+ # process the form parameters
4045
+ # process the body parameter
4046
+ if grouped_history_request is not None:
4047
+ _body_params = grouped_history_request
4048
+
4049
+
4050
+ # set the HTTP header `Accept`
4051
+ if 'Accept' not in _header_params:
4052
+ _header_params['Accept'] = self.api_client.select_header_accept(
4053
+ [
4054
+ 'application/json'
4055
+ ]
4056
+ )
4057
+
4058
+ # set the HTTP header `Content-Type`
4059
+ if _content_type:
4060
+ _header_params['Content-Type'] = _content_type
4061
+ else:
4062
+ _default_content_type = (
4063
+ self.api_client.select_header_content_type(
4064
+ [
4065
+ 'application/json'
4066
+ ]
4067
+ )
4068
+ )
4069
+ if _default_content_type is not None:
4070
+ _header_params['Content-Type'] = _default_content_type
4071
+
4072
+ # authentication setting
4073
+ _auth_settings: List[str] = [
4074
+ 'HeaderApiKey'
4075
+ ]
4076
+
4077
+ return self.api_client.param_serialize(
4078
+ method='POST',
4079
+ resource_path='/api/analytics/v3/sales-funnel/grouped/history',
4080
+ path_params=_path_params,
4081
+ query_params=_query_params,
4082
+ header_params=_header_params,
4083
+ body=_body_params,
4084
+ post_params=_form_params,
4085
+ files=_files,
4086
+ auth_settings=_auth_settings,
4087
+ collection_formats=_collection_formats,
4088
+ _host=_host,
4089
+ _request_auth=_request_auth
4090
+ )
4091
+
4092
+
4093
+
4094
+
4095
+ @validate_call
4096
+ def post_sales_funnel_products(
4097
+ self,
4098
+ products_request: ProductsRequest,
4099
+ _request_timeout: Union[
4100
+ None,
4101
+ Annotated[StrictFloat, Field(gt=0)],
4102
+ Tuple[
4103
+ Annotated[StrictFloat, Field(gt=0)],
4104
+ Annotated[StrictFloat, Field(gt=0)]
4105
+ ]
4106
+ ] = None,
4107
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
4108
+ _content_type: Optional[StrictStr] = None,
4109
+ _headers: Optional[Dict[StrictStr, Any]] = None,
4110
+ _host_index: Annotated[StrictInt, Field(ge=0, le=1)] = 0,
4111
+ ) -> PostSalesFunnelProducts200Response:
4112
+ """Статистика карточек товаров за период
4113
+
4114
+ Метод формирует отчёт о товарах, сравнивая ключевые показатели — например, добавления в корзину, заказы и переходы в карточку товара — за текущий период с аналогичным прошлым.<br><br> Параметры `brandNames`,`subjectIds`, `tagIds`, `nmIds` могут быть пустыми `[]`, тогда в ответе возвращаются все карточки продавца.<br><br> Если вы указали несколько параметров, в ответе будут карточки, в которых есть одновременно все эти параметры. Если карточки не подходят по параметрам запроса, вернётся пустой ответ `[]`.<br><br> Можно получить отчёт максимум за последние 365 дней.<br><br> В данных предыдущего периода: * Данные в `pastPeriod` указаны за такой же период, что и в `selectedPeriod` * Если дата начала `pastPeriod` раньше, чем год назад от текущей даты, она будет приведена к виду: `pastPeriod.start = текущая дата — 365 дней` Можно использовать пагинацию. <div class=\"description_limit\"> <a href=\"/openapi/api-information#tag/Vvedenie/Limity-zaprosov\">Лимит запросов</a> на один аккаунт продавца: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 минута | 3 запроса | 20 секунд | 3 запроса | </div>
4115
+
4116
+ :param products_request: (required)
4117
+ :type products_request: ProductsRequest
4118
+ :param _request_timeout: timeout setting for this request. If one
4119
+ number provided, it will be total request
4120
+ timeout. It can also be a pair (tuple) of
4121
+ (connection, read) timeouts.
4122
+ :type _request_timeout: int, tuple(int, int), optional
4123
+ :param _request_auth: set to override the auth_settings for an a single
4124
+ request; this effectively ignores the
4125
+ authentication in the spec for a single request.
4126
+ :type _request_auth: dict, optional
4127
+ :param _content_type: force content-type for the request.
4128
+ :type _content_type: str, Optional
4129
+ :param _headers: set to override the headers for a single
4130
+ request; this effectively ignores the headers
4131
+ in the spec for a single request.
4132
+ :type _headers: dict, optional
4133
+ :param _host_index: set to override the host_index for a single
4134
+ request; this effectively ignores the host_index
4135
+ in the spec for a single request.
4136
+ :type _host_index: int, optional
4137
+ :return: Returns the result object.
4138
+ """ # noqa: E501
4139
+
4140
+ _param = self._post_sales_funnel_products_serialize(
4141
+ products_request=products_request,
4142
+ _request_auth=_request_auth,
4143
+ _content_type=_content_type,
4144
+ _headers=_headers,
4145
+ _host_index=_host_index
4146
+ )
4147
+
4148
+ _response_types_map: Dict[str, Optional[str]] = {
4149
+ '200': "PostSalesFunnelProducts200Response",
4150
+ '400': "ErrorObject",
4151
+ '401': "PostSalesFunnelProducts401Response",
4152
+ '403': "ErrorObject",
4153
+ '429': "PostSalesFunnelProducts401Response",
4154
+ }
4155
+ response_data = self.api_client.call_api(
4156
+ *_param,
4157
+ _request_timeout=_request_timeout
4158
+ )
4159
+ response_data.read()
4160
+ return self.api_client.response_deserialize(
4161
+ response_data=response_data,
4162
+ response_types_map=_response_types_map,
4163
+ ).data
4164
+
4165
+
4166
+ @validate_call
4167
+ def post_sales_funnel_products_with_http_info(
4168
+ self,
4169
+ products_request: ProductsRequest,
4170
+ _request_timeout: Union[
4171
+ None,
4172
+ Annotated[StrictFloat, Field(gt=0)],
4173
+ Tuple[
4174
+ Annotated[StrictFloat, Field(gt=0)],
4175
+ Annotated[StrictFloat, Field(gt=0)]
4176
+ ]
4177
+ ] = None,
4178
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
4179
+ _content_type: Optional[StrictStr] = None,
4180
+ _headers: Optional[Dict[StrictStr, Any]] = None,
4181
+ _host_index: Annotated[StrictInt, Field(ge=0, le=1)] = 0,
4182
+ ) -> ApiResponse[PostSalesFunnelProducts200Response]:
4183
+ """Статистика карточек товаров за период
4184
+
4185
+ Метод формирует отчёт о товарах, сравнивая ключевые показатели — например, добавления в корзину, заказы и переходы в карточку товара — за текущий период с аналогичным прошлым.<br><br> Параметры `brandNames`,`subjectIds`, `tagIds`, `nmIds` могут быть пустыми `[]`, тогда в ответе возвращаются все карточки продавца.<br><br> Если вы указали несколько параметров, в ответе будут карточки, в которых есть одновременно все эти параметры. Если карточки не подходят по параметрам запроса, вернётся пустой ответ `[]`.<br><br> Можно получить отчёт максимум за последние 365 дней.<br><br> В данных предыдущего периода: * Данные в `pastPeriod` указаны за такой же период, что и в `selectedPeriod` * Если дата начала `pastPeriod` раньше, чем год назад от текущей даты, она будет приведена к виду: `pastPeriod.start = текущая дата — 365 дней` Можно использовать пагинацию. <div class=\"description_limit\"> <a href=\"/openapi/api-information#tag/Vvedenie/Limity-zaprosov\">Лимит запросов</a> на один аккаунт продавца: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 минута | 3 запроса | 20 секунд | 3 запроса | </div>
4186
+
4187
+ :param products_request: (required)
4188
+ :type products_request: ProductsRequest
4189
+ :param _request_timeout: timeout setting for this request. If one
4190
+ number provided, it will be total request
4191
+ timeout. It can also be a pair (tuple) of
4192
+ (connection, read) timeouts.
4193
+ :type _request_timeout: int, tuple(int, int), optional
4194
+ :param _request_auth: set to override the auth_settings for an a single
4195
+ request; this effectively ignores the
4196
+ authentication in the spec for a single request.
4197
+ :type _request_auth: dict, optional
4198
+ :param _content_type: force content-type for the request.
4199
+ :type _content_type: str, Optional
4200
+ :param _headers: set to override the headers for a single
4201
+ request; this effectively ignores the headers
4202
+ in the spec for a single request.
4203
+ :type _headers: dict, optional
4204
+ :param _host_index: set to override the host_index for a single
4205
+ request; this effectively ignores the host_index
4206
+ in the spec for a single request.
4207
+ :type _host_index: int, optional
4208
+ :return: Returns the result object.
4209
+ """ # noqa: E501
4210
+
4211
+ _param = self._post_sales_funnel_products_serialize(
4212
+ products_request=products_request,
4213
+ _request_auth=_request_auth,
4214
+ _content_type=_content_type,
4215
+ _headers=_headers,
4216
+ _host_index=_host_index
4217
+ )
4218
+
4219
+ _response_types_map: Dict[str, Optional[str]] = {
4220
+ '200': "PostSalesFunnelProducts200Response",
4221
+ '400': "ErrorObject",
4222
+ '401': "PostSalesFunnelProducts401Response",
4223
+ '403': "ErrorObject",
4224
+ '429': "PostSalesFunnelProducts401Response",
4225
+ }
4226
+ response_data = self.api_client.call_api(
4227
+ *_param,
4228
+ _request_timeout=_request_timeout
4229
+ )
4230
+ response_data.read()
4231
+ return self.api_client.response_deserialize(
4232
+ response_data=response_data,
4233
+ response_types_map=_response_types_map,
4234
+ )
4235
+
4236
+
4237
+ @validate_call
4238
+ def post_sales_funnel_products_without_preload_content(
4239
+ self,
4240
+ products_request: ProductsRequest,
4241
+ _request_timeout: Union[
4242
+ None,
4243
+ Annotated[StrictFloat, Field(gt=0)],
4244
+ Tuple[
4245
+ Annotated[StrictFloat, Field(gt=0)],
4246
+ Annotated[StrictFloat, Field(gt=0)]
4247
+ ]
4248
+ ] = None,
4249
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
4250
+ _content_type: Optional[StrictStr] = None,
4251
+ _headers: Optional[Dict[StrictStr, Any]] = None,
4252
+ _host_index: Annotated[StrictInt, Field(ge=0, le=1)] = 0,
4253
+ ) -> RESTResponseType:
4254
+ """Статистика карточек товаров за период
4255
+
4256
+ Метод формирует отчёт о товарах, сравнивая ключевые показатели — например, добавления в корзину, заказы и переходы в карточку товара — за текущий период с аналогичным прошлым.<br><br> Параметры `brandNames`,`subjectIds`, `tagIds`, `nmIds` могут быть пустыми `[]`, тогда в ответе возвращаются все карточки продавца.<br><br> Если вы указали несколько параметров, в ответе будут карточки, в которых есть одновременно все эти параметры. Если карточки не подходят по параметрам запроса, вернётся пустой ответ `[]`.<br><br> Можно получить отчёт максимум за последние 365 дней.<br><br> В данных предыдущего периода: * Данные в `pastPeriod` указаны за такой же период, что и в `selectedPeriod` * Если дата начала `pastPeriod` раньше, чем год назад от текущей даты, она будет приведена к виду: `pastPeriod.start = текущая дата — 365 дней` Можно использовать пагинацию. <div class=\"description_limit\"> <a href=\"/openapi/api-information#tag/Vvedenie/Limity-zaprosov\">Лимит запросов</a> на один аккаунт продавца: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 минута | 3 запроса | 20 секунд | 3 запроса | </div>
4257
+
4258
+ :param products_request: (required)
4259
+ :type products_request: ProductsRequest
4260
+ :param _request_timeout: timeout setting for this request. If one
4261
+ number provided, it will be total request
4262
+ timeout. It can also be a pair (tuple) of
4263
+ (connection, read) timeouts.
4264
+ :type _request_timeout: int, tuple(int, int), optional
4265
+ :param _request_auth: set to override the auth_settings for an a single
4266
+ request; this effectively ignores the
4267
+ authentication in the spec for a single request.
4268
+ :type _request_auth: dict, optional
4269
+ :param _content_type: force content-type for the request.
4270
+ :type _content_type: str, Optional
4271
+ :param _headers: set to override the headers for a single
4272
+ request; this effectively ignores the headers
4273
+ in the spec for a single request.
4274
+ :type _headers: dict, optional
4275
+ :param _host_index: set to override the host_index for a single
4276
+ request; this effectively ignores the host_index
4277
+ in the spec for a single request.
4278
+ :type _host_index: int, optional
4279
+ :return: Returns the result object.
4280
+ """ # noqa: E501
4281
+
4282
+ _param = self._post_sales_funnel_products_serialize(
4283
+ products_request=products_request,
4284
+ _request_auth=_request_auth,
4285
+ _content_type=_content_type,
4286
+ _headers=_headers,
4287
+ _host_index=_host_index
4288
+ )
4289
+
4290
+ _response_types_map: Dict[str, Optional[str]] = {
4291
+ '200': "PostSalesFunnelProducts200Response",
4292
+ '400': "ErrorObject",
4293
+ '401': "PostSalesFunnelProducts401Response",
4294
+ '403': "ErrorObject",
4295
+ '429': "PostSalesFunnelProducts401Response",
4296
+ }
4297
+ response_data = self.api_client.call_api(
4298
+ *_param,
4299
+ _request_timeout=_request_timeout
4300
+ )
4301
+ return response_data.response
4302
+
4303
+
4304
+ def _post_sales_funnel_products_serialize(
4305
+ self,
4306
+ products_request,
4307
+ _request_auth,
4308
+ _content_type,
4309
+ _headers,
4310
+ _host_index,
4311
+ ) -> RequestSerialized:
4312
+
4313
+ _hosts = [
4314
+ 'https://seller-analytics-api.wildberries.ru'
4315
+ ]
4316
+ _host = _hosts[_host_index]
4317
+
4318
+ _collection_formats: Dict[str, str] = {
4319
+ }
4320
+
4321
+ _path_params: Dict[str, str] = {}
4322
+ _query_params: List[Tuple[str, str]] = []
4323
+ _header_params: Dict[str, Optional[str]] = _headers or {}
4324
+ _form_params: List[Tuple[str, str]] = []
4325
+ _files: Dict[
4326
+ str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
4327
+ ] = {}
4328
+ _body_params: Optional[bytes] = None
4329
+
4330
+ # process the path parameters
4331
+ # process the query parameters
4332
+ # process the header parameters
4333
+ # process the form parameters
4334
+ # process the body parameter
4335
+ if products_request is not None:
4336
+ _body_params = products_request
4337
+
4338
+
4339
+ # set the HTTP header `Accept`
4340
+ if 'Accept' not in _header_params:
4341
+ _header_params['Accept'] = self.api_client.select_header_accept(
4342
+ [
4343
+ 'application/json'
4344
+ ]
4345
+ )
4346
+
4347
+ # set the HTTP header `Content-Type`
4348
+ if _content_type:
4349
+ _header_params['Content-Type'] = _content_type
4350
+ else:
4351
+ _default_content_type = (
4352
+ self.api_client.select_header_content_type(
4353
+ [
4354
+ 'application/json'
4355
+ ]
4356
+ )
4357
+ )
4358
+ if _default_content_type is not None:
4359
+ _header_params['Content-Type'] = _default_content_type
4360
+
4361
+ # authentication setting
4362
+ _auth_settings: List[str] = [
4363
+ 'HeaderApiKey'
4364
+ ]
4365
+
4366
+ return self.api_client.param_serialize(
4367
+ method='POST',
4368
+ resource_path='/api/analytics/v3/sales-funnel/products',
4369
+ path_params=_path_params,
4370
+ query_params=_query_params,
4371
+ header_params=_header_params,
4372
+ body=_body_params,
4373
+ post_params=_form_params,
4374
+ files=_files,
4375
+ auth_settings=_auth_settings,
4376
+ collection_formats=_collection_formats,
4377
+ _host=_host,
4378
+ _request_auth=_request_auth
4379
+ )
4380
+
4381
+
4382
+
4383
+
4384
+ @validate_call
4385
+ def post_sales_funnel_products_history(
4386
+ self,
4387
+ product_history_request: ProductHistoryRequest,
4388
+ _request_timeout: Union[
4389
+ None,
4390
+ Annotated[StrictFloat, Field(gt=0)],
4391
+ Tuple[
4392
+ Annotated[StrictFloat, Field(gt=0)],
4393
+ Annotated[StrictFloat, Field(gt=0)]
4394
+ ]
4395
+ ] = None,
4396
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
4397
+ _content_type: Optional[StrictStr] = None,
4398
+ _headers: Optional[Dict[StrictStr, Any]] = None,
4399
+ _host_index: Annotated[StrictInt, Field(ge=0, le=1)] = 0,
4400
+ ) -> List[ProductHistoryResponseInner]:
4401
+ """Статистика карточек товаров по дням
4402
+
4403
+ Метод возвращает статистику карточек товаров по дням или неделям. Доступны данные по добавлениям в корзину, заказам, переходам в карточку товара и так далее. Можно получить данные максимум за последнюю неделю. <div class=\"description_important\"> Чтобы получать отчёты за период до года, используйте методы <a href=\"/openapi/analytics#tag/Analitika-prodavca-CSV\">Аналитика продавца CSV</a>. Эти методы доступны только с подпиской на <a href='https://seller.wildberries.ru/monetization/jam'>расширенную аналитику Джем</a> </div> <div class=\"description_limit\"> <a href=\"/openapi/api-information#tag/Vvedenie/Limity-zaprosov\">Лимит запросов</a> на один аккаунт продавца: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 минута | 3 запроса | 20 секунд | 3 запроса | </div>
4404
+
4405
+ :param product_history_request: (required)
4406
+ :type product_history_request: ProductHistoryRequest
4407
+ :param _request_timeout: timeout setting for this request. If one
4408
+ number provided, it will be total request
4409
+ timeout. It can also be a pair (tuple) of
4410
+ (connection, read) timeouts.
4411
+ :type _request_timeout: int, tuple(int, int), optional
4412
+ :param _request_auth: set to override the auth_settings for an a single
4413
+ request; this effectively ignores the
4414
+ authentication in the spec for a single request.
4415
+ :type _request_auth: dict, optional
4416
+ :param _content_type: force content-type for the request.
4417
+ :type _content_type: str, Optional
4418
+ :param _headers: set to override the headers for a single
4419
+ request; this effectively ignores the headers
4420
+ in the spec for a single request.
4421
+ :type _headers: dict, optional
4422
+ :param _host_index: set to override the host_index for a single
4423
+ request; this effectively ignores the host_index
4424
+ in the spec for a single request.
4425
+ :type _host_index: int, optional
4426
+ :return: Returns the result object.
4427
+ """ # noqa: E501
4428
+
4429
+ _param = self._post_sales_funnel_products_history_serialize(
4430
+ product_history_request=product_history_request,
4431
+ _request_auth=_request_auth,
4432
+ _content_type=_content_type,
4433
+ _headers=_headers,
4434
+ _host_index=_host_index
4435
+ )
4436
+
4437
+ _response_types_map: Dict[str, Optional[str]] = {
4438
+ '200': "List[ProductHistoryResponseInner]",
4439
+ '400': "ErrorObject",
4440
+ '401': "PostSalesFunnelProducts401Response",
4441
+ '403': "ErrorObject",
4442
+ '429': "PostSalesFunnelProducts401Response",
4443
+ }
4444
+ response_data = self.api_client.call_api(
4445
+ *_param,
4446
+ _request_timeout=_request_timeout
4447
+ )
4448
+ response_data.read()
4449
+ return self.api_client.response_deserialize(
4450
+ response_data=response_data,
4451
+ response_types_map=_response_types_map,
4452
+ ).data
4453
+
4454
+
4455
+ @validate_call
4456
+ def post_sales_funnel_products_history_with_http_info(
4457
+ self,
4458
+ product_history_request: ProductHistoryRequest,
4459
+ _request_timeout: Union[
4460
+ None,
4461
+ Annotated[StrictFloat, Field(gt=0)],
4462
+ Tuple[
4463
+ Annotated[StrictFloat, Field(gt=0)],
4464
+ Annotated[StrictFloat, Field(gt=0)]
4465
+ ]
4466
+ ] = None,
4467
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
4468
+ _content_type: Optional[StrictStr] = None,
4469
+ _headers: Optional[Dict[StrictStr, Any]] = None,
4470
+ _host_index: Annotated[StrictInt, Field(ge=0, le=1)] = 0,
4471
+ ) -> ApiResponse[List[ProductHistoryResponseInner]]:
4472
+ """Статистика карточек товаров по дням
4473
+
4474
+ Метод возвращает статистику карточек товаров по дням или неделям. Доступны данные по добавлениям в корзину, заказам, переходам в карточку товара и так далее. Можно получить данные максимум за последнюю неделю. <div class=\"description_important\"> Чтобы получать отчёты за период до года, используйте методы <a href=\"/openapi/analytics#tag/Analitika-prodavca-CSV\">Аналитика продавца CSV</a>. Эти методы доступны только с подпиской на <a href='https://seller.wildberries.ru/monetization/jam'>расширенную аналитику Джем</a> </div> <div class=\"description_limit\"> <a href=\"/openapi/api-information#tag/Vvedenie/Limity-zaprosov\">Лимит запросов</a> на один аккаунт продавца: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 минута | 3 запроса | 20 секунд | 3 запроса | </div>
4475
+
4476
+ :param product_history_request: (required)
4477
+ :type product_history_request: ProductHistoryRequest
4478
+ :param _request_timeout: timeout setting for this request. If one
4479
+ number provided, it will be total request
4480
+ timeout. It can also be a pair (tuple) of
4481
+ (connection, read) timeouts.
4482
+ :type _request_timeout: int, tuple(int, int), optional
4483
+ :param _request_auth: set to override the auth_settings for an a single
4484
+ request; this effectively ignores the
4485
+ authentication in the spec for a single request.
4486
+ :type _request_auth: dict, optional
4487
+ :param _content_type: force content-type for the request.
4488
+ :type _content_type: str, Optional
4489
+ :param _headers: set to override the headers for a single
4490
+ request; this effectively ignores the headers
4491
+ in the spec for a single request.
4492
+ :type _headers: dict, optional
4493
+ :param _host_index: set to override the host_index for a single
4494
+ request; this effectively ignores the host_index
4495
+ in the spec for a single request.
4496
+ :type _host_index: int, optional
4497
+ :return: Returns the result object.
4498
+ """ # noqa: E501
4499
+
4500
+ _param = self._post_sales_funnel_products_history_serialize(
4501
+ product_history_request=product_history_request,
4502
+ _request_auth=_request_auth,
4503
+ _content_type=_content_type,
4504
+ _headers=_headers,
4505
+ _host_index=_host_index
4506
+ )
4507
+
4508
+ _response_types_map: Dict[str, Optional[str]] = {
4509
+ '200': "List[ProductHistoryResponseInner]",
4510
+ '400': "ErrorObject",
4511
+ '401': "PostSalesFunnelProducts401Response",
4512
+ '403': "ErrorObject",
4513
+ '429': "PostSalesFunnelProducts401Response",
4514
+ }
4515
+ response_data = self.api_client.call_api(
4516
+ *_param,
4517
+ _request_timeout=_request_timeout
4518
+ )
4519
+ response_data.read()
4520
+ return self.api_client.response_deserialize(
4521
+ response_data=response_data,
4522
+ response_types_map=_response_types_map,
4523
+ )
4524
+
4525
+
4526
+ @validate_call
4527
+ def post_sales_funnel_products_history_without_preload_content(
4528
+ self,
4529
+ product_history_request: ProductHistoryRequest,
4530
+ _request_timeout: Union[
4531
+ None,
4532
+ Annotated[StrictFloat, Field(gt=0)],
4533
+ Tuple[
4534
+ Annotated[StrictFloat, Field(gt=0)],
4535
+ Annotated[StrictFloat, Field(gt=0)]
4536
+ ]
4537
+ ] = None,
4538
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
4539
+ _content_type: Optional[StrictStr] = None,
4540
+ _headers: Optional[Dict[StrictStr, Any]] = None,
4541
+ _host_index: Annotated[StrictInt, Field(ge=0, le=1)] = 0,
4542
+ ) -> RESTResponseType:
4543
+ """Статистика карточек товаров по дням
4544
+
4545
+ Метод возвращает статистику карточек товаров по дням или неделям. Доступны данные по добавлениям в корзину, заказам, переходам в карточку товара и так далее. Можно получить данные максимум за последнюю неделю. <div class=\"description_important\"> Чтобы получать отчёты за период до года, используйте методы <a href=\"/openapi/analytics#tag/Analitika-prodavca-CSV\">Аналитика продавца CSV</a>. Эти методы доступны только с подпиской на <a href='https://seller.wildberries.ru/monetization/jam'>расширенную аналитику Джем</a> </div> <div class=\"description_limit\"> <a href=\"/openapi/api-information#tag/Vvedenie/Limity-zaprosov\">Лимит запросов</a> на один аккаунт продавца: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 минута | 3 запроса | 20 секунд | 3 запроса | </div>
4546
+
4547
+ :param product_history_request: (required)
4548
+ :type product_history_request: ProductHistoryRequest
4549
+ :param _request_timeout: timeout setting for this request. If one
4550
+ number provided, it will be total request
4551
+ timeout. It can also be a pair (tuple) of
4552
+ (connection, read) timeouts.
4553
+ :type _request_timeout: int, tuple(int, int), optional
4554
+ :param _request_auth: set to override the auth_settings for an a single
4555
+ request; this effectively ignores the
4556
+ authentication in the spec for a single request.
4557
+ :type _request_auth: dict, optional
4558
+ :param _content_type: force content-type for the request.
4559
+ :type _content_type: str, Optional
4560
+ :param _headers: set to override the headers for a single
4561
+ request; this effectively ignores the headers
4562
+ in the spec for a single request.
4563
+ :type _headers: dict, optional
4564
+ :param _host_index: set to override the host_index for a single
4565
+ request; this effectively ignores the host_index
4566
+ in the spec for a single request.
4567
+ :type _host_index: int, optional
4568
+ :return: Returns the result object.
4569
+ """ # noqa: E501
4570
+
4571
+ _param = self._post_sales_funnel_products_history_serialize(
4572
+ product_history_request=product_history_request,
4573
+ _request_auth=_request_auth,
4574
+ _content_type=_content_type,
4575
+ _headers=_headers,
4576
+ _host_index=_host_index
4577
+ )
4578
+
4579
+ _response_types_map: Dict[str, Optional[str]] = {
4580
+ '200': "List[ProductHistoryResponseInner]",
4581
+ '400': "ErrorObject",
4582
+ '401': "PostSalesFunnelProducts401Response",
4583
+ '403': "ErrorObject",
4584
+ '429': "PostSalesFunnelProducts401Response",
4585
+ }
4586
+ response_data = self.api_client.call_api(
4587
+ *_param,
4588
+ _request_timeout=_request_timeout
4589
+ )
4590
+ return response_data.response
4591
+
4592
+
4593
+ def _post_sales_funnel_products_history_serialize(
4594
+ self,
4595
+ product_history_request,
4596
+ _request_auth,
4597
+ _content_type,
4598
+ _headers,
4599
+ _host_index,
4600
+ ) -> RequestSerialized:
4601
+
4602
+ _hosts = [
4603
+ 'https://seller-analytics-api.wildberries.ru'
4604
+ ]
4605
+ _host = _hosts[_host_index]
4606
+
4607
+ _collection_formats: Dict[str, str] = {
4608
+ }
4609
+
4610
+ _path_params: Dict[str, str] = {}
4611
+ _query_params: List[Tuple[str, str]] = []
4612
+ _header_params: Dict[str, Optional[str]] = _headers or {}
4613
+ _form_params: List[Tuple[str, str]] = []
4614
+ _files: Dict[
4615
+ str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
4616
+ ] = {}
4617
+ _body_params: Optional[bytes] = None
4618
+
4619
+ # process the path parameters
4620
+ # process the query parameters
4621
+ # process the header parameters
4622
+ # process the form parameters
4623
+ # process the body parameter
4624
+ if product_history_request is not None:
4625
+ _body_params = product_history_request
4626
+
4627
+
4628
+ # set the HTTP header `Accept`
4629
+ if 'Accept' not in _header_params:
4630
+ _header_params['Accept'] = self.api_client.select_header_accept(
4631
+ [
4632
+ 'application/json'
4633
+ ]
4634
+ )
4635
+
4636
+ # set the HTTP header `Content-Type`
4637
+ if _content_type:
4638
+ _header_params['Content-Type'] = _content_type
4639
+ else:
4640
+ _default_content_type = (
4641
+ self.api_client.select_header_content_type(
4642
+ [
4643
+ 'application/json'
4644
+ ]
4645
+ )
4646
+ )
4647
+ if _default_content_type is not None:
4648
+ _header_params['Content-Type'] = _default_content_type
4649
+
4650
+ # authentication setting
4651
+ _auth_settings: List[str] = [
4652
+ 'HeaderApiKey'
4653
+ ]
4654
+
4655
+ return self.api_client.param_serialize(
4656
+ method='POST',
4657
+ resource_path='/api/analytics/v3/sales-funnel/products/history',
4658
+ path_params=_path_params,
4659
+ query_params=_query_params,
4660
+ header_params=_header_params,
4661
+ body=_body_params,
4662
+ post_params=_form_params,
4663
+ files=_files,
4664
+ auth_settings=_auth_settings,
4665
+ collection_formats=_collection_formats,
4666
+ _host=_host,
4667
+ _request_auth=_request_auth
4668
+ )
4669
+
4670
+