Rodina Tilda Bridge

API для сайтов ФК «Родина» на Tilda — матчи, таблицы, виджеты

Базовый URL: https://api.stepifunich.ru/api

Как часто обновляются данные

Синхронизация с FNL API каждые 15 мин (cron: rodina:sync)
Определение лиги команды ежедневно в 00:00 (rodina:detect-leagues)
API-Football (РПЛ) до 1 раза в 24 ч (экономия лимита)
Кэш матчей 15 мин — ответ из кэша, не из внешнего API
Кэш таблицы 30 мин
Кэш состояния лиги 1 сут.
Актуальность на практике данные обновляются не реже чем раз в 15 мин; поле updated_at в JSON показывает время последней выдачи

Авторизация и ограничения

Все эндпоинты /api/tilda/* требуют токен: query-параметр token или заголовок X-Tilda-Token. Без токена — 401 Unauthorized.
Rate limit 120 запросов / мин на IP
CORS только домены: https://project7841284.tilda.ws, https://rodina.ru, https://www.rodina.ru
Команды ({team}) rodina — Родина, rodina-2 — Родина-2, rodina-m — Родина-М

Пример запроса

https://api.stepifunich.ru/api/tilda/rodina/recent?token=YOUR_TOKEN&limit=3

Публичный health-check без токена: https://api.stepifunich.ru/api/health

JavaScript-виджет для Tilda

<div id="rodina-matches"></div>
<script src="https://api.stepifunich.ru/embed/rodina.js"
        data-endpoint="https://api.stepifunich.ru/api/tilda"
        data-token="YOUR_TOKEN"
        data-team="rodina"
        data-widget="recent"
        data-limit="3"
        data-target="rodina-matches"></script>

data-widget: upcoming, recent, tickets, table

Эндпоинты

GET /api/health без токена

Статус сервиса. Публичный, без токена.

Ответ: JSON: status, service, time, teams, api_football

GET /api/tilda/{team}/upcoming

Ближайшие матчи команды (запланированные и live).

  • team (path) обязательный — Slug команды: rodina, rodina-2, rodina-m
  • token (query) обязательный — TILDA_API_TOKEN или заголовок X-Tilda-Token
  • limit (query) опциональный — Количество матчей, 1–10 (по умолчанию 5)

Ответ: JSON: items[], team, league, provider, season, updated_at

GET /api/tilda/{team}/recent

Последние сыгранные матчи с результатами.

  • team (path) обязательный — Slug команды
  • token (query) обязательный — TILDA_API_TOKEN
  • limit (query) опциональный — Количество матчей, 1–10 (по умолчанию 5)

Ответ: JSON: items[] (score, result: win/loss/draw, opponent, logos)

GET /api/tilda/{team}/games

Upcoming + recent в одном ответе.

  • team (path) обязательный — Slug команды
  • token (query) обязательный — TILDA_API_TOKEN
  • upcoming (query) опциональный — Лимит ближайших, 1–10 (по умолчанию 3)
  • recent (query) опциональный — Лимит прошедших, 1–10 (по умолчанию 5)

Ответ: JSON: upcoming, recent

GET /api/tilda/{team}/table

Турнирная таблица текущей лиги команды.

  • team (path) обязательный — Slug команды
  • token (query) обязательный — TILDA_API_TOKEN

Ответ: JSON: rows[], league, provider, season

GET /api/tilda/{team}/tickets

Ближайшие домашние матчи для блока билетов.

  • team (path) обязательный — Slug команды
  • token (query) обязательный — TILDA_API_TOKEN
  • limit (query) опциональный — Количество матчей, 1–10 (по умолчанию 3)

Ответ: JSON: items[] с ticket_url

GET /api/tilda/{team}/summary

Сводка для главной: upcoming, recent, позиция в таблице.

  • team (path) обязательный — Slug команды
  • token (query) обязательный — TILDA_API_TOKEN

Ответ: JSON: upcoming, recent, table_position, league

GET /api/tilda/{team}/widget/{type}

Готовый HTML для Zero Block на Tilda.

  • team (path) обязательный — Slug команды
  • type (path) обязательный — upcoming, recent, tickets, table
  • token (query) обязательный — TILDA_API_TOKEN
  • limit (query) опциональный — Количество элементов (по умолчанию 3)

Ответ: HTML (text/html)