Справочник API

AgeGroup

age_max
​integer · int32 · required
age_min
​integer · int32 · required
squad
​integer · int32 · required

BatchRequest

Несколько детей одной семьи.
​FamilyChild[] · required

От 1 до 10 детей

​ParentIn · required
invoice
​string | null

Счёт каждому ребёнку: min | full | none (как у одной брони)

payer_phone
​string | null
together
​boolean

Поселить вместе детей семьи, попавших на одну смену

BatchResponse

​Booking[] · required

Брони в порядке детей запроса

Booking

Бронь, как её видит ваш отдел.
​Checkin · required
​BookingChild · required
comment
​string · required
contacts_hidden
​boolean · required

Ребёнка теперь ведёт другой отдел: бронь остаётся в ваших списках (это ваша продажа), но телефоны родителя и плательщика скрыты

created_at
​string · date-time · required
​Money · required

Остаток: total − paid. Отрицательный — переплата

​Discount · required
full_payment_due
​string · date · required

До какой даты внести всю сумму

id
​string · required
​Metadata · maxProps: 20 · required

Ваши метки: до 20 пар «ключ — значение»

Example: {"deal_id":"D-1042","priority":2}
​Money · required

Оплачено: все платежи брони, включая ещё не сверенные бухгалтерией

​BookingParent · required
payment_state
​string · required

awaiting — место придержано и ждёт минимальный платёж; secured — минимум внесён, место закреплено; unpaid — не оплачена в срок, место вернулось в квоту. Список может пополняться

​Money · required

Цена путёвки

​BookingShift · required
status
​string · required

active — действует, cancelled — отменена. Список может пополняться

​Money · required

К оплате всего: цена + трансфер − скидка

​Transfer · required
updated_at
​string · date-time · required
version
​string · required

Версия записи. Передайте её в If-Match правки или отмены: если бронь успели изменить, ответ будет 412

​BookingVoucher · required

Путёвка в карточке брони (кратко; полностью — GET /bookings/{id}/voucher).

voucher_number
​string · required

Номер путёвки: смена-порядковый номер

cancelled_reason
​string | null

Причина отмены

external_id
​string | null

Номер записи в вашей CRM. Уникален внутри отдела

hold_until
​string | null · date-time

До какого момента держится место без минимального платежа

partner_manager
​string | null

Кто продал бронь в вашей CRM — как вы его прислали

payer_phone
​string | null

Телефон плательщика, если платит не родитель: на него уходят счета Kaspi. Нет — платит родитель (или контакты скрыты, см. contacts_hidden)

squad_number
​integer | null · int32

Номер отряда; нет — ещё не назначен

BookingChild

​City · required

Город из справочника.

full_name
​string · required
birth_date
​string | null · date
id
​string | null

Карточка ребёнка; нет — бронь не привязана к семье

BookingChildPatch

Правка ребёнка в брони.
birth_date
​string | null · date
city_id
​string | null
full_name
​string | null

BookingParent

full_name
​string · required
id
​string | null

Карточка семьи; нет — бронь не привязана к семье

phone
​string | null

Телефон родителя; нет — контакты скрыты (contacts_hidden)

BookingShift

date_end
​string · date · required
date_start
​string · date · required
id
​string · required
number
​integer · int32 · required

Номер смены в сезоне

BookingSummary

id
​string · required
​ShiftRef · required
status
​string · required

active — действует, cancelled — отменена. Список может пополняться

voucher_number
​string · required
child_id
​string | null

Нет — бронь без карточки ребёнка (старые записи)

BookingVersion

id
​string · required
status
​string · required

active или cancelled

version
​string · required

Версия брони — та же, что в её карточке. Не совпала с вашей — перечитайте бронь

BookingVoucher

Путёвка в карточке брони (кратко; полностью — `GET /bookings/{id}/voucher`).
status
​string · required

none — не сформирована, generated — сформирована, sent — отправлена. Список может пополняться

CancelRequest

reason
​string · required

Причина отмены — обязательна

CheckChild

full_name
​string · required
birth_date
​string | null · date
city_id
​string | null

Не участвует в проверке. Принимается, чтобы в проверку можно было отправить тот же объект ребёнка, что потом уйдёт в оформление

CheckParent

phone
​string · required
full_name
​string | null

Не участвует в проверке; принимается по той же причине, что city_id

