AgroDO: CRM для фермеров

API кабинета

Формат JSON:API 1.1. Адрес: https://ваш-адрес.bookdo.ru/api/v1/{ресурс}. Авторизация: заголовок Authorization: Bearer токен, токен выпускается в кабинете в разделе «API-токены». Права токена задаёт его роль.

Список: GET /{ресурс}?filter[поле]=значение&filter[q]=поиск&sort=-поле&page[number]=1&page[size]=25. Одна запись: GET /{ресурс}/{id}. Создание: POST /{ресурс} с телом {"data":{"type":"...","attributes":{...}}}. Изменение: PATCH /{ресурс}/{id}. Удаление: DELETE /{ресурс}/{id}.

Деньги передаются в копейках целым числом, даты в UTC. Ошибки приходят в виде {"errors":[{"status","code","detail"}]}.

Webhooks настраиваются в разделе «Webhooks». Запрос приходит методом POST с заголовками X-Agrodo-Event и X-Agrodo-Signature: sha256=… (HMAC тела запроса с секретом webhook).

Брони bk-bookings

ПолеТипОписание
numberстрока, только чтениеНомер
starts_atдата и время, только чтениеНачало
ends_atдата и время, только чтениеКонец
object_idссылка на bk-objects, только чтениеОбъект
branch_idссылка на bk-branches, только чтениеФилиал
resource_idссылка на bk-resources, только чтениеКто принимает
counterparty_idссылка на buyers, только чтениеКлиент
guest_nameстрока, только чтениеГость
guest_phoneстрока, только чтениеТелефон
guestsцелое, только чтениеГостей
totalкопейки, только чтениеСумма, ₽
statusсписок: hold, new, confirmed, done, noshow, cancelled, block, только чтениеСостояние
sourceсписок: admin, site, ical, api, sputnik8, ticketscloud, tripster, только чтениеОткуда
noteстрока, только чтениеЗаметка
created_atдата и время, только чтениеСоздана

Жильё bk-stays

ПолеТипОписание
name *строкаНазвание (как увидит гость)
price *копейкиЦена за сутки, ₽
capacityцелоеСколько гостей вмещает
min_nightsцелоеМинимум суток
addressстрокаАдрес
descriptionтекстОписание для гостя
group_idссылка на bk-groupsГруппа
branch_idссылка на bk-branchesФилиал (город, район)
is_activeда/нетПоказывать в онлайн-записи
checkin_timeстрокаЗаезд с
checkout_timeстрокаВыезд до
unitsцелоеОдинаковых объектов (например, 3 одинаковых номера)
confirmсписок: auto, manualПодтверждение
guests_modeсписок: main, eachДанные гостей
lead_hoursцелоеПринимать бронь не позже чем за, часов
horizon_daysцелоеОткрывать бронь на столько дней вперёд
sortцелоеПорядок

Экскурсии и туры bk-tours

ПолеТипОписание
name *строкаНазвание (как увидит гость)
priceкопейкиЦена с человека, ₽ (если билеты одной цены)
capacity *целоеМест на одном сеансе
addressстрокаМесто встречи
descriptionтекстОписание для гостя
group_idссылка на bk-groupsГруппа
branch_idссылка на bk-branchesФилиал (город, район)
is_activeда/нетПоказывать в онлайн-записи
wholeда/нетСеанс бронирует целиком одна компания
guests_modeсписок: main, eachДанные гостей
confirmсписок: auto, manualПодтверждение
lead_hoursцелоеПринимать бронь не позже чем за, часов до начала
horizon_daysцелоеОткрывать бронь на столько дней вперёд
sortцелоеПорядок

Услуги bk-services

ПолеТипОписание
name *строкаНазвание услуги
whoстрока, только чтениеКто оказывает
priceкопейкиЦена, ₽
duration_min *целоеДлительность, минут
group_idссылка на bk-groupsГруппа (стрижки, маникюр, массаж)
branch_idссылка на bk-branchesТолько в филиале (пусто = во всех)
descriptionтекстОписание для клиента
is_activeда/нетПоказывать в онлайн-записи
slot_step_minцелоеШаг записи, минут (пусто = 30)
confirmсписок: auto, manualПодтверждение
lead_hoursцелоеПринимать запись не позже чем за, часов
horizon_daysцелоеОткрывать запись на столько дней вперёд
sortцелоеПорядок

