Аутентификация

Ключ rsk_, заголовок Authorization, скоупы и что делать при 403.

Получение ключа

Выпускаются в кабинете: раздел «API-ключи» → «Новый ключ». Задаёте название и набор прав, получаете плейнтекст вида rsk_<...> — он показывается один раз, в базе остаётся только хеш. Потеряли — выпустите новый и отзовите старый, там же.

Первый ключ можем выдать мы вместе с доступом в кабинет. Дальше это ваша кнопка: ждать оператора, чтобы отозвать утёкший ключ, — не та зависимость, которая нужна в момент инцидента.

Ротация: выпустите новый ключ, переключите интеграцию, отзовите старый. Оба живут одновременно ровно столько, сколько вам нужно на переключение.

Использование

Базовый адрес — https://logrus.space/api/v1/reseller. Каждый запрос требует заголовка:

Authorization: Bearer rsk_<ключ>

Проверить, что ключ живой:

GET /api/v1/reseller/me
200 OK
{
  "id": "0f2c...",
  "code": "your-brand",
  "name": "Your Brand",
  "status": "active",
  "revshare_pct": 15,
  "branding": { },
  "user_count": 0
}

status кроме active может быть suspended — тогда пишущие ручки закрыты.

Скоупы

Ключ выпускается с набором прав. Просите минимальный набор под задачу:

  • accounts:read — читать список и карточки клиентов.
  • accounts:write — создавать клиентов.
  • metrics:read — читать агрегаты.
  • prices:read, prices:write — читать и менять свои цены.
  • payouts:read — читать историю выплат.

Ключ без нужного скоупа получает 403:

{
  "error": "api key lacks required scope: accounts:write",
  "code": "insufficient_scope",
  "details": { "required": "accounts:write" }
}

Лимиты запросов

Лимит считается на ключ, а не на партнёра: у вас несколько интеграций, и зациклившийся дашборд не должен останавливать бота, который продаёт.

  • По умолчанию 300 запросов в минуту на ключ.
  • Пачкой подряд можно потратить около десяти секунд запаса (для 300/мин это 50 запросов), дальше пропускная способность выравнивается по лимиту.
  • Превышение → 429 с заголовком Retry-After в секундах:
429 Too Many Requests
Retry-After: 3

{
  "error": "rate limit exceeded for this api key",
  "code": "rate_limited",
  "details": { "retry_after_seconds": 3 }
}

Выждать ровно Retry-After достаточно — второй 429 подряд вы не получите. Действующий лимит по каждому ключу виден в кабинете; если вашей интеграции его мало, скажите, поднимем персонально.

Метрики всё равно нет смысла опрашивать чаще раза в несколько минут: они считаются по базе на лету и за секунду не меняются.