CheckReason

code
​string · required

Тот же код, что вернуло бы оформление: sales_closed, shift_not_open, quota_exhausted, no_quota, duplicate_child, blacklisted, birth_date_implausible. Список может пополняться

message
​string · required

CheckRequest

​CheckChild · required
​CheckParent · required
shift_id
​string · required
payer_phone
​string | null

CheckResult

can_book
​boolean · required

Оформление сейчас пройдёт (если за это время место не займут)

​CheckReason[] · required

Почему нельзя — все причины сразу

Checkin

checked_in_at
​string | null · date-time

Когда ребёнок приехал в лагерь

checked_out_at
​string | null · date-time

Когда уехал

Child

family_id
​string · required

Семья ребёнка

full_name
​string · required
id
​string · required
​Metadata · maxProps: 20 · required

Ваши метки: до 20 пар «ключ — значение». Ключ — от 1 до 40 знаков, значение — строка (до 500 знаков), число, true/false или null. Мы их не разбираем: только храним и возвращаем

Example: {"deal_id":"D-1042","priority":2}
birth_date
​string | null · date

Нет — дата рождения неизвестна

external_id
​string | null

Номер ребёнка в вашей CRM

ChildIn

birth_date
​string | null · date · required

Дата рождения — обязательна (birth_date_required): по ней назначается отряд, узнаётся дубль и ребёнок в базе лагеря

city_id
​string · required

Город — из справочника городов

full_name
​string · required

ФИО ребёнка

ChildPatch

Свой номер и метки ребёнка. Отсутствующее поле — не менять.
external_id
​string | null

Номер ребёнка в вашей CRM. null — стереть номер, поле не передано — не менять

​Metadata | null · maxProps: 20

Заменяет метки целиком

Example: {"deal_id":"D-1042","priority":2}

City

Город из справочника.
id
​string · required
name
​string · required

Client

id
​string · required
name
​string · required

CreateRequest

Новая бронь.
​ChildIn · required
​ParentIn · required
shift_id
​string · required
comment
​string | null
​DiscountIn | null
external_id
​string | null

Номер записи в вашей CRM. Уникален внутри отдела

invoice
​string | null

Счёт Kaspi при оформлении: min — минимальный платёж (по умолчанию, если он у смены задан), full — вся сумма, none — не выставлять

​Metadata | null · maxProps: 20

Ваши метки: до 20 пар

Example: {"deal_id":"D-1042","priority":2}
needs_transfer
​boolean

Нужен ли трансфер

partner_manager
​string | null

Кто продал в вашей CRM (до 200 знаков)

payer_phone
​string | null

Телефон плательщика, если платит не родитель: счета Kaspi уйдут на него

together_with
​string[]

«Поселить вместе» с этими бронями той же смены (ваши брони), не больше 50

transfer_point_id
​string | null

Точка посадки — обязательна, если трансфер нужен

CreateWebhook

url
​string · required

Только https://, публичный адрес, без логина и #

event_types
​array | null

Только эти типы событий: любые из Event.type, кроме ping (он приходит только на проверку). Незнакомый тип — отказ bad_event_type. Нет или пусто — все, включая будущие

Debt

booking_id
​string · required
child_full_name
​string · required
​Money · required

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

full_payment_due
​string · date · required

До какой даты внести всю сумму

overdue
​boolean · required

Срок полной оплаты прошёл, а долг остался

​Money · required

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

payment_state
​string · required

awaiting — место придержано до минимального платежа, secured — закреплено. Список может пополняться

shift_id
​string · required
​Money · required

К оплате по брони

Delivery

at
​string · date-time · required
duration_ms
​integer · int32 · required
event_type
​string · required
id
​string · required
ok
​boolean · required
error
​string | null

Что пошло не так (начало ответа вашего сервера или причина сбоя)

event_id
​string | null

Номер события; нет — проверочный ping

status
​integer | null · int32

Код ответа вашего сервера; нет — ответа не было

Department

id
​string · required
name
​string · required

Discount

​Money · required

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

note
​string · required

За что скидка

DiscountIn

