Документация

Справочник адресов

Каждый адрес API: нужное право, параметры, пример запроса и ответа, описание всех полей.

На этой странице

Здесь описан каждый адрес API: какое право он требует, какие параметры принимает, что отдаёт и что значит каждое поле ответа. Все адреса отвечают JSON. Данные отдаются по GET, а два адреса заказов, POST /orders/check и POST /orders, принимают POST. Общие правила запросов, вид значений и постраничная выдача описаны на странице «Запросы и ответы».

В примерах магазин живёт на shop.example.ua, а вместо <ключ> подставляется ключ целиком, вместе с номером и вертикальной чертой.

Адрес Право Список
GET /api/v1/me не нужно нет
GET /api/v1/shop shop:read нет
GET /api/v1/storefronts shop:read да
GET /api/v1/order_statuses shop:read да
GET /api/v1/payment_methods shop:read да
GET /api/v1/shipping_methods shop:read да
GET /api/v1/warehouses shop:read да
GET /api/v1/customer_groups shop:read да
GET /api/v1/contact_types shop:read да
GET /api/v1/tax_rates shop:read да
GET /api/v1/categories catalog:read да
GET /api/v1/brands catalog:read да
GET /api/v1/product_types catalog:read да
GET /api/v1/features catalog:read да
GET /api/v1/products catalog:read да
GET /api/v1/products/{id} catalog:read нет
GET /api/v1/products/ids catalog:read да
GET /api/v1/skus catalog:read да
GET /api/v1/prices prices:read да
GET /api/v1/inventory inventory:read да
POST /api/v1/orders/check orders:create нет
POST /api/v1/orders orders:create нет
GET /api/v1/orders orders:read да
GET /api/v1/orders/{id} orders:read нет

Адреса каталога, цен, остатков и заказов описаны на отдельных страницах, ссылки в таблице ведут на них. Ниже описаны сведения о ключе и справочники магазина.

Все списки принимают параметры limit (от 1 до 200, по умолчанию 50) и offset (от 0, по умолчанию 0) и отдают рядом с data поля meta и links. Исключений два: /products/ids отдаёт по умолчанию 5000 номеров, самое большее 10 000, а /prices с параметром sku_ids отдаёт по умолчанию 100 записей.

Любой другой адрес внутри /api/v1 отвечает 404 с кодом not_found, а существующий адрес с другим методом отвечает 405 с кодом method_not_allowed.

Отдельно стоит GET /api/v1/openapi.json, описание API в формате OpenAPI 3.1 для Postman и Swagger. Ключ ему не нужен. Запросы к нему не попадают в журнал, и заголовка X-Request-Id в ответе нет. Как им пользоваться, рассказано на странице «Что умеет API магазина».

GET /api/v1/me

Сведения о ключе, которым сделан запрос. Права не нужны, адрес отвечает любому действующему ключу. С него удобно начинать, чтобы проверить, что ключ работает и какие права у него есть.

curl https://shop.example.ua/api/v1/me \
  -H "Authorization: Bearer <ключ>"
{
    "data": {
        "id": 3,
        "name": "Сайт партнёра",
        "kind": "integration",
        "contact": { "id": 418, "name": "ФОП Коваленко" },
        "scopes": ["shop:read", "catalog:read", "prices:read", "inventory:read"],
        "rate_limit_per_minute": 120,
        "expires_at": "2026-12-31T21:59:59Z",
        "settings_changed_at": "2026-10-15T08:12:40Z",
        "api_version": "1"
    }
}
Поле Тип Что значит
id целое номер ключа в магазине
name строка название ключа, которое владелец задал в поле «Название ключа»
kind строка вид ключа. Сейчас всегда integration
contact объект контакт магазина, которому выдан ключ. Ключ без контакта не работает, поэтому поле есть всегда
contact.id целое номер контакта
contact.name строка имя контакта, как оно записано в магазине
scopes массив строк коды прав ключа, например shop:read. Все коды перечислены на странице «Ключи доступа и права»
rate_limit_per_minute целое сколько запросов в минуту магазин примет по этому ключу
expires_at дата или null когда ключ перестанет работать, в UTC. null — ключ бессрочный
settings_changed_at дата или null время в UTC, когда владелец в последний раз поменял у ключа права, «Как отдавать остатки», «С каких складов» или «Описание товара» либо перевёл ваш контакт в другую категорию покупателей. Категорию контакт может сменить и автоматически, по условиям категорий. null — ничего из этого не менялось с тех пор, как ключ выдан. Название ключа и ограничения это время не сдвигают. Если оно позже вашей прошлой сверки, заберите каталог, цены и остатки заново. Подробно в разделе «Изменения: updated_since»
api_version строка версия API, сейчас "1"