Специалисты bk-resources

ПолеТипОписание
name *строкаИмя (как увидит клиент)
aboutстрокаКоротко для клиента: должность, опыт
servicesстрока, только чтениеУслуги
employee_idссылка на employeesСотрудник (для зарплаты)
pay_pctчислоПроцент мастера с оказанных услуг, %
is_activeда/нетПринимает запись
sortцелоеПорядок

Группы bk-groups

ПолеТипОписание
name *строкаНазвание
descriptionтекстОписание для клиента
sortцелоеПорядок
is_activeда/нетПоказывать клиентам

Филиалы bk-branches

ПолеТипОписание
name *строкаНазвание (салон, город, район)
addressстрокаАдрес
phoneстрокаТелефон
is_activeда/нетПоказывать клиентам
sortцелоеПорядок

Онлайн-запись bk-forms

ПолеТипОписание
name *строкаНазвание для себя
codeстрокаАдрес формы латиницей (пусто = придумаем сами)
welcome_textтекстПриветствие для клиента
bk_branch_modeсписок: none, ask, fixedФилиал
bk_branch_idссылка на bk-branchesКакой филиал
bk_startсписок: both, service, masterС чего клиент начинает выбор
pay_modeсписок: none, onsite, deposit, fullОплата
deposit_pctцелоеПредоплата, % от суммы
pay_noteтекстКак оплатить (реквизиты, номер для перевода, условия возврата)
hold_minutesцелоеДержать неоплаченную бронь, минут (пусто = не снимать)
is_publishedда/нетЗапись по ссылке открыта

Клиенты buyers

ПолеТипОписание
name *строкаНазвание или ФИО
phoneстрокаТелефон
typeсписок: person, company, soleТип
noteтекстЗаметка
emailстрокаEmail
price_type_idссылка на price-typesВид цены для заказов
tax_idстрокаИНН / УНП / БИН
kppстрокаКПП
reg_numberстрокаОГРН / рег. номер
legal_addressстрокаЮридический адрес
countryстрокаСтрана (код, например RU, BY, KZ)
currencyстрокаВалюта расчётов (код)
orders_countцелое, только чтениеЗаказов
orders_totalкопейки, только чтениеСумма заказов, ₽
debtкопейки, только чтениеДолг, ₽
last_orderдата и время, только чтениеПоследний заказ

Заказы orders

ПолеТипОписание
numberстрока, только чтениеНомер
created_atдата и время, только чтениеСоздан
counterparty_id *ссылка на buyersКлиент
status_idссылка на order-statuses, только чтениеСтатус
warehouse_idссылка на warehousesСклад отгрузки
delivery_typeсписок: pickup, delivery, carrierПолучение
delivery_addressстрокаАдрес доставки
cityстрокаГород
confirm_stateсписок: asked, yes, no, только чтениеПодтверждение приёма
confirm_dateдата, только чтениеДата приёма
msg_stateсписок: ok, weak, fail, queued, только чтениеПоследнее сообщение клиенту
msg_textстрока, только чтениеИтог последнего сообщения
delivery_costкопейкиСтоимость доставки, ₽
wanted_dateдатаЖелаемая дата
wanted_intervalстрокаВремя (например, 10–14)
payment_method_idссылка на payment-methodsСпособ оплаты
discountкопейкиСкидка на заказ, ₽
responsible_user_idссылка на usersОтветственный
commentтекстКомментарий
totalкопейки, только чтениеСумма
paid_totalкопейки, только чтениеОплачено
payment_statusсписок: unpaid, partial, paid, только чтениеОплата

Формы заказа order-forms

