ozonapi-async 0.4.0__tar.gz → 0.6.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.
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/PKG-INFO +4 -4
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/pyproject.toml +1 -1
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/readme.md +3 -3
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/__init__.py +1 -1
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/common/enumerations/postings.py +2 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/core/config.py +1 -1
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/methods/fbs.py +136 -2
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/schemas/fbs/__init__.py +16 -7
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/schemas/fbs/entities/__init__.py +5 -16
- ozonapi_async-0.6.0/src/ozonapi/seller/schemas/fbs/entities/posting__filter_with.py +30 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/schemas/fbs/entities/posting__posting.py +3 -3
- ozonapi_async-0.4.0/src/ozonapi/seller/schemas/fbs/entities/posting__products.py → ozonapi_async-0.6.0/src/ozonapi/seller/schemas/fbs/entities/posting__product.py +17 -6
- ozonapi_async-0.6.0/src/ozonapi/seller/schemas/fbs/v2__fbs_posting_delivering.py +2 -0
- ozonapi_async-0.6.0/src/ozonapi/seller/schemas/fbs/v2__posting_fbs_get_by_barcode.py +65 -0
- ozonapi_async-0.6.0/src/ozonapi/seller/schemas/fbs/v3__posting_fbs_get.py +264 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/schemas/fbs/v3__posting_fbs_list.py +4 -28
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/schemas/fbs/v3__posting_fbs_unfulfilled_list.py +2 -28
- ozonapi_async-0.6.0/src/ozonapi/seller/schemas/fbs/v3__posting_multiboxqty_set.py +40 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi_async.egg-info/PKG-INFO +4 -4
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi_async.egg-info/SOURCES.txt +6 -1
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/LICENSE +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/setup.cfg +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/__init__.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/common/__init__.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/common/enumerations/__init__.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/common/enumerations/delivery.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/common/enumerations/localization.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/common/enumerations/prices.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/common/enumerations/products.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/common/enumerations/requests.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/common/enumerations/warehouses.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/core/__init__.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/core/core.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/core/exceptions.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/core/method_rate_limiter.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/core/rate_limiter.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/core/sessions.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/methods/__init__.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/methods/attributes_and_characteristics.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/methods/barcodes.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/methods/beta.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/methods/prices_and_stocks.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/methods/products.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/methods/warehouses.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/schemas/__init__.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/schemas/attributes_and_characteristics/__init__.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/schemas/attributes_and_characteristics/base.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/schemas/attributes_and_characteristics/v1__description_category_attribute.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/schemas/attributes_and_characteristics/v1__description_category_attribute_values.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/schemas/attributes_and_characteristics/v1__description_category_attribute_values_search.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/schemas/attributes_and_characteristics/v1__description_category_tree.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/schemas/barcodes/__init__.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/schemas/barcodes/v1__barcode_add.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/schemas/barcodes/v1__barcode_generate.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/schemas/base.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/schemas/beta/__init__.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/schemas/beta/v1__analytics_stocks.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/schemas/fbs/entities/posting__addressee.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/schemas/fbs/entities/posting__analytics_data.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/schemas/fbs/entities/posting__barcodes.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/schemas/fbs/entities/posting__cancellation.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/schemas/fbs/entities/posting__customer.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/schemas/fbs/entities/posting__customer_address.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/schemas/fbs/entities/posting__delivery_method.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/schemas/fbs/entities/posting__financial_data.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/schemas/fbs/entities/posting__financial_data_products.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/schemas/fbs/entities/posting__legal_info.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/schemas/fbs/entities/posting__optional.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/schemas/fbs/entities/posting__requirements.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/schemas/fbs/entities/posting__tariffication.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/schemas/mixins.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/schemas/prices_and_stocks/__init__.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/schemas/prices_and_stocks/base.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/schemas/prices_and_stocks/v1__product_import_prices.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/schemas/prices_and_stocks/v1__product_info_stocks_by_warehouse_fbs.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/schemas/prices_and_stocks/v2__products_stocks.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/schemas/prices_and_stocks/v4__product_info_stocks.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/schemas/prices_and_stocks/v5__product_info_prices.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/schemas/products/__init__.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/schemas/products/base.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/schemas/products/v1__product_archive.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/schemas/products/v1__product_attributes_update.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/schemas/products/v1__product_import_by_sku.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/schemas/products/v1__product_import_info.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/schemas/products/v1__product_info_subscription.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/schemas/products/v1__product_rating_by_sku.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/schemas/products/v1__product_related_sku_get.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/schemas/products/v1__product_unarchive.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/schemas/products/v1__product_update_offer_id.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/schemas/products/v2__product_pictures_info.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/schemas/products/v2__products_delete.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/schemas/products/v3__product_import.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/schemas/products/v3__product_info_list.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/schemas/products/v3__product_list.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/schemas/products/v4__product_info_attributes.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/schemas/warehouses/__init__.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/schemas/warehouses/v1__delivery_method_list.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/schemas/warehouses/v1__warehouse_list.py +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi_async.egg-info/dependency_links.txt +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi_async.egg-info/requires.txt +0 -0
- {ozonapi_async-0.4.0 → ozonapi_async-0.6.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.
|
|
3
|
+
Version: 0.6.0
|
|
4
4
|
Summary: Асинхронный клиент для работы с API маркетплейса Ozon
|
|
5
5
|
Author: Alexander Ulianov
|
|
6
6
|
License: MIT
|
|
@@ -377,9 +377,9 @@ pytest --cov=ozonapi --cov-report=html
|
|
|
377
377
|
|---|---|---|---|
|
|
378
378
|
| ✓ | `/v3/posting/fbs/unfulfilled/list` | Список необработанных отправлений | `posting_fbs_unfulfilled_list()` |
|
|
379
379
|
| ✓ | `/v3/posting/fbs/list` | Список отправлений | `posting_fbs_list()` |
|
|
380
|
-
|
|
|
381
|
-
|
|
|
382
|
-
|
|
|
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
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()` |
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "ozonapi-async"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.6.0"
|
|
8
8
|
description = "Асинхронный клиент для работы с API маркетплейса Ozon"
|
|
9
9
|
readme = "readme.md"
|
|
10
10
|
keywords = ["ozon", "api", "async", "ecommerce", "seller", "client"]
|
|
@@ -335,9 +335,9 @@ pytest --cov=ozonapi --cov-report=html
|
|
|
335
335
|
|---|---|---|---|
|
|
336
336
|
| ✓ | `/v3/posting/fbs/unfulfilled/list` | Список необработанных отправлений | `posting_fbs_unfulfilled_list()` |
|
|
337
337
|
| ✓ | `/v3/posting/fbs/list` | Список отправлений | `posting_fbs_list()` |
|
|
338
|
-
|
|
|
339
|
-
|
|
|
340
|
-
|
|
|
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
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()` |
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Асинхронный интерфейс для взаимодействия с API маркетплейса Ozon.
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
|
-
__version__ = "0.
|
|
5
|
+
__version__ = "0.6.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"
|
{ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/common/enumerations/postings.py
RENAMED
|
@@ -12,6 +12,7 @@ class AvailablePostingActions(str, Enum):
|
|
|
12
12
|
CLICK_TRACK_NUMBER: просмотреть по трек-номеру историю изменения статусов в личном кабинете
|
|
13
13
|
CUSTOMER_PHONE_AVAILABLE: телефон покупателя
|
|
14
14
|
HAS_WEIGHT_PRODUCTS: весовые товары в отправлении
|
|
15
|
+
HAS_BARCODE_FOR_PRINTING: штрихкод для печати
|
|
15
16
|
HIDE_REGION_AND_CITY: скрыть регион и город покупателя в отчёте
|
|
16
17
|
INVOICE_GET: получить информацию из счёта-фактуры
|
|
17
18
|
INVOICE_SEND: создать счёт-фактуру
|
|
@@ -204,6 +205,7 @@ class PrrOption(str, Enum):
|
|
|
204
205
|
Attributes:
|
|
205
206
|
LIFT: подъём на лифте
|
|
206
207
|
STAIRS: подъём по лестнице
|
|
208
|
+
FLOOR: подъем на этаж
|
|
207
209
|
NONE: покупатель отказался от услуги, поднимать товары не нужно
|
|
208
210
|
DELIVERY_DEFAULT: доставка включена в стоимость, по условиям оферты нужно доставить товар на этаж
|
|
209
211
|
UNSPECIFIED: не указано
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
from ..core import APIManager
|
|
2
2
|
from ..schemas.fbs import PostingFBSUnfulfilledListRequest, PostingFBSUnfulfilledListResponse, PostingFBSListResponse, \
|
|
3
|
-
PostingFBSListRequest
|
|
3
|
+
PostingFBSListRequest, PostingFBSGetRequest, PostingFBSGetResponse, PostingFBSGetByBarcodeResponse, \
|
|
4
|
+
PostingFBSGetByBarcodeRequest, PostingFBSMultiBoxQtySetResponse, PostingFBSMultiBoxQtySetRequest
|
|
4
5
|
|
|
5
6
|
|
|
6
7
|
class SellerFBSAPI(APIManager):
|
|
@@ -160,4 +161,137 @@ class SellerFBSAPI(APIManager):
|
|
|
160
161
|
endpoint="posting/fbs/list",
|
|
161
162
|
json=request.model_dump(by_alias=True)
|
|
162
163
|
)
|
|
163
|
-
return PostingFBSListResponse(**response)
|
|
164
|
+
return PostingFBSListResponse(**response)
|
|
165
|
+
|
|
166
|
+
async def posting_fbs_get(
|
|
167
|
+
self: "SellerFBSAPI",
|
|
168
|
+
request: PostingFBSGetRequest
|
|
169
|
+
) -> PostingFBSGetResponse:
|
|
170
|
+
"""Метод для получения информации об отправлении FBS по его номеру.
|
|
171
|
+
|
|
172
|
+
Notes:
|
|
173
|
+
• Чтобы получать актуальную дату отгрузки, регулярно обновляйте информацию об отправлениях или подключите пуш-уведомления.
|
|
174
|
+
• Для получения дополнительных данных используйте параметр `with_` в запросе.
|
|
175
|
+
|
|
176
|
+
References:
|
|
177
|
+
https://docs.ozon.ru/api/seller/#operation/PostingAPI_GetFbsPostingV3
|
|
178
|
+
|
|
179
|
+
Args:
|
|
180
|
+
request: Запрос на получение информации об отправлении FBS по схеме `PostingFBSGetRequest`
|
|
181
|
+
|
|
182
|
+
Returns:
|
|
183
|
+
Детализированная информация об отправлении по схеме `PostingFBSGetResponse`
|
|
184
|
+
|
|
185
|
+
Examples:
|
|
186
|
+
Базовое применение:
|
|
187
|
+
async with SellerAPI(client_id, api_key) as api:
|
|
188
|
+
result = await api.posting_fbs_get(
|
|
189
|
+
PostingFBSGetRequest(
|
|
190
|
+
posting_number="57195475-0050-3"
|
|
191
|
+
)
|
|
192
|
+
)
|
|
193
|
+
|
|
194
|
+
Пример с дополнительными полями:
|
|
195
|
+
async with SellerAPI(client_id, api_key) as api:
|
|
196
|
+
result = await api.posting_fbs_get(
|
|
197
|
+
PostingFBSGetRequest(
|
|
198
|
+
posting_number="57195475-0050-3",
|
|
199
|
+
with_=PostingFBSGetRequestWith(
|
|
200
|
+
analytics_data=True,
|
|
201
|
+
barcodes=True,
|
|
202
|
+
financial_data=True,
|
|
203
|
+
legal_info=False,
|
|
204
|
+
product_exemplars=True,
|
|
205
|
+
related_postings=True,
|
|
206
|
+
translit=False
|
|
207
|
+
)
|
|
208
|
+
)
|
|
209
|
+
)
|
|
210
|
+
"""
|
|
211
|
+
response = await self._request(
|
|
212
|
+
method="post",
|
|
213
|
+
api_version="v3",
|
|
214
|
+
endpoint="posting/fbs/get",
|
|
215
|
+
json=request.model_dump(by_alias=True)
|
|
216
|
+
)
|
|
217
|
+
return PostingFBSGetResponse(**response)
|
|
218
|
+
|
|
219
|
+
async def posting_fbs_get_by_barcode(
|
|
220
|
+
self: "SellerFBSAPI",
|
|
221
|
+
request: PostingFBSGetByBarcodeRequest
|
|
222
|
+
) -> PostingFBSGetByBarcodeResponse:
|
|
223
|
+
"""Метод для получения информации об отправлении FBS по штрихкоду.
|
|
224
|
+
|
|
225
|
+
Notes:
|
|
226
|
+
• Штрихкод отправления можно получить с помощью методов posting_fbs_get(), posting_fbs_list(), posting_fbs_unfulfilled_list() в массиве barcodes
|
|
227
|
+
• Метод возвращает основную информацию об отправлении: статус, данные о заказе, товары и штрихкоды.
|
|
228
|
+
• Для получения дополнительных данных (финансовой информации, аналитики и т.д.) используйте метод posting_fbs_get().
|
|
229
|
+
|
|
230
|
+
References:
|
|
231
|
+
https://docs.ozon.ru/api/seller/?__rr=1#operation/PostingAPI_GetFbsPostingByBarcode
|
|
232
|
+
|
|
233
|
+
Args:
|
|
234
|
+
request: Запрос на получение информации об отправлении по штрихкоду по схеме `PostingFBSGetByBarcodeRequest`
|
|
235
|
+
|
|
236
|
+
Returns:
|
|
237
|
+
Информация об отправлении FBS по схеме `PostingFBSGetByBarcodeResponse`
|
|
238
|
+
|
|
239
|
+
Examples:
|
|
240
|
+
async with SellerAPI(client_id, api_key) as api:
|
|
241
|
+
result = await api.posting_fbs_get_by_barcode(
|
|
242
|
+
PostingFBSGetByBarcodeRequest(
|
|
243
|
+
barcode="20325804886000"
|
|
244
|
+
)
|
|
245
|
+
)
|
|
246
|
+
"""
|
|
247
|
+
response = await self._request(
|
|
248
|
+
method="post",
|
|
249
|
+
api_version="v2",
|
|
250
|
+
endpoint="posting/fbs/get-by-barcode",
|
|
251
|
+
json=request.model_dump()
|
|
252
|
+
)
|
|
253
|
+
return PostingFBSGetByBarcodeResponse(**response["result"])
|
|
254
|
+
|
|
255
|
+
async def posting_fbs_multiboxqty_set(
|
|
256
|
+
self: "SellerFBSAPI",
|
|
257
|
+
request: PostingFBSMultiBoxQtySetRequest
|
|
258
|
+
) -> PostingFBSMultiBoxQtySetResponse:
|
|
259
|
+
"""Метод для передачи количества коробок для отправлений, в которых есть многокоробочные товары.
|
|
260
|
+
|
|
261
|
+
Notes:
|
|
262
|
+
• Метод используется при работе по схеме rFBS Агрегатор — с доставкой партнёрами Ozon.
|
|
263
|
+
• Используется только для многокоробочных отправлений, где товары упакованы в несколько коробок.
|
|
264
|
+
• Количество коробок должно быть целым положительным числом.
|
|
265
|
+
• После успешного выполнения метода система учитывает указанное количество коробок при дальнейшей обработке отправления.
|
|
266
|
+
|
|
267
|
+
References:
|
|
268
|
+
https://docs.ozon.ru/api/seller/?__rr=1#operation/PostingAPI_PostingMultiBoxQtySetV3
|
|
269
|
+
|
|
270
|
+
Args:
|
|
271
|
+
request: Запрос на указание количества коробок для многокоробочного отправления по схеме `PostingFBSMultiBoxQtySetRequest`
|
|
272
|
+
|
|
273
|
+
Returns:
|
|
274
|
+
Результат выполнения операции по схеме `PostingFBSMultiBoxQtySetResponse`
|
|
275
|
+
|
|
276
|
+
Examples:
|
|
277
|
+
Пример с проверкой результата:
|
|
278
|
+
async with SellerAPI(client_id, api_key) as api:
|
|
279
|
+
result = await api.posting_multiboxqty_set(
|
|
280
|
+
PostingFBSMultiBoxQtySetRequest(
|
|
281
|
+
posting_number="57195475-0050-3",
|
|
282
|
+
multi_box_qty=3
|
|
283
|
+
)
|
|
284
|
+
)
|
|
285
|
+
|
|
286
|
+
if result.result.result:
|
|
287
|
+
print("Количество коробок успешно передано")
|
|
288
|
+
else:
|
|
289
|
+
print("Произошла ошибка при указании количества коробок")
|
|
290
|
+
"""
|
|
291
|
+
response = await self._request(
|
|
292
|
+
method="post",
|
|
293
|
+
api_version="v3",
|
|
294
|
+
endpoint="posting/fbs/multi-box-qty/set",
|
|
295
|
+
json=request.model_dump()
|
|
296
|
+
)
|
|
297
|
+
return PostingFBSMultiBoxQtySetResponse(**response)
|
|
@@ -9,39 +9,48 @@ __all__ = [
|
|
|
9
9
|
"PostingFBSCustomer",
|
|
10
10
|
"PostingFBSCustomerAddress",
|
|
11
11
|
"PostingFBSDeliveryMethod",
|
|
12
|
+
"PostingFBSFilterWith",
|
|
12
13
|
"PostingFBSFinancialData",
|
|
13
14
|
"PostingFBSFinancialDataProducts",
|
|
15
|
+
"PostingFBSGetByBarcodeRequest",
|
|
16
|
+
"PostingFBSGetByBarcodeResponse",
|
|
17
|
+
"PostingFBSGetRequest",
|
|
18
|
+
"PostingFBSGetResponse",
|
|
14
19
|
"PostingFBSLegalInfo",
|
|
15
20
|
"PostingFBSOptional",
|
|
16
21
|
"PostingFBSPosting",
|
|
17
|
-
"
|
|
22
|
+
"PostingFBSProduct",
|
|
23
|
+
"PostingFBSProductDetailed",
|
|
18
24
|
"PostingFBSRequirements",
|
|
19
25
|
"PostingFBSTariffication",
|
|
20
26
|
"PostingFBSListRequestFilterLastChangedStatusDate",
|
|
21
|
-
"PostingFBSListFilterWith",
|
|
22
27
|
"PostingFBSListFilter",
|
|
23
28
|
"PostingFBSListRequest",
|
|
24
29
|
"PostingFBSListResult",
|
|
25
30
|
"PostingFBSListResponse",
|
|
31
|
+
"PostingFBSMultiBoxQtySetRequest",
|
|
32
|
+
"PostingFBSMultiBoxQtySetResponse",
|
|
26
33
|
"PostingFBSUnfulfilledListRequest",
|
|
27
34
|
"PostingFBSUnfulfilledListResponse",
|
|
28
35
|
"PostingFBSUnfulfilledListRequestFilterLastChangedStatusDate",
|
|
29
|
-
"PostingFBSUnfulfilledListFilterWith",
|
|
30
36
|
"PostingFBSUnfulfilledListFilter",
|
|
31
37
|
"PostingFBSUnfulfilledListResult",
|
|
32
38
|
]
|
|
33
39
|
|
|
34
40
|
from .entities import PostingFBSAddressee, PostingFBSAnalyticsData, PostingFBSBarcodes, PostingFBSCancellation, \
|
|
35
41
|
PostingFBSCustomer, PostingFBSCustomerAddress, PostingFBSDeliveryMethod, PostingFBSFinancialData, \
|
|
36
|
-
PostingFBSFinancialDataProducts, PostingFBSLegalInfo, PostingFBSOptional, PostingFBSPosting,
|
|
37
|
-
|
|
38
|
-
|
|
42
|
+
PostingFBSFinancialDataProducts, PostingFBSLegalInfo, PostingFBSOptional, PostingFBSPosting, \
|
|
43
|
+
PostingFBSProductDetailed, \
|
|
44
|
+
PostingFBSRequirements, PostingFBSTariffication, PostingFBSFilterWith, PostingFBSProduct
|
|
45
|
+
from .v2__posting_fbs_get_by_barcode import PostingFBSGetByBarcodeRequest, PostingFBSGetByBarcodeResponse
|
|
46
|
+
from .v3__posting_fbs_get import PostingFBSGetRequest, PostingFBSGetResponse
|
|
47
|
+
from .v3__posting_fbs_list import PostingFBSListRequestFilterLastChangedStatusDate, \
|
|
39
48
|
PostingFBSListFilter, PostingFBSListRequest, PostingFBSListResult, PostingFBSListResponse
|
|
49
|
+
from .v3__posting_multiboxqty_set import PostingFBSMultiBoxQtySetResponse, PostingFBSMultiBoxQtySetRequest
|
|
40
50
|
from .v3__posting_fbs_unfulfilled_list import (
|
|
41
51
|
PostingFBSUnfulfilledListRequest,
|
|
42
52
|
PostingFBSUnfulfilledListResponse,
|
|
43
53
|
PostingFBSUnfulfilledListRequestFilterLastChangedStatusDate,
|
|
44
|
-
PostingFBSUnfulfilledListFilterWith,
|
|
45
54
|
PostingFBSUnfulfilledListFilter,
|
|
46
55
|
PostingFBSUnfulfilledListResult,
|
|
47
56
|
)
|
{ozonapi_async-0.4.0 → ozonapi_async-0.6.0}/src/ozonapi/seller/schemas/fbs/entities/__init__.py
RENAMED
|
@@ -11,37 +11,26 @@ __all__ = [
|
|
|
11
11
|
"PostingFBSLegalInfo",
|
|
12
12
|
"PostingFBSOptional",
|
|
13
13
|
"PostingFBSPosting",
|
|
14
|
-
"
|
|
14
|
+
"PostingFBSProduct",
|
|
15
|
+
"PostingFBSProductDetailed",
|
|
15
16
|
"PostingFBSRequirements",
|
|
16
17
|
"PostingFBSTariffication",
|
|
18
|
+
"PostingFBSFilterWith",
|
|
17
19
|
]
|
|
18
20
|
|
|
19
21
|
from .posting__analytics_data import PostingFBSAnalyticsData
|
|
20
|
-
|
|
21
22
|
from .posting__barcodes import PostingFBSBarcodes
|
|
22
|
-
|
|
23
23
|
from .posting__cancellation import PostingFBSCancellation
|
|
24
|
-
|
|
25
24
|
from .posting__customer import PostingFBSCustomer
|
|
26
|
-
|
|
27
25
|
from .posting__customer_address import PostingFBSCustomerAddress
|
|
28
|
-
|
|
29
26
|
from .posting__delivery_method import PostingFBSDeliveryMethod
|
|
30
|
-
|
|
27
|
+
from .posting__filter_with import PostingFBSFilterWith
|
|
31
28
|
from .posting__financial_data import PostingFBSFinancialData
|
|
32
|
-
|
|
33
29
|
from .posting__financial_data_products import PostingFBSFinancialDataProducts
|
|
34
|
-
|
|
35
30
|
from .posting__legal_info import PostingFBSLegalInfo
|
|
36
|
-
|
|
37
31
|
from .posting__optional import PostingFBSOptional
|
|
38
|
-
|
|
39
32
|
from .posting__posting import PostingFBSPosting
|
|
40
|
-
|
|
41
|
-
from .posting__products import PostingFBSProducts
|
|
42
|
-
|
|
33
|
+
from .posting__product import PostingFBSProductDetailed, PostingFBSProduct
|
|
43
34
|
from .posting__requirements import PostingFBSRequirements
|
|
44
|
-
|
|
45
35
|
from .posting__tariffication import PostingFBSTariffication
|
|
46
|
-
|
|
47
36
|
from .posting__addressee import PostingFBSAddressee
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
from typing import Optional
|
|
2
|
+
|
|
3
|
+
from pydantic import Field, BaseModel
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class PostingFBSFilterWith(BaseModel):
|
|
7
|
+
"""Дополнительные поля, которые нужно добавить в ответ.
|
|
8
|
+
|
|
9
|
+
Attributes:
|
|
10
|
+
analytics_data: Добавить в ответ данные аналитики (опционально)
|
|
11
|
+
barcodes: Добавить в ответ штрихкоды отправления (опционально)
|
|
12
|
+
financial_data: Добавить в ответ финансовые данные (опционально)
|
|
13
|
+
legal_info: Добавить в ответ юридическую информацию (опционально)
|
|
14
|
+
translit: Выполнить транслитерацию возвращаемых значений (опционально)
|
|
15
|
+
"""
|
|
16
|
+
analytics_data: Optional[bool] = Field(
|
|
17
|
+
False, description="Добавить в ответ данные аналитики."
|
|
18
|
+
)
|
|
19
|
+
barcodes: Optional[bool] = Field(
|
|
20
|
+
False, description="Добавить в ответ штрихкоды отправления."
|
|
21
|
+
)
|
|
22
|
+
financial_data: Optional[bool] = Field(
|
|
23
|
+
False, description="Добавить в ответ финансовые данные."
|
|
24
|
+
)
|
|
25
|
+
legal_info: Optional[bool] = Field(
|
|
26
|
+
False, description="Добавить в ответ юридическую информацию."
|
|
27
|
+
)
|
|
28
|
+
translit: Optional[bool] = Field(
|
|
29
|
+
False, description="Выполнить транслитерацию возвращаемых значений."
|
|
30
|
+
)
|
|
@@ -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 .
|
|
17
|
+
from .posting__product import PostingFBSProductDetailed
|
|
18
18
|
from .posting__requirements import PostingFBSRequirements
|
|
19
19
|
from .posting__tariffication import PostingFBSTariffication
|
|
20
20
|
|
|
@@ -114,14 +114,14 @@ class PostingFBSPosting(BaseModel):
|
|
|
114
114
|
posting_number: str = Field(
|
|
115
115
|
..., description="Номер отправления."
|
|
116
116
|
)
|
|
117
|
-
products: list[
|
|
117
|
+
products: list[PostingFBSProductDetailed] = Field(
|
|
118
118
|
..., description="Список товаров в отправлении."
|
|
119
119
|
)
|
|
120
120
|
prr_option: Optional[PrrOption] = Field(
|
|
121
121
|
None, description="Код услуги погрузочно-разгрузочных работ."
|
|
122
122
|
)
|
|
123
123
|
quantum_id: Optional[int] = Field(
|
|
124
|
-
|
|
124
|
+
None, description="Идентификатор эконом-товара."
|
|
125
125
|
)
|
|
126
126
|
requirements: PostingFBSRequirements = Field(
|
|
127
127
|
..., description="""
|
|
@@ -5,8 +5,8 @@ from pydantic import Field, BaseModel
|
|
|
5
5
|
from ....common.enumerations.localization import CurrencyCode
|
|
6
6
|
|
|
7
7
|
|
|
8
|
-
class
|
|
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,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
|
+
)
|