wbapi-async 1.0.2__tar.gz → 1.0.3__tar.gz
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.
- {wbapi_async-1.0.2 → wbapi_async-1.0.3}/PKG-INFO +5 -15
- {wbapi_async-1.0.2 → wbapi_async-1.0.3}/README.md +4 -14
- {wbapi_async-1.0.2 → wbapi_async-1.0.3}/pyproject.toml +1 -1
- {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/analytics/__init__.py +248 -12
- {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/analytics/methods.py +122 -8
- {wbapi_async-1.0.2 → wbapi_async-1.0.3}/.gitignore +0 -0
- {wbapi_async-1.0.2 → wbapi_async-1.0.3}/LICENSE +0 -0
- {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/__init__.py +0 -0
- {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/analytics/models.py +0 -0
- {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/client/__init__.py +0 -0
- {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/client/api.py +0 -0
- {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/client/method.py +0 -0
- {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/client/model.py +0 -0
- {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/client/session.py +0 -0
- {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/communications/__init__.py +0 -0
- {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/communications/methods.py +0 -0
- {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/communications/models.py +0 -0
- {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/exceptions.py +0 -0
- {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/finances/__init__.py +0 -0
- {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/finances/methods.py +0 -0
- {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/finances/models.py +0 -0
- {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/general/__init__.py +0 -0
- {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/general/methods.py +0 -0
- {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/general/models.py +0 -0
- {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/in_store_pickup/__init__.py +0 -0
- {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/in_store_pickup/methods.py +0 -0
- {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/in_store_pickup/models.py +0 -0
- {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/items/__init__.py +0 -0
- {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/items/methods.py +0 -0
- {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/items/models.py +0 -0
- {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/orders_dbs/__init__.py +0 -0
- {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/orders_dbs/methods.py +0 -0
- {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/orders_dbs/models.py +0 -0
- {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/orders_dbw/__init__.py +0 -0
- {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/orders_dbw/methods.py +0 -0
- {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/orders_dbw/models.py +0 -0
- {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/orders_fbs/__init__.py +0 -0
- {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/orders_fbs/methods.py +0 -0
- {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/orders_fbs/models.py +0 -0
- {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/orders_fbw/__init__.py +0 -0
- {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/orders_fbw/methods.py +0 -0
- {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/orders_fbw/models.py +0 -0
- {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/promotion/__init__.py +0 -0
- {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/promotion/methods.py +0 -0
- {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/promotion/models.py +0 -0
- {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/py.typed +0 -0
- {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/rates/__init__.py +0 -0
- {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/rates/methods.py +0 -0
- {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/rates/models.py +0 -0
- {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/reports/__init__.py +0 -0
- {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/reports/methods.py +0 -0
- {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/reports/models.py +0 -0
- {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/utils/__init__.py +0 -0
- {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/utils/token.py +0 -0
- {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/wbd/__init__.py +0 -0
- {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/wbd/methods.py +0 -0
- {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/wbd/models.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: wbapi-async
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.3
|
|
4
4
|
Summary: Fast, lightweight async client for the Wildberries Seller API
|
|
5
5
|
Project-URL: Documentation, https://github.com/serdukow/wbapi-async#readme
|
|
6
6
|
Project-URL: Repository, https://github.com/serdukow/wbapi-async
|
|
@@ -66,16 +66,6 @@ Description-Content-Type: text/markdown
|
|
|
66
66
|
|
|
67
67
|
</div>
|
|
68
68
|
|
|
69
|
-
308 сгенерированных методов с автоматической пагинацией и понятными
|
|
70
|
-
именами:
|
|
71
|
-
|
|
72
|
-
| OpenAPI Generator | wbapi |
|
|
73
|
-
| --------------------------------------- | --------------------------------- |
|
|
74
|
-
| `api_v3_supplies_post()` | `api.orders_fbs.create_supply()` |
|
|
75
|
-
| `api_v3_orders_new_get()` | `api.orders_fbs.get_orders_new()` |
|
|
76
|
-
| `api_v3_orders_order_id_cancel_patch()` | `api.orders_fbs.cancel_order()` |
|
|
77
|
-
| `content_v2_get_cards_list_post()` | `api.items.get_cards_list()` |
|
|
78
|
-
|
|
79
69
|
## Установка
|
|
80
70
|
|
|
81
71
|
Требуется Python 3.10+.
|
|
@@ -105,7 +95,7 @@ async def main():
|
|
|
105
95
|
asyncio.run(main())
|
|
106
96
|
```
|
|
107
97
|
|
|
108
|
-
###
|
|
98
|
+
### Поставка FBS
|
|
109
99
|
|
|
110
100
|
```python
|
|
111
101
|
import asyncio
|
|
@@ -125,7 +115,7 @@ async def main():
|
|
|
125
115
|
print(f"Добавлено {len(order_ids)} новых сборочных заданий")
|
|
126
116
|
|
|
127
117
|
await api.orders_fbs.update_supplies_deliver(supply_id=supply.id)
|
|
128
|
-
print(f"
|
|
118
|
+
print(f"Поставка {supply.id} передана в доставку")
|
|
129
119
|
|
|
130
120
|
|
|
131
121
|
asyncio.run(main())
|
|
@@ -153,7 +143,7 @@ async def main():
|
|
|
153
143
|
asyncio.run(main())
|
|
154
144
|
```
|
|
155
145
|
|
|
156
|
-
На больших выборках
|
|
146
|
+
На больших выборках используйте `iter_*` методы:
|
|
157
147
|
|
|
158
148
|
```python
|
|
159
149
|
import asyncio
|
|
@@ -195,7 +185,7 @@ async def main():
|
|
|
195
185
|
except WBRateLimitError as error:
|
|
196
186
|
print(f"Превышен лимит, повтор через {error.retry_after} с")
|
|
197
187
|
except WBAPIError as error:
|
|
198
|
-
print(f"
|
|
188
|
+
print(f"{error.status_code}: {error}")
|
|
199
189
|
|
|
200
190
|
|
|
201
191
|
asyncio.run(main())
|
|
@@ -18,16 +18,6 @@
|
|
|
18
18
|
|
|
19
19
|
</div>
|
|
20
20
|
|
|
21
|
-
308 сгенерированных методов с автоматической пагинацией и понятными
|
|
22
|
-
именами:
|
|
23
|
-
|
|
24
|
-
| OpenAPI Generator | wbapi |
|
|
25
|
-
| --------------------------------------- | --------------------------------- |
|
|
26
|
-
| `api_v3_supplies_post()` | `api.orders_fbs.create_supply()` |
|
|
27
|
-
| `api_v3_orders_new_get()` | `api.orders_fbs.get_orders_new()` |
|
|
28
|
-
| `api_v3_orders_order_id_cancel_patch()` | `api.orders_fbs.cancel_order()` |
|
|
29
|
-
| `content_v2_get_cards_list_post()` | `api.items.get_cards_list()` |
|
|
30
|
-
|
|
31
21
|
## Установка
|
|
32
22
|
|
|
33
23
|
Требуется Python 3.10+.
|
|
@@ -57,7 +47,7 @@ async def main():
|
|
|
57
47
|
asyncio.run(main())
|
|
58
48
|
```
|
|
59
49
|
|
|
60
|
-
###
|
|
50
|
+
### Поставка FBS
|
|
61
51
|
|
|
62
52
|
```python
|
|
63
53
|
import asyncio
|
|
@@ -77,7 +67,7 @@ async def main():
|
|
|
77
67
|
print(f"Добавлено {len(order_ids)} новых сборочных заданий")
|
|
78
68
|
|
|
79
69
|
await api.orders_fbs.update_supplies_deliver(supply_id=supply.id)
|
|
80
|
-
print(f"
|
|
70
|
+
print(f"Поставка {supply.id} передана в доставку")
|
|
81
71
|
|
|
82
72
|
|
|
83
73
|
asyncio.run(main())
|
|
@@ -105,7 +95,7 @@ async def main():
|
|
|
105
95
|
asyncio.run(main())
|
|
106
96
|
```
|
|
107
97
|
|
|
108
|
-
На больших выборках
|
|
98
|
+
На больших выборках используйте `iter_*` методы:
|
|
109
99
|
|
|
110
100
|
```python
|
|
111
101
|
import asyncio
|
|
@@ -147,7 +137,7 @@ async def main():
|
|
|
147
137
|
except WBRateLimitError as error:
|
|
148
138
|
print(f"Превышен лимит, повтор через {error.retry_after} с")
|
|
149
139
|
except WBAPIError as error:
|
|
150
|
-
print(f"
|
|
140
|
+
print(f"{error.status_code}: {error}")
|
|
151
141
|
|
|
152
142
|
|
|
153
143
|
asyncio.run(main())
|
|
@@ -59,8 +59,10 @@ from .models import (
|
|
|
59
59
|
PastPeriod,
|
|
60
60
|
PastPeriodItemRating,
|
|
61
61
|
Period,
|
|
62
|
+
PeriodInv,
|
|
62
63
|
PeriodItemRating,
|
|
63
64
|
PeriodOrdersRequest,
|
|
65
|
+
TableOrderBy,
|
|
64
66
|
)
|
|
65
67
|
|
|
66
68
|
|
|
@@ -724,21 +726,255 @@ class Analytics:
|
|
|
724
726
|
).stream(self._api):
|
|
725
727
|
yield item
|
|
726
728
|
|
|
727
|
-
async def get_stocks_report_offices(
|
|
728
|
-
|
|
729
|
-
|
|
729
|
+
async def get_stocks_report_offices(
|
|
730
|
+
self,
|
|
731
|
+
*,
|
|
732
|
+
current_period: PeriodInv,
|
|
733
|
+
skip_deleted_nm: bool,
|
|
734
|
+
stock_type: str,
|
|
735
|
+
brand_names: list[str] | None = None,
|
|
736
|
+
nm_ids: list[int] | None = None,
|
|
737
|
+
subject_ids: list[int] | None = None,
|
|
738
|
+
tag_ids: list[int] | None = None,
|
|
739
|
+
) -> GetStocksReportOfficesResponse:
|
|
740
|
+
"""Данные по складам
|
|
741
|
+
|
|
742
|
+
:param current_period: Период
|
|
743
|
+
:param skip_deleted_nm: Скрыть удалённые товары
|
|
744
|
+
:param stock_type: Тип складов хранения товаров: - `""` — все - `wb` — склады WB - `mp` —
|
|
745
|
+
склады продавца
|
|
746
|
+
:param brand_names: Список брендов для фильтрации
|
|
747
|
+
:param nm_ids: Список артикулов WB для фильтрации
|
|
748
|
+
:param subject_ids: Список ID предметов для фильтрации
|
|
749
|
+
:param tag_ids: Список ID ярлыков для фильтрации
|
|
750
|
+
"""
|
|
751
|
+
return await GetStocksReportOffices(
|
|
752
|
+
current_period=current_period,
|
|
753
|
+
skip_deleted_nm=skip_deleted_nm,
|
|
754
|
+
stock_type=stock_type,
|
|
755
|
+
brand_names=brand_names,
|
|
756
|
+
nm_ids=nm_ids,
|
|
757
|
+
subject_ids=subject_ids,
|
|
758
|
+
tag_ids=tag_ids,
|
|
759
|
+
).emit(self._api)
|
|
760
|
+
|
|
761
|
+
async def get_stocks_report_products(
|
|
762
|
+
self,
|
|
763
|
+
*,
|
|
764
|
+
availability_filters: list[str],
|
|
765
|
+
current_period: PeriodInv,
|
|
766
|
+
offset: int,
|
|
767
|
+
order_by: TableOrderBy,
|
|
768
|
+
skip_deleted_nm: bool,
|
|
769
|
+
stock_type: str,
|
|
770
|
+
brand_name: str | None = None,
|
|
771
|
+
limit: int | None = 100,
|
|
772
|
+
nm_ids: list[int] | None = None,
|
|
773
|
+
subject_id: int | None = None,
|
|
774
|
+
tag_id: int | None = None,
|
|
775
|
+
auto_paginate: bool = False,
|
|
776
|
+
) -> GetStocksReportProductsResponse | list[Any]:
|
|
777
|
+
"""Данные по товарам
|
|
730
778
|
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
779
|
+
:param availability_filters: Доступность товара: - `deficient` — Дефицит - `actual` — Актуальный
|
|
780
|
+
- `balanced` — Баланс - `nonActual` — Неактуальный - `nonLiquid` —
|
|
781
|
+
Неликвид …
|
|
782
|
+
:param current_period: Период
|
|
783
|
+
:param offset: После какого элемента выдавать данные
|
|
784
|
+
:param order_by: Вид сортировки данных
|
|
785
|
+
:param skip_deleted_nm: Скрыть удалённые товары
|
|
786
|
+
:param stock_type: Тип складов хранения товаров: - `""` — все - `wb` — склады WB - `mp` —
|
|
787
|
+
склады продавца
|
|
788
|
+
:param brand_name: Бренд
|
|
789
|
+
:param limit: Количество товаров в ответе
|
|
790
|
+
:param nm_ids: Список артикулов WB для фильтрации
|
|
791
|
+
:param subject_id: ID предмета
|
|
792
|
+
:param tag_id: ID ярлыка
|
|
793
|
+
:param auto_paginate: автоматически собрать все страницы выборки
|
|
794
|
+
"""
|
|
795
|
+
call = GetStocksReportProducts(
|
|
796
|
+
availability_filters=availability_filters,
|
|
797
|
+
current_period=current_period,
|
|
798
|
+
offset=offset,
|
|
799
|
+
order_by=order_by,
|
|
800
|
+
skip_deleted_nm=skip_deleted_nm,
|
|
801
|
+
stock_type=stock_type,
|
|
802
|
+
brand_name=brand_name,
|
|
803
|
+
limit=limit,
|
|
804
|
+
nm_ids=nm_ids,
|
|
805
|
+
subject_id=subject_id,
|
|
806
|
+
tag_id=tag_id,
|
|
807
|
+
)
|
|
808
|
+
return await call.paginate(self._api) if auto_paginate else await call.emit(self._api)
|
|
734
809
|
|
|
735
|
-
async def
|
|
736
|
-
|
|
737
|
-
|
|
810
|
+
async def iter_get_stocks_report_products(
|
|
811
|
+
self,
|
|
812
|
+
*,
|
|
813
|
+
availability_filters: list[str],
|
|
814
|
+
current_period: PeriodInv,
|
|
815
|
+
offset: int,
|
|
816
|
+
order_by: TableOrderBy,
|
|
817
|
+
skip_deleted_nm: bool,
|
|
818
|
+
stock_type: str,
|
|
819
|
+
brand_name: str | None = None,
|
|
820
|
+
limit: int | None = 100,
|
|
821
|
+
nm_ids: list[int] | None = None,
|
|
822
|
+
subject_id: int | None = None,
|
|
823
|
+
tag_id: int | None = None,
|
|
824
|
+
) -> AsyncIterator[Any]:
|
|
825
|
+
"""Данные по товарам — постранично, по одной записи.
|
|
738
826
|
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
827
|
+
:param availability_filters: Доступность товара: - `deficient` — Дефицит - `actual` — Актуальный
|
|
828
|
+
- `balanced` — Баланс - `nonActual` — Неактуальный - `nonLiquid` —
|
|
829
|
+
Неликвид …
|
|
830
|
+
:param current_period: Период
|
|
831
|
+
:param offset: После какого элемента выдавать данные
|
|
832
|
+
:param order_by: Вид сортировки данных
|
|
833
|
+
:param skip_deleted_nm: Скрыть удалённые товары
|
|
834
|
+
:param stock_type: Тип складов хранения товаров: - `""` — все - `wb` — склады WB - `mp` —
|
|
835
|
+
склады продавца
|
|
836
|
+
:param brand_name: Бренд
|
|
837
|
+
:param limit: Количество товаров в ответе
|
|
838
|
+
:param nm_ids: Список артикулов WB для фильтрации
|
|
839
|
+
:param subject_id: ID предмета
|
|
840
|
+
:param tag_id: ID ярлыка
|
|
841
|
+
"""
|
|
842
|
+
async for item in GetStocksReportProducts(
|
|
843
|
+
availability_filters=availability_filters,
|
|
844
|
+
current_period=current_period,
|
|
845
|
+
offset=offset,
|
|
846
|
+
order_by=order_by,
|
|
847
|
+
skip_deleted_nm=skip_deleted_nm,
|
|
848
|
+
stock_type=stock_type,
|
|
849
|
+
brand_name=brand_name,
|
|
850
|
+
limit=limit,
|
|
851
|
+
nm_ids=nm_ids,
|
|
852
|
+
subject_id=subject_id,
|
|
853
|
+
tag_id=tag_id,
|
|
854
|
+
).stream(self._api):
|
|
855
|
+
yield item
|
|
856
|
+
|
|
857
|
+
async def get_stocks_report_products_groups(
|
|
858
|
+
self,
|
|
859
|
+
*,
|
|
860
|
+
availability_filters: list[str],
|
|
861
|
+
current_period: PeriodInv,
|
|
862
|
+
offset: int,
|
|
863
|
+
order_by: TableOrderBy,
|
|
864
|
+
skip_deleted_nm: bool,
|
|
865
|
+
stock_type: str,
|
|
866
|
+
brand_names: list[str] | None = None,
|
|
867
|
+
limit: int | None = 100,
|
|
868
|
+
nm_ids: list[int] | None = None,
|
|
869
|
+
subject_ids: list[int] | None = None,
|
|
870
|
+
tag_ids: list[int] | None = None,
|
|
871
|
+
auto_paginate: bool = False,
|
|
872
|
+
) -> GetStocksReportProductsGroupsResponse | list[Any]:
|
|
873
|
+
"""Данные по группам
|
|
874
|
+
|
|
875
|
+
:param availability_filters: Доступность товара: - `deficient` — Дефицит - `actual` — Актуальный
|
|
876
|
+
- `balanced` — Баланс - `nonActual` — Неактуальный - `nonLiquid` —
|
|
877
|
+
Неликвид …
|
|
878
|
+
:param current_period: Период
|
|
879
|
+
:param offset: После какого элемента выдавать данные
|
|
880
|
+
:param order_by: Вид сортировки данных
|
|
881
|
+
:param skip_deleted_nm: Скрыть удалённые товары
|
|
882
|
+
:param stock_type: Тип складов хранения товаров: - `""` — все - `wb` — склады WB - `mp` —
|
|
883
|
+
склады продавца
|
|
884
|
+
:param brand_names: Список брендов для фильтрации
|
|
885
|
+
:param limit: Количество групп в ответе
|
|
886
|
+
:param nm_ids: Список артикулов WB для фильтрации
|
|
887
|
+
:param subject_ids: Список ID предметов для фильтрации
|
|
888
|
+
:param tag_ids: Список ID ярлыков для фильтрации
|
|
889
|
+
:param auto_paginate: автоматически собрать все страницы выборки
|
|
890
|
+
"""
|
|
891
|
+
call = GetStocksReportProductsGroups(
|
|
892
|
+
availability_filters=availability_filters,
|
|
893
|
+
current_period=current_period,
|
|
894
|
+
offset=offset,
|
|
895
|
+
order_by=order_by,
|
|
896
|
+
skip_deleted_nm=skip_deleted_nm,
|
|
897
|
+
stock_type=stock_type,
|
|
898
|
+
brand_names=brand_names,
|
|
899
|
+
limit=limit,
|
|
900
|
+
nm_ids=nm_ids,
|
|
901
|
+
subject_ids=subject_ids,
|
|
902
|
+
tag_ids=tag_ids,
|
|
903
|
+
)
|
|
904
|
+
return await call.paginate(self._api) if auto_paginate else await call.emit(self._api)
|
|
905
|
+
|
|
906
|
+
async def iter_get_stocks_report_products_groups(
|
|
907
|
+
self,
|
|
908
|
+
*,
|
|
909
|
+
availability_filters: list[str],
|
|
910
|
+
current_period: PeriodInv,
|
|
911
|
+
offset: int,
|
|
912
|
+
order_by: TableOrderBy,
|
|
913
|
+
skip_deleted_nm: bool,
|
|
914
|
+
stock_type: str,
|
|
915
|
+
brand_names: list[str] | None = None,
|
|
916
|
+
limit: int | None = 100,
|
|
917
|
+
nm_ids: list[int] | None = None,
|
|
918
|
+
subject_ids: list[int] | None = None,
|
|
919
|
+
tag_ids: list[int] | None = None,
|
|
920
|
+
) -> AsyncIterator[Any]:
|
|
921
|
+
"""Данные по группам — постранично, по одной записи.
|
|
922
|
+
|
|
923
|
+
:param availability_filters: Доступность товара: - `deficient` — Дефицит - `actual` — Актуальный
|
|
924
|
+
- `balanced` — Баланс - `nonActual` — Неактуальный - `nonLiquid` —
|
|
925
|
+
Неликвид …
|
|
926
|
+
:param current_period: Период
|
|
927
|
+
:param offset: После какого элемента выдавать данные
|
|
928
|
+
:param order_by: Вид сортировки данных
|
|
929
|
+
:param skip_deleted_nm: Скрыть удалённые товары
|
|
930
|
+
:param stock_type: Тип складов хранения товаров: - `""` — все - `wb` — склады WB - `mp` —
|
|
931
|
+
склады продавца
|
|
932
|
+
:param brand_names: Список брендов для фильтрации
|
|
933
|
+
:param limit: Количество групп в ответе
|
|
934
|
+
:param nm_ids: Список артикулов WB для фильтрации
|
|
935
|
+
:param subject_ids: Список ID предметов для фильтрации
|
|
936
|
+
:param tag_ids: Список ID ярлыков для фильтрации
|
|
937
|
+
"""
|
|
938
|
+
async for item in GetStocksReportProductsGroups(
|
|
939
|
+
availability_filters=availability_filters,
|
|
940
|
+
current_period=current_period,
|
|
941
|
+
offset=offset,
|
|
942
|
+
order_by=order_by,
|
|
943
|
+
skip_deleted_nm=skip_deleted_nm,
|
|
944
|
+
stock_type=stock_type,
|
|
945
|
+
brand_names=brand_names,
|
|
946
|
+
limit=limit,
|
|
947
|
+
nm_ids=nm_ids,
|
|
948
|
+
subject_ids=subject_ids,
|
|
949
|
+
tag_ids=tag_ids,
|
|
950
|
+
).stream(self._api):
|
|
951
|
+
yield item
|
|
952
|
+
|
|
953
|
+
async def get_stocks_report_products_sizes(
|
|
954
|
+
self,
|
|
955
|
+
*,
|
|
956
|
+
current_period: PeriodInv,
|
|
957
|
+
include_office: bool,
|
|
958
|
+
nm_id: int,
|
|
959
|
+
order_by: TableOrderBy,
|
|
960
|
+
stock_type: str,
|
|
961
|
+
) -> GetStocksReportProductsSizesResponse:
|
|
962
|
+
"""Данные по размерам
|
|
963
|
+
|
|
964
|
+
:param current_period: Период
|
|
965
|
+
:param include_office: Включить детализацию по складам
|
|
966
|
+
:param nm_id: Артикул WB
|
|
967
|
+
:param order_by: Вид сортировки данных
|
|
968
|
+
:param stock_type: Тип складов хранения товаров: - `""` — все - `wb` — склады WB - `mp` —
|
|
969
|
+
склады продавца
|
|
970
|
+
"""
|
|
971
|
+
return await GetStocksReportProductsSizes(
|
|
972
|
+
current_period=current_period,
|
|
973
|
+
include_office=include_office,
|
|
974
|
+
nm_id=nm_id,
|
|
975
|
+
order_by=order_by,
|
|
976
|
+
stock_type=stock_type,
|
|
977
|
+
).emit(self._api)
|
|
742
978
|
|
|
743
979
|
async def get_stocks_report_wb_warehouses(
|
|
744
980
|
self,
|
|
@@ -24,13 +24,9 @@ from .models import (
|
|
|
24
24
|
GetSearchReportResponse,
|
|
25
25
|
GetSearchReportTableDetailsResponse,
|
|
26
26
|
GetSearchReportTableGroupsResponse,
|
|
27
|
-
GetStocksReportOfficesBody,
|
|
28
27
|
GetStocksReportOfficesResponse,
|
|
29
|
-
GetStocksReportProductsBody,
|
|
30
|
-
GetStocksReportProductsGroupsBody,
|
|
31
28
|
GetStocksReportProductsGroupsResponse,
|
|
32
29
|
GetStocksReportProductsResponse,
|
|
33
|
-
GetStocksReportProductsSizesBody,
|
|
34
30
|
GetStocksReportProductsSizesResponse,
|
|
35
31
|
GetStocksReportWbWarehousesResponse,
|
|
36
32
|
NmReportCreateReportResponse,
|
|
@@ -43,9 +39,11 @@ from .models import (
|
|
|
43
39
|
PastPeriod,
|
|
44
40
|
PastPeriodItemRating,
|
|
45
41
|
Period,
|
|
42
|
+
PeriodInv,
|
|
46
43
|
PeriodItemRating,
|
|
47
44
|
PeriodOrdersRequest,
|
|
48
45
|
SalesFunnelItemReq,
|
|
46
|
+
TableOrderBy,
|
|
49
47
|
)
|
|
50
48
|
|
|
51
49
|
|
|
@@ -649,8 +647,31 @@ class GetStocksReportOffices(WBMethod[GetStocksReportOfficesResponse]):
|
|
|
649
647
|
"basic": (1800000, 1),
|
|
650
648
|
}
|
|
651
649
|
__items__ = "data"
|
|
650
|
+
__body_fields__ = {
|
|
651
|
+
"nm_ids": "nmIDs",
|
|
652
|
+
"subject_ids": "subjectIDs",
|
|
653
|
+
"brand_names": "brandNames",
|
|
654
|
+
"tag_ids": "tagIDs",
|
|
655
|
+
"current_period": "currentPeriod",
|
|
656
|
+
"stock_type": "stockType",
|
|
657
|
+
"skip_deleted_nm": "skipDeletedNm",
|
|
658
|
+
}
|
|
652
659
|
|
|
653
|
-
|
|
660
|
+
current_period: PeriodInv
|
|
661
|
+
"""Период"""
|
|
662
|
+
skip_deleted_nm: bool
|
|
663
|
+
"""Скрыть удалённые товары"""
|
|
664
|
+
stock_type: str
|
|
665
|
+
"""Тип складов хранения товаров: - `""` — все - `wb` — склады WB - `mp` — склады продавца
|
|
666
|
+
"""
|
|
667
|
+
brand_names: list[str] | None = None
|
|
668
|
+
"""Список брендов для фильтрации"""
|
|
669
|
+
nm_ids: list[int] | None = None
|
|
670
|
+
"""Список артикулов WB для фильтрации"""
|
|
671
|
+
subject_ids: list[int] | None = None
|
|
672
|
+
"""Список ID предметов для фильтрации"""
|
|
673
|
+
tag_ids: list[int] | None = None
|
|
674
|
+
"""Список ID ярлыков для фильтрации"""
|
|
654
675
|
|
|
655
676
|
|
|
656
677
|
class GetStocksReportProducts(WBMethod[GetStocksReportProductsResponse]):
|
|
@@ -670,9 +691,47 @@ class GetStocksReportProducts(WBMethod[GetStocksReportProductsResponse]):
|
|
|
670
691
|
"basic_secret": (60000, 3),
|
|
671
692
|
"basic": (1800000, 1),
|
|
672
693
|
}
|
|
694
|
+
__paginate__ = "offset_body"
|
|
673
695
|
__items__ = "data"
|
|
696
|
+
__body_fields__ = {
|
|
697
|
+
"nm_ids": "nmIDs",
|
|
698
|
+
"subject_id": "subjectID",
|
|
699
|
+
"brand_name": "brandName",
|
|
700
|
+
"tag_id": "tagID",
|
|
701
|
+
"current_period": "currentPeriod",
|
|
702
|
+
"stock_type": "stockType",
|
|
703
|
+
"skip_deleted_nm": "skipDeletedNm",
|
|
704
|
+
"order_by": "orderBy",
|
|
705
|
+
"availability_filters": "availabilityFilters",
|
|
706
|
+
"limit": "limit",
|
|
707
|
+
"offset": "offset",
|
|
708
|
+
}
|
|
674
709
|
|
|
675
|
-
|
|
710
|
+
availability_filters: list[str]
|
|
711
|
+
"""Доступность товара: - `deficient` — Дефицит - `actual` — Актуальный - `balanced` —
|
|
712
|
+
Баланс - `nonActual` — Неактуальный - `nonLiquid` — Неликвид …
|
|
713
|
+
"""
|
|
714
|
+
current_period: PeriodInv
|
|
715
|
+
"""Период"""
|
|
716
|
+
offset: int
|
|
717
|
+
"""После какого элемента выдавать данные"""
|
|
718
|
+
order_by: TableOrderBy
|
|
719
|
+
"""Вид сортировки данных"""
|
|
720
|
+
skip_deleted_nm: bool
|
|
721
|
+
"""Скрыть удалённые товары"""
|
|
722
|
+
stock_type: str
|
|
723
|
+
"""Тип складов хранения товаров: - `""` — все - `wb` — склады WB - `mp` — склады продавца
|
|
724
|
+
"""
|
|
725
|
+
brand_name: str | None = None
|
|
726
|
+
"""Бренд"""
|
|
727
|
+
limit: int | None = 100
|
|
728
|
+
"""Количество товаров в ответе"""
|
|
729
|
+
nm_ids: list[int] | None = None
|
|
730
|
+
"""Список артикулов WB для фильтрации"""
|
|
731
|
+
subject_id: int | None = None
|
|
732
|
+
"""ID предмета"""
|
|
733
|
+
tag_id: int | None = None
|
|
734
|
+
"""ID ярлыка"""
|
|
676
735
|
|
|
677
736
|
|
|
678
737
|
class GetStocksReportProductsGroups(WBMethod[GetStocksReportProductsGroupsResponse]):
|
|
@@ -692,9 +751,47 @@ class GetStocksReportProductsGroups(WBMethod[GetStocksReportProductsGroupsRespon
|
|
|
692
751
|
"basic_secret": (60000, 3),
|
|
693
752
|
"basic": (1800000, 1),
|
|
694
753
|
}
|
|
754
|
+
__paginate__ = "offset_body"
|
|
695
755
|
__items__ = "data"
|
|
756
|
+
__body_fields__ = {
|
|
757
|
+
"nm_ids": "nmIDs",
|
|
758
|
+
"subject_ids": "subjectIDs",
|
|
759
|
+
"brand_names": "brandNames",
|
|
760
|
+
"tag_ids": "tagIDs",
|
|
761
|
+
"current_period": "currentPeriod",
|
|
762
|
+
"stock_type": "stockType",
|
|
763
|
+
"skip_deleted_nm": "skipDeletedNm",
|
|
764
|
+
"availability_filters": "availabilityFilters",
|
|
765
|
+
"order_by": "orderBy",
|
|
766
|
+
"limit": "limit",
|
|
767
|
+
"offset": "offset",
|
|
768
|
+
}
|
|
696
769
|
|
|
697
|
-
|
|
770
|
+
availability_filters: list[str]
|
|
771
|
+
"""Доступность товара: - `deficient` — Дефицит - `actual` — Актуальный - `balanced` —
|
|
772
|
+
Баланс - `nonActual` — Неактуальный - `nonLiquid` — Неликвид …
|
|
773
|
+
"""
|
|
774
|
+
current_period: PeriodInv
|
|
775
|
+
"""Период"""
|
|
776
|
+
offset: int
|
|
777
|
+
"""После какого элемента выдавать данные"""
|
|
778
|
+
order_by: TableOrderBy
|
|
779
|
+
"""Вид сортировки данных"""
|
|
780
|
+
skip_deleted_nm: bool
|
|
781
|
+
"""Скрыть удалённые товары"""
|
|
782
|
+
stock_type: str
|
|
783
|
+
"""Тип складов хранения товаров: - `""` — все - `wb` — склады WB - `mp` — склады продавца
|
|
784
|
+
"""
|
|
785
|
+
brand_names: list[str] | None = None
|
|
786
|
+
"""Список брендов для фильтрации"""
|
|
787
|
+
limit: int | None = 100
|
|
788
|
+
"""Количество групп в ответе"""
|
|
789
|
+
nm_ids: list[int] | None = None
|
|
790
|
+
"""Список артикулов WB для фильтрации"""
|
|
791
|
+
subject_ids: list[int] | None = None
|
|
792
|
+
"""Список ID предметов для фильтрации"""
|
|
793
|
+
tag_ids: list[int] | None = None
|
|
794
|
+
"""Список ID ярлыков для фильтрации"""
|
|
698
795
|
|
|
699
796
|
|
|
700
797
|
class GetStocksReportProductsSizes(WBMethod[GetStocksReportProductsSizesResponse]):
|
|
@@ -715,8 +812,25 @@ class GetStocksReportProductsSizes(WBMethod[GetStocksReportProductsSizesResponse
|
|
|
715
812
|
"basic": (1800000, 1),
|
|
716
813
|
}
|
|
717
814
|
__items__ = "data"
|
|
815
|
+
__body_fields__ = {
|
|
816
|
+
"nm_id": "nmID",
|
|
817
|
+
"current_period": "currentPeriod",
|
|
818
|
+
"stock_type": "stockType",
|
|
819
|
+
"order_by": "orderBy",
|
|
820
|
+
"include_office": "includeOffice",
|
|
821
|
+
}
|
|
718
822
|
|
|
719
|
-
|
|
823
|
+
current_period: PeriodInv
|
|
824
|
+
"""Период"""
|
|
825
|
+
include_office: bool
|
|
826
|
+
"""Включить детализацию по складам"""
|
|
827
|
+
nm_id: int
|
|
828
|
+
"""Артикул WB"""
|
|
829
|
+
order_by: TableOrderBy
|
|
830
|
+
"""Вид сортировки данных"""
|
|
831
|
+
stock_type: str
|
|
832
|
+
"""Тип складов хранения товаров: - `""` — все - `wb` — склады WB - `mp` — склады продавца
|
|
833
|
+
"""
|
|
720
834
|
|
|
721
835
|
|
|
722
836
|
class GetStocksReportWbWarehouses(WBMethod[GetStocksReportWbWarehousesResponse]):
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|