Zenky Storefront API (v1)

Поддержка API: tech@zenky.io URL: https://openapi.zenky.io/sf1/ License: MIT

Последнее обновление: Tue, 16 Jun 2026 14:21:09 GMT

Начало работы

Storefront API – это новый, легковесный API от Zenky.io, который идеально подходит для разработки клиентских приложений (веб-сайтов, мобильных приложений и т.д.), которым не требуется полноценный API с большим количеством данных. С помощью Storefront API вы можете получить доступ к каталогу магазина, профилю покупателя (включая регистрацию, вход в аккаунт и восстановление пароля), контентным ресурсам (статьи, категории статей, акции) и, конечно, к полноценному процессу оформления заказов.

Разумеется, вы можете по-прежнему использовать полную версию API для разработки клиентский приложений, однако, мы рекомендуем внедрять Storefront API для разработки новых приложений, так как он более простой и удобный в использовании.

Выполнение запросов

Базовый адрес для выполнения запросов к API - https://storefront.zenky.io/v1. Формат возвращаемых данных - JSON.

HTTP-методы

Каждый метод API может поддерживать один или несколько из перечисленных HTTP-методов:

  • GET для чтения информации;
  • POST для создания нового объекта или для выполнения команд (таких как отправка заказа);
  • PUT для изменения существующего объекта;
  • DELETE для удаления существующего объекта.

Заголовки

Все запросы к API должны выполняться с заголовком Accept: application/json. В некоторых случаях, если заголовок Accept не был передан или его значением не является строка application/json, вы можете получить в ответ HTML-код или перенаправление на внутренние страницы панели управления магазином.

ID магазина

Все запросы к Storefront API требуют передачи обязательного параметра {store} в пути запроса. Значением этого параметра должен быть идентификатор магазина, с которым в данный момент выполняется работа.

Пример полного URL: https://storefront.zenky.io/v1/store/8b53353d-3f62-45f0-a7e6-b7a993ea7f68.

Если мы будем добавлять новые методы Storefront API, которые могут быть вызваны вне контекста магазина, это будет отражено в документации к таким методам. На данный момент все методы относятся только к магазинам.

Ответы API

Любой успешный ответ обязательно содержит в себе корневое поле data, в котором, в зависимости от запроса, располагается тело ответа.

Если был выполнен запрос на получение списка объектов, то в поле data будет находиться массив объектов. Если же был выполнен запрос на получение одного объекта, то в поля data будет находиться объект.

Кроме того, на одном уровне с полем data может присутствовать поле meta - в основном оно используется для передачи информации о количестве страниц списка объектов.

Включения ответов

Кроме основной информации об объекте методы могут отдавать расширенную информацию о вложенных сущностях (т.н. включения ответов или includes). У каждого метода, который поддерживает такие включения, имеется свой список возможных включений, которые необходимо передавать с помощью параметра with. Если требуется вернуть несколько включений, их необходимо разделять запятыми.

Включения, которые поддерживаются конкретным методом, перечислены в его описании. Кроме этого, в описании структуры объектов также указаны названия включений тех или иных полей.

Обработка ошибок

Запросы, выполнение которых завершилось с ошибкой, содержат в себе поле error, в котором дано подробное описание произошедшей ошибки. В случае, если вы не можете исправить ошибку самостоятельно или не знаете что именно пошло не так, всегда предоставляйте полное тело ответа при обращении в техподдержку.

Возможные коды ошибок и способы их решения перечислены в описании методов.

Если вы столкнулись с неизвестной ошибкой, пожалуйста, создайте новый issue в нашем репозитории на GitHub. Обратите внимание, что этот репозиторий является публичным и любой пользователь может просматривать ваши обращения. Не публикуйте ваши API-токены и другую конфиденциальную информацию, особенно относящуюся к покупателям.

В случае, если ваш запрос содержит конфиденциальную информацию, вместо создания issue вы можете написать нам на почту tech@zenky.io с подробным описанием проблемы, приложив полное тело запроса, включая URL и ID магазина. Так же при обращении на почту вы можете указать API-токен, который использовался для выполнения запроса, в этом случае мы не будем его инвалидировать, если только это не потребуется для решения проблемы.

Магазин

Получить профиль магазина

Этот метод поддерживает следующие включения:

ВключениеОписание
websiteСайт магазина
mobile_appМоб. приложение магазина
path Parameters
store
required
string

ID магазина

query Parameters
website_id
string

ID вебсайта, для которого нужно вернуть настройки

Responses

Response samples

Content type
application/json
{}

Получить профиль магазина по App Bundle ID

Этот метод поддерживает следующие включения:

ВключениеОписание
websiteСайт магазина
mobile_appМоб. приложение магазина
path Parameters
appBundleId
required
string

App Bundle ID

Responses

Response samples

Content type
application/json
{}

Правовые документы

Получить реквизиты магазина

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Получить политику конфиденциальности

Этот метод возвращает текст документа с типом privacy_policy.

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Получить политику обработки персональных данных

Этот метод возвращает текст документа с типом personal_data.

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Получить пользовательское соглашение

Этот метод возвращает текст документа с типом eula.

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Получить публичную оферту

Этот метод возвращает текст документа с типом terms.

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Получить согласие на обработку перс. данных

Этот метод возвращает текст документа с типом personal_data_agreement.

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Получить правила лояльности

Этот метод возвращает текст документа с типом loyalty_rules.

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Сайты

Получить информацию о странице сайта

path Parameters
store
required
string

ID магазина

website
required
string

ID сайта

page
required
string

ID страницы

Responses

Response samples

Content type
application/json
{}

Категории

Получить дерево категорий

Этот метод поддерживает следующие включения:

ВключениеОписание
coverОбложка категории
seoSEO
path Parameters
store
required
string

ID магазина

query Parameters
with
string

Список включений

Responses

Response samples

Content type
application/json
{}

Получить список категорий

Этот метод поддерживает следующие включения:

ВключениеОписание
coverОбложка категории
seoSEO

Этот метод поддерживает следующие поля сортировки (передаются в параметре order_by):

ПолеОписание
nameПо названию (asc)
-nameПо названию (desc)
path Parameters
store
required
string

ID магазина

query Parameters
with
string

Список включений

count
integer

Количество записей

page
integer

Номер страницы

search
string

Строка поиска

order_by
string

Поле сортировки

featured
boolean

Вернуть только избранные категории

Responses

Response samples

Content type
application/json
{}

Получить категорию

Этот метод поддерживает следующие включения:

ВключениеОписание
coverОбложка категории
seoSEO
path Parameters
store
required
string

ID магазина

category
required
string

ID категории

query Parameters
with
string

Список включений

Responses

Response samples

Content type
application/json
{}

Получить список групп характеристик для категории

Возвращет список групп характеристик, доступных для использования в указанной категории и её подкатегориях. Список возвращается с характеристиками (вложенными в группу) и значениями (вложенными в характеристики).

path Parameters
store
required
string

ID магазина

category
required
string

ID категории

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Получить список характеристик для категории

Возвращет список характеристик, доступных для использования в указанной категории и её подкатегориях. Список возвращается со значениями.

path Parameters
store
required
string

ID магазина

category
required
string

ID категории

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Коллекции товаров

Получить список коллекций

Этот метод поддерживает следующие поля сортировки (передаются в параметре order_by):

ПолеОписание
nameПо названию (asc)
-nameПо названию (desc)
sortingПо заданной сортировке (asc)
-sortingПо заданной сортировке (desc)
path Parameters
store
required
string

ID магазина

query Parameters
count
integer

Количество записей

page
integer

Номер страницы

search
string

Строка поиска

order_by
string

Поле сортировки

app_visibility
string
Enum: "visible" "hidden"

Фильтр коллекций для моб. приложений. Если visible, коллекции приложений будут возвращены. Если не передано или hidden – не будут возвращены.

Responses

Response samples

Content type
application/json
{}

Получить коллекцию

path Parameters
store
required
string

ID магазина

collection
required
string

ID коллекции

Responses