ПолеТипОписание
name *строкаНазвание
kindсписок: shop, bookingЧто принимает форма
pay_modeсписок: none, onsite, deposit, fullОплата брони
deposit_pctцелоеПредоплата, % от суммы
pay_noteтекстКак оплатить (реквизиты, ссылка, условия возврата)
hold_minutesцелоеДержать неоплаченную бронь, минут (пусто = не снимать)
codeстрокаАдрес формы латиницей (пусто = придумаем сами)
welcome_textтекстПриветствие над товарами
price_type_idссылка на price-typesВид цены (пусто = основной)
warehouse_idссылка на warehousesСклад (пусто = первый)
min_totalкопейкиМинимальная сумма заказа, ₽
stock_modeсписок: hide, show, limitОстатки
is_publishedда/нетОпубликована

Ассортимент формы order-form-items

ПолеТипОписание
form_id *ссылка на order-formsФорма
product_idссылка на productsТовар
category_idссылка на product-categoriesИли вся категория

Оплаты payments

ПолеТипОписание
paid_atдата и время, только чтениеДата
directionсписок: in, out, только чтениеВид
counterparty_idссылка на buyers, только чтениеКонтрагент
amountкопейки, только чтениеСумма, ₽
money_account_idссылка на money-accounts, только чтениеСчёт
category_idссылка на money-categories, только чтениеСтатья
order_idссылка на orders, только чтениеЗаказ
purchase_idссылка на purchases, только чтениеЗакупка
method_idссылка на payment-methods, только чтениеСпособ оплаты
statusсписок: pending, paid, cancelled, refunded, только чтениеСостояние
noteстрока, только чтениеЗаметка

Отгрузки shipments

ПолеТипОписание
numberстрока, только чтениеНомер
doc_dateдата и время, только чтениеДата
counterparty_idссылка на buyers, только чтениеПокупатель
order_idссылка на orders, только чтениеЗаказ
warehouse_idссылка на warehouses, только чтениеСклад
totalкопейки, только чтениеСумма
cost_totalкопейки, только чтениеСебестоимость
is_returnда/нет, только чтениеВозврат
noteстрока, только чтениеКомментарий

Задачи tasks

ПолеТипОписание
title *строкаЧто сделать
descriptionтекстОписание
assignee_user_idссылка на usersИсполнитель (пользователь)
assignee_employee_idссылка на employeesИсполнитель (сотрудник)
due_atдата и времяСрок
priorityсписок: low, normal, highПриоритет
repeat_everyсписок: daily, weekly, monthlyПовторять (нужен срок)
statusсписок: new, work, review, done, cancelledСтатус

Услуги и товары products

ПолеТипОписание
sale_priceкопейки, только чтениеЦена продажи, ₽
stock_qtyчисло, только чтениеОстаток
stock_freeчисло, только чтениеСвободно (без резерва)
name *строкаНазвание
kindсписок: product, material, serviceВид
unit_idссылка на unitsЕдиница измерения
descriptionтекстОписание (его видит покупатель)
show_in_formsда/нетПоказывать в формах заказа
category_idссылка на product-categoriesКатегория
purchase_priceкопейкиЦена закупки, ₽
min_stockчислоМинимальный остаток (ниже него товар попадает в план закупки)
skuстрокаАртикул
barcodeстрокаШтрихкод
vat_rateчислоСтавка НДС, % (пусто = без НДС, цены считаются с НДС)

Категории product-categories

ПолеТипОписание
name *строкаНазвание
parent_idссылка на product-categoriesВходит в категорию
sortцелоеПорядок

Склады warehouses

ПолеТипОписание
name *строкаНазвание
addressстрокаАдрес
responsible_user_idссылка на usersОтветственный

Складские документы stock-docs

ПолеТипОписание
numberстрока, только чтениеНомер
type *список: receipt, writeoff, transfer, inventoryВид документа
doc_dateдата и времяДата
warehouse_id *ссылка на warehousesСклад
warehouse_to_idссылка на warehousesСклад-получатель (для перемещения)
reasonсписок: purchase, harvest, spoilage, shrinkage, own_needs, samples, otherПричина
counterparty_idссылка на suppliersПоставщик
noteтекстКомментарий
purchase_idссылка на purchases, только чтениеЗакупка
statusсписок: draft, posted, только чтениеСостояние
totalкопейки, только чтениеСумма

