API участников

Обмен участниками с CRM, регистрацией и билетной системой: ключи, сопоставление полей, вебхуки об изменениях.

Список участников у клиента часто живёт не у нас — в CRM, в системе регистрации, в таблице подрядчика по билетам. API участников позволяет держать его в согласии с EVENTBASE без Excel руками: внешняя система присылает людей, а об изменениях у нас узнаёт вебхуком.

Настраивается в админке: «Участники» → «API».

Ключ

Ключ выпускается на проект и показывается один раз, при создании; в базе остаётся только его отпечаток. Передаётся в заголовке Authorization: Bearer eb_…. Утёкший ключ отзывают в списке — он перестаёт работать сразу. Лимит — 600 запросов в минуту на ключ.

Адрес: https://<адрес админки>/api/v1/attendees.

Получить участников

GET /api/v1/attendees — список снимков участников проекта, по 100 (до 200) за раз.

Параметр Что делает
updated_since только изменённые с момента (ISO 8601, например 2026-10-05T10:00:00Z)
cursor продолжение: значение next_cursor из прошлого ответа
limit размер страницы, до 200
external_id, email найти конкретного человека
include_deleted=1 вместе с удалёнными (у них заполнен deleted_at)

Один участник: GET /api/v1/attendees/{id}.

Снимок участника: id, external_id, email, phone, first_name, middle_name, last_name, status, in_directory, badge_code, roles (коды ролей), fields (анкета по ключам полей), created_at, updated_at. Поля анкеты, помеченные персональными, наружу не отдаются — ни здесь, ни вебхуком.

Прислать участников

POST /api/v1/attendees с JSON: один объект, массив или {"items": [...]}, до 500 участников за запрос.

{"items": [
  {"external_id": "crm-1041", "email": "ivanova@example.org",
   "first_name": "Анна", "last_name": "Иванова",
   "company_name": "Рога и копыта", "roles": ["speaker"]}
]}

Как читаются ключи:

  • external_id, email, phone, first_name, middle_name, last_name, in_directory, roles — понимаются как есть;
  • ключ, совпадающий с ключом поля анкеты, или объект fields с такими ключами — попадает в анкету;
  • остальное — по сопоставлению, которое организатор задаёт в админке («company_name → Анкета: Компания»); незнакомые ключи пропускаются и перечисляются в ответе в ignored.

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

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

{"summary": {"created": 1, "updated": 0, "errors": 0},
 "results": [{"index": 0, "status": "created", "id": "…", "external_id": "crm-1041"}]}

Удалить участника: DELETE /api/v1/attendees/{id} — так же, как кнопкой в админке.

Вебхуки

Организатор задаёт адрес и события: attendee.created, attendee.updated, attendee.deleted. Событие пишется, откуда бы ни пришла правка — импорт Excel, форма админки, онбординг в приложении, привязка билета, сам API, смена ролей.

На адрес уходит POST с JSON:

{"id": "1842", "event": "attendee.updated", "created_at": "…",
 "attempt": 1, "project_id": "…", "data": { "...снимок участника..." }}

Заголовки: X-Eventbase-Event, X-Eventbase-Delivery, X-Eventbase-Timestamp и X-Eventbase-Signature: sha256=<hex> — HMAC-SHA256 секретом вебхука от строки <timestamp>.<тело>. Сверяйте подпись и отбрасывайте слишком старую метку времени.

Ответьте любым кодом 2xx. Иначе доставка повторится через 1, 5, 30, 120 и 720 минут, после чего помечается неудачной; последняя ошибка видна в строке вебхука и в журнале доставок в админке.

Перечень возможностей сверен с рабочей версией приложения 24 августа 2026.