Response samples

Content type
application/json
{}

Товары

Получить список товаров

Изображения включены по умолчанию.

Этот метод поддерживает следующие включения:

ВключениеОписание
categoriesКатегории
categories.coverКатегории и обложки
categories.seoКатегории и SEO
featuresХарактеристики
features_groupsГруппы характеристик
modifiersМодификаторы
modifiers_groupsГруппы модификаторов
custom_fieldsПользовательские поля
variantsВарианты товара
variants.pricesВарианты и цены
variants.dimensionsВарианты и габариты
variants.remaindersВарианты и остатки
variants.optionsВарианты, опции вариантов и их значения
variants.custom_fieldsВарианты и пользовательские поля
seoSEO

Этот метод поддерживает следующие поля сортировки (передаются в параметре order_by):

ПолеОписание
nameПо названию (asc)
-nameПо названию (desc)
priceПо цене (asc)
-priceПо цене (desc)
manualПо заданной сортировке (asc)
-manualПо заданной сортировке (desc)
path Parameters
store
required
string

ID магазина

query Parameters
with
string

Список включений

count
integer

Количество записей

page
integer

Номер страницы

search
string

Строка поиска

order_by
string

Поле сортировки

category_id
string

ID категории

features
Array of strings

ID значений характеристик (ключи - ID характеристик)

f
Array of strings

Алиасы значений характеристик (ключи – алиасы характеристик). Несколько значений можно разделять запятой.

city_id
string

ID города (несовместим с stock_id)

stock_id
string

ID склада (несовместим с city_id)

collection_id
string

ID коллекции товаров

group_id
string

ID группы товаров

number or string

Минимальная цена

number or string

Максимальная цена

featured_categories
boolean

Товары из избранных категорий

promotion_reward
string
Default: "no"
Enum: "yes" "no" "all"

Товары-подарки за акции

context_type
string
Enum: "category" "group" "variant_option" "variant_option_value"

Тип контекста товаров (используется вместе с context_id)

context_id
string

ID контекста товаров (используется вместе с context_type)

Responses

Response samples

Content type
application/json
{}

Получить товар

Изображения включены по умолчанию.

Этот метод поддерживает следующие включения:

ВключениеОписание
categoriesКатегории
categories.coverКатегории и обложки
categories.seoКатегории и SEO
featuresХарактеристики
features_groupsГруппы характеристик
modifiersМодификаторы
modifiers_groupsГруппы модификаторов
custom_fieldsПользовательские поля
variantsВарианты товара
variants.pricesВарианты и цены
variants.dimensionsВарианты и габариты
variants.remaindersВарианты и остатки
variants.optionsВарианты, опции вариантов и их значения
variants.custom_fieldsВарианты и пользовательские поля
seoSEO
path Parameters
store
required
string

ID магазина

product
required
string

ID товара

query Parameters
with
string

Список включений

stock_id
string

ID склада

Responses

Response samples

Content type
application/json
{}

Получить цену варианта товара

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

path Parameters
store
required
string

ID магазина

product
required
string

ID товара

variant
required
string

ID варианта товара

query Parameters
city_id
string

ID текущего города.

stock_id
string

ID выбранного склада.

Request Body schema: application/json
required
Array of objects

Выбранные модификаторы

Array
modifier_id
string

ID модификатора

string or null

ID группы модификаторов. Для одиночных модификаторов не заполняется (можно не добавлять в запрос).

quantity
integer

Количество модификаторов

Responses

Request samples

