API Reference

Кратко: у портала нет отдельного публичного API для сторонних интеграций — /api/* обслуживает только собственный интерфейс сайта. Ниже — то немногое, что реально доступно без входа.


Общее

Все маршруты /api/* — часть одного и того же Next.js-приложения, что и сам сайт: тот же домен, тот же деплой, без отдельной версии для внешних потребителей. Формального контракта, версионирования (/v1) или SDK не существует — если понадобится, это будет отдельным объявлением.

Ответы — обычный JSON. Успех — тело запроса напрямую; ошибка — { "error": "..." } с соответствующим HTTP-статусом (400 — некорректный запрос, 401/403 — нет доступа, 404 — не найдено, 500 — внутренняя ошибка).


Доступно без входа

Небольшой набор эндпоинтов отвечает без авторизации — ими пользуются публичные страницы сайта (главная, поиск, страница контактов):

GET /api/contacts

Список контактов, отображаемых на странице /contacts.

[{ "id": 1, "label": "Email", "value": "...", "url": "mailto:..." }]

GET /api/search?q=строка

Быстрый поиск по названиям статей, проектов, сервисов и элементов подборок (используется командной палитрой, Ctrl+//⌘K). Возвращает только то, что видно текущему посетителю — гостю без входа доступны лишь публичные материалы.

[{ "title": "...", "kind": "Знания", "url": "/knowledge/..." }]

Пустой или отсутствующий параметр q — пустой массив, без ошибки.

GET /api/health/{service}

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

{ "online": true, "ms": 42 }

Всё остальное — только по сессии

Прочие маршруты /api/* требуют действующей сессии (тот же вход, что и на сайте — /login), а операции изменения данных (создание/редактирование/удаление статей, проектов, сервисов, пользователей и т.п.) доступны только роли «Админ». Это внутренние эндпоинты собственной админ-панели, а не публичный API — их состав и форматы могут меняться без отдельного анонса.


Что не реализовано

Версионирование, единый механизм пагинации и общий API-шлюз с постоянными лимитами запросов сегодня не реализованы — единственный клиент API сейчас это сам сайт. Аутентификационные действия (вход, регистрация) ограничены по частоте в целях защиты от подбора, но конкретные пороги не публикуются.