Поставщики suppliers

ПолеТипОписание
name *строкаНазвание или ФИО
phoneстрокаТелефон
typeсписок: person, company, soleТип
noteтекстЗаметка
emailстрокаEmail
price_type_idссылка на price-typesВид цены для заказов
tax_idстрокаИНН / УНП / БИН
kppстрокаКПП
reg_numberстрокаОГРН / рег. номер
legal_addressстрокаЮридический адрес
countryстрокаСтрана (код, например RU, BY, KZ)
currencyстрокаВалюта расчётов (код)
purchases_countцелое, только чтениеЗакупок
purchases_totalкопейки, только чтениеСумма закупок, ₽
debtкопейки, только чтениеМы должны, ₽

Заказы поставщикам purchases

ПолеТипОписание
numberстрока, только чтениеНомер
doc_dateдата и времяДата
counterparty_id *ссылка на suppliersПоставщик
statusсписок: draft, sent, confirmed, partial, received, cancelled, только чтениеСтатус
expected_dateдатаОжидаем к дате
warehouse_idссылка на warehousesСклад приёмки
noteтекстКомментарий
totalкопейки, только чтениеСумма
paid_totalкопейки, только чтениеОплачено

План закупки purchase-plans

ПолеТипОписание
product_id *ссылка на productsЧто купить
qty *числоКоличество
need_dateдатаНужно к дате
counterparty_idссылка на suppliersПоставщик
expected_priceкопейкиОжидаемая цена, ₽
statusсписок: plan, ordered, done, cancelledСостояние
purchase_idссылка на purchases, только чтениеЗаказ поставщику
noteстрокаЗаметка

Затраты и услуги expenses

ПолеТипОписание
expense_date *датаДата
product_idссылка на productsУслуга или статья
counterparty_idссылка на suppliersКому заплатили
qtyчислоКоличество
amount *копейкиСумма, ₽
money_account_idссылка на money-accountsОплачено со счёта (пусто: ещё не платили)
purchase_idссылка на purchases, только чтениеЗаказ поставщику
noteстрокаЗаметка

Условия оплаты employee-pay-terms

ПолеТипОписание
employee_id *ссылка на employeesСотрудник
type *список: salary, hour, day, pieceКак платим
rate *копейкиСтавка, ₽
piece_unitстрокаЗа что сдельная (кг, ящик)
valid_from *датаДействует с

Табель timesheets

ПолеТипОписание
employee_id *ссылка на employeesСотрудник
work_date *датаДата
hoursчислоЧасы (пусто = отработан день)
piece_qtyчислоСдельная выработка
plan_hoursчислоЧасы по графику
noteстрокаЗаметка

Зарплата payroll-periods

ПолеТипОписание
date_from *датаНачало периода
date_to *датаКонец периода
plan_fundкопейкиПлановый фонд оплаты, ₽
accruedкопейки, только чтениеНачислено (факт), ₽
paidкопейки, только чтениеВыплачено, ₽
dueкопейки, только чтениеК выплате, ₽
peopleцелое, только чтениеСотрудников в расчёте
statusсписок: open, closed, только чтениеСостояние

Сотрудники employees

ПолеТипОписание
pay_dueкопейки, только чтениеК выплате, ₽
name *строкаФИО
kindсписок: staff, hiredВид
positionстрокаДолжность
phoneстрокаТелефон
hired_atдатаПринят
fired_atдатаУволен
noteтекстЗаметка

Пользователи users

ПолеТипОписание
name *строкаИмя
phoneстрокаТелефон (логин)
emailстрокаEmail (логин)
role_idссылка на rolesРоль
statusсписок: active, blockedСтатус
passwordпарольНовый пароль (от 8 символов)

Роли roles

ПолеТипОписание
name *строкаНазвание

Дополнительные поля custom-fields

ПолеТипОписание
entity_type *список: order, purchase, counterparty, product, warehouse, employee, task, bk_object, bk_resourceГде показывать
name *строкаНазвание поля
code *строкаКод (латиницей, например sort_name)
type *список: string, number, date, list, boolТип
optionsмассив строкВарианты списка, по одному в строке
is_requiredда/нетОбязательное
sortцелоеПорядок

