ozonapi-async 0.5.0__tar.gz → 0.7.0__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 (102) hide show
  1. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/PKG-INFO +4 -4
  2. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/pyproject.toml +1 -1
  3. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/readme.md +3 -3
  4. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/__init__.py +1 -1
  5. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/methods/fbs.py +126 -2
  6. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/schemas/fbs/__init__.py +16 -3
  7. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/schemas/fbs/entities/__init__.py +3 -2
  8. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/schemas/fbs/entities/posting__posting.py +2 -2
  9. ozonapi_async-0.5.0/src/ozonapi/seller/schemas/fbs/entities/posting__products.py → ozonapi_async-0.7.0/src/ozonapi/seller/schemas/fbs/entities/posting__product.py +17 -6
  10. ozonapi_async-0.7.0/src/ozonapi/seller/schemas/fbs/v2__fbs_posting_delivering.py +2 -0
  11. ozonapi_async-0.7.0/src/ozonapi/seller/schemas/fbs/v2__posting_fbs_get_by_barcode.py +65 -0
  12. ozonapi_async-0.7.0/src/ozonapi/seller/schemas/fbs/v2__posting_fbs_product_change.py +46 -0
  13. ozonapi_async-0.7.0/src/ozonapi/seller/schemas/fbs/v3__posting_multiboxqty_set.py +40 -0
  14. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi_async.egg-info/PKG-INFO +4 -4
  15. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi_async.egg-info/SOURCES.txt +5 -1
  16. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/LICENSE +0 -0
  17. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/setup.cfg +0 -0
  18. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/__init__.py +0 -0
  19. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/common/__init__.py +0 -0
  20. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/common/enumerations/__init__.py +0 -0
  21. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/common/enumerations/delivery.py +0 -0
  22. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/common/enumerations/localization.py +0 -0
  23. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/common/enumerations/postings.py +0 -0
  24. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/common/enumerations/prices.py +0 -0
  25. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/common/enumerations/products.py +0 -0
  26. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/common/enumerations/requests.py +0 -0
  27. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/common/enumerations/warehouses.py +0 -0
  28. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/core/__init__.py +0 -0
  29. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/core/config.py +0 -0
  30. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/core/core.py +0 -0
  31. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/core/exceptions.py +0 -0
  32. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/core/method_rate_limiter.py +0 -0
  33. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/core/rate_limiter.py +0 -0
  34. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/core/sessions.py +0 -0
  35. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/methods/__init__.py +0 -0
  36. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/methods/attributes_and_characteristics.py +0 -0
  37. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/methods/barcodes.py +0 -0
  38. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/methods/beta.py +0 -0
  39. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/methods/prices_and_stocks.py +0 -0
  40. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/methods/products.py +0 -0
  41. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/methods/warehouses.py +0 -0
  42. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/schemas/__init__.py +0 -0
  43. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/schemas/attributes_and_characteristics/__init__.py +0 -0
  44. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/schemas/attributes_and_characteristics/base.py +0 -0
  45. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/schemas/attributes_and_characteristics/v1__description_category_attribute.py +0 -0
  46. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/schemas/attributes_and_characteristics/v1__description_category_attribute_values.py +0 -0
  47. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/schemas/attributes_and_characteristics/v1__description_category_attribute_values_search.py +0 -0
  48. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/schemas/attributes_and_characteristics/v1__description_category_tree.py +0 -0
  49. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/schemas/barcodes/__init__.py +0 -0
  50. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/schemas/barcodes/v1__barcode_add.py +0 -0
  51. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/schemas/barcodes/v1__barcode_generate.py +0 -0
  52. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/schemas/base.py +0 -0
  53. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/schemas/beta/__init__.py +0 -0
  54. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/schemas/beta/v1__analytics_stocks.py +0 -0
  55. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/schemas/fbs/entities/posting__addressee.py +0 -0
  56. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/schemas/fbs/entities/posting__analytics_data.py +0 -0
  57. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/schemas/fbs/entities/posting__barcodes.py +0 -0
  58. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/schemas/fbs/entities/posting__cancellation.py +0 -0
  59. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/schemas/fbs/entities/posting__customer.py +0 -0
  60. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/schemas/fbs/entities/posting__customer_address.py +0 -0
  61. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/schemas/fbs/entities/posting__delivery_method.py +0 -0
  62. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/schemas/fbs/entities/posting__filter_with.py +0 -0
  63. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/schemas/fbs/entities/posting__financial_data.py +0 -0
  64. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/schemas/fbs/entities/posting__financial_data_products.py +0 -0
  65. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/schemas/fbs/entities/posting__legal_info.py +0 -0
  66. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/schemas/fbs/entities/posting__optional.py +0 -0
  67. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/schemas/fbs/entities/posting__requirements.py +0 -0
  68. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/schemas/fbs/entities/posting__tariffication.py +0 -0
  69. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/schemas/fbs/v3__posting_fbs_get.py +0 -0
  70. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/schemas/fbs/v3__posting_fbs_list.py +0 -0
  71. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/schemas/fbs/v3__posting_fbs_unfulfilled_list.py +0 -0
  72. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/schemas/mixins.py +0 -0
  73. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/schemas/prices_and_stocks/__init__.py +0 -0
  74. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/schemas/prices_and_stocks/base.py +0 -0
  75. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/schemas/prices_and_stocks/v1__product_import_prices.py +0 -0
  76. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/schemas/prices_and_stocks/v1__product_info_stocks_by_warehouse_fbs.py +0 -0
  77. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/schemas/prices_and_stocks/v2__products_stocks.py +0 -0
  78. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/schemas/prices_and_stocks/v4__product_info_stocks.py +0 -0
  79. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/schemas/prices_and_stocks/v5__product_info_prices.py +0 -0
  80. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/schemas/products/__init__.py +0 -0
  81. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/schemas/products/base.py +0 -0
  82. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/schemas/products/v1__product_archive.py +0 -0
  83. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/schemas/products/v1__product_attributes_update.py +0 -0
  84. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/schemas/products/v1__product_import_by_sku.py +0 -0
  85. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/schemas/products/v1__product_import_info.py +0 -0
  86. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/schemas/products/v1__product_info_subscription.py +0 -0
  87. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/schemas/products/v1__product_rating_by_sku.py +0 -0
  88. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/schemas/products/v1__product_related_sku_get.py +0 -0
  89. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/schemas/products/v1__product_unarchive.py +0 -0
  90. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/schemas/products/v1__product_update_offer_id.py +0 -0
  91. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/schemas/products/v2__product_pictures_info.py +0 -0
  92. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/schemas/products/v2__products_delete.py +0 -0
  93. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/schemas/products/v3__product_import.py +0 -0
  94. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/schemas/products/v3__product_info_list.py +0 -0
  95. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/schemas/products/v3__product_list.py +0 -0
  96. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/schemas/products/v4__product_info_attributes.py +0 -0
  97. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/schemas/warehouses/__init__.py +0 -0
  98. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/schemas/warehouses/v1__delivery_method_list.py +0 -0
  99. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi/seller/schemas/warehouses/v1__warehouse_list.py +0 -0
  100. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi_async.egg-info/dependency_links.txt +0 -0
  101. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi_async.egg-info/requires.txt +0 -0
  102. {ozonapi_async-0.5.0 → ozonapi_async-0.7.0}/src/ozonapi_async.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ozonapi-async