GET /api/v1/shop

Основные настройки магазина: название, страна, часовой пояс, валюты, языки и единицы продажи. Право: shop:read.

curl https://shop.example.ua/api/v1/shop \
  -H "Authorization: Bearer <ключ>"
{
    "data": {
        "name": "CartiX Демо",
        "country": "UA",
        "timezone": "Europe/Kyiv",
        "base_currency": "UAH",
        "currencies": [
            { "code": "UAH", "rate": "1.000000" },
            { "code": "USD", "rate": "41.250000" },
            { "code": "EUR", "rate": "48.100000" }
        ],
        "locales": ["ru", "uk", "en"],
        "main_locale": "ru",
        "units": ["pcs", "m", "kg", "g", "l", "m²"]
    }
}
Поле Тип Что значит
name строка название магазина из его общих настроек
country строка страна магазина, двухбуквенный код ISO 3166-1, например UA
timezone строка часовой пояс магазина в формате IANA, например Europe/Kyiv. По нему считаются сроки ключей и все «сегодня» в магазине
base_currency строка основная валюта магазина, код ISO 4217. В ней хранятся цены
currencies массив валюты магазина с курсами
currencies[].code строка код валюты ISO 4217
currencies[].rate строка курс, то есть сколько основной валюты стоит одна единица этой валюты. Шесть знаков после точки. У основной валюты всегда "1.000000"
locales массив строк коды языков, включённых в магазине
main_locale строка основной язык магазина
units массив строк коды стандартных единиц продажи: pcs штуки, m метры, kg килограммы, g граммы, l литры, m² квадратные метры

Курс читается так: при "rate": "41.250000" у USD и основной валюте UAH один доллар стоит 41,25 гривны. Сумму в долларах получают делением суммы в гривнах на курс.

GET /api/v1/storefronts

Витрины магазина. У одного магазина может быть несколько сайтов-витрин со своим доменом, валютой и языками. Право: shop:read. Порядок: сначала основная витрина, затем остальные по номеру.

curl https://shop.example.ua/api/v1/storefronts \
  -H "Authorization: Bearer <ключ>"
{
    "data": [
        {
            "id": 1,
            "name": "Основная витрина",
            "domain": "shop.example.ua",
            "currency": "UAH",
            "locales": ["ru", "uk", "en"],
            "default_locale": "uk",
            "is_default": true,
            "is_enabled": true
        }
    ],
    "meta": { "total": 1, "limit": 50, "offset": 0 },
    "links": { "next": null, "prev": null }
}
Поле Тип Что значит
id целое номер витрины
name строка название витрины в панели
domain строка домен витрины без протокола
currency строка валюта, в которой витрина показывает цены, код ISO 4217
locales массив строк языки витрины
default_locale строка язык, на котором витрина открывается по умолчанию
is_default логическое основная витрина магазина
is_enabled логическое витрина включена

GET /api/v1/order_statuses

Статусы заказа и переходы между ними. Право: shop:read. Порядок: как статусы расставлены в настройках магазина.

У статуса есть номер id и код code, оба не повторяются. Код владелец может поменять в настройках, кроме кода refunded, а номер статуса не меняется.