Контактные лица counterparty-contacts

ПолеТипОписание
counterparty_id *ссылка на buyersКонтрагент
name *строкаФИО
positionстрокаДолжность
phoneстрокаТелефон
emailстрокаEmail
noteстрокаЗаметка

Адреса counterparty-addresses

ПолеТипОписание
counterparty_id *ссылка на buyersКонтрагент
countryстрокаСтрана (код)
address *строкаАдрес
commentстрокаКомментарий для доставки
is_defaultда/нетОсновной

Банковские счета counterparty-bank-accounts

ПолеТипОписание
counterparty_id *ссылка на buyersКонтрагент
bank_nameстрокаБанк
bikстрокаБИК (для РФ)
account_numberстрокаРасчётный счёт
corr_accountстрокаКорр. счёт
ibanстрокаIBAN (для зарубежных)
swiftстрокаSWIFT
currencyстрокаВалюта (код)
is_defaultда/нетОсновной

Единицы измерения units

ПолеТипОписание
name *строкаНазвание
short_name *строкаСокращение
okei_codeстрокаКод ОКЕИ

Виды цен price-types

ПолеТипОписание
name *строкаНазвание
currencyстрокаВалюта (код)
is_defaultда/нетОсновной

Быстрые ответы quick-replies

ПолеТипОписание
title *строкаКороткое название
text *текстТекст ответа
sortцелоеПорядок

Рассылки mailings

ПолеТипОписание
name *строкаНазвание для себя
text *текстТекст сообщения. Можно {имя}
channels *массив строкКаналы по порядку, по одному в строке: telegram, whatsapp, max, sms, lk, email
recipientsмассив строкГруппы покупателей, по одной в строке (пусто = все покупатели)
is_marketingда/нетЭто реклама: отправлять только давшим согласие и добавить ссылку «Отписаться»
scheduled_atдата и времяОтправить не раньше (пусто = сразу)
statusсписок: draft, scheduled, sending, done, cancelled, только чтениеСостояние

Группы покупателей counterparty-groups

ПолеТипОписание
name *строкаНазвание (опт, розница, постоянные)

Оповещения notification-rules

ПолеТипОписание
name *строкаНазвание
event *список: lk.created, order.created, order.status_changed, shipment.created, payment.received, task.created, message.incoming, booking.created, booking.confirmed, booking.cancelledКогда
recipient *список: client, responsible, assignee, owner, userКому
recipient_user_idссылка на usersПользователь (если выбрано «Выбранному пользователю»)
channels *массив строкКаналы по порядку, по одному в строке: telegram, whatsapp, max, sms, lk, email
conditionsмассив строкТолько для статусов заказа (названия по одному в строке, пусто = для всех)
template *текстТекст. Можно: {имя} {хозяйство} {номер_заказа} {статус} {сумма} {ссылка_на_заказ} {адрес_лк} {задача} {срок} {сообщение}
delay_minutesцелоеЗадержка отправки, минут
is_activeда/нетВключено

Журнал сообщений outbox

ПолеТипОписание
created_atдата и время, только чтениеКогда
channel_typeстрока, только чтениеКанал
counterparty_idссылка на buyers, только чтениеКлиент
user_idссылка на users, только чтениеСотрудник
textтекст, только чтениеТекст
statusсписок: queued, sent, delivered, error, skipped, только чтениеСостояние
errorстрока, только чтениеПричина
costкопейки, только чтениеСтоимость, ₽
sent_atдата и время, только чтениеОтправлено

Webhooks webhooks