amount
​string · pattern: ^[0-9]+(\.[0-9]{1,2}… · required

Сумма скидки в тенге строкой: целое или до двух знаков после точки. Не больше наибольшей скидки смены (max_discount)

note
​string

За что скидка

ErrorBody

Тело ошибки. `request_id` дописывает слой (layer.rs) — по нему мы находим запрос в журнале, когда партнёр пишет в поддержку.
code
​string · required

Машинный код. Не меняется никогда — по нему ветвится ваша CRM

message
​string · required

Текст для человека, по-русски

request_id
​string | null

Номер запроса для обращения в поддержку

Event

Событие ленты.
​EventEntity · required

Чего касается событие

id
​string · required

Номер события — он же место в ленте. Растёт, не повторяется. Повтор доставки узнаётся по нему

occurred_at
​string · date-time · required
type
​string · required

Тип события. Сейчас бывают: booking.created, booking.updated, booking.cancelled, booking.restored, booking.moved, booking.hold_expired, booking.secured, booking.removed, invoice.queued, invoice.issued, invoice.paid, invoice.cancelled, invoice.expired, invoice.error, invoice.mismatch, payment.received, payment.refunded, payment.verified, payment.updated, refund_request.created, refund_request.approved, refund_request.rejected, refund_request.cancelled, refund_request.done, refund_request.failed, voucher.ready, voucher.sent, child.checked_in, child.checked_out, child.added, child.removed, shift.seats_changed, shift.status_changed, client.merged, child.merged, kaspi.operations.synced (только главному отделу); ping — только проверка вебхука (POST /webhooks/{id}/test). Список открытый и пополняется: незнакомый тип пропустите, а не падайте

data
​

Подробности, которых нет в самой записи. Сейчас бывают: booking.moved — {"from_shift_id": "12"} (с какой смены); client.merged — {"into_id": "812"} (в какую семью слита); kaspi.operations.synced — {"date_from": "2026-06-14", "date_to": "2026-06-14", "count": 37} (за какие дни загружена выписка и сколько в ней операций за эти дни); ping — {"message": "…"}. У остальных — null. Поля только добавляются

object
​

Текущий вид записи — тот же, что вернул бы GET по ней, по entity.type: booking — Booking, invoice — Invoice, payment — Payment, refund_request — RefundRequest, child — Child, parent — Family, shift — Shift. null, если запись вам больше не видна (ребёнок ушёл в другой отдел) или у сущности нет вида (ping)

EventEntity

id
​string · required
type
​string · required

booking, invoice, payment, refund_request, child, parent, shift; webhook — у ping; kaspi_sync — у kaspi.operations.synced (номер загрузки выписки). Список может пополняться

EventPage

has_more
​boolean · required

Есть ещё события после этой порции — запросите сразу, не дожидаясь

​Event[] · required
next_after
​string · required

Передать в after следующего запроса. Совпадает с последним номером в items; если событий не было — с вашим after

Family

Семья: родитель, ваши дети и ваши брони. Если семью ведёт и другой отдел (`shared`), её общие данные вам не показываются: `full_name` — как вы записали родителя в своей брони, `extra_phones` пуст, `city` нет. Править ФИО, город, согласие и вторые номера такой семьи нельзя (`403 family_shared`); свои `external_id` и `metadata` — можно.
​BookingSummary[] · required

Ваши брони детей этой семьи, свежие первыми

​Child[] · required

Только ваши дети. Брат или сестра, которых ведёт другой отдел, здесь не показываются

extra_phones
​string[] · required
full_name
​string · required
id
​string · required
marketing_opt_in
​boolean · required

Согласие на рассылки

merged_from
​string[] · required

Номера карточек, слитых в эту (дубли семьи). Запрос по старому номеру отвечает этой карточкой

​Metadata · maxProps: 20 · required

Ваши метки: до 20 пар «ключ — значение». Ключ — от 1 до 40 знаков, значение — строка (до 500 знаков), число, true/false или null. Мы их не разбираем: только храним и возвращаем

Example: {"deal_id":"D-1042","priority":2}
phone
​string · required

Основной телефон, +7XXXXXXXXXX. Ключ узнавания семьи: через API не меняется, второй номер — в extra_phones

shared
​boolean · required

Семью ведёт и другой отдел: общие данные семьи скрыты и не правятся

version
​string · required

Версия записи для If-Match при правке

​City | null

Город из справочника.

external_id
​string | null

Номер семьи в вашей CRM

FamilyChild

Ребёнок в оформлении семьи.
​ChildIn · required
shift_id
​string · required
comment
​string | null
​DiscountIn | null
external_id
​string | null
invoice
​string | null

Счёт этому ребёнку; нет — общий invoice запроса

​Metadata | null · maxProps: 20

Ваши метки: до 20 пар «ключ — значение». Ключ — от 1 до 40 знаков, значение — строка (до 500 знаков), число, true/false или null. Мы их не разбираем: только храним и возвращаем

Example: {"deal_id":"D-1042","priority":2}
needs_transfer
​boolean
partner_manager
​string | null
transfer_point_id
​string | null

FamilyPatch

Правка семьи. Отсутствующее поле — не менять.
city_id
​string | null

Город родителя; null — стереть

external_id
​string | null

Номер семьи в вашей CRM. null — стереть номер, поле не передано — не менять

extra_phones
​array | null

Вторые номера семьи — заменяют список целиком. Номер, записанный за другой семьёй, не принимается (phone_taken). ФИО, город, согласие и вторые номера семьи, которую ведёт и другой отдел (shared), не правятся (family_shared)

full_name
​string | null
marketing_opt_in
​boolean | null
​Metadata | null · maxProps: 20

Заменяет метки целиком

Example: {"deal_id":"D-1042","priority":2}

FamilyPayment

Платёж по вашей брони этой семьи.
​Money · required

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

booking_id
​string · required
id
​string · required
paid_on
​string · date · required

День оплаты по календарю лагеря (дата, без времени)

type
​string · required

prepayment, payment, refund. Список может пополняться

verified
​boolean · required

Сверен бухгалтерией

Handover

job
​string · required
keys
​string[] · required

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

HandoverRequest

Передать строки заданию пачки.
job
​string · required

Номер задания пачки: латиница, цифры и ._:-, до 100 знаков, начинается с буквы или цифры

keys
​string[] · required

Ключи строк, не больше 100

HistoryChange

field
​string · required

Поле брони: child.full_name, parent.phone, discount.amount… Список может пополняться

new
​

Новое значение; null — стёрто. Вид — как у old

old
​

Прежнее значение; null — не было. Вид — как у поля в брони: строка, число, true/false, метки (объект); денежные поля (price, transfer.fee, discount.amount) — Money {"amount": "119000.00", "currency": "KZT"}

HistoryEntry

action
​string · required

create, update, cancel, restore, copy, ext_ref, voucher_sent… Список может пополняться

actor
​string · required

Ваше подключение (по имени) или «Лагерь» — для всех сотрудников лагеря и фоновых задач

at
​string · date-time · required
​HistoryChange[] · required

Что изменилось

HistoryPage

История брони порциями, от старых записей к новым.
​HistoryEntry[] · required
next_cursor
​string | null

Передать в cursor, чтобы получить следующую порцию. Нет — дальше ничего нет

Invoice

​Money · required

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

booking_id
​string · required
cancelling
​boolean · required

Отмену попросили, счёт ещё гасится в Kaspi. Пока это так, его всё ещё можно оплатить

created_at
​string · date-time · required
id
​string · required
payment_type
​string · required

Чем станет оплата: prepayment — предоплата, payment — оплата

purpose
​string · required

Текст, который плательщик видит в Kaspi рядом с суммой

state
​string · required

queued — ждёт отправки в Kaspi, issued — у плательщика в Kaspi, paid — оплачен, expired — не оплачен в срок, cancelled — отменён, error — не выставлен, mismatch — Kaspi сообщил о другой сумме, лагерь проверяет. Список может пополняться

version
​string · required

Версия записи: меняется при каждом изменении счёта

​InvoiceProblem | null

Что пошло не так или чего счёт ждёт. Нет — всё в порядке

issued_at
​string | null · date-time
paid_at
​string | null · date-time
payment_id
​string | null

Платёж, созданный оплатой этого счёта

phone
​string | null

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

InvoiceProblem

code
​string · required

Машинный код. Список может пополняться

message
​string · required

Текст для человека

InvoiceReplacing

Ответ на замену счёта: старый гасится, новый уйдёт сразу после этого.
​Money · required

Сумма нового счёта

state
​string · required

Всегда replacing

​Invoice | null

Счёт, который гасится. Новый придёт событием invoice.queued

KaspiOperation

Операция выписки Kaspi Pay лагеря.
​Money · required

Сумма. Поступление — плюсом, возврат и прочий расход — минусом

date
​string · date · required

День операции по календарю лагеря (Asia/Almaty)

id
​string · required

Номер операции в Kaspi

kind
​string · required

payment — поступление, refund — возврат, other — прочее (в том числе неудавшаяся операция). Список может пополняться

method
​string · required

qr — оплата по QR, remote — счёт на телефон, unknown — не определён. Список может пополняться

occurred_at
​string · date-time · required

Время операции

booking_id
​string | null

Бронь этого счёта

​Money | null

Комиссия Kaspi, если Kaspi её назвал

invoice_id
​string | null

Счёт Kaspi лагеря, оплатой которого стала операция

​LegalEntity | null

Юрлицо кассы, в выписке которой операция (у лагеря несколько касс Kaspi Pay — у каждой своё юрлицо и свой счёт зачисления). Нет — операция загружена до появления касс

payment_id
​string | null

Платёж, созданный оплатой счёта (только у payment)

KaspiOperationPage

Порция выписки.
​KaspiOperation[] · required
next_cursor
​string | null

Передать в cursor, чтобы получить следующую порцию

synced_through
​string | null · date-time

До какого времени выписка загружена полностью. Операции позже могут ещё дозагрузиться; null — выписка ещё ни разу не загружалась целиком

LegalEntity

Юрлицо лагеря, на которое пришли деньги
id
​string · required
name
​string · required

Короткое имя, как его видят в лагере

bin
​string | null

БИН (ТОО) или ИИН (ИП), если записан

iik
​string | null

ИИК (IBAN) счёта, на который зачислены деньги, если записан

legal_name
​string | null

Полное юридическое название, если записано

onec_organization
​string | null

Организация в 1С, куда проводить эти деньги (Ref_Key или БИН), если записана в лагере

Limits

bookings_per_minute
​integer · int32 · required

Новых броней отделом в минуту

concurrent
​integer · int32 · required

Одновременных запросов

invoices_per_booking_hour
​integer · int32 · required

Счетов Kaspi на одну бронь в час

read_per_sec
​integer · int32 · required

Чтений в секунду

write_per_sec
​integer · int32 · required

Записей в секунду

Me

​Client · required

Подключение, к которому выпущен ключ

​Department · required
​Limits · required
scopes
​string[] · required

Права ключа: read, bookings, invoices, webhooks

Metadata

Ваши метки: до 20 пар «ключ — значение». Ключ — от 1 до 40 знаков, значение — строка (до 500 знаков), число, true/false или null. Мы их не разбираем: только храним и возвращаем
string | number | boolean | null · maxLength: 500

Money

Деньги: сумма строкой с двумя знаками и валютой. Строкой, а не числом — дробные числа в чужих языках теряют копейки.
amount
​string · required

Сумма с двумя знаками после точки

currency
​string · required

Валюта, ISO 4217. Сейчас всегда KZT

MoveRequest

shift_id
​string · required

Смена, на которую переносится ребёнок

NewInvoice

kind
​string · required

На что выставить: min — минимальный платёж, которым закрепляется место (сколько его ещё не внесено); full — весь остаток; amount — своя сумма из поля amount

amount
​string | null · pattern: ^[0-9]+(\.0{1,2})?$

Сумма для kind = amount: тенге строкой, не больше остатка брони. Только целые тенге: "50000" или "50000.00"; дробная часть — отказ fractional_amount

replace
​boolean

Заменить незакрытый счёт брони новым (документ 17 §6: плательщик просит счёт на другую сумму). Без этого при живом счёте — отказ invoice_live

NewRefundRequest

amount
​string · pattern: ^[0-9]+(\.0{1,2})?$ · required

Сколько вернуть: тенге строкой, только целые ("30000" или "30000.00"), не больше остатка оплаты за вычетом прежних и ждущих возвратов (refund_exceeds_refundable)

payment_id
​string · required

Оплата брони по счёту Kaspi (Payment.id). Оплата другим способом возвращается только лагерем — отказ refund_not_kaspi_invoice

reason
​string · required

Почему возвращаем — увидит тот, кто решает. 1–500 знаков

Page_Booking

Порция списка. `next_cursor` пуст — дальше ничего нет.
​Booking[] · required
next_cursor
​string | null

Передать в cursor, чтобы получить следующую порцию

Page_BookingVersion

Порция списка. `next_cursor` пуст — дальше ничего нет.
​BookingVersion[] · required
next_cursor
​string | null

Передать в cursor, чтобы получить следующую порцию

Page_Child

Порция списка. `next_cursor` пуст — дальше ничего нет.
​Child[] · required
next_cursor
​string | null

Передать в cursor, чтобы получить следующую порцию

Page_Debt

Порция списка. `next_cursor` пуст — дальше ничего нет.
​Debt[] · required
next_cursor
​string | null

Передать в cursor, чтобы получить следующую порцию

Page_Delivery

Порция списка. `next_cursor` пуст — дальше ничего нет.
​Delivery[] · required
next_cursor
​string | null

Передать в cursor, чтобы получить следующую порцию

Page_Family

Порция списка. `next_cursor` пуст — дальше ничего нет.
​Family[] · required
next_cursor
​string | null

Передать в cursor, чтобы получить следующую порцию

Page_FamilyPayment

Порция списка. `next_cursor` пуст — дальше ничего нет.
​FamilyPayment[] · required
next_cursor
​string | null

Передать в cursor, чтобы получить следующую порцию

Page_Invoice

Порция списка. `next_cursor` пуст — дальше ничего нет.
​Invoice[] · required
next_cursor
​string | null

Передать в cursor, чтобы получить следующую порцию

Page_Payment

Порция списка. `next_cursor` пуст — дальше ничего нет.
​Payment[] · required
next_cursor
​string | null

Передать в cursor, чтобы получить следующую порцию

Page_RefundRequest

Порция списка. `next_cursor` пуст — дальше ничего нет.
​RefundRequest[] · required
next_cursor
​string | null

Передать в cursor, чтобы получить следующую порцию

Page_Shift

Порция списка. `next_cursor` пуст — дальше ничего нет.
​Shift[] · required
next_cursor
​string | null

Передать в cursor, чтобы получить следующую порцию

Page_Unpaid

Порция списка. `next_cursor` пуст — дальше ничего нет.
​Unpaid[] · required
next_cursor
​string | null

Передать в cursor, чтобы получить следующую порцию

Page_Webhook

Порция списка. `next_cursor` пуст — дальше ничего нет.
​Webhook[] · required
next_cursor
​string | null

Передать в cursor, чтобы получить следующую порцию

ParentIn

full_name
​string · required

ФИО родителя

phone
​string · required

Телефон родителя, любой записью: «8 701…», «+7 701…»

ParentPatch

full_name
​string | null
phone
​string | null

PatchRequest

Правка брони: только переданные поля.
​BookingChildPatch | null

Правка ребёнка в брони.

comment
​string | null
​DiscountIn | null
external_id
​string | null

Номер записи в вашей CRM. null — стереть номер, поле не передано — не менять

​Metadata | null · maxProps: 20

Заменяет метки целиком

Example: {"deal_id":"D-1042","priority":2}
needs_transfer
​boolean | null
​ParentPatch | null
partner_manager
​string | null

Пустая строка — снять

payer_phone
​string | null

Телефон плательщика; пустая строка — платит родитель

transfer_point_id
​string | null

PatchWebhook

enabled
​boolean | null

false — отключить, true — включить (сбрасывает счёт неудач)

event_types
​array | null

Типы событий, как у CreateWebhook.event_types. Пустой список — все типы

url
​string | null

Payment

​Money · required

Сумма. Возврат — отрицательной суммой

bank
​string · required

Банк, как его записал лагерь

booking_id
​string · required
created_at
​string · date-time · required
id
​string · required
​LegalEntity · required

Юрлицо лагеря, на которое пришли деньги. У оплаты счёта Kaspi — юрлицо кассы, через которую счёт выставлен (у лагеря их несколько, и касса переключается). Возврат делается с этого же юрлица

paid_on
​string · date · required

День оплаты по календарю лагеря (дата, без времени)

source
​string · required

Откуда платёж: kaspi_invoice — оплата счёта Kaspi, manual — внесён лагерем. Список может пополняться

type
​string · required

prepayment — предоплата, payment — оплата, refund — возврат. Список может пополняться

verified
​boolean · required

Сверен бухгалтерией лагеря с выпиской банка. Остаток по брони уменьшает и несверенный платёж

version
​string · required

Версия записи: меняется при каждом изменении платежа

invoice_id
​string | null

Счёт Kaspi, оплатой которого создан платёж

method
​string | null

Как заплатили: kaspi_transfer — перевод на Kaspi лагеря, bank_transfer — банковский перевод, cash — наличные, kaspi_invoice — счёт Kaspi. null — не указано (записи до этого поля). Список может пополняться

​StatementLineRef | null

Строка выписки банка, с которой бухгалтерия лагеря сверила платёж. Есть только у сверенного (verified) платежа

Pdf

string · binary

Двоичный PDF.

Quote

​Money · required

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

full_payment_due
​string · date · required

До какой даты внести всю сумму

​Money · required

Минимальный платёж: им бронируется место, на него уйдёт счёт при оформлении. Ноль — бронь без предоплаты

​Money · required

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

​Money · required

К оплате всего

​Money · required

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

hold_hours
​integer | null · int64

Сколько часов держится место без минимального платежа; нет — предоплата не нужна

QuoteRequest

shift_id
​string · required
​DiscountIn | null
needs_transfer
​boolean
transfer_point_id
​string | null

Точка посадки: у сезона с ценами по городам цена трансфера своя у каждого города. При одной цене на всех можно не указывать

Redeliver

after
​string · required

Отправить заново всё ПОСЛЕ этого номера события. Номер меньше доставленного — повтор, больше — пропуск

RefundRequest

​Money · required

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

booking_id
​string · required
by_api
​boolean · required

Подана вашим подключением (а не сотрудником лагеря)

created_at
​string · date-time · required
id
​string · required
invoice_id
​string · required

Счёт Kaspi этой оплаты

payment_id
​string · required

Оплата по счёту Kaspi, которую возвращают

reason
​string · required
state
​string · required

requested — ждёт решения лагеря; approved — одобрена, возврат выполняется; sending — отправлен в Kaspi; needs_check — Kaspi не ответил, лагерь проверяет вручную; done — деньги возвращены плательщику; failed — Kaspi отказал, денег не ушло; rejected — лагерь отклонил (причина в reject_reason); cancelled — отозвана автором. Список может пополняться

version
​string · required

Версия записи: меняется при каждом изменении заявки

decided_at
​string | null · date-time
finished_at
​string | null · date-time
refund_payment_id
​string | null

Платёж-возврат, записанный по выполненному возврату (done)

reject_reason
​string | null

Причина отказа лагеря (только у rejected)

Season

id
​string · required
name
​string · required

Seats

free
​integer · int64 · required

Свободно

quota
​integer · int32 · required

Квота отдела на смену; 0 — квоты нет, оформить нельзя

taken
​integer · int64 · required

Занято активными бронями отдела (включая ждущие предоплату)

Shift

​AgeGroup[] · required

Возрастные границы отрядов. Пусто — сетка ещё не задана

date_end
​string · date · required
date_start
​string · date · required
full_payment_due
​string · date · required

До какой даты внести всю сумму: автоматический счёт на остаток уходит в этот день

id
​string · required
​Money · required

Минимальный платёж, которым бронируется место. Ноль — бронь без предоплаты

number
​integer · int32 · required

Номер смены в сезоне

on_sale
​boolean · required

Можно ли сейчас оформить бронь: смена открыта и окно продаж не закрылось

​Money · required

Цена путёвки

sales_close_at
​string · date-time · required

Когда закрываются продажи

​Season · required
​Seats · required

Места в квоте вашего отдела

status
​string · required

draft — готовится, open — продажи открыты, closed — продажи закрыты, departed — смена идёт, finished — завершена. Список может пополняться

​Money · required

Цена трансфера. При ценах по городам — самая низкая из них (цена «от»); сами цены — в transfer_prices

​TransferPrice[] · required

Цены трансфера по точкам посадки. Пусто — одна цена transfer_price на все точки. Точки, которой здесь нет, на смену не возят

​Money | null

Наибольшая скидка без администратора; нет — без ограничения

ShiftRef

date_start
​string · date · required
id
​string · required
number
​integer · int32 · required

ShiftSales

bookings
​integer · int64 · required

Активных обычных броней

date_end
​string · date · required
date_start
​string · date · required
​Money · required

Долг: продано минус оплачено

free
​integer · int64 · required
number
​integer · int32 · required

Номер смены в сезоне

​Money · required

Оплачено по ним (все платежи, и ещё не сверенные бухгалтерией)

quota
​integer · int32 · required

Квота отдела на смену

season_id
​string · required
shift_id
​string · required
​Money · required

Продано: сумма к оплате по активным броням

taken
​integer · int64 · required

Занято активными бронями отдела (как в GET /shifts)

ShiftSalesReport

Отчёт по сменам — все смены одним ответом, без порций: их десятки.
​ShiftSales[] · required

StatementClaim

Решение по одной строке.
key
​string · required

Ключ строки выписки (тот, что прислан в keys)

owner
​string · required

camp — строку ведёт система лагеря, accounting — бухгалтерия. Список может пополняться: незнакомое значение не проводите

payment_ids
​string[] · required

Платежи лагеря, с которыми сверена строка (у linked)

state
​string · required

pending — ждёт проверки; linked — сверена с платежами; organization — оплата организации; not_ours — не оплата путёвки; internal — перевод между своими счетами; outgoing — списание. Список может пополняться

handed_job
​string | null

Задание пачки, которому строка уже передана (handover)

StatementClaims

accounts
​string[] · required

ИИК счетов лагеря (ТОО, ИП), без пробелов, верхним регистром. Поступление на такой счёт, которого CRM не видела, — выписку не загрузили в CRM

​StatementClaim[] · required

Только строки, известные CRM; незнакомые ключи в ответ не попадают

StatementLineRef

Строка выписки, с которой сверен платёж.
date
​string · date · required

День строки в выписке банка

key
​string · required

Ключ строки выписки — тот же, что у разборщика выписок бухгалтерии

account_iik
​string | null

ИИК счёта лагеря, на который пришли деньги

TestResult

duration_ms
​integer · int32 · required
ok
​boolean · required

Адрес ответил 2xx

error
​string | null
status
​integer | null · int32 · min: 0

Код ответа; нет — ответа не было (DNS, соединение, сертификат, время)

Together

booking_ids
​string[] · required

Все брони связи, включая эту

id
​string · required

Номер связи «вместе»

TogetherRequest

booking_ids
​string[] · required

С кем поселить: ваши брони той же смены, не больше 50

note
​string

Записка: «одна компания», «просила бабушка»

Transfer

​Money · required

Цена трансфера в этой брони

needed
​boolean · required

Нужен ли трансфер

​TransferPoint | null

Точка посадки

TransferPoint

id
​string · required
name
​string · required

TransferPrice

name
​string · required
​Money · required

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

transfer_point_id
​string · required

Unpaid

booking_id
​string · required
child_full_name
​string · required
shift_id
​string · required
hold_until
​string | null · date-time

До какого времени держалось место

​Money | null

Сколько просили внести, чтобы закрепить место

parent_full_name
​string | null
parent_phone
​string | null

Телефоны — пока ребёнок в вашем отделе (docs: «Ваша база»)

payer_phone
​string | null

Voucher

booking_id
​string · required
number
​string · required

Номер путёвки

pdf_available
​boolean · required

Файл можно скачать (GET /bookings/{id}/voucher.pdf)

status
​string · required

none — не выпущена, generated — выпущена, sent — отмечена отправленной семье. Список может пополняться

pdf_url
​string | null

Ссылка на скачивание PDF без ключа, живёт 10 минут (pdf_url_expires_at). Приходит только в GET /bookings/{id}/voucher. null — ссылки нет (путёвка не выпущена или файл собирается для вашего отдела на лету) — тогда скачайте GET /bookings/{id}/voucher.pdf. Ссылку не храните: за новой — снова GET /bookings/{id}/voucher

pdf_url_expires_at
​string | null · date-time

До какого момента действует pdf_url

Webhook

created_at
​string · date-time · required
delivered_through
​string · required

Номер последнего доставленного события

enabled
​boolean · required

false — отключён (вами или после трёх суток неудач)

event_types
​string[] · required

Какие типы событий слать (см. Event.type). Пусто — все

failed_attempts
​integer · int32 · required

Неудачных попыток подряд

id
​string · required
url
​string · required
disabled_reason
​string | null

Почему отключён

failing_since
​string | null · date-time

С какого момента адрес не принимает события подряд

next_attempt_at
​string | null · date-time

Когда следующая попытка после неудачи

secret
​string | null

Секрет подписи whsec_…. Только в ответе на создание и смену секрета — сохраните его сразу: больше его не покажут