3
- Version: 0.5.0
3
+ Version: 0.7.0
4
4
  Summary: Асинхронный клиент для работы с API маркетплейса Ozon
5
5
  Author: Alexander Ulianov
6
6
  License: MIT
@@ -378,9 +378,9 @@ pytest --cov=ozonapi --cov-report=html
378
378
  | ✓ | `/v3/posting/fbs/unfulfilled/list` | Список необработанных отправлений | `posting_fbs_unfulfilled_list()` |
379
379
  | ✓ | `/v3/posting/fbs/list` | Список отправлений | `posting_fbs_list()` |
380
380
  | ✓ | `/v3/posting/fbs/get` | Получить информацию об отправлении по идентификатору | `posting_fbs_get()` |
381
- | | `/v2/posting/fbs/get-by-barcode` | Получить информацию об отправлении по штрихкоду | `posting_fbs_get_by_barcode()` |
382
- | | `/v3/posting/multiboxqty/set` | Указать количество коробок для многокоробочных отправлений | `posting_multiboxqty_set()` |
383
- | | `/v2/posting/fbs/product/change` | Добавить вес для весовых товаров в отправлении | `posting_fbs_product_change()` |
381
+ | | `/v2/posting/fbs/get-by-barcode` | Получить информацию об отправлении по штрихкоду | `posting_fbs_get_by_barcode()` |
382
+ | | `/v3/posting/multiboxqty/set` | Указать количество коробок для многокоробочных отправлений | `posting_multiboxqty_set()` |
383
+ | | `/v2/posting/fbs/product/change` | Добавить вес для весовых товаров в отправлении | `posting_fbs_product_change()` |
384
384
  | ☐ | `/v2/posting/fbs/product/country/list` | Список доступных стран-изготовителей | `posting_fbs_product_country_list()` |
385
385
  | ☐ | `/v2/posting/fbs/product/country/set` | Добавить информацию о стране-изготовителе товара | `posting_fbs_product_country_set()` |
