API для разработчиков

API для разработчиков

Публичные API-эндпоинты для интеграции сторонних плагинов и приложений.

Информация о пользователе

GET /api/user/info

Возвращает информацию о текущем пользователе — авторизация, дата экспирации, платформа.

Определение пользователя

Проверяется в порядке приоритета:

  1. Cookie lampac_token — отправляется браузером автоматически
  2. Query ?token=<TOKEN> — явная передача токена
  3. Query ?uid=<UID> — по device UID (lampac_unic_id)

Ответ (авторизован)

{
  "platform": "alcopac",
  "version": "0.3.0",
  "authorized": true,
  "expires_at": "2026-06-01T00:00:00Z",
  "days_left": 75,
  "tg_username": "username"
}

Ответ (не авторизован)

{
  "platform": "alcopac",
  "version": "0.3.0",
  "authorized": false
}

Поля

ПолеТипОписание
platformstringВсегда "alcopac" — отличает от lampac
versionstringВерсия сервера
authorizedbooltrue если токен валиден и не истёк
expires_atstringRFC 3339 дата экспирации (только при authorized: true)
days_leftintДней до экспирации (только при authorized: true)
tg_usernamestringTelegram username или "promo:P-XXXXXX" для промокодов

Пример использования (Lampa-плагин)

// Cookie отправляется автоматически
fetch('/api/user/info')
  .then(r => r.json())
  .then(data => {
    if (data.platform !== 'alcopac') return;
    if (!data.authorized) return;

    if (data.days_left <= 10) {
      // Показать предупреждение об экспирации
    }
  });

// Или по UID (если cookie недоступен)
var uid = Lampa.Storage.get('lampac_unic_id', '');
fetch('/api/user/info?uid=' + uid)
  .then(r => r.json())
  .then(function(data) { /* ... */ });

Определение платформы

Для определения Al(co)pac на клиенте:

// Способ 1: глобальная переменная (после загрузки on.js)
if (window.alcopac) {
  // Это Al(co)pac
}

// Способ 2: через API
fetch('/api/user/info')
  .then(r => r.json())
  .then(data => {
    if (data.platform === 'alcopac') {
      // Это Al(co)pac
    }
  });

Промокоды

См. Промокоды для полного описания API генерации и активации промокодов.