Content type
application/json
{
  • "modifiers": [
    ]
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Получить список рекомендованных товаров

Этот метод возвращает товары, которые можно рекомендовать вместе с указанным товаром.

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

Пагинация для этого метода не используется.

Этот метод поддерживает следующие включения:

ВключениеОписание
categories.coverКатегории и обложки
categories.seoКатегории и SEO
featuresХарактеристики
features_groupsГруппы характеристик
modifiersМодификаторы
modifiers_groupsГруппы модификаторов
custom_fieldsПользовательские поля
variantsВарианты товара
variants.pricesВарианты и цены
variants.dimensionsВарианты и габариты
variants.remaindersВарианты и остатки
variants.optionsВарианты, опции вариантов и их значения
variants.custom_fieldsВарианты и пользовательские поля
seoSEO
path Parameters
store
required
string

ID магазина

product
required
string

ID товара

query Parameters
with
string

Список включений

count
number [ 1 .. 20 ]
Default: 10

Количество рекомендаций

city_id
string

ID города (несовместим с stock_id)

stock_id
string

ID склада (несовместим с city_id)

order_id
string

ID текущего заказа (используется вместе с order_token)

order_token
string

Токен текущего заказа (используется вместе с order_id)

Responses

Response samples

Content type
application/json
{}

Адреса

Получить подсказки адресов

path Parameters
store
required
string

ID магазина

Request Body schema: application/json
required
query
required
string

Строка поиска адреса

city_id
string

Город, в котором нужно искать адреса

count
number

Количество записей (по умолчанию 5, не более 20)

Responses

Request samples

Content type
application/json
{
  • "query": "улан-удэ, жердева 104б",
  • "count": 10
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Получить подсказки адресов по координатам.

Этот метод может вернуть подсказки с уровнем ниже, чем "до дома" (например, город или регион).

path Parameters
store
required
string

ID магазина

Request Body schema: application/json
required
latitude
required
number

Широта точки

longitude
required
number

Долгота точки

count
number

Количество записей (по умолчанию 5, не более 20)

Responses

Request samples

Content type
application/json
{
  • "latitude": 51.8121373,
  • "longitude": 107.6641822,
  • "count": 10
}

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Заказы

Получить список оформленных заказов покупателя

Этот метод поддерживает следующие включения:

ВключениеОписание
variantsПозиции заказа
variants.variantПозиции заказа и варианты товаров
variants.variant.optionsПозиции, варианты, опции вариантов и их значения
variants.modifiersПозиции и выбранные модификаторы товаров
variants.modifiers.modifierПозиции, выбранные модификаторы и оригинальные модификаторы
variants.modifiers.modifiers_groupПозиции, выбранные модификаторы и оригинальные группы модификаторов
variants.productПозиции заказа и товары
variants.product.imagesПозиции заказа, товары и изображения
variants.product.categoriesПозиции заказа, товары и категории
city.settingsГород и настройки
stock.scheduleСклад и режим работы
customerПокупатель
delivery_addressАдрес доставки
delivery_zoneЗона доставки
statusesИстория изменения статусов
progressПрогресс изменения статусов
paymentsПлатёжные транзакции
delivery_intervalИнтервал доставки
Authorizations:
Bearer
path Parameters
store
required
string

ID магазина

query Parameters
with
string

Список включений

count
integer

Количество записей

page
integer

Номер страницы

search
string

Строка поиска

order_by
string

Поле сортировки

submitted_from
string

Начальная дата оформления заказа (поддерживаемые форматы: YYYY-MM-DD HH:MM:SS, YYYY-MM-DD HH:MM, YYYY-MM-DD)

submitted_till
string

Конечная дата оформления заказа (поддерживаемые форматы: YYYY-MM-DD HH:MM:SS, YYYY-MM-DD HH:MM, YYYY-MM-DD)

order_status_id
string

ID статуса заказа (можно перечислять несколько через запятую)

city_id
string

ID города

submission_period
string

Период оформленных заказов. Поддерживаются следующие периоды: сутки (24h), неделя (7d), месяц (30d), год (1y). Не рекомендуется использовать вместе с submitted_from/submitted_till.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Создать заказ

path Parameters
store
required
string

ID магазина

Request Body schema: application/json
required
city_id
required
string

ID города

Responses

Request samples

Content type
application/json
{
  • "city_id": "dcb2f209-c9a4-482c-8427-fc6e651e3ddf"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Получить заказ

Этот метод поддерживает следующие включения:

ВключениеОписание
variantsПозиции заказа
variants.variantПозиции заказа и варианты товаров
variants.variant.optionsПозиции, варианты, опции вариантов и их значения
variants.modifiersПозиции и выбранные модификаторы товаров
variants.modifiers.modifierПозиции, выбранные модификаторы и оригинальные модификаторы
variants.modifiers.modifiers_groupПозиции, выбранные модификаторы и оригинальные группы модификаторов
variants.productПозиции заказа и товары
variants.product.imagesПозиции заказа, товары и изображения
variants.product.categoriesПозиции заказа, товары и категории
city.settingsГород и настройки
stock.scheduleСклад и режим работы
customerПокупатель
delivery_addressАдрес доставки
delivery_zoneЗона доставки
statusesИстория изменения статусов
progressПрогресс изменения статусов
paymentsПлатёжные транзакции
delivery_intervalИнтервал доставки
promocodeПромокод, применённый к заказу
path Parameters
store
required
string

ID магазина

order
required
string

ID заказа

query Parameters
with
string

Список включений

token
string

Токен заказа (для неаутентифицированных запросов)

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Настройки заказа

Метод возвращает список опций, способов доставки и способов оплаты, которые доступны для выбранного заказа.

path Parameters
store
required
string

ID магазина

order
required
string

ID заказа

query Parameters
token
string

Токен заказа (для неаутентифицированных запросов)

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Повторить заказ

Этот метод позволяет повторить ранее оформленный заказ.

В новый заказ будут скопированы все доступные для заказа товары из исходного заказа (включая модификаторы товаров). К новому заказу так же будут привязаны покупатель и способ доставки (связанный склад или адрес доставки).

Этот метод можно вызвать только с передачей API-токена покупателя, который оформлял заказ.

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

В ответе на запрос будут возвращены идентификатор и токен нового заказа.

Передавайте ID текущего заказа в поле current_order_id, чтобы получить websocket-уведомление о копировании заказа (orders.repeated).

Возможные ошибки API

Во время выполнения этого запроса вы можете столкнуться со следующими ошибками:

HTTPКодПричинаРешение
503orders.repeat.failedНевозможно повторить выбранный заказ. В поле `meta` может содержаться код причины ошибки (поле `reason`).Проверить, что повтор заказов подключён для магазина.
403orders.repeat.invalid_customer_profileВыбранный заказ был оформлен другим покупателем.Убедиться, что передаётся токен аутентифицированного покупателя, который оформлял выбранный заказ.
422orders.repeat.must_be_submittedПовторить можно только оформленные заказы.Не отображать кнопку «Повторить заказ» для заказов, которые ещё не были оформлены.
Authorizations:
Bearer
path Parameters
store
required
string

ID магазина

order
required
string

ID заказа

Request Body schema: application/json
required
current_order_id
string

ID текущего заказа

Responses

Request samples

Content type
application/json
{
  • "current_order_id": "9a6857af-f758-497a-ade4-dcb9bd038252"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Отменить заказ

Этот метод позволяет отменить заказ. Возможность отмены заказа необходимо проверять в boolean-поле can_cancel структуры заказа.

Возможные ошибки API

Во время выполнения этого запроса вы можете столкнуться со следующими ошибками:

HTTPКодПричинаРешение
403orders.cant_be_cancelledИстекли условия, при которых можно отменить заказ.Не отображать кнопку «Отменить заказ» для заказов, которые нельзя отменить (поле `can_cancel` у заказов).
Authorizations:
Bearer
path Parameters
store
required
string

ID магазина

order
required
string

ID заказа

Responses

Response samples

Content type
application/json
{
  • "message": "Unauthenticated."
}

Позиции заказа

Добавить товары к заказу

path Parameters
store
required
string

ID магазина

order
required
string

ID заказа

query Parameters
token
string

Токен заказа (для неаутентифицированных запросов)

Request Body schema: application/json
required
product_variant_id
required
string

ID варианта товара

quantity
required
integer

Количество

stock_id
string or null

ID связанного склада

promotion_id
string

ID акции, с которой связан добавляемый подарок

promotion_reward_id
string

ID подарка акции, с которым связан добавляемый вариант

Array of objects (ProductModifierInput)

Список модификаторов

Responses

Request samples

Content type
application/json
{
  • "product_variant_id": "b11f7b7f-5f41-4bc2-97fa-7df49225a2ba",
  • "quantity": 1,
  • "stock_id": null,
  • "promotion_id": "7c2efbaf-ed05-4981-9748-b94a1b78ad33",
  • "promotion_reward_id": "9f5934fb-ed3c-42fe-8dd4-ae3f12699957",
  • "modifiers": [
    ]
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Удалить товары из заказа

path Parameters
store
required
string

ID магазина

order
required
string

ID заказа

query Parameters
token
string

Токен заказа (для неаутентифицированных запросов)

Request Body schema: application/json
required
product_variant_id
required
string

ID варианта товара

quantity
required
integer

Количество

stock_id
string or null

ID связанного склада

promotion_id
string

ID акции, с которой связан удаляемый подарок

promotion_reward_id
string

ID подарка акции, с которым связан удаляемый вариант

Array of objects (ProductModifierInput)

Список модификаторов

Responses

Request samples

Content type
application/json
{
  • "product_variant_id": "b11f7b7f-5f41-4bc2-97fa-7df49225a2ba",
  • "quantity": 1,
  • "stock_id": null,
  • "promotion_id": "7c2efbaf-ed05-4981-9748-b94a1b78ad33",
  • "promotion_reward_id": "9f5934fb-ed3c-42fe-8dd4-ae3f12699957",
  • "modifiers": [
    ]
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Проверить актуальность корзины

Этот метод позволяет проверить актуальность корзины по следующим параметрам:

  • Корректность цен. Если у товаров из корзины изменилась цена, проблемные товары могут быть удалены;
  • Полное наличие остатков. Если какие-либо товары в корзине отсутствуют в полном составе на складах (в зависмости от настроек магазина), проблемные товары могут быть удалены;
  • Недоступность товаров. Если у каких-либо товаров была отключена возможность заказа, проблемые товары могут быть удалены.

В зависимости от настроек магазина, в поле action будет строка none (корзина не менялась) либо cleanup (проблемые товары были удалены). Если произошло удаление товаров, вам следует перезагрузить весь заказ и уведомить покупателя, что состав корзины изменился.

path Parameters
store
required
string

ID магазина

order
required
string

ID заказа

query Parameters
token
string

Токен заказа (для неаутентифицированных запросов)

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Получить список рекомендованных товаров для заказа

Этот метод возвращает рекомендации на основе товаров, которые уже добавлены в заказ.

Для доступа к заказу можно передать его токен в параметре token. Если токен не передан и запрос выполняется без аутентификации покупателя, метод завершится ошибкой.

Пагинация для этого метода не используется.

Этот метод поддерживает следующие включения:

ВключениеОписание
categories.coverКатегории и обложки
categories.seoКатегории и SEO
featuresХарактеристики
features_groupsГруппы характеристик
modifiersМодификаторы
modifiers_groupsГруппы модификаторов
variantsВарианты товара
variants.pricesВарианты и цены
variants.dimensionsВарианты и габариты
variants.remaindersВарианты и остатки
variants.optionsВарианты, опции вариантов и их значения
seoSEO
path Parameters
store
required
string

ID магазина

order
required
string

ID заказа

query Parameters
with
string

Список включений

token
string

Токен заказа (для неаутентифицированных запросов)

count
number [ 1 .. 20 ]
Default: 10

Количество рекомендаций

city_id
string

ID города (несовместим с stock_id)

stock_id
string

ID склада (несовместим с city_id)

Responses

Response samples

Content type
application/json
{}

Программа лояльности

Получить список транзакций заказа

path Parameters
store
required
string

ID магазина

order
required
string

ID заказа

query Parameters
count
integer

Количество записей

page
integer

Номер страницы

token
string

Токен заказа (для неаутентифицированных запросов)

type
string (BonusesTransactionDirection)
Enum: "decrease" "increase"

Тип транзакции (increase – пополнение, decrease – списание)

status
string (BonusesTransactionStatusFilter)
Enum: "cancelled" "confirmed" "pending" "refunded"

Статус транзакции (pending – ожидает подтверждения, confirmed – подтверждена, cancelled – отменена, refunded – возвращена).

reason
string (BonusesTransactionReason)
Enum: "adjustment" "cancellation" "cashback" "external" "manual" "payment" "promotion_reward" "recruit_reward" "referral_reward" "refund" "welcome_bonuses"

Причина создания транзакции

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Получить транзакцию кэшбэка для заказа

path Parameters
store
required
string

ID магазина

order
required
string

ID заказа

query Parameters
token
string

Токен заказа (для неаутентифицированных запросов)

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Запустить проверку выполненных акций

Этот метод запускает фоновую проверку акций, а результат проверки отправляет в вебсокет-соединение событиями orders.promotions.not_found (если у заказа не выполнены условия ни для одной акции) или orders.rewards.display_selection (если покупателю доступен выбор товаров в качестве подарка).

Так же после запуска проверки вы можете получить событие orders.rewards.reload, после чего нужно перезагрузить список подарков (или весь заказ, если вам так удобнее). Это событие может быть отправлено, если покупатель получил подарок в виде бонусов (фактически бонусы будут начислены только после выполнения заказа).

path Parameters
store
required
string

ID магазина

order
required
string

ID заказа

query Parameters
token
string

Токен заказа (для неаутентифицированных запросов)

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Получить список выбранных наград за акции

path Parameters
store
required
string

ID магазина

order
required
string

ID заказа

query Parameters
token
string

Токен заказа (для неаутентифицированных запросов)

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Информация о заказе

Сводка о заказе

path Parameters
store
required
string

ID магазина

order
required
string

ID заказа

query Parameters
token
string

Токен заказа (для неаутентифицированных запросов)

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Покупатель

Привязать покупателя к заказу

path Parameters
store
required
string

ID магазина

order
required
string

ID заказа

query Parameters
token
string

Токен заказа (для неаутентифицированных запросов)

Request Body schema: application/json
required
object

Телефон покупателя (обязателен, если нет токена аутентификации)

first_name
string

Имя покупателя

last_name
string

Фамилия покупателя

gender
string (CustomerGenderType)
Enum: "female" "male" "other"

Пол покупателя

birth_date
string

Дата рождения покупателя (в формате YYYY-MM-DD)

Responses

Request samples

Content type
application/json
{
  • "phone": {
    },
  • "first_name": "Иван",
  • "gender": "male",
  • "birth_date": "1991-09-20"
}

Response samples

Content type
application/json
{
  • "error": {
    }
}

Способ доставки

Указать способ доставки заказа

path Parameters
store
required
string

ID магазина

order
required
string

ID заказа

query Parameters
token
string

Токен заказа (для неаутентифицированных запросов)

Request Body schema: application/json
required
delivery_method
required
string (DeliveryMethodKind)
Enum: "delivery" "on_premise" "pickup"

Способ доставки

object

Адрес доставки (обязателен, если delivery_methoddelivery)

stock_id
string

ID склада (обязателен, если delivery_methodpickup или on_premise)

object

Информация о заказе в заведении (обязателен, если delivery_methodon_premise)

deliver_at
string

Дата отложенной доставки в часовом поясе города (в формате YYYY-MM-DD HH:MM)

object

Интервал доставки

Responses

Request samples

Content type
application/json
{
  • "delivery_method": "delivery",
  • "delivery_address": {
    },
  • "deliver_at": "2021-07-20 19:00"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Интервал доставки

Указать интервал доставки заказа

Используйте этот метод, если интервал доставки невозможно указать вместе со способом доставки (например, если вы запросили у покупателя способ доставки до наполнения корзины).

path Parameters
store
required
string

ID магазина

order
required
string

ID заказа

query Parameters
token
string

Токен заказа (для неаутентифицированных запросов)

Request Body schema: application/json
required
object

Интервал доставки

date
string

Дата доставки (в формате YYYY-MM-DD)

id
string

ID интервала доставки

Responses

Request samples

Content type
application/json
{
  • "delivery_interval": {
    }
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Удалить интервал доставки заказа

Используйте этот метод, чтобы удалить ранее привязанный интервал доставки заказа.

path Parameters
store
required
string

ID магазина

order
required
string

ID заказа

query Parameters
token
string

Токен заказа (для неаутентифицированных запросов)

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Время доставки

Указать время доставки заказа

Используйте этот метод, если время доставки невозможно указать вместе со способом доставки (например, если вы запросили у покупателя способ доставки до наполнения корзины).

path Parameters
store
required
string

ID магазина

order
required
string

ID заказа

query Parameters
token
string

Токен заказа (для неаутентифицированных запросов)

Request Body schema: application/json
required
deliver_at
string

Дата отложенной доставки в часовом поясе города (в формате YYYY-MM-DD HH:MM)

Responses

Request samples

Content type
application/json
{
  • "deliver_at": "2021-07-20 19:00"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Удалить время доставки заказа

Используйте этот метод, чтобы удалить ранее привязанное время доставки заказа.

path Parameters
store
required
string

ID магазина

order
required
string

ID заказа

query Parameters
token
string

Токен заказа (для неаутентифицированных запросов)

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Способ оплаты

Указать способ оплаты заказа

Используйте этот метод для передачи одного основного способа оплаты (cash, credit-card, mobile_bank, cloudpayments, card_token, yookassa или alfa) и (опционально) суммы оплаты бонусами (bonuses).

Если покупатель списывает бонусы, вам необходимо передать сумму списания в поле amount объекта оплаты бонусами. Для остальных способов оплаты это поле заполнять не нужно – оно будет проигнорировано на сервере.

В случае передачи нескольких основных способов оплаты (отличающихся от bonuses), будет выбран первый способ оплаты из списка, все остальные будут проигнорированы.

Бонусы и платежи по токену (card_token) не списываются после вызова этого метода. Списание произойдёт только во время оформления заказа.

Повторные вызовы этого метода будут удалять все предыдущие платёжные транзакции и создавать новые.

path Parameters
store
required
string

ID магазина

order
required
string

ID заказа

query Parameters
token
string

Токен заказа (для неаутентифицированных запросов)

Request Body schema: application/json
required
Array of objects (SetOrderPaymentsItem)

Список способов оплаты

Array
method
string

Способ оплаты

amount
integer

Сумма

bill
integer

Купюра к оплате

save_card
boolean

Сохранить карту

card_token_id
string

ID сохранённой карты

Responses

Request samples

Content type
application/json
{
  • "payments": [
    ]
}

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Оплата бонусами

Предпросмотр бонусов

Используйте этот метод, чтобы получить оставшуюся сумму к оплате после применения бонусов.

Если в параметре amount будет передана сумма бонусов, превышающая лимит списания (из-за ограничений на процент оплаты или из-за нехватки баланса), в поле bonuses будет указана максимальная сумма списания.

В поле unpaid будет указана оставшаяся сумма к оплате. Если сумма равна нулю, это означает, что заказ может быть полностью оплачен бонусами и основной способ оплаты можно не передавать.

Внимание: этот метод не регистрирует платёжные транзакции и не списывает бонусы.

path Parameters
store
required
string

ID магазина

order
required
string

ID заказа

query Parameters
token
string

Токен заказа (для неаутентифицированных запросов)

required
string or number

Сумма бонусов для списания

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Онлайн-оплата

Получить URL страницы оплаты

Этот метод позволяет получить URL страницы оплаты заказа для способов yookassa и alfa. Чтобы покупатель был перенаправлен на конкретную страницу после оплаты, передавайте её полный URL в параметре current_url тела запроса.

Внимание: если используется способ оплаты alfa (Альфа-Банк) и покупатель по какой-то причине не завершил оплату, повторно вызывать этот метод не следует. Вместо этого нужно вызывать метод повтора онлайн-оплаты. В ответе этого метода также будет доступен redirect_url.

path Parameters
store
required
string

ID магазина

transactionId
required
string

ID транзакции оплаты

order
required
string

ID заказа

query Parameters
token
string

Токен заказа (для неаутентифицированных запросов)

Request Body schema: application/json
required
current_url
string or null

URL текущей страницы. Если указано, покупатель будет перенаправлен на эту страницу после оплаты

Responses

Request samples

Content type
application/json
{}

Response samples

Content type
application/json

Повторить попытку онлайн-оплаты заказа

Этот метод следует вызывать, если покупатель попытался оплатить заказ онлайн через Альфа-Банк (alfa), но по какой-то причине не завершил оплату. Передавайте поле current_url, чтобы вернуть покупателя на конкретную страницу.

path Parameters
store
required
string

ID магазина

order
required
string

ID заказа

query Parameters
token
string

Токен заказа (для неаутентифицированных запросов)

Request Body schema: application/json
required
current_url
string or null

URL текущей страницы. Если указано, покупатель будет перенаправлен на эту страницу после оплаты

Responses

Request samples

Content type
application/json
{}

Response samples

Content type
application/json

Промокоды

Привязать промокод к заказу

path Parameters
store
required
string

ID магазина

order
required
string

ID заказа

query Parameters
token
string

Токен заказа (для неаутентифицированных запросов)

Request Body schema: application/json
required
promocode
required
string

Промокод для применения к заказу

Responses

Request samples

Content type
application/json
{
  • "promocode": "EXAMPLE"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Получить привязанный к заказу промокод

path Parameters
store
required
string

ID магазина

order
required
string

ID заказа

query Parameters
token
string

Токен заказа (для неаутентифицированных запросов)

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Удалить промокод из заказа

path Parameters
store
required
string

ID магазина

order
required
string

ID заказа

query Parameters
token
string

Токен заказа (для неаутентифицированных запросов)

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Оформление заказа

Оформить заказ

Этот метод должен быть вызван только после привязки покупателя, указания способа доставки и способа оплаты заказа.

Если поле confirmation_required установлено в true, необходимо выполнить подтверждение заказа кодом из SMS, который был отправлен покупателю (см. раздел «Подтверждение»). Первоначальная отправка кода выполняется автоматически.

Возможные ошибки API

Во время выполнения этого запроса вы можете столкнуться со следующими ошибками:

HTTPКодПричинаРешение
503orders.submission.disabledПриём заказов временно недоступен для этого магазина.Включить приём заказов (если вы владелец магазина), оформить заказ в рабочее время.
422orders.no_cityК заказу не привязан город.Привязать город к заказу и повторить процесс оформления заказа.
422orders.already_submittedЭтот заказ уже был оформлен ранее.После оформления каждого заказа следует создавать новый и работать с ним.
401orders.checkout.authentication_requiredТребуется аутентификация покупателя.Заказ нужно оформлять только после регистрации или входа покупателя в свой аккаунт.
422orders.no_customerПокупатель не найден.Убедиться, что покупатель был привязан.
503security.banЗапрос не может быть выполнен из-за блокировки телефона или IP-адреса.Дождаться снятия блокировки или написать письмо на tech@zenky.io, если блокировка была ошибочной.
422orders.invalid_delivery_methodВыбранный способ доставки отключен у магазина.Включить в настройках магазина нужный способ доставки или использовать другой доступный.
422orders.stock_missingСклад самовывоза не указан.Передать ID склада самовывоза.
422orders.delivery.city_stock_mismatchВыбранный склад самовывоза не относится к выбранному городу.Передать ID склада самовывоза, который относится к выбранному городу, или изменить город.
422addresses.not_specifiedАдрес доставки не указан.Убедиться, что адрес доставки был задан до оформления.
422orders.on_premise.table_missingНе указан номер стола.Убедиться, что номер стола в заведении был задан до оформления.
422orders.delivery_address.out_of_deliveryАдрес доставки не входит ни в одну зону доставки.Привязать другой адрес или изменить границы зоны доставки в панели управления магазином.
422orders.min_price.too_lowСумма заказа меньше минимальной суммы для оформления.Добавить товары, чтобы сумма заказа стала равна и больше минимальной суммы или изменить минимальную суммму для оформления.
422orders.payments.invalid_methodВыбранный способ оплаты недоступен.Включить в настройках магазина нужный способ оплаты или привязать другой доступный.
422orders.payments.amount_is_not_enoughСумма зарегистрированных платежей меньше суммы заказа.Зарегистрировать способы оплаты ещё раз или отключить проверку суммы оплаты в настройках магазина. Если покупатель изменяет корзину после регистрации платежей, их нужно регистрировать заново.
422orders.payments.amount_exceeds_total_priceПереданная сумма платежей превышает сумму заказа.Изменить сумму платежей или отключить проверку суммы оплаты в настройках магазина.
422orders.products.ordering_disabledНекоторые товары недоступны для заказа.Убрать из корзины недоступные для заказа товары или отключить блокировку в редактировании товара.
422orders.products.out_of_stockНекоторых товаров нет в наличии.Изменить содержание корзины или изменить настройку проверки наличия товаров в панели управления магазином.
422orders.products.price_mismatchУ некоторых товаров изменилась цена после добавления в корзину.Изменить содержание корзины или изменить настройку проверки соответствия цен в панели управления магазином.
422orders.promotions.extra_rewardsВ заказе содержатся лишние товары-подарки за акции.Удалить лишние товары-подарки за акции.
503loyalty.disabledПрограмма лояльности отключена.Убрать из списка платежей оплату бонусами.
503loyalty.not_availableAPI программы лояльности недоступен.Обратиться в техподдержку, передав ID заказа.
404orders.payments.card_token.not_foundТокен сохранённой карты не найден.Убедитесь, что передаётся корректный ID токена сохранённой карты. Обратитесь в техподдержку, передав ID заказа, ID токена сохранённой карты и полный ответ сервера.
404orders.payments.card_token.invalid_acquiringНеизвестный сервис эквайринга.Обратитесь в техподдержку, передав ID заказа и ID токена сохранённой карты.
503orders.payments.card_token.failedОплата по токену карты не удалась.Обратитесь в техподдержку, передав ID заказа и ID токена сохранённой карты.
503acquiring.not_availableСервис эквайринга не подключен.Подключить эквайринг в панели управления магазином.
path Parameters
store
required
string

ID магазина

order
required
string

ID заказа

query Parameters
token
string

Токен заказа (для неаутентифицированных запросов)

Request Body schema: application/json
required
notes
string

Комментарий к заказу

persons_count
number

Количество персон

Responses

Request samples

Content type
application/json
{
  • "notes": "Без палочек.",
  • "persons_count": 2
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Подтверждение заказа

Подтвердить оформление заказа

path Parameters
store
required
string

ID магазина

order
required
string

ID заказа

query Parameters
token
string

Токен заказа (для неаутентифицированных запросов)

Request Body schema: application/json
required
code
required
integer

Код подтверждения из SMS

Responses

Request samples

Content type
application/json
{
  • "code": 0
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Повторно отправить код подтверждения заказа

path Parameters
store
required
string

ID магазина

order
required
string

ID заказа

query Parameters
token
string

Токен заказа (для неаутентифицированных запросов)

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Аутентификация

Регистрация нового покупателя

Возможные ошибки API

Во время выполнения этого запроса вы можете столкнуться со следующими ошибками:

HTTPКодПричинаРешение
404auth.registration.referrer.not_foundУчетная запись пригласившего вас пользователя не найдена.Использовать другой код приглашения (`referrer_code`) или ID пригласившего пользователя (`referrer_id`).
422auth.already_registeredЭта учётная запись уже зарегистрирована.Использовать другой номер телефона.
503security.banЗапрос не может быть выполнен из-за блокировки телефона или IP-адреса.Дождаться снятия блокировки.
422customers.phone_requiredНужно указать номер телефона покупателя.Убедиться, что номер телефона передан.
path Parameters
store
required
string

ID магазина

Request Body schema: application/json
required
object or null (RecaptchaInput)

Данные для проверки reCAPTCHA v3. Обязательный параметр, если у магазина включена проверка reCAPTCHA v3 для действия registration.

object (PhoneInput)

Телефон покупателя

password
string

Пароль покупателя (от 8 символов)

first_name
string

Имя покупателя

last_name
string

Фамилия покупателя

gender
string (CustomerGenderType)
Enum: "female" "male" "other"

Пол покупателя

birth_date
string

Дата рождения покупателя (в формате YYYY-MM-DD)

referrer_code
string

Код приглашения для программы «Пригласи друга» (вместо referrer_id)

referrer_id
string

ID пользователя для программы «Пригласи друга» (вместо referrer_code)

Responses

Request samples

Content type
application/json
{
  • "phone": {
    },
  • "password": "1jEIjf3bnW",
  • "first_name": "Иван",
  • "last_name": "Иванов",
  • "referrer_code": "MiniatureSilverStilt"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Подтверждение регистрации

Возможные ошибки API

Во время выполнения этого запроса вы можете столкнуться со следующими ошибками:

HTTPКодПричинаРешение
404auth.user_not_foundУчётная запись не найдена.Убедиться, что передан правильный номер телефона.
422auth.registration.already_confirmedЭта учётная запись уже подтверждена.Использовать другой номер телефона для подтверждения.
403auth.registration.invalid_confirmation_codeНеправильный код подтверждения регистрации.Убедиться, что передан правильный код подтверждения.
422auth.registration.password_requiredНужно указать пароль.Убедиться, что пароль был передан во время регистрации или во время подтверждения.
path Parameters
store
required
string

ID магазина

Request Body schema: application/json
required
object (PhoneInput)

Телефон покупателя

required
number or string

Код подтверждения

password
string

Пароль покупателя (от 8 символов)

first_name
string

Имя покупателя

last_name
string

Фамилия покупателя

gender
string (CustomerGenderType)
Enum: "female" "male" "other"

Пол покупателя

birth_date
string

Дата рождения покупателя (в формате YYYY-MM-DD)

Responses

Request samples

Content type
application/json
{
  • "phone": {
    },
  • "code": "1234",
  • "password": "1jEIjf3bnW",
  • "first_name": "Иван",
  • "last_name": "Иванов"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Повторно выслать код подтверждения регистрации

Возможные ошибки API

Во время выполнения этого запроса вы можете столкнуться со следующими ошибками:

HTTPКодПричинаРешение
404auth.user_not_foundУчётная запись не найдена.Убедиться, что передан правильный номер телефона.
422auth.registration.already_confirmedЭта учётная запись уже подтверждена.Использовать другой номер телефона для подтверждения.
503security.banЗапрос не может быть выполнен из-за блокировки телефона или IP-адреса.Дождаться снятия блокировки или написать письмо на tech@zenky.io, если блокировка была ошибочной.
path Parameters
store
required
string

ID магазина

Request Body schema: application/json
required
object or null (RecaptchaInput)

Данные для проверки reCAPTCHA v3.

object (PhoneInput)

Телефон покупателя

Responses

Request samples

Content type
application/json
{
  • "phone": {
    }
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Запросить код для сброса пароля

Возможные ошибки API

Во время выполнения этого запроса вы можете столкнуться со следующими ошибками:

HTTPКодПричинаРешение
404auth.user_not_foundУчётная запись не найдена.Убедиться, что передан правильный номер телефона.
503auth.password_reset.not_availableСброс пароля недоступен для этой учётной записи.Ошибка возникает только на системных демо-аккаунтах.
503security.banЗапрос не может быть выполнен из-за блокировки телефона или IP-адреса.Дождаться снятия блокировки или написать письмо на tech@zenky.io, если блокировка была ошибочной.
path Parameters
store
required
string

ID магазина

Request Body schema: application/json
required
object or null (RecaptchaInput)

Данные для проверки reCAPTCHA v3. Обязательный параметр, если у магазина включена проверка reCAPTCHA v3 для действия reset_password.

object (PhoneInput)

Телефон покупателя

Responses

Request samples

Content type
application/json
{
  • "phone": {
    }
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Установить новый пароль

Возможные ошибки API

Во время выполнения этого запроса вы можете столкнуться со следующими ошибками:

HTTPКодПричинаРешение
404auth.user_not_foundУчётная запись не найдена.Убедиться, что передан правильный номер телефона.
503auth.password_reset.not_availableСброс пароля недоступен для этой учётной записи.Ошибка возникает только на системных демо-аккаунтах.
422auth.password_reset.code_expiredКод сброса пароля истёк.Запросить новый код сброса пароля.
422auth.password_reset.invalid_codeНеправильный код сброса пароля.Указать правильный код сброса пароля.
path Parameters
store
required
string

ID магазина

Request Body schema: application/json
required
object (PhoneInput)

Телефон покупателя

required
number or string

Код сброса пароля

password
required
string

Новый пароль (от 8 символов)

Responses

Request samples

Content type
application/json
{
  • "phone": {
    },
  • "code": "1234",
  • "password": "LHP5q2HuNc"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Вход в аккаунт

Возможные ошибки API

Во время выполнения этого запроса вы можете столкнуться со следующими ошибками:

HTTPКодПричинаРешение
404auth.user_not_foundУчётная запись не найдена.Убедиться, что передан правильный номер телефона.
403auth.registration.confirmation_requiredНужно подтвердить номер телефона, указанный при регистрации.Перенаправить покупателя на страницу подтверждения регистрации.
403auth.invalid_passwordНеправильный пароль.Убедиться, что передан правильный пароль.
path Parameters
store
required
string

ID магазина

Request Body schema: application/json
required
object (PhoneInput)

Телефон покупателя

password
required
string

Пароль покупателя (от 8 символов)

Responses

Request samples

Content type
application/json
{
  • "phone": {
    },
  • "password": "1jEIjf3bnW"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Проверка телефона

Используйте этот метод, чтобы определить, регистрировался ли покупатель в магазине.

path Parameters
store
required
string

ID магазина

Request Body schema: application/json
required
object (PhoneInput)

Телефон покупателя

number
required
string

Номер телефона

country
required
string

Страна телефона (ISO 3166-1 alpha-2)

Responses

Request samples

Content type
application/json
{
  • "phone": {
    }
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Обмен токена v2 на Storefront

Этот метод позволяет обменять токен, выданный в версии API v2 на токен нового формата для Storefront API. Внимание: для этого метода в заголовке Authorization нужно передавать токен из версии API v2! В ответе вы либо получите новый токен, либо ошибку (если v2-токен истёк или был создан для другого магазина).

Authorizations:
Bearer
path Parameters
store
required
string

ID магазина

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Профиль покупателя

Просмотр профиля покупателя

Этот метод поддерживает следующие включения:

ВключениеОписание
avatarАватар
settingsНастройки
Authorizations:
Bearer
path Parameters
store
required
string

ID магазина

query Parameters
with
string

Список включений

Responses

Response samples

Content type
application/json
{}

Изменение профиля покупателя

Возможные ошибки API

Во время выполнения этого запроса вы можете столкнуться со следующими ошибками:

HTTPКодПричинаРешение
422customers.birth_date.forbiddenДату рождения изменять нельзя.Сообщить покупателю, что он может изменить дату рождения, обратившись к представителям магазина.
422auth.invalid_passwordНеправильный пароль.Убедиться, что в поле `current_password` передан правильный пароль (требуется, если покупатель хочет изменить пароль).
Authorizations:
Bearer
path Parameters
store
required
string

ID магазина

Request Body schema: application/json
required
first_name
string

Имя покупателя

last_name
string

Фамилия покупателя

gender
string (CustomerGenderType)
Enum: "female" "male" "other"

Пол покупателя

birth_date
string

Дата рождения покупателя (в формате YYYY-MM-DD)

password
string

Новый пароль покупателя (от 8 символов)

current_password
string

Текущий пароль покупателя (требуется, если заполнено поле password)

Responses

Request samples

Content type
application/json
{
  • "first_name": "Иван",
  • "last_name": "Иванов"
}

Response samples

Content type
application/json
{}

Удаление профиля покупателя

Этот метод удаляет все адреса доставки покупателя, привязанные карты и обнуляет баланс бонусов. Номер телефона становится доступным для новой регистрации.

Возможные ошибки API

Во время выполнения этого запроса вы можете столкнуться со следующими ошибками:

HTTPКодПричинаРешение
403auth.invalid_passwordУказан неправильный пароль.Убедиться, что в поле `password` передан правильный пароль.
Authorizations:
Bearer
path Parameters
store
required
string

ID магазина

Request Body schema: application/json
required
password
required
string

Пароль покупателя

Responses

Request samples

Content type
application/json
{
  • "password": "1jEIjf3bnW"
}

Настройки покупателя

Просмотр настроек профиля покупателя

Authorizations:
Bearer
path Parameters
store
required
string

ID магазина

Responses

Response samples

Content type
application/json
{}

Изменение настроек профиля покупателя

Этот метод обновляет только те настройки, ключи которых были переданы в запросе.

Authorizations:
Bearer
path Parameters
store
required
string

ID магазина

Request Body schema: application/json
required
object

Объект с изменяемыми настройками

string or null

ID профиля OneSignal

string or null

ID мобильного устройства для Push-уведомлений

string or null

Токен мобильного устройства для Push-уведомлений

string or null

ОС мобильного устройства

string or null

Контент штрих-кода профиля

string or null

Контент QR-кода профиля

Responses

Request samples

Content type
application/json
{
  • "settings": {
    }
}

Response samples

Content type
application/json
{}

Адреса покупателя

Получить список адресов покупателя

Authorizations:
Bearer
path Parameters
store
required
string

ID магазина

query Parameters
with
string

Список включений

count
integer

Количество записей

page
integer

Номер страницы

search
string

Строка поиска

order_by
string

Поле сортировки

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Создать адрес покупателя

В поле delivery_address должен быть один из следующих объектов:

  1. Если магазин использует DaData.ru, объект с обязательным полем address, в котором должен быть указан полный адрес доставки до дома (включая город/населённый пункт, микрорайон (если есть), улицу (если есть), номер дома и корпус (если есть)). Вместе с адресом можно передать подъезд, квартиру, этаж, наличие домофона и заметку;
  2. Если магазин не использует DaData.ru, объект с отдельными полями адреса (city, street, house и т.д.).

Возможные ошибки API

Во время выполнения этого запроса вы можете столкнуться со следующими ошибками:

HTTPКодПричинаРешение
422addresses.resolver.failedНе удалось определить адрес доставки.Убедиться, что адрес введён правильно и полностью.
Authorizations:
Bearer
path Parameters
store
required
string

ID магазина

Request Body schema: application/json
required
object

Адрес покупателя

One of
name
string or null

Название адреса

address
required
string

Адрес одной строкой (до дома)

apartment
string or null

Квартира/офис

entrance
string or null

Подъезд/вход

floor
string or null

Этаж

has_intercom
boolean or null

Наличие домофона

intercom_code
string or null

Код домофона

Responses

Request samples

Content type
application/json
{
  • "delivery_address": {
    }
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Изменить адрес покупателя

В поле delivery_address должен быть один из следующих объектов:

  1. Если магазин использует DaData.ru, объект с обязательным полем address, в котором должен быть указан полный адрес доставки до дома (включая город/населённый пункт, микрорайон (если есть), улицу (если есть), номер дома и корпус (если есть)). Вместе с адресом можно передать подъезд, квартиру, этаж, наличие домофона и заметку;
  2. Если магазин не использует DaData.ru, объект с отдельными полями адреса (city, street, house и т.д.).

Возможные ошибки API

Во время выполнения этого запроса вы можете столкнуться со следующими ошибками:

HTTPКодПричинаРешение
404addresses.not_foundАдрес не найден.Убедиться, что адрес относится к покупателю.
422addresses.resolver.failedНе удалось определить адрес доставки.Убедиться, что адрес введён правильно и полностью.
Authorizations:
Bearer
path Parameters
store
required
string

ID магазина

address
required
string

ID адреса

Request Body schema: application/json
required
object

Адрес покупателя

One of
name
string or null

Название адреса

address
required
string

Адрес одной строкой (до дома)

apartment
string or null

Квартира/офис

entrance
string or null

Подъезд/вход

floor
string or null

Этаж

has_intercom
boolean or null

Наличие домофона

intercom_code
string or null

Код домофона

Responses

Request samples

Content type
application/json
{
  • "delivery_address": {
    }
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Удалить адрес покупателя

Возможные ошибки API

Во время выполнения этого запроса вы можете столкнуться со следующими ошибками:

HTTPКодПричинаРешение
404addresses.not_foundАдрес не найден.Убедиться, что адрес относится к покупателю.
Authorizations:
Bearer
path Parameters
store
required
string

ID магазина

address
required
string

ID адреса

Responses

Способы оплаты покупателя

Получить список карт покупателя

Authorizations:
Bearer
path Parameters
store
required
string

ID магазина

query Parameters
count
integer

Количество записей

page
integer

Номер страницы

Responses

Response samples

Content type
application/json
{}

Удалить карту покупателя

Возможные ошибки API

Во время выполнения этого запроса вы можете столкнуться со следующими ошибками:

HTTPКодПричинаРешение
404orders.payments.card_token.not_foundСохранённая карта не найдена.Убедиться, что карта относится к покупателю.
Authorizations:
Bearer
path Parameters
store
required
string

ID магазина

paymentMethod
required
string

ID карты

Responses

Программа лояльности

Получить актуальный баланс бонусов

Authorizations:
Bearer
path Parameters
store
required
string

ID магазина

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Получить список транзакций программы лояльности

Authorizations:
Bearer
path Parameters
store
required
string

ID магазина

query Parameters
count
integer

Количество записей

page
integer

Номер страницы

type
string (BonusesTransactionDirection)
Enum: "decrease" "increase"

Тип транзакции (increase – пополнение, decrease – списание)

status
string (BonusesTransactionStatusFilter)
Enum: "cancelled" "confirmed" "pending" "refunded"

Статус транзакции (pending – ожидает подтверждения, confirmed – подтверждена, cancelled – отменена, refunded – возвращена).

reason
string (BonusesTransactionReason)
Enum: "adjustment" "cancellation" "cashback" "external" "manual" "payment" "promotion_reward" "recruit_reward" "referral_reward" "refund" "welcome_bonuses"

Причина создания транзакции

order_id
string

ID связанного заказа

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Программа лояльности

Получить список бонусных уровней

path Parameters
store
required
string

ID магазина

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Акции

Акции делятся на 2 части: контентная (объект Offer) и функциональная. Контентные данные используются в баннерах на сайтах и в приложениях, а так же в статьях, которые дают подбробные описания того, как работает акция.

Функциональная часть отвечает за проверку выполнения условий акций и выдачу подарков. Эти данные нигде не отображаются и используются в основном в серверной части Zenky.

Запуск проверки выполненных акций должен выполняться вручную по команде с сайта/приложения. Результат проверки будет доставлен в клиентское приложение через вебсокеты (см. подробнее в разделе «Продажи» – «Программа лояльности»).

Получить список акций

Этот метод поддерживает следующие включения:

ВключениеОписание
articleСтатья

Этот метод поддерживает следующие поля сортировки (передаются в параметре order_by):

ПолеОписание
created_atПо дате создания (asc)
-created_atПо дате создания (desc)
sortingПо ручной сортировке (asc)
-sortingПо ручной сортировке (desc)
path Parameters
store
required
string

ID магазина

query Parameters
with
string

Список включений

count
integer

Количество записей

page
integer

Номер страницы

search
string

Строка поиска

order_by
string

Поле сортировки

Responses

Response samples

Content type
application/json
{}

Получить акцию

Этот метод поддерживает следующие включения:

ВключениеОписание
articleСтатья
path Parameters
store
required
string

ID магазина

offer
required
string

ID акции

query Parameters
with
string

Список включений

Responses

Response samples

Content type
application/json
{}

Креативы

Креативы – это баннеры и сторис, которые можно показывать на сайтах и в мобильных приложениях.

Баннеры делятся на два вида:

  • горизонтальные – используются на сайтах с возможностью загрузить версию баннеров для мобильной версии сайта;
  • вертикальные – можно использовать как на сайтах, так и в приложениях. Баннеры имеют соотношение сторон 3:4.

Сторис имеют набор слайдов (до 10), в каждом слайде может быть загружено изображение или видео. Также у каждого слайда может быть опциональное действие:

  • добавить товар в корзину;
  • применить промокод;
  • открыть ссылку.

Действие «Открыть ссылку» имеет тип ссылки, от которого зависят дополнительные поля:

  • товар;
  • категория товаров;
  • коллекция товаров;
  • акция;
  • статья в блоге;
  • произвольная ссылка.

Все типы кроме произвольной ссылки имеют дополнительные поля с идентификаторами связанных ресурсов. С их помощью вы можете открывать нужные страницы, используя встроенную в ваш сайт или приложение систему роутинга.

Получить список креативов

path Parameters
store
required
string

ID магазина

query Parameters
sales_channel_id
required
string

ID канала продаж, для которого нужно вернуть креативы. Если параметр не задан, будет возвращён пустой список.

city_id
string

ID города, для которого нужно вернуть креативы. Если параметр не задан, будут возвращены креативы, доступные для всех городов.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Статьи

Получить список категорий статей

Этот метод поддерживает следующие поля сортировки (передаются в параметре order_by):

ПолеОписание
nameПо названию (asc)
-nameПо названию (desc)
path Parameters
store
required
string

ID магазина

query Parameters
count
integer

Количество записей

page
integer

Номер страницы

search
string

Строка поиска

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Получить категорию статей

path Parameters
store
required
string

ID магазина

category
required
string

ID категории

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Получить список статей в блоге

Этот метод поддерживает следующие включения:

ВключениеОписание
categoryКатегория статей
path Parameters
store
required
string

ID магазина

query Parameters
with
string

Список включений

count
integer

Количество записей

page
integer

Номер страницы

search
string

Строка поиска

category_id
string

ID категории статей

Responses

Response samples

Content type
application/json
{}

Получить статью

Этот метод поддерживает следующие включения:

ВключениеОписание
categoryКатегория статей
path Parameters
store
required
string

ID магазина

article
required
string

ID статьи

query Parameters
with
string

Список включений

Responses

Response samples

Content type
application/json
{}

Обратная связь

Создать запрос обратной связи

Поле email должно быть указано, если поле phone не указано (и наоборот).

path Parameters
store
required
string

ID магазина

Request Body schema: application/json
required
object or null (RecaptchaInput)

Данные для проверки reCAPTCHA v3. Обязательный параметр, если у магазина включена проверка reCAPTCHA v3 для действия feedback_request.

name
string

Имя пользователя

email
string

Email

object

Телефон покупателя

comment
string

Текст запроса

Responses

Request samples

Content type
application/json
{
  • "name": "Иван Иванов",
  • "email": "example@example.org",
  • "phone": {
    },
  • "comment": "Перезвоните мне."
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Создать запрос обратного звонка

path Parameters
store
required
string

ID магазина

Request Body schema: application/json
required
object or null (RecaptchaInput)

Данные для проверки reCAPTCHA v3. Обязательный параметр, если у магазина включена проверка reCAPTCHA v3 для действия callback.

object (PhoneInput)

Телефон покупателя

Responses

Request samples

Content type
application/json
{
  • "phone": {
    }
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Объявления

Получить активное объявление

Этот метод позволяет запросить активное объявление для показа пользователю. Если подходящего объявления нет, то в поле data будет значение null.

path Parameters
store
required
string

ID магазина

query Parameters
city_id
string

ID активного города для показа объявления

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Пуш-рассылки

Получить список сообщений пуш-рассылок

Authorizations:
Bearer
query Parameters
count
integer

Количество записей

page
integer

Номер страницы

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Получить счётчики сообщений пуш-рассылок

Authorizations:
Bearer

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Отметить сообщение пуш-рассылки как прочитанное

Этот метод отмечает сообщения пуш-рассылки как прочитанные. Метод может вызываться в следующих случаях:

  1. Если покупатель нажимает на пуш-уведомление;
  2. Если покупатель открыл пуш-уведомление из истории рассылок;
  3. Если покупатель отметил все сообщения пуш-рассылок как прочитанные.

В полезной нагрузке рассылочных пуш-уведомлений мы добавляем поле campaign_id – его можно использовать для вызова метода при открытии приложение из пуш-уведомления.

В каждом сообщении пуш-рассылок также имеется поле campaign_id, которое можно использовать для вызова метода при открытии уведомления из истории.

Если же покупатель хочет отметить все уведомления как прочитанные, достаточно вызывать метод прочтения без передачи campaign_id (или отправляя null / пустое значение).

Authorizations:
Bearer
Request Body schema: application/json
required
campaign_id
string or null

ID пуш-рассылки (из поля campaign_id). Если не передаётся, то будут отмечены прочитанными все сообщения пуш-рассылок, отправленные пользователю.

Responses

Request samples

Content type
application/json
{
  • "campaign_id": "a18647ff-0ce2-44a9-9861-2926e870ba39"
}

Ошибка API

Ошибка выполнения операции. Возникает при дополнительных проверках данных (после валидации) или при невозможности продолжить выполнение запроса.

Такие ошибки имеют уникальный код и текст сообщения, по которым можно определить причину ошибки и способ её устранения. Список возможных ошибок может быть перечислен в документации к конкретному методу API.

Если вы столкнулись с неизвестной ошибкой, пожалуйста, создайте новый issue в нашем репозитории на GitHub. Обратите внимание, что этот репозиторий является публичным и любой пользователь может просматривать ваши обращения. Не публикуйте ваши API-токены и другую конфиденциальную информацию, особенно относящуюся к покупателям.

В случае, если ваш запрос содержит конфиденциальную информацию, вместо создания issue вы можете написать нам на почту tech@zenky.io с подробным описанием проблемы, приложив полное тело запроса, включая URL и ID магазина. Так же при обращении на почту вы можете указать API-токен, который использовался для выполнения запроса, в этом случае мы не будем его инвалидировать, если только это не потребуется для решения проблемы.

object
message
string

Сообщение об ошибке

original_message
string

Оригинальный текст сообщения

http_code
integer

HTTP-код ошибки

error_code
string

Внутренний код ошибки

meta
object or null

Мета-данные ошибки

{
  • "error": {
    }
}

Ошибка валидации

Ошибка валидации входных данных. Возникает в том случае, если вы передали некорректные данные или не передали их вообще.

Исправить их проще всего – нужно изучить проблемные поля и свериться с документацией для исправления передаваемых данных.

Если вы не уверены, как исправить ошибку валидации, пожалуйста, создайте новый issue в нашем репозитории на GitHub. Обратите внимание, что этот репозиторий является публичным и любой пользователь может просматривать ваши обращения. Не публикуйте ваши API-токены и другую конфиденциальную информацию, особенно относящуюся к покупателям.

В случае, если ваш запрос содержит конфиденциальную информацию, вместо создания issue вы можете написать нам на почту tech@zenky.io с подробным описанием проблемы, приложив полное тело запроса, включая URL и ID магазина. Так же при обращении на почту вы можете указать API-токен, который использовался для выполнения запроса, в этом случае мы не будем его инвалидировать, если только это не потребуется для решения проблемы.

message
string

Сообщение об ошибке

object

Список ошибок валидации

{
  • "message": "The given data was invalid.",
  • "errors": {
    }
}

Телефон

country
string

Код страны (ISO 3166-1 alpha-2)

number
string

Номер телефона в формате E.164

national
string

Номер телефона в национальном формате

{
  • "country": "RU",
  • "number": "+79641234567",
  • "national": "+7 (964) 123-45-67"
}