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