curl https://shop.example.ua/api/v1/order_statuses \
  -H "Authorization: Bearer <ключ>"
{
    "data": [
        {
            "id": 1,
            "code": "new",
            "name": { "ru": "Новый", "uk": "Новий", "en": "New" },
            "color": "#f59e0b",
            "is_default": true,
            "is_final": false,
            "marks_paid": false,
            "transitions": ["processing", "canceled", "refunded"]
        },
        {
            "id": 4,
            "code": "delivered",
            "name": { "ru": "Доставлен", "uk": "Доставлено", "en": "Delivered" },
            "color": "#10b981",
            "is_default": false,
            "is_final": true,
            "marks_paid": false,
            "transitions": []
        }
    ],
    "meta": { "total": 2, "limit": 50, "offset": 0 },
    "links": { "next": null, "prev": null }
}
Поле Тип Что значит
id целое номер статуса
code строка код статуса, например new, processing, shipped, delivered, canceled. Владелец может заводить свои статусы со своими кодами
name объект или null название статуса по языкам магазина. Язык, на который статус не перевели, в объект не попадает. null — названия нет ни на одном языке
color строка цвет статуса в панели, в виде #rrggbb
is_default логическое с этого статуса начинается каждый новый заказ
is_final логическое завершающий статус, заказ в нём считается закрытым
marks_paid логическое переход в этот статус отмечает заказ оплаченным
transitions массив строк или null коды статусов, в которые можно перевести заказ из этого. null — переходы не ограничены, в любой статус. Пустой массив — из этого статуса перейти никуда нельзя

Статус с кодом refunded («Возврат») есть в каждом магазине. Его код не меняется, а переход в него возвращает покупателю деньги и закрывает заказ.

GET /api/v1/payment_methods

Способы оплаты. Право: shop:read. Порядок: как способы расставлены в настройках магазина. Настройки способов, в том числе ключи платёжных систем, API не отдаёт никогда.

curl https://shop.example.ua/api/v1/payment_methods \
  -H "Authorization: Bearer <ключ>"
{
    "data": [
        {
            "id": 1,
            "code": "cash_on_delivery",
            "name": { "ru": "Оплата при получении", "uk": "Оплата під час отримання", "en": "Cash on delivery" },
            "is_enabled": true,
            "all_storefronts": false
        },
        {
            "id": 5,
            "code": "wayforpay",
            "name": { "ru": "WayForPay", "uk": "WayForPay", "en": "WayForPay" },
            "is_enabled": true,
            "all_storefronts": true
        }
    ],
    "meta": { "total": 2, "limit": 50, "offset": 0 },
    "links": { "next": null, "prev": null }
}
Поле Тип Что значит
id целое номер способа. Обозначайте способ этим номером
code строка вид способа, то есть как принимается оплата, например cash_on_delivery, invoice, liqpay или monobank. Способов одного вида может быть несколько, поэтому код не уникален
name объект название способа по языкам магазина. Если на какой-то язык способ не перевели, на этом языке стоит основное название. Так же способ видит и покупатель
is_enabled логическое способ включён
all_storefronts логическое true — способ доступен на всех витринах. false — только на витринах, выбранных в его настройках

GET /api/v1/shipping_methods

Способы доставки. Право: shop:read. Поля и порядок те же, что у способов оплаты. Настройки способов, в том числе ключи служб доставки, API не отдаёт.

curl https://shop.example.ua/api/v1/shipping_methods \
  -H "Authorization: Bearer <ключ>"
{
    "data": [
        {
            "id": 23,
            "code": "local_delivery",
            "name": { "ru": "Курьер по городу", "uk": "Кур’єр містом", "en": "City courier" },
            "is_enabled": true,
            "all_storefronts": true
        },
        {
            "id": 24,
            "code": "local_delivery",
            "name": { "ru": "Доставка по тарифам", "uk": "Доставка за тарифами", "en": "Доставка по тарифам" },
            "is_enabled": true,
            "all_storefronts": true
        }
    ],
    "meta": { "total": 2, "limit": 50, "offset": 0 },
    "links": { "next": null, "prev": null }
}
Поле Тип Что значит
id целое номер способа
code строка вид доставки, например free_shipping, local_delivery. В примере у двух способов один вид, различаются они номером
name объект название способа по языкам магазина. У второго способа в примере нет английского перевода, поэтому на en стоит основное название
is_enabled логическое способ включён
all_storefronts логическое true — способ доступен на всех витринах, false — только на выбранных

GET /api/v1/warehouses

