Что умеет API магазина
Кому нужен API, что через него можно получить сегодня и что появится дальше. Первый запрос за пять минут.
На этой странице
API магазина нужен тем, кто подключается к магазину со стороны. Дропшиппер забирает через него каталог к себе на сайт и передаёт заказы своих покупателей. Партнёр сверяет у себя статусы и способы доставки. Разработчик собирает для магазина отдельный сайт или приложение и берёт данные отсюда.
Через API данные можно получать, а менять в магазине ничего нельзя: ни товары, ни цены, ни остатки, ни заказы. Единственное, что API принимает, — новые заказы, например заказ, который дропшиппер оформил у себя на сайте и передаёт магазину.
Что доступно сейчас
Сейчас API отдаёт сведения о ключе, настройки и справочники магазина, каталог, цены, остатки и заказы. Новые заказы он тоже принимает:
| Адрес | Что отдаёт |
|---|---|
GET /api/v1/me |
сведения о ключе, которым сделан запрос |
GET /api/v1/shop |
название, страна, часовой пояс, валюты с курсами, языки, единицы продажи |
GET /api/v1/storefronts |
витрины магазина |
GET /api/v1/order_statuses |
статусы заказа и разрешённые переходы между ними |
GET /api/v1/payment_methods |
способы оплаты |
GET /api/v1/shipping_methods |
способы доставки |
GET /api/v1/warehouses |
склады |
GET /api/v1/customer_groups |
категории покупателей |
GET /api/v1/contact_types |
виды контактов: физлицо, компания |
GET /api/v1/tax_rates |
ставки налога |
GET /api/v1/categories |
категории каталога деревом |
GET /api/v1/brands |
бренды |
GET /api/v1/product_types |
типы товаров |
GET /api/v1/features |
характеристики со словарём значений |
GET /api/v1/products |
товары с артикулами, фото, характеристиками, ценами и остатками |
GET /api/v1/products/{id} |
один товар |
GET /api/v1/products/ids |
номера всех видимых товаров, чтобы найти снятые с продажи |
GET /api/v1/skus |
артикулы, в том числе поиск по коду и штрихкоду |
GET /api/v1/prices |
цены артикулов для вашего контакта |
GET /api/v1/inventory |
остатки артикулов |
POST /api/v1/orders/check |
расчёт заказа без создания: цены, скидки, итог и причины, по которым заказ не принять |
POST /api/v1/orders |
создание заказа: товары и комментарий, доставку и оплату назначает менеджер |
GET /api/v1/orders |
заказы вашего контакта |
GET /api/v1/orders/{id} |
один заказ |
Справочники магазина описаны в справочнике адресов. Каталогу посвящены отдельные страницы: видимость и синхронизация, справочники каталога, товары и артикулы, цены и остатки. Как магазин принимает заказы, описано на страницах «Заказы партнёра» и «Заказы: адреса и поля».
Магазин может и сам сообщать партнёру, что сменился статус его заказа, менеджер изменил заказ или изменились цены и остатки. Тогда партнёру не нужно постоянно спрашивать об этом. Включает такие сообщения владелец в форме ключа, а как их принимать, описано на странице «Сообщения партнёру (вебхуки)».
Ключ всегда выдаётся конкретному контакту магазина, дропшипперу или партнёру. По этому контакту магазин считает цены для ключа с учётом категории покупателя и персональных цен, на него же записывает заказы, которые пришли через API.
Что будет дальше
В форме ключа уже можно отметить право «Видеть покупателей». Адресов под него пока нет, они появятся в следующих выпусках магазина. Запрос к разделу, которого ещё нет, получает ответ 404.
Как устроен API
- Адрес:
https://<домен магазина>/api/v1. Версия входит в адрес, сейчас она одна,v1. - Ответы — JSON в кодировке UTF-8. Кириллица и косая черта в адресах приходят как есть, без экранирования.
- Вход — по ключу в заголовке
Authorization: Bearer <ключ>. Сеанс сотрудника в панели API не открывает. Даже из того же браузера без ключа ответ будет 401. - Права ключа выбирает владелец магазина. Ключ видит только те разделы, которые ему отметили.
- У каждого ключа свой предел запросов в минуту, по умолчанию 120.
- Ошибки приходят в одном формате
application/problem+jsonс честным HTTP-статусом и кодом ошибки. Подробности на странице «Ошибки и их коды». - Каждый запрос записывается в журнал, который владелец видит в панели. У
каждого ответа есть заголовок
X-Request-Id: по этому коду запрос находится в журнале.
Описание для Postman и Swagger
Каждый магазин отдаёт описание своего API в формате OpenAPI 3.1 по адресу
https://<домен магазина>/api/v1/openapi.json. Ключ для этого не нужен. В
описании перечислены все адреса с параметрами, поля ответов, коды ошибок и
сообщения, которые магазин присылает партнёру. Адрес для запросов в нём уже
указан, и это адрес того магазина, откуда вы его взяли.
Чтобы получить готовые запросы в Postman, нажмите Import и вставьте адрес описания. Postman соберёт коллекцию с запросом на каждый адрес API. Тип Bearer Token на вкладке Authorization у коллекции он выберет сам, вам останется вставить туда ключ. Этот же адрес открывают Swagger Editor, Insomnia и другие программы, которые понимают OpenAPI. По описанию можно и сгенерировать готовый клиент для своего языка программирования.
Пояснения в описании написаны по-английски, а подробности с примерами на русском и украинском есть на страницах этого справочника. Ссылку на описание владелец магазина найдёт в форме ключа, в блоке «Как подключить».
Быстрый старт
1. Получите ключ
Ключ выдаёт владелец магазина или сотрудник с правом «Выдавать ключи API». В панели он открывает «Настройки платформы», в группе «Платформа» выбирает «API магазина» и нажимает плюс рядом с «Ключи доступа». Как заполнить форму, описано на странице «Ключи доступа и права».
После нажатия «Выдать ключ» магазин один раз показывает ключ целиком. Он выглядит так:
12|ctx_Hq4bR7mPz0LwX3sYt8VnK2cJd5aEf9gUiO1hBqWe6a1c94f7
Ключом считается вся эта строка вместе с числом и вертикальной чертой в начале. Храните его как пароль. Магазин хранит только отпечаток ключа и второй раз его не покажет.
2. Проверьте ключ
Первым запросом стоит вызвать /me. Этому адресу не нужны права, он отвечает
любому действующему ключу и показывает, что ключ умеет.
curl https://shop.example.ua/api/v1/me \
-H "Authorization: Bearer 12|ctx_Hq4bR7mPz0LwX3sYt8VnK2cJd5aEf9gUiO1hBqWe6a1c94f7" \
-H "Accept: application/json"
Ответ:
{
"data": {
"id": 3,
"name": "Сайт партнёра",
"kind": "integration",
"contact": { "id": 418, "name": "ФОП Коваленко" },
"scopes": ["shop:read", "orders:create"],
"rate_limit_per_minute": 120,
"expires_at": null,
"settings_changed_at": null,
"api_version": "1"
}
}
Если пришёл ответ 401, ключ не передан, скопирован не целиком, отозван,
просрочен, заменён новым или удалён. Ключ удаляется и тогда, когда в магазине удаляют
контакт, которому его выдали. Поле code в ответе
подскажет, что именно произошло.
3. Получите данные магазина
curl https://shop.example.ua/api/v1/shop \
-H "Authorization: Bearer <ключ>"
Для этого адреса у ключа должно быть право «Видеть настройки и справочники
магазина» (shop:read). Новый ключ получает его отмеченным по умолчанию.
Если что-то не работает
В каждом ответе об ошибке есть поле request_id, такой же код приходит в
заголовке X-Request-Id. Сообщите этот код владельцу магазина вместе со
временем запроса. По нему владелец найдёт запрос в журнале и увидит, что вы
прислали и что ответил магазин. Как устроен журнал, описано на странице
«Журнал запросов».