Введение и начало работы
Документация Ozon Delivery API
В документе описаны методы Ozon Delivery API для Ozon Доставки для бизнеса.
Подробнее об Ozon Доставке для бизнеса в Базе знаний продавца
Рабочая среда: https://api-delivery.ozon.ru/.
Введение#
Ozon Delivery API — программный интерфейс для интеграции логистики Ozon в инфраструктуру продавца. API позволяет автоматизировать работу с доставкой: от расчёта условий и создания заказов до отслеживания и обработки возвратов.
С помощью Ozon Delivery API можно:
- проверять доступность доставки для покупателя;
- рассчитывать предварительные сроки и стоимость доставки, а также стоимость страховки;
- создавать заказы с одним или несколькими отправлениями;
- подтверждать готовность отправлений к отгрузке, генерировать этикетки;
- получать информацию об отправлениях, историю статусов;
- отменять отправления;
- отслеживать возвраты, скачивать штрихкоды для их получения.
Готовится к релизу#
Разделы ниже закомментированы в исходной спецификации Ozon: функциональность объявлена, но ещё не выпущена. Приведены как индикатор планов — в рабочем API этих методов и статусов пока нет.
- создавать методы доставки и управлять ими;
- выбирать точки отгрузки и получения возвратов;
- формировать грузоместа для доверительной приёмки;
Создание приложения#
Ozon Delivery API работает через OAuth-токен в частном приложении. Для подключения создайте приложение:
- В личном кабинете Ozon Доставки в разделе Настройки → Управление частными приложениями нажмите Создать.
- Выберите уровни доступа приложения к API:
delivery-api.delivery— методы для проверки доступности доставки и сроков;delivery-api.delivery-point— методы для получения информации по пунктам выдачи;delivery-api.order— методы для оформления заказа;delivery-api.posting— методы для работы с отправлениями;delivery-api.return— методы для работы с возвратами;delivery-api.all— все методы.
- Нажмите Создать.
В строке с приложением нажмите
и скопируйте client_id и client_secret.
Используйте их для авторизации в API.
Вы также можете выдать доступ разработчикам для управления частным приложением.
Подробнее о выдаче доступа
Авторизация#
Чтобы получить OAuth-токен, отправьте POST-запрос по ссылке https://xapi.ozon.ru/oauth/token с обязательными параметрами:
client_id— уникальный идентификатор OAuth-клиента;client_secret— секретный ключ OAuth-клиента;grant_type = client_credentials— тип гранта c прямой авторизацией;scope— массив с уровнями доступа к API.
Если запрос выполнен успешно, Ozon возвращает ответ в JSON-формате с токеном доступа access_token.
С ним вы можете обращаться к методам API.
Защита от DDoS-атак#
Серверы Ozon защищены модулем testcookie. Для успешного взаимодействия с API приложение должно корректно обрабатывать редиректы:
- При вызове метода модуль перехватывает входящий HTTP-запрос для проверки.
- Сервер отправляет клиенту HTTP-редирект с кодом 302 или 307 с заголовками
LocationиSet-Cookie. - Клиент выполняет запрос с тем же телом по пути из заголовка
Location, приложивCookieиз заголовкаSet-Cookie. - Клиент сохраняет значение заголовка
Set-Cookieи использует его для последующих запросов к API. - Последующие запросы работают без редиректа при наличии указанных
Cookieв запросе.
Значение Set-Cookie является уникальным, зашифрованным и может измениться без уведомления.
В некоторых случаях при отсутствии Cookie в запросе сервер может позволить сделать вызов без редиректа,
а в некоторых всегда отвечает редиректом до получения корректных Cookie.
Работа с API#
Рабочая среда: https://api-delivery.ozon.ru/.
Шаблон запроса:
curl -X POST https://api-delivery.ozon.ru/{эндпоинт метода Ozon Delivery API} \
-H "Authorization: Bearer ACCESS_TOKEN"
Пример работы с API на bash#
Переменные окружения
# Укажите ваш CLIENT_ID.
export CLIENT_ID="..."
# Укажите ваш CLIENT_SECRET.
export CLIENT_SECRET="..."
# Адрес рабочей среды.
export HOST="api-delivery.ozon.ru"
# Адрес получения токена авторизации.
export AUTH_URL="https://xapi.ozon.ru/oauth/token"
Получить и сохранить токен
curl -sL -c ~/.b2c_cookies -b ~/.b2c_cookies -X POST "$AUTH_URL" \
-H "Content-Type: application/json" \
-d "{\"client_id\":\"$CLIENT_ID\",\"client_secret\":\"$CLIENT_SECRET\", \"grant_type\": \"client_credentials\", \"scope\": [ \"delivery-api.delivery\", \"delivery-api.delivery-point\", \"delivery-api.order\", \"delivery-api.posting\" ]}" \
| jq -r '.access_token' > ~/.b2c_token
cat ~/.b2c_token
Результат:
eyJhbGciOU73Dutst9_0eoU73Dutst9_cDBM0VmkL0W1I6RGDcYM41M6bkFMx3-1lSZ-SjfOh2_ZGguYPQcRA...
Пример вызова метода
# Номер телефона покупателя для проверки.
export PHONE_NUMBER="+7..."
curl -sL -c ~/.b2c_cookies -b ~/.b2c_cookies -X POST "https://$HOST/v1/delivery/check-client" \
-H "Authorization: Bearer $(cat ~/.b2c_token)" \
-H "Content-Type: application/json" \
-d "{\"phone_number\": \"$PHONE_NUMBER\"}"
Результат:
{"can_be_delivered":true}%