ozonapi-async 0.7.4__tar.gz → 0.8.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 (103) hide show
  1. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/PKG-INFO +3 -3
  2. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/pyproject.toml +1 -1
  3. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/readme.md +2 -2
  4. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/__init__.py +1 -1
  5. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/methods/products.py +64 -2
  6. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/products/__init__.py +3 -0
  7. ozonapi_async-0.8.0/src/ozonapi/seller/schemas/products/v1__product_pictures_import.py +85 -0
  8. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi_async.egg-info/PKG-INFO +3 -3
  9. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi_async.egg-info/SOURCES.txt +1 -0
  10. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/LICENSE +0 -0
  11. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/setup.cfg +0 -0
  12. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/__init__.py +0 -0
  13. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/common/__init__.py +0 -0
  14. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/common/enumerations/__init__.py +0 -0
  15. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/common/enumerations/delivery.py +0 -0
  16. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/common/enumerations/localization.py +0 -0
  17. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/common/enumerations/postings.py +0 -0
  18. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/common/enumerations/prices.py +0 -0
  19. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/common/enumerations/products.py +0 -0
  20. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/common/enumerations/requests.py +0 -0
  21. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/common/enumerations/warehouses.py +0 -0
  22. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/core/__init__.py +0 -0
  23. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/core/config.py +0 -0
  24. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/core/core.py +0 -0
  25. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/core/exceptions.py +0 -0
  26. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/core/method_rate_limiter.py +0 -0
  27. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/core/rate_limiter.py +0 -0
  28. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/core/sessions.py +0 -0
  29. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/methods/__init__.py +0 -0
  30. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/methods/attributes_and_characteristics.py +0 -0
  31. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/methods/barcodes.py +0 -0
  32. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/methods/beta.py +0 -0
  33. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/methods/fbs.py +0 -0
  34. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/methods/prices_and_stocks.py +0 -0
  35. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/methods/warehouses.py +0 -0
  36. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/__init__.py +0 -0
  37. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/attributes_and_characteristics/__init__.py +0 -0
  38. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/attributes_and_characteristics/base.py +0 -0
  39. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/attributes_and_characteristics/v1__description_category_attribute.py +0 -0
  40. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/attributes_and_characteristics/v1__description_category_attribute_values.py +0 -0
  41. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/attributes_and_characteristics/v1__description_category_attribute_values_search.py +0 -0
  42. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/attributes_and_characteristics/v1__description_category_tree.py +0 -0
  43. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/barcodes/__init__.py +0 -0
  44. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/barcodes/v1__barcode_add.py +0 -0
  45. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/barcodes/v1__barcode_generate.py +0 -0
  46. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/base.py +0 -0
  47. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/beta/__init__.py +0 -0
  48. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/beta/v1__analytics_stocks.py +0 -0
  49. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/fbs/__init__.py +0 -0
  50. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/fbs/entities/__init__.py +0 -0
  51. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/fbs/entities/posting__addressee.py +0 -0
  52. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/fbs/entities/posting__analytics_data.py +0 -0
  53. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/fbs/entities/posting__barcodes.py +0 -0
  54. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/fbs/entities/posting__cancellation.py +0 -0
  55. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/fbs/entities/posting__customer.py +0 -0
  56. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/fbs/entities/posting__customer_address.py +0 -0
  57. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/fbs/entities/posting__delivery_method.py +0 -0
  58. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/fbs/entities/posting__filter_with.py +0 -0
  59. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/fbs/entities/posting__financial_data.py +0 -0
  60. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/fbs/entities/posting__financial_data_products.py +0 -0
  61. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/fbs/entities/posting__legal_info.py +0 -0
  62. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/fbs/entities/posting__optional.py +0 -0
  63. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/fbs/entities/posting__posting.py +0 -0
  64. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/fbs/entities/posting__product.py +0 -0
  65. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/fbs/entities/posting__requirements.py +0 -0
  66. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/fbs/entities/posting__tariffication.py +0 -0
  67. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/fbs/v2__fbs_posting_delivering.py +0 -0
  68. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/fbs/v2__posting_fbs_get_by_barcode.py +0 -0
  69. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/fbs/v2__posting_fbs_product_change.py +0 -0
  70. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/fbs/v3__posting_fbs_get.py +0 -0
  71. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/fbs/v3__posting_fbs_list.py +0 -0
  72. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/fbs/v3__posting_fbs_unfulfilled_list.py +0 -0
  73. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/fbs/v3__posting_multiboxqty_set.py +0 -0
  74. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/mixins.py +0 -0
  75. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/prices_and_stocks/__init__.py +0 -0
  76. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/prices_and_stocks/base.py +0 -0
  77. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/prices_and_stocks/v1__product_import_prices.py +0 -0
  78. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/prices_and_stocks/v1__product_info_stocks_by_warehouse_fbs.py +0 -0
  79. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/prices_and_stocks/v2__products_stocks.py +0 -0
  80. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/prices_and_stocks/v4__product_info_stocks.py +0 -0
  81. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/prices_and_stocks/v5__product_info_prices.py +0 -0
  82. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/products/base.py +0 -0
  83. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/products/v1__product_archive.py +0 -0
  84. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/products/v1__product_attributes_update.py +0 -0
  85. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/products/v1__product_import_by_sku.py +0 -0
  86. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/products/v1__product_import_info.py +0 -0
  87. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/products/v1__product_info_subscription.py +0 -0
  88. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/products/v1__product_rating_by_sku.py +0 -0
  89. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/products/v1__product_related_sku_get.py +0 -0
  90. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/products/v1__product_unarchive.py +0 -0
  91. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/products/v1__product_update_offer_id.py +0 -0
  92. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/products/v2__product_pictures_info.py +0 -0
  93. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/products/v2__products_delete.py +0 -0
  94. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/products/v3__product_import.py +0 -0
  95. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/products/v3__product_info_list.py +0 -0
  96. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/products/v3__product_list.py +0 -0
  97. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/products/v4__product_info_attributes.py +0 -0
  98. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/warehouses/__init__.py +0 -0
  99. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/warehouses/v1__delivery_method_list.py +0 -0
  100. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi/seller/schemas/warehouses/v1__warehouse_list.py +0 -0
  101. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi_async.egg-info/dependency_links.txt +0 -0
  102. {ozonapi_async-0.7.4 → ozonapi_async-0.8.0}/src/ozonapi_async.egg-info/requires.txt +0 -0
  103. {ozonapi_async-0.7.4 → ozonapi_async-0.8.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.7.4
3
+ Version: 0.8.0
4
4
  Summary: Асинхронный клиент для работы с API маркетплейса Ozon
5
5
  Author: Alexander Ulianov
6
6
  License: MIT
@@ -260,7 +260,7 @@ pytest --cov=ozonapi --cov-report=html
260
260
  | ✓ | `/v1/description-category/attribute/values/search` | Поиск по справочным значениям характеристики | `description_category_attribute_values_search()` |
261
261
  </details>
262
262
  <details>
263
- <summary>Загрузка и обновление товаров (16)</summary>
263
+ <summary>Загрузка и обновление товаров (17)</summary>
264
264
 
265
265
  | ✓ | Адрес метода Ozon | Описание метода | Python-метод |
266
266
  |---|---|---|---|
@@ -268,7 +268,7 @@ pytest --cov=ozonapi --cov-report=html
268
268
  | ✓ | `/v1/product/import/info` | Узнать статус добавления или обновления товара | `product_import_info()` |
269
269
  | ✓ | `/v1/product/import-by-sku` | Создать товар по SKU | `product_import_by_sku()` |
270
270
  | ✓ | `/v1/product/attributes/update` | Обновить характеристики товара | `product_attributes_update()` |
271
- | | `/v1/product/pictures/import` | Загрузить или обновить изображения товара | `product_pictures_import()` |
271
+ | | `/v1/product/pictures/import` | Загрузить или обновить изображения товара | `product_pictures_import()` |
272
272
  | ✓ | `/v3/product/list` | Список товаров | `product_list()` |
273
273
  | ✓ | `/v1/product/rating-by-sku` | Получить контент-рейтинг товаров по SKU | `product_rating_by_sku()` |
274
274
  | ✓ | `/v3/product/info/list` | Получить информацию о товарах по идентификаторам | `product_info_list()` |
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "ozonapi-async"
7
- version = "0.7.4"
7
+ version = "0.8.0"
8
8
  description = "Асинхронный клиент для работы с API маркетплейса Ozon"
9
9
  readme = "readme.md"
10
10
  keywords = ["ozon", "api", "async", "ecommerce", "seller", "client"]
@@ -218,7 +218,7 @@ pytest --cov=ozonapi --cov-report=html
218
218
  | ✓ | `/v1/description-category/attribute/values/search` | Поиск по справочным значениям характеристики | `description_category_attribute_values_search()` |
219
219
  </details>
220
220
  <details>
221
- <summary>Загрузка и обновление товаров (16)</summary>
221
+ <summary>Загрузка и обновление товаров (17)</summary>
222
222
 
223
223
  | ✓ | Адрес метода Ozon | Описание метода | Python-метод |
224
224
  |---|---|---|---|
@@ -226,7 +226,7 @@ pytest --cov=ozonapi --cov-report=html
226
226
  | ✓ | `/v1/product/import/info` | Узнать статус добавления или обновления товара | `product_import_info()` |
227
227
  | ✓ | `/v1/product/import-by-sku` | Создать товар по SKU | `product_import_by_sku()` |
228
228
  | ✓ | `/v1/product/attributes/update` | Обновить характеристики товара | `product_attributes_update()` |
229
- | | `/v1/product/pictures/import` | Загрузить или обновить изображения товара | `product_pictures_import()` |
229
+ | | `/v1/product/pictures/import` | Загрузить или обновить изображения товара | `product_pictures_import()` |
230
230
  | ✓ | `/v3/product/list` | Список товаров | `product_list()` |
231
231
  | ✓ | `/v1/product/rating-by-sku` | Получить контент-рейтинг товаров по SKU | `product_rating_by_sku()` |
232
232
  | ✓ | `/v3/product/info/list` | Получить информацию о товарах по идентификаторам | `product_info_list()` |
@@ -2,7 +2,7 @@
2
2
  Асинхронный интерфейс для взаимодействия с API маркетплейса Ozon.
3
3
  """
4
4
 
5
- __version__ = "0.7.4"
5
+ __version__ = "0.8.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"
@@ -6,7 +6,8 @@ from ..schemas.products import ProductArchiveResponse, ProductArchiveRequest, Pr
6
6
  ProductInfoAttributesResponse, ProductInfoListRequest, ProductInfoListResponse, ProductInfoSubscriptionRequest, \
7
7
  ProductInfoSubscriptionResponse, ProductListRequest, ProductListResponse, ProductPicturesInfoRequest, \
8
8
  ProductPicturesInfoResponse, ProductRatingBySkuRequest, ProductRatingBySkuResponse, ProductRelatedSkuGetRequest, \
9
- ProductRelatedSkuGetResponse, ProductUpdateOfferIdRequest, ProductUpdateOfferIdResponse
9
+ ProductRelatedSkuGetResponse, ProductUpdateOfferIdRequest, ProductUpdateOfferIdResponse, \
10
+ ProductPicturesImportResponse, ProductPicturesImportRequest
10
11
 
11
12
 
12
13
  class SellerProductAPI(APIManager):
@@ -670,4 +671,65 @@ class SellerProductAPI(APIManager):
670
671
  endpoint="product/update/offer-id",
671
672
  json=request.model_dump(),
672
673
  )
673
- return ProductUpdateOfferIdResponse(**response)
674
+ return ProductUpdateOfferIdResponse(**response)
675
+
676
+ async def product_pictures_import(
677
+ self: "SellerProductAPI", request: ProductPicturesImportRequest
678
+ ) -> ProductPicturesImportResponse:
679
+ """Загружает или обновляет изображения товара.
680
+
681
+ Notes:
682
+ • При каждом вызове метода передавайте все изображения, которые должны быть на карточке товара.
683
+ Например, если вы вызвали метод и загрузили 10 изображений, а затем вызвали метод второй раз
684
+ и загрузили ещё одно, то все 10 предыдущих сотрутся.
685
+ • Для загрузки передайте адрес ссылки на изображение в общедоступном облачном хранилище.
686
+ Формат изображения по ссылке — JPG или PNG.
687
+ • Изображения в массиве `images` располагайте в соответствии с желаемым порядком на сайте.
688
+ Главным будет первое изображение в массиве.
689
+ • Для каждого товара вы можете загрузить до `30` изображений.
690
+ • Для загрузки изображений 360 используйте поле `images360`, для загрузки маркетингового цвета — `color_image`.
691
+ • Если вы хотите изменить состав или порядок изображений, получите информацию с помощью метода
692
+ `product_info_list()` — в нём отображается текущий порядок и состав изображений. Скопируйте
693
+ данные полей `images`, `images360`, `color_image`, измените и дополните состав или порядок
694
+ в соответствии с необходимостью.
695
+ • В ответе метода всегда будет статус `imported` — картинка не обработана. Чтобы посмотреть
696
+ финальный статус, примерно через 10 секунд вызовите метод `product_pictures_info()`.
697
+ `* Примечание: Видимо, артефакт в документации, т.к. по факту метод product_pictures_info() не возвращает статусы.`
698
+ • Финальные статусы загрузки изображений:
699
+ - `uploaded` — изображение загружено;
700
+ - `pending` — при загрузке изображения возникла ошибка. Повторите попытку позже.
701
+
702
+ References:
703
+ https://docs.ozon.ru/api/seller/?__rr=1#operation/ProductAPI_ProductImportPictures
704
+
705
+ Args:
706
+ request: Данные для загрузки изображений товара по схеме `ProductPicturesImportRequest`.
707
+
708
+ Returns:
709
+ Результат загрузки изображений с временными статусами по схеме `ProductPicturesImportResponse`.
710
+
711
+ Example:
712
+ async with SellerAPI(client_id, api_key) as api:
713
+ result = await api.product_pictures_import(
714
+ ProductPicturesImportRequest(
715
+ product_id=123456789,
716
+ color_image="https://example.com/color.jpg",
717
+ images=[
718
+ "https://example.com/image1.jpg",
719
+ "https://example.com/image2.jpg",
720
+ "https://example.com/image3.jpg",
721
+ ],
722
+ images360=[
723
+ "https://example.com/360_1.jpg",
724
+ "https://example.com/360_2.jpg",
725
+ ]
726
+ )
727
+ )
728
+ """
729
+ response = await self._request(
730
+ method="post",
731
+ api_version="v1",
732
+ endpoint="product/pictures/import",
733
+ json=request.model_dump(),
734
+ )
735
+ return ProductPicturesImportResponse(**response)
@@ -57,6 +57,8 @@ __all__ = [
57
57
  "ProductListResponseItem",
58
58
  "ProductListResponseResult",
59
59
  "ProductListQuants",
60
+ "ProductPicturesImportRequest",
61
+ "ProductPicturesImportResponse",
60
62
  "ProductPicturesInfoRequest",
61
63
  "ProductPicturesInfoResponse",
62
64
  "ProductPicturesInfoItem",
@@ -104,6 +106,7 @@ from .v1__product_info_subscription import (
104
106
  ProductInfoSubscriptionRequest,
105
107
  ProductInfoSubscriptionItem,
106
108
  )
109
+ from .v1__product_pictures_import import ProductPicturesImportResponse, ProductPicturesImportRequest
107
110
  from .v1__product_rating_by_sku import (
108
111
  ProductRatingBySkuResponse,
109
112
  ProductRatingBySkuRequest,
@@ -0,0 +1,85 @@
1
+ """https://docs.ozon.ru/api/seller/?__rr=1#operation/ProductAPI_ProductImportPictures"""
2
+ from typing import Optional
3
+
4
+ from pydantic import BaseModel, Field
5
+
6
+
7
+ class ProductPicturesImportRequest(BaseModel):
8
+ """Описывает схему запроса на добавление или обновление изображений в товарной карточке.
9
+
10
+ Attributes:
11
+ color_image: Маркетинговый цвет (опционально)
12
+ images: Массив ссылок на изображения (опционально, до 30 штук; изображения в массиве расположены в порядке их расположения на сайте; первое изображение в массиве будет главным)
13
+ images360: Массив изображений 360 (опционально, до 70 штук)
14
+ product_id: Идентификатор товара в системе продавца — product_id
15
+ """
16
+ color_image: Optional[str] = Field(
17
+ None, description="Маркетинговый цвет."
18
+ )
19
+ images: Optional[list[str]] = Field(
20
+ default_factory=list, description="""
21
+ Массив ссылок на изображения (до 30 штук; изображения в массиве расположены в порядке их
22
+ расположения на сайте; первое изображение в массиве будет главным).
23
+ """,
24
+ max_length=30,
25
+ )
26
+ images360: Optional[list[str]] = Field(
27
+ default_factory=list, description="Массив изображений 360 (до 70 штук)",
28
+ max_length=70,
29
+ )
30
+ product_id: int = Field(
31
+ ..., description="Идентификатор товара в системе продавца."
32
+ )
33
+
34
+
35
+ class ProductPicturesImportPicture(BaseModel):
36
+ """Описывает схему результата добавления изображения.
37
+
38
+ Attributes:
39
+ is_360: Признак, что картинка — изображение 360
40
+ is_color: Признак, что картинка — образец цвета
41
+ is_primary: Признак, что картинка — главное изображение
42
+ product_id: Идентификатор товара в системе продавца
43
+ state: Статус загрузки изображения
44
+ url: Адрес ссылки на изображение в общедоступном облачном хранилище (формат изображения по ссылке — JPG или PNG)
45
+ """
46
+ is_360: Optional[bool] = Field(
47
+ None, description="Признак, что картинка — изображение 360."
48
+ )
49
+ is_color: Optional[bool] = Field(
50
+ None, description="Признак, что картинка — образец цвета."
51
+ )
52
+ is_primary: Optional[bool] = Field(
53
+ None, description="Признак, что картинка — главное изображение."
54
+ )
55
+ product_id: int = Field(
56
+ ..., description="Идентификатор товара в системе продавца."
57
+ )
58
+ state: str = Field(
59
+ ..., description="Статус загрузки изображения."
60
+ )
61
+ url: Optional[str] = Field(
62
+ None, description="Адрес ссылки на изображение в общедоступном облачном хранилище (формат изображения по ссылке — JPG или PNG)."
63
+ )
64
+
65
+
66
+ class ProductPicturesImportResult(BaseModel):
67
+ """Описывает схему результата добавление изображений.
68
+
69
+ Attributes:
70
+ pictures: Массив признаков загруженного контента, статусов и ссылок на изображения
71
+ """
72
+ pictures: list[ProductPicturesImportPicture] = Field(
73
+ default_factory=list, description="Массив признаков загруженного контента, статусов и ссылок на изображения."
74
+ )
75
+
76
+
77
+ class ProductPicturesImportResponse(BaseModel):
78
+ """Описывает схему ответа на запрос на добавление или обновление изображений в товарной карточке.
79
+
80
+ Attributes:
81
+ result: Результат работы метода
82
+ """
83
+ result: ProductPicturesImportResult = Field(
84
+ ..., description="Результат работы метода."
85
+ )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ozonapi-async
3
- Version: 0.7.4
3
+ Version: 0.8.0
4
4
  Summary: Асинхронный клиент для работы с API маркетплейса Ozon
5
5
  Author: Alexander Ulianov
6
6
  License: MIT
@@ -260,7 +260,7 @@ pytest --cov=ozonapi --cov-report=html
260
260
  | ✓ | `/v1/description-category/attribute/values/search` | Поиск по справочным значениям характеристики | `description_category_attribute_values_search()` |
261
261
  </details>
262
262
  <details>
263
- <summary>Загрузка и обновление товаров (16)</summary>
263
+ <summary>Загрузка и обновление товаров (17)</summary>
264
264
 
265
265
  | ✓ | Адрес метода Ozon | Описание метода | Python-метод |
266
266
  |---|---|---|---|
@@ -268,7 +268,7 @@ pytest --cov=ozonapi --cov-report=html
268
268
  | ✓ | `/v1/product/import/info` | Узнать статус добавления или обновления товара | `product_import_info()` |
269
269
  | ✓ | `/v1/product/import-by-sku` | Создать товар по SKU | `product_import_by_sku()` |
270
270
  | ✓ | `/v1/product/attributes/update` | Обновить характеристики товара | `product_attributes_update()` |
271
- | | `/v1/product/pictures/import` | Загрузить или обновить изображения товара | `product_pictures_import()` |
271
+ | | `/v1/product/pictures/import` | Загрузить или обновить изображения товара | `product_pictures_import()` |
272
272
  | ✓ | `/v3/product/list` | Список товаров | `product_list()` |
273
273
  | ✓ | `/v1/product/rating-by-sku` | Получить контент-рейтинг товаров по SKU | `product_rating_by_sku()` |
274
274
  | ✓ | `/v3/product/info/list` | Получить информацию о товарах по идентификаторам | `product_info_list()` |
@@ -80,6 +80,7 @@ src/ozonapi/seller/schemas/products/v1__product_attributes_update.py
80
80
  src/ozonapi/seller/schemas/products/v1__product_import_by_sku.py
81
81
  src/ozonapi/seller/schemas/products/v1__product_import_info.py
82
82
  src/ozonapi/seller/schemas/products/v1__product_info_subscription.py
83
+ src/ozonapi/seller/schemas/products/v1__product_pictures_import.py
83
84
  src/ozonapi/seller/schemas/products/v1__product_rating_by_sku.py
84
85
  src/ozonapi/seller/schemas/products/v1__product_related_sku_get.py
85
86
  src/ozonapi/seller/schemas/products/v1__product_unarchive.py
File without changes
File without changes