Склады магазина. Право: shop:read. Порядок: по приоритету склада, затем по номеру.

curl https://shop.example.ua/api/v1/warehouses \
  -H "Authorization: Bearer <ключ>"
{
    "data": [
        { "id": 1, "name": "Основной", "type": "real", "city": "Київ", "is_pickup": true, "is_enabled": true },
        { "id": 2, "name": "Склад во Львове", "type": "real", "city": "Львів", "is_pickup": false, "is_enabled": true },
        { "id": 5, "name": "Все склады", "type": "virtual", "city": null, "is_pickup": false, "is_enabled": true }
    ],
    "meta": { "total": 3, "limit": 50, "offset": 0 },
    "links": { "next": null, "prev": null }
}
Поле Тип Что значит
id целое номер склада
name строка название склада
type строка real — настоящий склад с товаром. virtual — сборный склад, который объединяет несколько настоящих
city строка или null город склада, если он указан
is_pickup логическое со склада можно забрать заказ самовывозом
is_enabled логическое склад включён

GET /api/v1/customer_groups

Категории покупателей, например «Розница», «Оптовики», «Постоянные». По категории магазин даёт покупателям особые цены. Право: shop:read. Порядок: по приоритету категории от большего к меньшему, затем по названию.

curl https://shop.example.ua/api/v1/customer_groups \
  -H "Authorization: Bearer <ключ>"
{
    "data": [
        { "id": 3, "code": "wholesale", "name": "Оптовики", "is_default": false, "is_enabled": true },
        { "id": 2, "code": "regular", "name": "Постоянные", "is_default": false, "is_enabled": true },
        { "id": 1, "code": "retail", "name": "Розница", "is_default": true, "is_enabled": true }
    ],
    "meta": { "total": 3, "limit": 50, "offset": 0 },
    "links": { "next": null, "prev": null }
}
Поле Тип Что значит
id целое номер категории
code строка код категории латиницей
name строка название категории
is_default логическое в эту категорию попадают новые покупатели. Такая категория в магазине одна или её нет
is_enabled логическое категория включена

GET /api/v1/contact_types

Виды контактов, то есть кем бывают покупатели и партнёры магазина. Право: shop:read. Порядок: как виды расставлены в настройках магазина.

curl https://shop.example.ua/api/v1/contact_types \
  -H "Authorization: Bearer <ключ>"
{
    "data": [
        { "id": 1, "code": "person", "base_kind": "person", "name": { "ru": "Физлицо", "uk": "Фізособа", "en": "Person" } },
        { "id": 2, "code": "company", "base_kind": "company", "name": { "ru": "Компания", "uk": "Компанія", "en": "Company" } }
    ],
    "meta": { "total": 2, "limit": 50, "offset": 0 },
    "links": { "next": null, "prev": null }
}
Поле Тип Что значит
id целое номер вида
code строка код вида
base_kind строка person — человек, company — компания. Владелец может завести свои виды, но каждый из них относится к одному из этих двух
name объект или null название вида по языкам магазина

GET /api/v1/tax_rates

Ставки налога. Налог в магазине уже входит в цену товара, поэтому ставка ничего не прибавляет к сумме заказа, а показывает, какой налог в цене есть. Право: shop:read. Порядок: как ставки расставлены в настройках магазина.

curl https://shop.example.ua/api/v1/tax_rates \
  -H "Authorization: Bearer <ключ>"
{
    "data": [
        { "id": 1, "name": "ПДВ 20%", "rate": "20.000", "is_default": true },
        { "id": 2, "name": "ПДВ 7%", "rate": "7.000", "is_default": false },
        { "id": 3, "name": "Без ПДВ", "rate": "0.000", "is_default": false }
    ],
    "meta": { "total": 3, "limit": 50, "offset": 0 },
    "links": { "next": null, "prev": null }
}
Поле Тип Что значит
id целое номер ставки
name строка название ставки
rate строка размер ставки в процентах, три знака после точки: "20.000" значит 20 %
is_default логическое основная ставка. Её получают товары, которым ставку не задали. Основная ставка в магазине одна
Обновлено 21 октября 2026