Регистрация через API reg.place
Получение информации о соревновании
Получить информацию о соревновании можно, исполнив GET
запрос по адресу https://api.reg.place/v1/events/{slug}?compact=false&races=true
, где slug
— уникальный идентификатор соревнования. Вы получите json-объект, содержащий всю необходимую информацию, для отображения соревнования на вашем сайте. В полученном json необходимо обратить внимание на ключ races
, в нём находятся дисциплины соревнования, и на ключ form_fields
, который присутствует у соревнования и может присутствовать у дисциплин соревнования.
Ключ form_fields
содержит информацию для построителя форм, в нём описывается то, как должна выглядеть анкета для регистрации на дисциплину соревнования. Если ключа form_fields
нет в дисциплине, необходимо использовать данные из ключа form_fields
соревнования. Форма представляет собой массив объектов-полей.
Ниже представлена информация о том, как выглядит элемент массива — единичное поле. Ключ presence
намекает на то, что это обязательное поле, ключ validator
описывает формат поля (дата, телефон, время и т.д.). Ключ select_variants
описывает допустимые варианты для селектора. Остальные атрибуты понятны без дополнительного описания.
{ "name": "name_last", "label": "Фамилия", "placeholder": "ваша фамилия", "hint": "Введите вашу фамилию.", "type": "string", "default": "", "presence": true, "validator": null, "select_variants": {}, "agreement_text": null }
Получив информацию о соревновании, вы можете составить заявку, включив в нее все обязательные поля из ключа form_fields
для дисциплины или соревнования.
Создание заявки
Для создания заявки необходимо выполнить json POST
запрос по адресу https://api.reg.place/v1/heats
. В запросе обязательно должны быть указаны: race_id
— идентификатор дисциплины, token
— уникальный идентификатор компании, проводящей соревнования (этот параметр можно посмотреть в админке, в разделе своей компании). Также вам необходимо верно составить объект form_fields
, содержащий ответы пользователя на вопросы анкеты.
Объект с ответами строится на базе информации о соревновании из предыдущего раздела и представляет собой структуру. Пример:
{ 'personal.name_last': 'Савельев', 'personal.name_first': 'Константин', 'personal.birthday': '1983-10-17', 'personal.gender': :male, 'contacts.email': 'inferno@bugz.ru' }
Все обязательные поля должны присутствовать в объекте. Форма строго проверяется перед сохранением, и вы получите сообщение об ошибках, в том числе и об ошибках валидации. Ниже представлен пример скрипта на ruby
, который выполняет регистрацию для формы соревнования, применяемой по умолчанию.
require 'faraday' require 'awesome_print' require 'json' heat = { race_id: 783, token: '9f9a9bc1-428d-4d2c-9b08-4c0cc0d0f251', # это фейковый токен, не используйте его, он не будет работать code: 'DSDEFRG', # вы можете указать промокод, который будет использован для формирования заявки form_fields: { 'personal.name_last': 'Савельев', 'personal.name_first': 'Константин', 'personal.birthday': '1983-10-17', 'personal.gender': :male, 'contacts.email': 'inferno@bugz.ru' } } # Обратите внимание — https подключение c = Faraday.new(url: 'https://api.reg.place') do |faraday| faraday.headers['Content-Type'] = 'application/json' faraday.response :logger faraday.adapter Faraday.default_adapter end res = c.post do |req| req.url '/v1/heats' req.headers['Content-Type'] = 'application/json' req.body = heat.to_json end
При успешной регистрации вы получите json-ответ, содержащий ссылку в ключе payment_url
, перейдя по которой, вы попадете на сайт банка и сможете завершить оплату. Пример успешного ответа после создания заявки:
{ "status" => "success", "event_name" => "Такеда Весенний гром", "race_name" => "Полумарафон", "heat" => { "id" => 78838, "status" => "created", "payment_url" => "https://securepayments.sberbank.ru/payment/merchants/rbs/payment_ru.html?mdOrder=7e936be5-01d0-437e-8200-31e0d459830b" } }
При неудачной регистрации, ответ вида:
{ "status" => "error", "message" => "не удалось создать заявку", "errors" => { "personal.name_last" => "не может быть пустым", "contacts.email" => "имеет неверное значение" } }
Если вы попытаетесь зарегистрироваться на соревнование с реквизитами, с которыми уже ранее создавали заявку (имя, фамилия, год рождения), вам будет возвращена информация о вашей ранее созданной заявке. Используйте payment_url
для повторной оплаты.
Примечание №1: соревнование можно настроить на сбор пожертвований; при регистрации вы можете указать пожертвование в ключе donation
; если для соревнования сбор пожертвований запрещен, при попытке создать заявку вы получите ошибку.
Примечание №2: вы можете привязать существующего участника к заявке, для этого вам нужно передать в ключ athlete_id
уникальный идентификатор участника.
Получение информации о заявке
Для получения информации о заявке вам необходимо выполнить GET
-запрос по адресу https://api.reg.place/v1/heats/{id}
, где id
— номер заявки. Пример ответа:
{ "heat": { "id": 78829, "status": "locked", // статус заявки: locked — оплачивается, ready — оплачено, created — новая, cancelled — отменена "name_first": "Константин", "name_last": "Савельев", "name_middle": null, "birthday": "1983-10-17", "gender": "male", "paid_at": null, // дата оплаты заявки, если оплата была "heat_url": "http://api.reg.place/heats/5d6ab3bb-7bce-48cc-8534-9fd382307a0c" // ссылка на страничку заявки на http://reg.place } }
Также вы можете получить список всех актуальных заявок для всех дисциплин выбранного соревнования, для этого выполните GET
-запрос по адресу https://api.reg.place/v1/events/{slug}/heats
, где slug
— айди соревнования. Будет возвращен json объект, содержащий все дисциплины и актуальные заявки для них.