Первый запрос за 5 минут
Цель этой страницы — убедиться, что ключ работает и вы видите смены лагеря. Понадобятся ключ
(см. Ключ доступа и права) и терминал с curl — или любой язык программирования.
Адрес API
Code
Все адреса в руководстве пишутся от этого начала: GET /shifts значит
GET https://partners.zvezdnyy-burabai.edu.kz/ext/v1/shifts.
- Только
https://. Запрос поhttp://отклоняется, а ключ, который в нём был, сразу отзывается. Проверьте адрес в настройках CRM дважды. - Версия API — в адресе (
/ext/v1). Что это значит для вас — в Совместимости. - Описание API в формате OpenAPI 3.1 можно скачать в справочнике — по нему генерируется клиент для вашего языка.
Заголовки
| Заголовок | Когда | Значение |
|---|---|---|
Authorization | Всегда | Bearer zb_live_… — ваш ключ |
Content-Type | Когда отправляете тело (POST, PATCH) | application/json |
Idempotency-Key | Почти у всех POST | Случайная строка, своя на каждое действие. См. Повтор запроса |
If-Match | По желанию: правка и отмена брони, правка семьи | version записи, которую вы видели. См. Повтор запроса |
Тело запроса и ответа — JSON в UTF-8. Размер тела запроса — не больше 1 МБ.
В каждом ответе есть заголовок X-Request-Id — номер запроса. Сохраняйте его в своём журнале: по
нему лагерь найдёт запрос, если что-то пошло не так.
Шаг 1. Кто я
Самый простой запрос — GET /me: «кто я, какой у меня отдел и какие права».
Он не меняет никаких данных.
Сначала положите ключ в переменную окружения, чтобы не вставлять его в каждую команду:
Code
Ответ 200 (данные вымышленные):
Code
department— ваш отдел. Если здесь чужой отдел — вам выдали не тот ключ, сообщите лагерю.scopes— права ключа.limits— ваши лимиты (см. Лимиты).
В ответе могут быть и другие поля. Это нормально: незнакомые поля пропускайте (см. Совместимость).
Если ответ не 200
| Ответ | Что не так |
|---|---|
401 unauthorized | Нет заголовка Authorization, опечатка в ключе, ключ отозван или истёк. Проверьте, что перед ключом стоит Bearer с пробелом |
403 https_required | Запрос ушёл по http://. Ключ уже отозван — нужен новый |
400 key_in_url | Ключ оказался в адресе. Ключ уже отозван — нужен новый |
403 ip_not_allowed | Ключ привязан к другим адресам серверов — сообщите лагерю ваш IP |
429 rate_limited | Слишком много запросов или много неверных ключей с вашего адреса. Подождите столько секунд, сколько в заголовке Retry-After |
Шаг 2. Какие смены продаются
GET /shifts?on_sale=true — смены, на которые можно оформить бронь прямо сейчас:
Code
Ответ 200 — список порцией (подробно о порциях — в Форматах данных):
Code
Что здесь важно для продажи:
| Поле | Что значит |
|---|---|
id | Номер смены — его передают при оформлении брони (shift_id) |
price | Цена путёвки без трансфера |
transfer_prices | Цена трансфера от каждой точки посадки. Пусто — одна цена transfer_price для всех точек. Точки, которой здесь нет, на эту смену не возят |
min_payment | Сколько нужно внести в первые сутки, чтобы место закрепилось. 0.00 — предоплата не нужна |
full_payment_due | До какого дня оплатить всё. В этот день лагерь сам выставит счёт на остаток |
max_discount | Наибольшая скидка, которую ваш отдел может дать сам. null — без ограничения |
seats.free | Сколько ещё мест можно оформить вашему отделу |
sales_close_at | Когда закроются продажи (время UTC: 19:00Z — это полночь по времени Казахстана) |
Готово
Если оба запроса ответили 200 — подключение работает. Дальше —
Бронь и оплата по шагам.
Все запросы — в боевую систему
Отдельного тестового адреса нет. Запросы на чтение (GET) безопасны — они ничего не меняют.
Оформление брони и выставление счёта — настоящие: занимают место в квоте и отправляют родителю
настоящий счёт Kaspi.