API ChatFood. Документация для разработчиков
Базовые сведения
ChatFood поддерживает широкие возможности для взаимодействия через API. С его помощью вы сможете получать информацию о заказах, клиентах и каталоге. Функционал постоянно дополняется новыми возможностями. Если у вас есть предложения по развитию функциональности API, обратитесь в службу поддержки.
Поддерживаемые методы
Заказы
Клиенты
- Получение списка клиентов
- Получение клиента по ID
- Изменение клиента
- Начисление/списание бонусов
- Получение адресов клиента по ID
Количество запросов к API бота не должно превышать 50 шт в секунду в сумме со всех токенов.
Подключение
Для работы с API необходим токен. Чтобы получить его, перейдите в личный кабинет, затем в раздел "Настройки" — "API". GUID — уникальный ключ бота, который вы можете получить из URL в личном кабинете. Он имеет следующий формат: ABCD123456-ABCD123456-ABCD123456-ABCD123456. Все запросы отправляются с помощью HTTP по адресу: https://chatfood.ru/core/{method}. Каждый запрос должен включать два обязательных параметра: guid и token. Эти параметры необходимо передавать в заголовках каждого запроса.
Заказы
Для работы с заказами используется метод orders.
Для оперативного получения новых заказов, используйте вебхук.
Получение списка заказов
Метод возвращает массив объектов заказов. Лимит отображения записей за один запрос — 20.
Доступные параметры запроса:
Параметр | Описание | Тип |
---|---|---|
sort | Сортировка | string |
filter | Фильтрация | array |
page | Страница | int |
Сортировка (sort). Для сортировки от меньшего к большему используйте sort=id, и наоборот sort=-id.
Доступные поля для сортировки:
Параметр | Описание |
---|---|
id | Сортировка по идентификатору |
created_at | Сортировка по времени заказа |
payment | Сортировка по идентификатору способу оплаты |
receipt | Сортировка по способу получения |
status | Сортировка по идентификатору статуса заказа |
point | Сортировка по идентификатору точки продаж |
amount | Сортировка по сумме заказа |
price_products | Сортировка по стоимости товаров |
price_delivery | Сортировка по стоимости доставки |
discount_promocode | Сортировка по скидке по промокоду |
discount_bonus | Сортировка по сумме оплаты бонусами |
rating | Сортировка по рейтингу |
client | Сортировка по идентификатору клиента |
Фильтрация (filter). Фильтр передается в ввиде массива. Например filter[payment]=1 получит все заказы, у которых идентификатор способа оплаты равен 1. Подробнее о фильтрах.
Для фильтрации заказов доступны поля:
Параметр | Описание | Тип |
---|---|---|
created_at | Время создания заказа | int |
payment | Способ оплаты заказа | int |
receipt | Способ получения заказа | int |
status | Статус заказа | int |
point | Точка продаж | int |
amount | Сумма заказа | float |
price_products | Сумма товаров | float |
price_delivery | Сумма доставки | float |
discount_bonus | Оплачено бонусами | float |
rating | Рейтинг | float |
client | Клиент | int |
Получение заказа по ID
Возвращает объект заказа. Вместо {ID} используйте номер заказа.
Изменение заказа
Обновляет данные заказа и в случае успеха возвращает объект заказа. Вместо {ID} используйте номер заказа.
Доступные поля для изменения:
Поле | Описание | Тип |
---|---|---|
status_id | Статус заказа. Идентификатор существующего статуса. Так же сработает событие CHANGE_STATUS_ORDER |
int |
Удаление заказа
Удаляет заказ. В случае успеха вернет 204 ответ с пустым содержимым. Вместо {ID} используйте номер заказа. Так же сработает событие DELETE_ORDER
Объект заказа
Поле | Описание | Тип |
---|---|---|
id | Идентификатор заказа, он же номер заказа | int |
point | Точка продажи, в которую поступил заказ | object |
address | Адрес доставки | string |
client | Объект клиента совершившего заказ | object |
status | Статус заказа | object |
receipt | Способ получения заказа | object |
payment | Способ оплаты заказа | object |
fields | Дополнительные поля заказа | array |
created_at | Время создания заказа | int |
price_products | Стоимость товаров заказа | float |
price_delivery | Стоимость доставки заказа | float |
discount_promocode | Скидка по промокоду | float |
discount_bonus | Оплачено бонусами | float |
amount | Общая стоимость заказа | float |
rating | Рейтинг заказа | float |
basket | Массив объектов корзины | array |
review | Объект отзыва | object |
Объект корзины
Поле | Описание | Тип |
---|---|---|
product_id | Идентификатор товара | int |
product_external_code | Внешний код товара | string |
product_data | Объект товара | object |
quantity | Количество товара в корзине | int |
price | Стоимость 1 товара | float |
amount | Стоимость товаров | float |
options_data | Выбранные опции | object |
variation_data | Выбранная вариация товара | object |
Клиенты
Для работы с заказами используется метод clients
Получение списка клиентов
Метод возвращает массив объектов клиентов. Лимит отображения записей за один запрос — 20.
Доступные параметры запроса:
Параметр | Описание | Тип |
---|---|---|
sort | Сортировка | string |
filter | Фильтрация | array |
page | Страница | int |
Сортировка (sort). Для сортировки от меньшего к большему используйте sort=id, и наоборот sort=-id.
Доступные поля для сортировки:
Параметр | Описание |
---|---|
id | Сортировка по идентификатору |
created_at | Сортировка по дате регистрации |
username | Сортировка по юзернейму |
name | Сортировка по имени |
lastname | Сортировка по фамилии |
phone | Сортировка по номеру телефона |
bonus | Сортировка по сумме бонусов |
active | Сортировка по активности |
invite | Сортировка по приглашенным клиентам |
qr | Сортировка по QR ссылке |
count_orders | Сортировка по количеству заказов |
amount_orders | Сортировка по сумме заказов |
Фильтрация (filter). Фильтр передается в ввиде массива. Например filter[qr]=3 получит все заказы, у которых идентификатор QR ссылки равен 3. Подробнее о фильтрах.
Для фильтрации заказов доступны поля:
Параметр | Описание | Тип |
---|---|---|
created_at | Дата регистрации | int |
chat_id | Идентификатор telegram | int |
username | Юзернейм | string |
name | Имя | string |
lastname | Фамилия | string |
phone | Телефон | int |
bonus | Бонусы | float |
invite | Идентификатор приглашенного клиента | int |
qr | Идентификатор QR ссылки | int |
count_orders | Количество заказов | int |
amount_orders | Сумма заказов | float |
active | Активность | int |
Получение клиента по ID
Возвращает объект клиента. Вместо {ID} используйте идентификатор клиента.
Изменение клиента
Обновляет данные клиента и в случае успеха возвращает объект клиента. Вместо {ID} используйте идентификатор клиента.
Доступные поля для изменения:
Поле | Описание | Тип |
---|---|---|
bonus | Бонусы клиента | float |
Обратите внимание, что при изменении клиента, не будут отрабатываться события. Например если вы хотите чтобы сработало событие ADD_BONUS_CLIENT, воспользуйтесь методом начисления бонусов
Начисление/списание бонусов
Начисляет бонусы клиенту и в случае успеха возвращает объект клиента. Вместо {ID} используйте идентификатор клиента.
Поле | Описание | Тип |
---|---|---|
value | Сумма начисления/списания | float |
Получение адресов клиента по ID
Возвращает массив адресов клиента. Вместо {ID} используйте идентификатор клиента.
Доступные параметры запроса:
Параметр | Описание | Тип |
---|---|---|
page | Страница | int |
Объект клиента
Поле | Описание | Тип |
---|---|---|
id | Идентификатор клиента | int |
chat_id | Идентификатор telegram | int |
username | Юзернейм | string |
created_at | Дата регистрации | int |
name | Имя | string |
lastname | Фамилия | string |
phone | Телефон | int |
bonus | Бонусы клиента | float |
invite | Идентификатор приглашенного клиента | int |
qr | Идентификатор QR ссылки | int |
count_orders | Количество заказов | int |
amount_orders | Сумма заказов | float |
active | Активность | boolean |
preview | Объект изображения | object |
Вебхук
Вебхук отправляет HTTP запрос методом POST с объектом вебхука при выполнении каждого события.
Чтобы установить вебхук, перейдите в раздел "Настройки" — "Служебное" и заполните поле "Вебхук". При установке вебхука будет отправлен запрос.
Каждый запрос содержит заголовок x-chatfood-secret-token, который уникален для каждого бота. Вы можете использовать его в качестве проверки, что данные действительно были отправлены с сайта chatfood.ru
Объект вебхука
Поле | Описание | Тип |
---|---|---|
event | Название события | string |
data | Объект события | object |
События вебхука
Событие | Описание | Объект |
---|---|---|
NEW_ORDER | При создании нового заказа | Объект заказа |
CHANGE_STATUS_ORDER | При изменении статуса заказа | Объект заказа |
SIGNUP_CLIENT | Регистрация клиента в боте | Объект клиента |
Прочее
Фильтры
Операторы фильтрации:
Оператор | Название | Описание | Пример |
---|---|---|---|
== | равенство | Проверяет, что значение поля равно указанному значению. | ?filter[id]=1 |
!= | не равно | Проверяет, что значение поля не равно указанному значению. | ?filter[id][!=]=1 |
> | больше чем | Проверяет, что значение поля больше указанного значения. | ?filter[amount][gt]=100 |
< | меньше чем | Проверяет, что значение поля меньше указанного значения. | ?filter[amount][lt]=100 |
>= | больше или равно | Проверяет, что значение поля больше или равно указанному значению. | ?filter[amount][gte]=18 |
<= | меньше или равно | Проверяет, что значение поля меньше или равно указанному значению. | ?filter[amount][lte]=18 |
LIKE | частичное совпадение | Ищет значения, которые частично совпадают с указанным текстом (аналог SQL LIKE). | ?filter[address][like]=самара |
IN | вхождение в список | Проверяет, что значение поля находится в указанном списке. | ?filter[id][in]=1,2,3 |
NOT IN | не входит в список | Проверяет, что значение поля не находится в указанном списке. | ?filter[id][nin]=1,2,3 |
AND | И | Используется по умолчанию, когда указано несколько параметров фильтрации. | Запрос, где нужно найти сумму заказа больше 100 и статус с идентификатором 1 ?filter[amount][gt]=100&filter[status]=1 |
OR | ИЛИ | Для использования OR необходимо задать составной фильтр в виде массива. | Запрос, где нужно найти либо сумму заказа больше 100, либо статус с идентификатором 1 ?filter[or][0][amount][gt]=100&filter[or][1][status]=1 |
Поддерживаются комбинированные условия с вложенностью. Этот запрос выберет записи, где либо сумма заказа больше 100, либо идентификатор статуса равен 1, и при этом адрес содержит 'самара'.
?filter[and][0][or][0][amount][gt]=100&filter[and][0][or][1][status]=1&filter[and][1][address][like]=самара
Объект изображения
Поле | Описание | Тип |
---|---|---|
id | Идентификатор файла | int |
type | Тип файла | string |
data | Объект изображения с ссылками на миниатюры | object |
Объект адреса
Поле | Описание | Тип |
---|---|---|
id | Идентификатор адреса | int |
addres | Полный адрес | string |
entrance | Подъезд | int |
intercom_code | Код домофона | string |
floor | Этаж | int |
apartment | Квартира/офис | string |
comment | Комментарий к адресу | string |
coordinates | Координаты адреса | array |
Объект статуса
Поле | Описание | Тип |
---|---|---|
id | Идентификатор статуса | int |
name | Название статуса | string |
color | Цвет статуса в HEX | string |
sort | Индекс сортировки | int |
global | Глобальный тип статуса | string |
Объект способа получения
Поле | Описание | Тип |
---|---|---|
id | Идентификатор способа | int |
name | Название способа | string |
global | Глобальный тип способа | string |
Объект способа оплаты
Поле | Описание | Тип |
---|---|---|
id | Идентификатор способа | int |
name | Название способа | string |
global | Глобальный тип способа | string |
События
Событие | Описание |
---|---|
ADD_BONUS_CLIENT | Начисление бонусов клиенту |
BLOCK_CLIENT | Блокировка клиента |
CHANGE_STATUS_ORDER | Смена статуса заказа |
DELETE_ORDER | Удаление заказа |
GET_RATING_ORDER | Запрос оценки заказа |
NEW_ORDER | Новый заказ |
REDUCE_BONUS_CLIENT | Списание бонусов с клиента |
SET_RATING_ORDER | Установка рейтинга заказу |
SIGNUP_CLIENT | Регистрация клиента |
ADD_BONUS_CLIENT | Начисление бонусов клиенту |
START | Вызов команды /start |
UNBLOCK_CLIENT | Разблокировка клиента |