386
386
  | ☐ | `/v1/posting/fbs/restrictions` | Получить ограничения пункта приёма | `posting_fbs_restrictions()` |
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "ozonapi-async"
7
- version = "0.5.0"
7
+ version = "0.7.0"
8
8
  description = "Асинхронный клиент для работы с API маркетплейса Ozon"
9
9
  readme = "readme.md"
10
10
  keywords = ["ozon", "api", "async", "ecommerce", "seller", "client"]
@@ -336,9 +336,9 @@ pytest --cov=ozonapi --cov-report=html
336
336
  | ✓ | `/v3/posting/fbs/unfulfilled/list` | Список необработанных отправлений | `posting_fbs_unfulfilled_list()` |
337
337
  | ✓ | `/v3/posting/fbs/list` | Список отправлений | `posting_fbs_list()` |
338
338
  | ✓ | `/v3/posting/fbs/get` | Получить информацию об отправлении по идентификатору | `posting_fbs_get()` |
339
- | | `/v2/posting/fbs/get-by-barcode` | Получить информацию об отправлении по штрихкоду | `posting_fbs_get_by_barcode()` |
340
- | | `/v3/posting/multiboxqty/set` | Указать количество коробок для многокоробочных отправлений | `posting_multiboxqty_set()` |
341
- | | `/v2/posting/fbs/product/change` | Добавить вес для весовых товаров в отправлении | `posting_fbs_product_change()` |
339
+ | | `/v2/posting/fbs/get-by-barcode` | Получить информацию об отправлении по штрихкоду | `posting_fbs_get_by_barcode()` |
340
+ | | `/v3/posting/multiboxqty/set` | Указать количество коробок для многокоробочных отправлений | `posting_multiboxqty_set()` |
341
+ | | `/v2/posting/fbs/product/change` | Добавить вес для весовых товаров в отправлении | `posting_fbs_product_change()` |
342
342
  | ☐ | `/v2/posting/fbs/product/country/list` | Список доступных стран-изготовителей | `posting_fbs_product_country_list()` |
343
343
  | ☐ | `/v2/posting/fbs/product/country/set` | Добавить информацию о стране-изготовителе товара | `posting_fbs_product_country_set()` |
344
344
  | ☐ | `/v1/posting/fbs/restrictions` | Получить ограничения пункта приёма | `posting_fbs_restrictions()` |
@@ -2,7 +2,7 @@
2
2
  Асинхронный интерфейс для взаимодействия с API маркетплейса Ozon.
