Брони
Брони вашего отдела: оформление, правка, отмена, перенос, расчёт стоимости
Брони
Брони вашего отдела по возрастанию номера, порциями. Корпоративных броней в API нет.
query Parameters
shift_idТолько брони смены
statusactive | cancelled
payment_stateawaiting | secured | unpaid
has_debttrue — только с остатком к оплате, false — только без него
updated_sinceИзменённые с этого момента (RFC 3339): 2027-05-14T00:00:00Z.
Платёж версию брони не меняет — о нём скажет событие payment.received
child_idБрони ребёнка
parent_idБрони детей семьи
cursorКурсор из next_cursor прошлого ответа
limitСколько записей вернуть, 1–200, по умолчанию 50
Брони › Responses
Готово
next_cursorПередать в cursor, чтобы получить следующую порцию
Оформить бронь
Та же проверка, что и в CRM лагеря: окно продаж, квота отдела, дубль
ребёнка на смене, запрет, потолок скидки. Место придерживается на
сутки, и при invoice = min (по умолчанию) или full счёт Kaspi
уходит плательщику сразу. Нужен Idempotency-Key.
Headers
Idempotency-KeyСлучайная строка, своя на каждое действие
Оформить бронь › Request Body
commentexternal_idНомер записи в вашей CRM. Уникален внутри отдела
invoiceСчёт Kaspi при оформлении: min — минимальный платёж (по умолчанию,
если он у смены задан), full — вся сумма, none — не выставлять
Ваши метки: до 20 пар
needs_transferНужен ли трансфер
partner_managerКто продал в вашей CRM (до 200 знаков)
payer_phoneТелефон плательщика, если платит не родитель: счета Kaspi уйдут на него
together_with«Поселить вместе» с этими бронями той же смены (ваши брони), не больше 50
transfer_point_idТочка посадки — обязательна, если трансфер нужен
Оформить бронь › Responses
Бронь оформлена
commentcontacts_hiddenРебёнка теперь ведёт другой отдел: бронь остаётся в ваших списках (это ваша продажа), но телефоны родителя и плательщика скрыты
created_atОстаток: total − paid. Отрицательный — переплата
full_payment_dueДо какой даты внести всю сумму
idВаши метки: до 20 пар «ключ — значение»
Оплачено: все платежи брони, включая ещё не сверенные бухгалтерией
payment_stateawaiting — место придержано и ждёт минимальный платёж; secured — минимум внесён, место закреплено; unpaid — не оплачена в срок, место вернулось в квоту. Список может пополняться
Цена путёвки
statusactive — действует, cancelled — отменена. Список может пополняться
К оплате всего: цена + трансфер − скидка
updated_atversionВерсия записи. Передайте её в If-Match правки или отмены:
если бронь успели изменить, ответ будет 412
Путёвка в карточке брони (кратко; полностью — GET /bookings/{id}/voucher).
voucher_numberНомер путёвки: смена-порядковый номер
cancelled_reasonПричина отмены
external_idНомер записи в вашей CRM. Уникален внутри отдела
hold_untilДо какого момента держится место без минимального платежа
partner_managerКто продал бронь в вашей CRM — как вы его прислали
payer_phoneТелефон плательщика, если платит не родитель: на него уходят счета
Kaspi. Нет — платит родитель (или контакты скрыты, см. contacts_hidden)
squad_numberНомер отряда; нет — ещё не назначен
Оформить детей одной семьи
Все брони — одной транзакцией: если не прошёл хотя бы один ребёнок
(квота, дубль, запрет), не оформляется никто, а в ответе сказано,
какой ребёнок и почему. Счёт Kaspi — отдельный на каждую бронь.
Нужен Idempotency-Key.
Headers
Idempotency-KeyСлучайная строка, своя на каждое действие
Оформить детей одной семьи › Request Body
От 1 до 10 детей
invoiceСчёт каждому ребёнку: min | full | none (как у одной брони)
payer_phonetogetherПоселить вместе детей семьи, попавших на одну смену
Оформить детей одной семьи › Responses
Все брони оформлены
Брони в порядке детей запроса
Бронь по номеру вашей CRM
path Parameters
external_idВаш external_id брони
Бронь по номеру вашей CRM › Responses
Готово
commentcontacts_hiddenРебёнка теперь ведёт другой отдел: бронь остаётся в ваших списках (это ваша продажа), но телефоны родителя и плательщика скрыты
created_atОстаток: total − paid. Отрицательный — переплата
full_payment_dueДо какой даты внести всю сумму
idВаши метки: до 20 пар «ключ — значение»
Оплачено: все платежи брони, включая ещё не сверенные бухгалтерией
payment_stateawaiting — место придержано и ждёт минимальный платёж; secured — минимум внесён, место закреплено; unpaid — не оплачена в срок, место вернулось в квоту. Список может пополняться
Цена путёвки
statusactive — действует, cancelled — отменена. Список может пополняться
К оплате всего: цена + трансфер − скидка
updated_atversionВерсия записи. Передайте её в If-Match правки или отмены:
если бронь успели изменить, ответ будет 412
Путёвка в карточке брони (кратко; полностью — GET /bookings/{id}/voucher).
voucher_numberНомер путёвки: смена-порядковый номер
cancelled_reasonПричина отмены
external_idНомер записи в вашей CRM. Уникален внутри отдела
hold_untilДо какого момента держится место без минимального платежа
partner_managerКто продал бронь в вашей CRM — как вы его прислали
payer_phoneТелефон плательщика, если платит не родитель: на него уходят счета
Kaspi. Нет — платит родитель (или контакты скрыты, см. contacts_hidden)
squad_numberНомер отряда; нет — ещё не назначен
Можно ли оформить
Те же проверки, что при оформлении, но без брони: продажи открыты,
есть место в квоте отдела, ребёнок ещё не записан на смену, нет
запрета. Ничего не создаёт; Idempotency-Key не нужен.
Нужно право bookings: ответ говорит, записан ли ребёнок с такими
ФИО и телефоном, — это часть оформления, а не чтение своей базы.
Считается как запись (2 в секунду) и не больше 300 проверок в час
на отдел.
Можно ли оформить › Responses
Готово
can_bookОформление сейчас пройдёт (если за это время место не займут)
Почему нельзя — все причины сразу
Бронь
path Parameters
idНомер брони
Бронь › Responses
Готово
commentcontacts_hiddenРебёнка теперь ведёт другой отдел: бронь остаётся в ваших списках (это ваша продажа), но телефоны родителя и плательщика скрыты
created_atОстаток: total − paid. Отрицательный — переплата
full_payment_dueДо какой даты внести всю сумму
idВаши метки: до 20 пар «ключ — значение»
Оплачено: все платежи брони, включая ещё не сверенные бухгалтерией
payment_stateawaiting — место придержано и ждёт минимальный платёж; secured — минимум внесён, место закреплено; unpaid — не оплачена в срок, место вернулось в квоту. Список может пополняться
Цена путёвки
statusactive — действует, cancelled — отменена. Список может пополняться
К оплате всего: цена + трансфер − скидка
updated_atversionВерсия записи. Передайте её в If-Match правки или отмены:
если бронь успели изменить, ответ будет 412
Путёвка в карточке брони (кратко; полностью — GET /bookings/{id}/voucher).
voucher_numberНомер путёвки: смена-порядковый номер
cancelled_reasonПричина отмены
external_idНомер записи в вашей CRM. Уникален внутри отдела
hold_untilДо какого момента держится место без минимального платежа
partner_managerКто продал бронь в вашей CRM — как вы его прислали
payer_phoneТелефон плательщика, если платит не родитель: на него уходят счета
Kaspi. Нет — платит родитель (или контакты скрыты, см. contacts_hidden)
squad_numberНомер отряда; нет — ещё не назначен
Изменить бронь
Передайте только то, что меняется. С If-Match: <version> правка
не ляжет поверх чужой: если бронь успели изменить, ответ 412.
Изменение цены, скидки или трансфера пересоставляет живой счёт Kaspi.
path Parameters
idНомер брони
Headers
If-Matchversion брони
Изменить бронь › Request Body
Правка ребёнка в брони.
commentexternal_idНомер записи в вашей CRM. null — стереть номер, поле
не передано — не менять
Заменяет метки целиком
needs_transferpartner_managerПустая строка — снять
payer_phoneТелефон плательщика; пустая строка — платит родитель
transfer_point_idИзменить бронь › Responses
Готово
commentcontacts_hiddenРебёнка теперь ведёт другой отдел: бронь остаётся в ваших списках (это ваша продажа), но телефоны родителя и плательщика скрыты
created_atОстаток: total − paid. Отрицательный — переплата
full_payment_dueДо какой даты внести всю сумму
idВаши метки: до 20 пар «ключ — значение»
Оплачено: все платежи брони, включая ещё не сверенные бухгалтерией
payment_stateawaiting — место придержано и ждёт минимальный платёж; secured — минимум внесён, место закреплено; unpaid — не оплачена в срок, место вернулось в квоту. Список может пополняться
Цена путёвки
statusactive — действует, cancelled — отменена. Список может пополняться
К оплате всего: цена + трансфер − скидка
updated_atversionВерсия записи. Передайте её в If-Match правки или отмены:
если бронь успели изменить, ответ будет 412
Путёвка в карточке брони (кратко; полностью — GET /bookings/{id}/voucher).
voucher_numberНомер путёвки: смена-порядковый номер
cancelled_reasonПричина отмены
external_idНомер записи в вашей CRM. Уникален внутри отдела
hold_untilДо какого момента держится место без минимального платежа
partner_managerКто продал бронь в вашей CRM — как вы его прислали
payer_phoneТелефон плательщика, если платит не родитель: на него уходят счета
Kaspi. Нет — платит родитель (или контакты скрыты, см. contacts_hidden)
squad_numberНомер отряда; нет — ещё не назначен
Отменить бронь
Место возвращается в квоту, живой счёт Kaspi гасится. Деньги отмена
не возвращает: оплату по счёту Kaspi вернёт заявка на возврат
(POST /bookings/{id}/refund-requests), прочее — бухгалтерия лагеря.
Бронь заехавшего ребёнка не отменяется. Принимает If-Match.
Нужен Idempotency-Key.
path Parameters
idНомер брони
Headers
Idempotency-KeyСлучайная строка, своя на каждое действие
If-Matchversion брони
Отменить бронь › Responses
Готово
commentcontacts_hiddenРебёнка теперь ведёт другой отдел: бронь остаётся в ваших списках (это ваша продажа), но телефоны родителя и плательщика скрыты
created_atОстаток: total − paid. Отрицательный — переплата
full_payment_dueДо какой даты внести всю сумму
idВаши метки: до 20 пар «ключ — значение»
Оплачено: все платежи брони, включая ещё не сверенные бухгалтерией
payment_stateawaiting — место придержано и ждёт минимальный платёж; secured — минимум внесён, место закреплено; unpaid — не оплачена в срок, место вернулось в квоту. Список может пополняться
Цена путёвки
statusactive — действует, cancelled — отменена. Список может пополняться
К оплате всего: цена + трансфер − скидка
updated_atversionВерсия записи. Передайте её в If-Match правки или отмены:
если бронь успели изменить, ответ будет 412
Путёвка в карточке брони (кратко; полностью — GET /bookings/{id}/voucher).
voucher_numberНомер путёвки: смена-порядковый номер
cancelled_reasonПричина отмены
external_idНомер записи в вашей CRM. Уникален внутри отдела
hold_untilДо какого момента держится место без минимального платежа
partner_managerКто продал бронь в вашей CRM — как вы его прислали
payer_phoneТелефон плательщика, если платит не родитель: на него уходят счета
Kaspi. Нет — платит родитель (или контакты скрыты, см. contacts_hidden)
squad_numberНомер отряда; нет — ещё не назначен
История брони
Создание, правки, отмена, восстановление — по порядку записи, порциями. Кто: ваше подключение или «Лагерь».
path Parameters
idНомер брони
query Parameters
cursorКурсор из next_cursor прошлого ответа
limitСколько записей вернуть, 1–200, по умолчанию 50
История брони › Responses
Готово
next_cursorПередать в cursor, чтобы получить следующую порцию. Нет —
дальше ничего нет
Перенести на другую смену
Как кнопка лагеря «Остаётся на следующую смену»: оформляется НОВАЯ
бронь того же ребёнка на указанную смену — по цене этой смены, без
прежней скидки, с удержанием места и счётом на минимальный платёж.
Прежняя бронь остаётся как есть, её платежи не переезжают. Если
прежнее место больше не нужно — отмените прежнюю бронь отдельно.
Ответ — новая бронь (событие booking.created). Нужен Idempotency-Key.
path Parameters
idНомер прежней брони
Headers
Idempotency-KeyСлучайная строка, своя на каждое действие
Перенести на другую смену › Request Body
shift_idСмена, на которую переносится ребёнок
Перенести на другую смену › Responses
Новая бронь
commentcontacts_hiddenРебёнка теперь ведёт другой отдел: бронь остаётся в ваших списках (это ваша продажа), но телефоны родителя и плательщика скрыты
created_atОстаток: total − paid. Отрицательный — переплата
full_payment_dueДо какой даты внести всю сумму
idВаши метки: до 20 пар «ключ — значение»
Оплачено: все платежи брони, включая ещё не сверенные бухгалтерией
payment_stateawaiting — место придержано и ждёт минимальный платёж; secured — минимум внесён, место закреплено; unpaid — не оплачена в срок, место вернулось в квоту. Список может пополняться
Цена путёвки
statusactive — действует, cancelled — отменена. Список может пополняться
К оплате всего: цена + трансфер − скидка
updated_atversionВерсия записи. Передайте её в If-Match правки или отмены:
если бронь успели изменить, ответ будет 412
Путёвка в карточке брони (кратко; полностью — GET /bookings/{id}/voucher).
voucher_numberНомер путёвки: смена-порядковый номер
cancelled_reasonПричина отмены
external_idНомер записи в вашей CRM. Уникален внутри отдела
hold_untilДо какого момента держится место без минимального платежа
partner_managerКто продал бронь в вашей CRM — как вы его прислали
payer_phoneТелефон плательщика, если платит не родитель: на него уходят счета
Kaspi. Нет — платит родитель (или контакты скрыты, см. contacts_hidden)
squad_numberНомер отряда; нет — ещё не назначен
Восстановить отменённую бронь
Снова занимает место в квоте — если оно ещё есть — и снова держит его
сутки до минимального платежа, со счётом Kaspi. Нужен Idempotency-Key.
path Parameters
idНомер брони
Headers
Idempotency-KeyСлучайная строка, своя на каждое действие
Восстановить отменённую бронь › Responses
Готово
commentcontacts_hiddenРебёнка теперь ведёт другой отдел: бронь остаётся в ваших списках (это ваша продажа), но телефоны родителя и плательщика скрыты
created_atОстаток: total − paid. Отрицательный — переплата
full_payment_dueДо какой даты внести всю сумму
idВаши метки: до 20 пар «ключ — значение»
Оплачено: все платежи брони, включая ещё не сверенные бухгалтерией
payment_stateawaiting — место придержано и ждёт минимальный платёж; secured — минимум внесён, место закреплено; unpaid — не оплачена в срок, место вернулось в квоту. Список может пополняться
Цена путёвки
statusactive — действует, cancelled — отменена. Список может пополняться
К оплате всего: цена + трансфер − скидка
updated_atversionВерсия записи. Передайте её в If-Match правки или отмены:
если бронь успели изменить, ответ будет 412
Путёвка в карточке брони (кратко; полностью — GET /bookings/{id}/voucher).
voucher_numberНомер путёвки: смена-порядковый номер
cancelled_reasonПричина отмены
external_idНомер записи в вашей CRM. Уникален внутри отдела
hold_untilДо какого момента держится место без минимального платежа
partner_managerКто продал бронь в вашей CRM — как вы его прислали
payer_phoneТелефон плательщика, если платит не родитель: на него уходят счета
Kaspi. Нет — платит родитель (или контакты скрыты, см. contacts_hidden)
squad_numberНомер отряда; нет — ещё не назначен
Поселить вместе
Просьба поселить детей в один отряд — той же связью, что ставит
продажник лагеря. Все брони — ваши, действующие и на одной смене.
Нужен Idempotency-Key.
path Parameters
idНомер брони
Headers
Idempotency-KeyСлучайная строка, своя на каждое действие
Поселить вместе › Request Body
booking_idsС кем поселить: ваши брони той же смены, не больше 50
noteЗаписка: «одна компания», «просила бабушка»
Поселить вместе › Responses
Создано
booking_idsВсе брони связи, включая эту
idНомер связи «вместе»
Расчёт стоимости
Что будет стоить бронь — тем же расчётом, что при оформлении, и с теми
же отказами (скидка больше наибольшей для смены). Ничего не создаёт;
Idempotency-Key не нужен.
Расчёт стоимости › Request Body
shift_idneeds_transfertransfer_point_idТочка посадки: у сезона с ценами по городам цена трансфера своя у каждого города. При одной цене на всех можно не указывать
Расчёт стоимости › Responses
Готово
Деньги: сумма строкой с двумя знаками и валютой. Строкой, а не числом — дробные числа в чужих языках теряют копейки.
full_payment_dueДо какой даты внести всю сумму
Минимальный платёж: им бронируется место, на него уйдёт счёт при оформлении. Ноль — бронь без предоплаты
Деньги: сумма строкой с двумя знаками и валютой. Строкой, а не числом — дробные числа в чужих языках теряют копейки.
К оплате всего
Деньги: сумма строкой с двумя знаками и валютой. Строкой, а не числом — дробные числа в чужих языках теряют копейки.
hold_hoursСколько часов держится место без минимального платежа; нет — предоплата не нужна