ПолеТипОписание
name *строкаНазвание
url *строкаАдрес, куда слать (https://...)
events *массив строкСобытия, по одному в строке. Например: orders.create, orders.*, order.status_changed или * для всех
is_activeда/нетВключён
secretстрока, только чтениеСекрет для проверки подписи
fail_countцелое, только чтениеНеудач подряд

Журнал webhooks webhook-deliveries

ПолеТипОписание
created_atдата и время, только чтениеСоздано
webhook_idссылка на webhooks, только чтениеWebhook
eventстрока, только чтениеСобытие
response_codeцелое, только чтениеКод ответа
attemptsцелое, только чтениеПопыток
delivered_atдата и время, только чтениеДоставлено
payloadтекст, только чтениеТело запроса

Что поставляет supplier-products

ПолеТипОписание
counterparty_id *ссылка на suppliersПоставщик
product_id *ссылка на productsТовар или услуга
priceкопейкиЦена поставщика, ₽
price_dateдатаДата цены

Способы оплаты payment-methods

ПолеТипОписание
name *строкаНазвание для клиента
provider *список: manualКак принимается
money_account_idссылка на money-accountsНа какой счёт попадают деньги
is_activeда/нетДействует
sortцелоеПорядок

Счета и кассы money-accounts

ПолеТипОписание
name *строкаНазвание
kind *список: cash, bank, cardЧто это
bank_nameстрокаБанк
bikстрокаБИК
account_numberстрокаНомер расчётного счёта
corr_accountстрокаКорр. счёт
for_docsда/нетПечатать этот счёт в документах и QR на оплату
opening_balanceкопейкиСколько было денег на начало учёта, ₽
is_defaultда/нетОсновной (подставляется сам)
is_activeда/нетДействует
sortцелоеПорядок
noteстрокаЗаметка

Статьи прихода и расхода money-categories

ПолеТипОписание
name *строкаНазвание
direction *список: in, outДля чего
sortцелоеПорядок

Статусы заказов order-statuses

ПолеТипОписание
name *строкаНазвание
kindсписок: new, work, done, cancelЭтап
colorстрокаЦвет (#RRGGBB)
reserveда/нетДержать резерв на складе
client_visibleда/нетВиден клиенту
client_editда/нетКлиент может сам менять состав заказа в этом статусе
autoсписок: none, shipped, doneСтавить автоматически
client_nameстрокаНазвание для клиента
sortцелоеПорядок

Объекты bk-objects

ПолеТипОписание
nameстрока, только чтениеНазвание
modeсписок: nights, sessions, slots, только чтениеВид
priceкопейки, только чтениеЦена, ₽
is_activeда/нет, только чтениеПоказывать в онлайн-записи

Недельные графики (не используются) bk-calendars

ПолеТипОписание
name *строкаНазвание
d1строкаПонедельник (например 09:00-13:00, 14:00-18:00; пусто = выходной)
d2строкаВторник
d3строкаСреда
d4строкаЧетверг
d5строкаПятница
d6строкаСуббота
d7строкаВоскресенье

Особые дни bk-calendar-days

ПолеТипОписание
calendar_id *ссылка на bk-calendarsГрафик
day *датаДата
hoursстрокаЧасы в этот день (пусто = выходной)
noteстрокаЗаметка

Билеты и тарифы bk-rates

ПолеТипОписание
object_id *ссылка на bk-objectsОбъект
name *строкаНазвание (взрослый, детский, льготный)
price *копейкиЦена, ₽
takes_seatда/нетЗанимает место
max_qtyцелоеНе больше в одной брони
sortцелоеПорядок

Цены по датам bk-prices

ПолеТипОписание
object_id *ссылка на bk-objectsОбъект
price *копейкиЦена за сутки, ₽
date_fromдатаС даты (пусто = всегда)
date_toдатаПо дату
weekdaysстрокаДни недели цифрами: 5,6 = пятница и суббота (пусто = все)
noteстрокаЗаметка (сезон, праздники)

Кто оказывает bk-object-resources

ПолеТипОписание
object_id *ссылка на bk-objectsУслуга
resource_id *ссылка на bk-resourcesСпециалист или ресурс

Календари площадок bk-feeds

ПолеТипОписание
object_id *ссылка на bk-objectsОбъект
name *строкаПлощадка (Авито, Суточно, Островок)
url *строкаСсылка на календарь iCal с площадки
is_activeда/нетЗагружать занятые даты
last_sync_atдата и время, только чтениеПоследняя загрузка
last_countцелое, только чтениеЗанятых периодов
last_errorстрока, только чтениеОшибка