3
3
  """
4
4
 
5
- __version__ = "0.5.0"
5
+ __version__ = "0.7.0"
6
6
  __author__ = "Alexander Ulianov"
7
7
  __repository__ = "https://github.com/a-ulianov/OzonAPI"
8
8
  __docs__ = "https://github.com/a-ulianov/OzonAPI#readme"
@@ -1,6 +1,8 @@
1
1
  from ..core import APIManager
2
2
  from ..schemas.fbs import PostingFBSUnfulfilledListRequest, PostingFBSUnfulfilledListResponse, PostingFBSListResponse, \
3
- PostingFBSListRequest, PostingFBSGetRequest, PostingFBSGetResponse
3
+ PostingFBSListRequest, PostingFBSGetRequest, PostingFBSGetResponse, PostingFBSGetByBarcodeResponse, \
4
+ PostingFBSGetByBarcodeRequest, PostingFBSMultiBoxQtySetResponse, PostingFBSMultiBoxQtySetRequest, \
5
+ PostingFBSProductChangeRequest, PostingFBSProductChangeResponse
4
6
 
5
7
 
6
8
  class SellerFBSAPI(APIManager):
@@ -213,4 +215,126 @@ class SellerFBSAPI(APIManager):
213
215
  endpoint="posting/fbs/get",
214
216
  json=request.model_dump(by_alias=True)
215
217
  )
216
- return PostingFBSGetResponse(**response)
218
+ return PostingFBSGetResponse(**response)
219
+
220
+ async def posting_fbs_get_by_barcode(
221
+ self: "SellerFBSAPI",
222
+ request: PostingFBSGetByBarcodeRequest
223
+ ) -> PostingFBSGetByBarcodeResponse:
224
+ """Метод для получения информации об отправлении FBS по штрихкоду.
225
+
226
+ Notes:
227
+ • Штрихкод отправления можно получить с помощью методов posting_fbs_get(), posting_fbs_list(), posting_fbs_unfulfilled_list() в массиве barcodes
228
+ • Метод возвращает основную информацию об отправлении: статус, данные о заказе, товары и штрихкоды.
229
+ • Для получения дополнительных данных (финансовой информации, аналитики и т.д.) используйте метод posting_fbs_get().
230
+
231
+ References:
232
+ https://docs.ozon.ru/api/seller/?__rr=1#operation/PostingAPI_GetFbsPostingByBarcode
233
+
234
+ Args:
235
+ request: Запрос на получение информации об отправлении по штрихкоду по схеме `PostingFBSGetByBarcodeRequest`
236
+
237
+ Returns:
238
+ Информация об отправлении FBS по схеме `PostingFBSGetByBarcodeResponse`
239
+
240
+ Examples:
241
+ async with SellerAPI(client_id, api_key) as api:
242
+ result = await api.posting_fbs_get_by_barcode(
243
+ PostingFBSGetByBarcodeRequest(
244
+ barcode="20325804886000"
245
+ )
246
+ )
247
+ """
248
+ response = await self._request(
249
+ method="post",
250
+ api_version="v2",
251
+ endpoint="posting/fbs/get-by-barcode",
252
+ json=request.model_dump()
253
+ )
254
+ return PostingFBSGetByBarcodeResponse(**response["result"])
255
+
256
+ async def posting_fbs_multiboxqty_set(
257
+ self: "SellerFBSAPI",
258
+ request: PostingFBSMultiBoxQtySetRequest
259
+ ) -> PostingFBSMultiBoxQtySetResponse:
260
+ """Метод для передачи количества коробок для отправлений, в которых есть многокоробочные товары.
261
+
262
+ Notes:
263
+ • Метод используется при работе по схеме rFBS Агрегатор — с доставкой партнёрами Ozon.
264
+ • Используется только для многокоробочных отправлений, где товары упакованы в несколько коробок.
265
+ • Количество коробок должно быть целым положительным числом.
266
+ • После успешного выполнения метода система учитывает указанное количество коробок при дальнейшей обработке отправления.
267
+
268
+ References:
269
+ https://docs.ozon.ru/api/seller/?__rr=1#operation/PostingAPI_PostingMultiBoxQtySetV3
270
+
271
+ Args:
272
+ request: Запрос на указание количества коробок для многокоробочного отправления по схеме `PostingFBSMultiBoxQtySetRequest`
273
+
274
+ Returns:
275
+ Результат выполнения операции по схеме `PostingFBSMultiBoxQtySetResponse`
276
+
277
+ Examples:
278
+ Пример с проверкой результата:
279
+ async with SellerAPI(client_id, api_key) as api:
280
+ result = await api.posting_multiboxqty_set(
281
+ PostingFBSMultiBoxQtySetRequest(
282
+ posting_number="57195475-0050-3",
283
+ multi_box_qty=3
284
+ )
285
+ )
286
+
287
+ if result.result.result:
288
+ print("Количество коробок успешно передано")
289
+ else:
290
+ print("Произошла ошибка при указании количества коробок")
291
+ """
292
+ response = await self._request(
293
+ method="post",
294
+ api_version="v3",
295
+ endpoint="posting/fbs/multi-box-qty/set",
296
+ json=request.model_dump()
297
+ )
298
+ return PostingFBSMultiBoxQtySetResponse(**response)
299
+
300
+ async def posting_fbs_product_change(
301
+ self: "SellerFBSAPI",
302
+ request: PostingFBSProductChangeRequest
303
+ ) -> PostingFBSProductChangeResponse:
304
+ """Метод для добавления веса для весовых товаров в отправлении FBS.
305
+
306
+ Notes:
307
+ • Метод используется для указания фактического веса весовых товаров в отправлении.
308
+ • Можно указать вес для нескольких товаров в одном запросе.
309
+ • После указания веса система пересчитывает стоимость доставки и другие параметры отправления.
310
+
311
+ References:
312
+ https://docs.ozon.ru/api/seller/?__rr=1#operation/PostingAPI_ChangeFbsPostingProduct
313
+
314
+ Args:
315
+ request: Запрос на добавление веса для весовых товаров в отправлении по схеме `PostingFBSProductChangeRequest`
316
+
317
+ Returns:
318
+ Результат выполнения операции по схеме `PostingFBSProductChangeResponse`
319
+
320
+ Examples:
321
+ async with SellerAPI(client_id, api_key) as api:
322
+ result = await api.posting_fbs_product_change(
323
+ PostingFBSProductChangeRequest(
324
+ posting_number="33920158-0006-1",
325
+ items=[
326
+ PostingFBSProductChangeRequestItem(
327
+ sku=1231428352,
328
+ weight_real=0.3
329
+ )
330
+ ]
331
+ )
332
+ )
333
+ """
334
+ response = await self._request(
335
+ method="post",
336
+ api_version="v2",
337
+ endpoint="posting/fbs/product/change",
338
+ json=request.model_dump(by_alias=True)
339
+ )
340
+ return PostingFBSProductChangeResponse(**response)
@@ -12,12 +12,18 @@ __all__ = [
12
12
  "PostingFBSFilterWith",
13
13
  "PostingFBSFinancialData",
14
14
  "PostingFBSFinancialDataProducts",
15
+ "PostingFBSGetByBarcodeRequest",
16
+ "PostingFBSGetByBarcodeResponse",
15
17
  "PostingFBSGetRequest",
16
18
  "PostingFBSGetResponse",
17
19
  "PostingFBSLegalInfo",
18
20
  "PostingFBSOptional",
19
21
  "PostingFBSPosting",
20
- "PostingFBSProducts",
22
+ "PostingFBSProduct",
23
+ "PostingFBSProductChangeRequest",
24
+ "PostingFBSProductChangeRequestItem",
25
+ "PostingFBSProductChangeResponse",
26
+ "PostingFBSProductDetailed",
21
27
  "PostingFBSRequirements",
22
28
  "PostingFBSTariffication",
23
29
  "PostingFBSListRequestFilterLastChangedStatusDate",
@@ -25,6 +31,8 @@ __all__ = [
25
31
  "PostingFBSListRequest",
26
32
  "PostingFBSListResult",
27
33
  "PostingFBSListResponse",
34
+ "PostingFBSMultiBoxQtySetRequest",
35
+ "PostingFBSMultiBoxQtySetResponse",
28
36
  "PostingFBSUnfulfilledListRequest",
29
37
  "PostingFBSUnfulfilledListResponse",
30
38
  "PostingFBSUnfulfilledListRequestFilterLastChangedStatusDate",
@@ -34,11 +42,16 @@ __all__ = [
34
42
 
35
43
  from .entities import PostingFBSAddressee, PostingFBSAnalyticsData, PostingFBSBarcodes, PostingFBSCancellation, \
36
44
  PostingFBSCustomer, PostingFBSCustomerAddress, PostingFBSDeliveryMethod, PostingFBSFinancialData, \
37
- PostingFBSFinancialDataProducts, PostingFBSLegalInfo, PostingFBSOptional, PostingFBSPosting, PostingFBSProducts, \
38
- PostingFBSRequirements, PostingFBSTariffication, PostingFBSFilterWith
45
+ PostingFBSFinancialDataProducts, PostingFBSLegalInfo, PostingFBSOptional, PostingFBSPosting, \
46
+ PostingFBSProductDetailed, \
47
+ PostingFBSRequirements, PostingFBSTariffication, PostingFBSFilterWith, PostingFBSProduct
48
+ from .v2__posting_fbs_get_by_barcode import PostingFBSGetByBarcodeRequest, PostingFBSGetByBarcodeResponse
49
+ from .v2__posting_fbs_product_change import PostingFBSProductChangeRequestItem, PostingFBSProductChangeRequest, \
50
+ PostingFBSProductChangeResponse
39
51
  from .v3__posting_fbs_get import PostingFBSGetRequest, PostingFBSGetResponse
40
52
  from .v3__posting_fbs_list import PostingFBSListRequestFilterLastChangedStatusDate, \
41
53
  PostingFBSListFilter, PostingFBSListRequest, PostingFBSListResult, PostingFBSListResponse
54
+ from .v3__posting_multiboxqty_set import PostingFBSMultiBoxQtySetResponse, PostingFBSMultiBoxQtySetRequest
42
55
  from .v3__posting_fbs_unfulfilled_list import (
43
56
  PostingFBSUnfulfilledListRequest,
44
57
  PostingFBSUnfulfilledListResponse,
@@ -11,7 +11,8 @@ __all__ = [
11
11
  "PostingFBSLegalInfo",
12
12
  "PostingFBSOptional",
13
13
  "PostingFBSPosting",
14
- "PostingFBSProducts",
14
+ "PostingFBSProduct",
15
+ "PostingFBSProductDetailed",
15
16
  "PostingFBSRequirements",
16
17
  "PostingFBSTariffication",
17
18
  "PostingFBSFilterWith",
@@ -29,7 +30,7 @@ from .posting__financial_data_products import PostingFBSFinancialDataProducts
29
30
  from .posting__legal_info import PostingFBSLegalInfo
30
31
  from .posting__optional import PostingFBSOptional
31
32
  from .posting__posting import PostingFBSPosting
32
- from .posting__products import PostingFBSProducts
33
+ from .posting__product import PostingFBSProductDetailed, PostingFBSProduct
33
34
  from .posting__requirements import PostingFBSRequirements
34
35
  from .posting__tariffication import PostingFBSTariffication
35
36
  from .posting__addressee import PostingFBSAddressee
@@ -14,7 +14,7 @@ from .posting__delivery_method import PostingFBSDeliveryMethod
14
14
  from .posting__financial_data import PostingFBSFinancialData
15
15
  from .posting__legal_info import PostingFBSLegalInfo
16
16
  from .posting__optional import PostingFBSOptional
17
- from .posting__products import PostingFBSProducts
17
+ from .posting__product import PostingFBSProductDetailed
18
18
  from .posting__requirements import PostingFBSRequirements
19
19
  from .posting__tariffication import PostingFBSTariffication
20
20
 
@@ -114,7 +114,7 @@ class PostingFBSPosting(BaseModel):
114
114
  posting_number: str = Field(
115
115
  ..., description="Номер отправления."
116
116
  )
117
- products: list[PostingFBSProducts] = Field(
117
+ products: list[PostingFBSProductDetailed] = Field(
118
118
  ..., description="Список товаров в отправлении."
119
119
  )
120
120
  prr_option: Optional[PrrOption] = Field(
@@ -5,8 +5,8 @@ from pydantic import Field, BaseModel
5
5
  from ....common.enumerations.localization import CurrencyCode
6
6
 
7
7
 
8
- class PostingFBSProducts(BaseModel):
9
- """Список товаров в отправлении.
8
+ class PostingFBSProduct(BaseModel):
9
+ """Информация о товаре в отправлении.
10
10
 
11
11
  Attributes:
12
12
  name: Название товара
@@ -14,10 +14,6 @@ class PostingFBSProducts(BaseModel):
14
14
  price: Цена товара
15
15
  quantity: Количество товара в отправлении
16
16
  sku: Идентификатор товара в системе Ozon
17
- currency_code: Валюта цен
18
- is_blr_traceable: Признак прослеживаемости товара
19
- is_marketplace_buyout: Признак выкупа товара в ЕАЭС и другие страны
20
- imei: Список IMEI мобильных устройств
21
17
  """
