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.
Files changed (57) hide show
  1. {wbapi_async-1.0.2 → wbapi_async-1.0.3}/PKG-INFO +5 -15
  2. {wbapi_async-1.0.2 → wbapi_async-1.0.3}/README.md +4 -14
  3. {wbapi_async-1.0.2 → wbapi_async-1.0.3}/pyproject.toml +1 -1
  4. {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/analytics/__init__.py +248 -12
  5. {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/analytics/methods.py +122 -8
  6. {wbapi_async-1.0.2 → wbapi_async-1.0.3}/.gitignore +0 -0
  7. {wbapi_async-1.0.2 → wbapi_async-1.0.3}/LICENSE +0 -0
  8. {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/__init__.py +0 -0
  9. {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/analytics/models.py +0 -0
  10. {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/client/__init__.py +0 -0
  11. {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/client/api.py +0 -0
  12. {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/client/method.py +0 -0
  13. {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/client/model.py +0 -0
  14. {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/client/session.py +0 -0
  15. {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/communications/__init__.py +0 -0
  16. {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/communications/methods.py +0 -0
  17. {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/communications/models.py +0 -0
  18. {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/exceptions.py +0 -0
  19. {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/finances/__init__.py +0 -0
  20. {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/finances/methods.py +0 -0
  21. {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/finances/models.py +0 -0
  22. {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/general/__init__.py +0 -0
  23. {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/general/methods.py +0 -0
  24. {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/general/models.py +0 -0
  25. {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/in_store_pickup/__init__.py +0 -0
  26. {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/in_store_pickup/methods.py +0 -0
  27. {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/in_store_pickup/models.py +0 -0
  28. {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/items/__init__.py +0 -0
  29. {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/items/methods.py +0 -0
  30. {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/items/models.py +0 -0
  31. {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/orders_dbs/__init__.py +0 -0
  32. {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/orders_dbs/methods.py +0 -0
  33. {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/orders_dbs/models.py +0 -0
  34. {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/orders_dbw/__init__.py +0 -0
  35. {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/orders_dbw/methods.py +0 -0
  36. {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/orders_dbw/models.py +0 -0
  37. {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/orders_fbs/__init__.py +0 -0
  38. {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/orders_fbs/methods.py +0 -0
  39. {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/orders_fbs/models.py +0 -0
  40. {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/orders_fbw/__init__.py +0 -0
  41. {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/orders_fbw/methods.py +0 -0
  42. {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/orders_fbw/models.py +0 -0
  43. {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/promotion/__init__.py +0 -0
  44. {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/promotion/methods.py +0 -0
  45. {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/promotion/models.py +0 -0
  46. {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/py.typed +0 -0
  47. {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/rates/__init__.py +0 -0
  48. {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/rates/methods.py +0 -0
  49. {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/rates/models.py +0 -0
  50. {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/reports/__init__.py +0 -0
  51. {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/reports/methods.py +0 -0
  52. {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/reports/models.py +0 -0
  53. {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/utils/__init__.py +0 -0
  54. {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/utils/token.py +0 -0
  55. {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/wbd/__init__.py +0 -0
  56. {wbapi_async-1.0.2 → wbapi_async-1.0.3}/src/wbapi/wbd/methods.py +0 -0
  57. {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.2
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
- ### End-to-end поставка FBS
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"Передана {supply.id} в доставку")
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
- На больших выборках лучше `iter_*` методы:
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"WB вернул {error.status_code}: {error}")
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
- ### End-to-end поставка FBS
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"Передана {supply.id} в доставку")
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
- На больших выборках лучше `iter_*` методы:
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"WB вернул {error.status_code}: {error}")
140
+ print(f"{error.status_code}: {error}")
151
141
 
152
142
 
153
143
  asyncio.run(main())
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "wbapi-async"
7
- version = "1.0.2"
7
+ version = "1.0.3"
8
8
  description = "Fast, lightweight async client for the Wildberries Seller API"
9
9
 
10
10
  authors = [
@@ -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(self, *, body: Any) -> GetStocksReportOfficesResponse:
728
- """Данные по складам"""
729
- return await GetStocksReportOffices(body=body).emit(self._api)
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
- async def get_stocks_report_products(self, *, body: Any) -> GetStocksReportProductsResponse:
732
- """Данные по товарам"""
733
- return await GetStocksReportProducts(body=body).emit(self._api)
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 get_stocks_report_products_groups(self, *, body: Any) -> GetStocksReportProductsGroupsResponse:
736
- """Данные по группам"""
737
- return await GetStocksReportProductsGroups(body=body).emit(self._api)
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
- async def get_stocks_report_products_sizes(self, *, body: Any) -> GetStocksReportProductsSizesResponse:
740
- """Данные по размерам"""
741
- return await GetStocksReportProductsSizes(body=body).emit(self._api)
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
- body: GetStocksReportOfficesBody | list[Any] | dict[str, Any]
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
- body: GetStocksReportProductsBody | list[Any] | dict[str, Any]
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
- body: GetStocksReportProductsGroupsBody | list[Any] | dict[str, Any]
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
- body: GetStocksReportProductsSizesBody | list[Any] | dict[str, Any]
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