Обзор

Что это за API, кому он нужен, базовый URL, формат id и общие коды ответа.

API MyRace — публичный read-only интерфейс для вывода событий за пределами платформы: на сайте клуба или федерации, в мобильном приложении, в собственной CRM или другом сервисе. API отдаёт только то, что уже видно на сайте MyRace: опубликованные и не скрытые события вместе с их активностями и локацией. Есть два списка событий с разным охватом — общий календарь платформы и события только вашего аккаунта, подробнее в Списках событий.

Кому это нужно

API пригодится, если вы организатор и хотите:

  • показывать свои события на внешнем сайте или в приложении, без ручного копирования;
  • синхронизировать свои события с собственной базой или CRM;
  • подтягивать актуальный список активностей и локаций без захода в админку;
  • показывать общий календарь платформы (события всех организаторов), а не только свои.

Базовый URL и формат

Все запросы идут на:

https://myrace.info/api/1.0

Формат запросов и ответов — JSON. Текущая версия API — 1.0, она зашита в путь (/api/1.0/...). Доступ только на чтение — создавать, изменять или удалять данные через этот API нельзя.

Быстрый старт

curl -s "https://myrace.info/api/1.0/calendar" \
  -H "Authorization: Bearer <ВАШ_ТОКЕН>"

Где взять токен — см. Авторизация.

Идентификаторы

В полях id события и активности отдаётся их существующий публичный id как есть — без префиксов и преобразований, в виде строки (например, "1994"). У локации собственного публичного id нет, поэтому для неё отдаётся внутренний id — тоже как есть.

Передавайте эти значения обратно в запросах в точности как получили (например, в GET /events/{id}), не пытайтесь их конструировать самостоятельно.

Ошибки и коды ответа

Ошибки возвращаются с заголовком Content-Type: application/json и телом вида:

{
  "error": {
    "code": "invalid_parameter",
    "message": "Unknown sport code: triatlon",
    "param": "sport"
  }
}
  • code — стабильная строка, по ней удобно ветвить логику программно, в отличие от message.
  • message — текст для человека, на языке ответа (см. Accept-Language).
  • param — название параметра запроса, из-за которого ошибка (sport, country, from, to, updated_since, limit или page_token). Это поле есть только у ошибок валидации параметров; у остальных ошибок в JSON его нет вообще — не null, а именно отсутствует ключ.

Общие коды ответа:

HTTP-статусcodeКогда возвращается
400invalid_parameterПараметр запроса некорректен (неизвестный sport, неверный формат даты, limit вне диапазона и т. п.)
401unauthorizedОтсутствует или неверен заголовок Authorization
404not_foundРесурс не найден — в том числе если он принадлежит другому организатору (см. Списки событий)