22
18
  name: str = Field(
23
19
  ..., description="Название товара."
@@ -34,6 +30,21 @@ class PostingFBSProducts(BaseModel):
34
30
  sku: int = Field(
35
31
  ..., description="Идентификатор товара в системе Ozon — SKU."
36
32
  )
33
+
34
+ class PostingFBSProductDetailed(PostingFBSProduct):
35
+ """Детализированная информация о товаре в отправлении.
36
+
37
+ Attributes:
38
+ name: Название товара
39
+ offer_id: Идентификатор товара в системе продавца
40
+ price: Цена товара
41
+ quantity: Количество товара в отправлении
42
+ sku: Идентификатор товара в системе Ozon
43
+ currency_code: Валюта цен
44
+ is_blr_traceable: Признак прослеживаемости товара
45
+ is_marketplace_buyout: Признак выкупа товара в ЕАЭС и другие страны
46
+ imei: Список IMEI мобильных устройств
47
+ """
37
48
  currency_code: CurrencyCode = Field(
38
49
  ..., description="Валюта ваших цен. Совпадает с валютой, которая установлена в настройках личного кабинета."
39
50
  )
@@ -0,0 +1,2 @@
1
+ """https://docs.ozon.com/api/seller/?__rr=1#operation/PostingAPI_FbsPostingDelivering"""
2
+
@@ -0,0 +1,65 @@
1
+ """https://docs.ozon.com/api/seller/?__rr=1#operation/PostingAPI_GetFbsPostingByBarcode"""
2
+ import datetime
3
+ from typing import Optional
4
+
5
+ from pydantic import BaseModel, Field
6
+
7
+ from .entities import PostingFBSBarcodes, PostingFBSProduct
8
+
9
+
10
+ class PostingFBSGetByBarcodeRequest(BaseModel):
11
+ """Запрос на получение информации об отправлении по штрихкоду.
12
+
13
+ Attributes:
14
+ barcode: Штрихкод отправления (можно получить с помощью методов posting_fbs_get(), posting_fbs_list() и posting_fbs_unfulfilled_list() в массиве barcodes)
15
+ """
16
+ barcode: str = Field(
17
+ ..., title="Штрихкод отправления (можно получить с помощью методов posting_fbs_get(), posting_fbs_list() и posting_fbs_unfulfilled_list() в массиве barcodes)."
18
+ )
19
+
20
+
21
+ class PostingFBSGetByBarcodeResponse(BaseModel):
22
+ """Описывает схему ответа на запрос на получение информации об отправлении по штрихкоду.
23
+
24
+ Attributes:
25
+ barcodes: Штрихкоды отправления
26
+ cancel_reason_id: Идентификатор причины отмены отправления
27
+ created_at: Дата и время создания отправления
28
+ in_process_at: Дата и время начала обработки отправления
29
+ order_id: Идентификатор заказа, к которому относится отправление
30
+ order_number: Номер заказа, к которому относится отправление
31
+ posting_number: Номер отправления
32
+ products: Список товаров в отправлении
33
+ shipment_date: Дата и время, до которой необходимо собрать отправление (если отправление не собрать к этой дате — оно автоматически отменится)
34
+ status: Статус отправления
35
+ """
36
+ barcodes: PostingFBSBarcodes = Field(
37
+ ..., description="Штрихкоды отправления"
38
+ )
39
+ cancel_reason_id: Optional[int] = Field(
40
+ None, description="Идентификатор причины отмены отправления"
41
+ )
42
+ created_at: datetime.datetime = Field(
43
+ ..., description="Дата и время создания отправления"
44
+ )
45
+ in_process_at: Optional[datetime.datetime] = Field(
46
+ None, description="Дата и время начала обработки отправления"
47
+ )
48
+ order_id: int = Field(
49
+ ..., description="Идентификатор заказа, к которому относится отправление"
50
+ )
51
+ order_number: str = Field(
52
+ ..., description="Номер заказа, к которому относится отправление"
53
+ )
54
+ posting_number: str = Field(
55
+ ..., description="Номер отправления"
56
+ )
57
+ products: list[PostingFBSProduct] = Field(
58
+ ..., description="Список товаров в отправлении"
59
+ )
60
+ shipment_date: datetime.datetime = Field(
61
+ ..., description="Дата и время, до которой необходимо собрать отправление (если отправление не собрать к этой дате — оно автоматически отменится)"
62
+ )
63
+ status: str = Field(
64
+ ..., description="Статус отправления"
65
+ )
@@ -0,0 +1,46 @@
1
+ """https://docs.ozon.com/api/seller/?__rr=1#operation/PostingAPI_ChangeFbsPostingProduct"""
2
+ from pydantic import BaseModel, Field
3
+
4
+
5
+ class PostingFBSProductChangeRequestItem(BaseModel):
6
+ """Информация о товарах.
7
+
8
+ Attributes:
9
+ sku: Идентификатор товара в системе Ozon — SKU
10
+ weight_real: Вес единиц товара в отправлении
11
+ """
12
+ model_config = {'populate_by_name': True}
13
+
14
+ sku: int = Field(
15
+ ..., description="Идентификатор товара в системе Ozon — SKU."
16
+ )
17
+ weight_real: float = Field(
18
+ ..., description="Вес единиц товара в отправлении.",
19
+ alias="weightReal"
20
+ )
21
+
22
+
23
+ class PostingFBSProductChangeRequest(BaseModel):
24
+ """Описывает схему запроса на добавление веса для весовых товаров в отправлении.
25
+
26
+ Attributes:
27
+ items: Информация о товарах
28
+ posting_number: Идентификатор отправления
29
+ """
30
+ items: list[PostingFBSProductChangeRequestItem] = Field(
31
+ ..., description="Информация о товарах."
32
+ )
33
+ posting_number: str = Field(
34
+ ..., description="Идентификатор отправления."
35
+ )
36
+
37
+
38
+ class PostingFBSProductChangeResponse(BaseModel):
39
+ """Описывает схему ответа на запрос на добавление веса для весовых товаров в отправлении.
40
+
41
+ Attributes:
42
+ result: Идентификатор отправления
43
+ """
44
+ result: str = Field(
45
+ ..., description="Идентификатор отправления."
46
+ )
@@ -0,0 +1,40 @@
1
+ """https://docs.ozon.com/api/seller/?__rr=1#operation/PostingAPI_PostingMultiBoxQtySetV3"""
2
+ from pydantic import BaseModel, Field
3
+
4
+
5
+ class PostingFBSMultiBoxQtySetRequest(BaseModel):
6
+ """Описывает запрос на указание количества коробок для многокоробочных отправлений.
7
+
8
+ Attributes:
9
+ posting_number: Идентификатор многокоробочного отправления
10
+ multi_box_qty: Количество коробок, в которые упакован товар
11
+ """
12
+
13
+ posting_number: str = Field(
14
+ ..., description="Идентификатор многокоробочного отправления."
15
+ )
16
+ multi_box_qty: int = Field(
17
+ ..., description="Количество коробок, в которые упакован товар."
18
+ )
19
+
20
+
21
+ class PostingFBSMultiBoxQtySetResult(BaseModel):
22
+ """Описывает результат выполнения запроса на указание количества коробок для многокоробочных отправлений
23
+
24
+ Attributes:
25
+ result: Результат передачи количества коробок
26
+ """
27
+ result: bool = Field(
28
+ ..., description="Результат передачи количества коробок."
29
+ )
30
+
31
+
32
+ class PostingFBSMultiBoxQtySetResponse(BaseModel):
33
+ """Описывает ответ на запрос на указание количества коробок для многокоробочных отправлений.
34
+
35
+ Attributes:
36
+ result: Описывает объект ответа на запрос на указание количества коробок для многокоробочных отправлений
37
+ """
38
+ result: PostingFBSMultiBoxQtySetResult = Field(
39
+ ..., description="Описывает объект ответа на запрос на указание количества коробок для многокоробочных отправлений."
40
+ )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ozonapi-async
3
- Version: 0.5.0
3
+ Version: 0.7.0
4
4
  Summary: Асинхронный клиент для работы с API маркетплейса Ozon
5
5
  Author: Alexander Ulianov
6
6
  License: MIT
@@ -378,9 +378,9 @@ pytest --cov=ozonapi --cov-report=html
378
378
  | ✓ | `/v3/posting/fbs/unfulfilled/list` | Список необработанных отправлений | `posting_fbs_unfulfilled_list()` |
379
379
  | ✓ | `/v3/posting/fbs/list` | Список отправлений | `posting_fbs_list()` |
380
380
  | ✓ | `/v3/posting/fbs/get` | Получить информацию об отправлении по идентификатору | `posting_fbs_get()` |
381
- | | `/v2/posting/fbs/get-by-barcode` | Получить информацию об отправлении по штрихкоду | `posting_fbs_get_by_barcode()` |
382
- | | `/v3/posting/multiboxqty/set` | Указать количество коробок для многокоробочных отправлений | `posting_multiboxqty_set()` |
383
- | | `/v2/posting/fbs/product/change` | Добавить вес для весовых товаров в отправлении | `posting_fbs_product_change()` |
381
+ | | `/v2/posting/fbs/get-by-barcode` | Получить информацию об отправлении по штрихкоду | `posting_fbs_get_by_barcode()` |
382
+ | | `/v3/posting/multiboxqty/set` | Указать количество коробок для многокоробочных отправлений | `posting_multiboxqty_set()` |
383
+ | | `/v2/posting/fbs/product/change` | Добавить вес для весовых товаров в отправлении | `posting_fbs_product_change()` |
384
384
  | ☐ | `/v2/posting/fbs/product/country/list` | Список доступных стран-изготовителей | `posting_fbs_product_country_list()` |
385
385
  | ☐ | `/v2/posting/fbs/product/country/set` | Добавить информацию о стране-изготовителе товара | `posting_fbs_product_country_set()` |
386
386
  | ☐ | `/v1/posting/fbs/restrictions` | Получить ограничения пункта приёма | `posting_fbs_restrictions()` |
@@ -42,9 +42,13 @@ src/ozonapi/seller/schemas/barcodes/v1__barcode_generate.py
42
42
  src/ozonapi/seller/schemas/beta/__init__.py
43
43
  src/ozonapi/seller/schemas/beta/v1__analytics_stocks.py
44
44
  src/ozonapi/seller/schemas/fbs/__init__.py
45
+ src/ozonapi/seller/schemas/fbs/v2__fbs_posting_delivering.py
46
+ src/ozonapi/seller/schemas/fbs/v2__posting_fbs_get_by_barcode.py
47
+ src/ozonapi/seller/schemas/fbs/v2__posting_fbs_product_change.py
45
48
  src/ozonapi/seller/schemas/fbs/v3__posting_fbs_get.py
46
49
  src/ozonapi/seller/schemas/fbs/v3__posting_fbs_list.py
47
50
  src/ozonapi/seller/schemas/fbs/v3__posting_fbs_unfulfilled_list.py
51
+ src/ozonapi/seller/schemas/fbs/v3__posting_multiboxqty_set.py
48
52
  src/ozonapi/seller/schemas/fbs/entities/__init__.py
49
53
  src/ozonapi/seller/schemas/fbs/entities/posting__addressee.py
50
54
  src/ozonapi/seller/schemas/fbs/entities/posting__analytics_data.py
@@ -59,7 +63,7 @@ src/ozonapi/seller/schemas/fbs/entities/posting__financial_data_products.py
59
63
  src/ozonapi/seller/schemas/fbs/entities/posting__legal_info.py
60
64
  src/ozonapi/seller/schemas/fbs/entities/posting__optional.py
61
65
  src/ozonapi/seller/schemas/fbs/entities/posting__posting.py
62
- src/ozonapi/seller/schemas/fbs/entities/posting__products.py
66
+ src/ozonapi/seller/schemas/fbs/entities/posting__product.py
63
67
  src/ozonapi/seller/schemas/fbs/entities/posting__requirements.py
64
68
  src/ozonapi/seller/schemas/fbs/entities/posting__tariffication.py
65
69
  src/ozonapi/seller/schemas/prices_and_stocks/__init__.py
File without changes
File without changes