Bebrikic ID API

Единый API для профилей, ролей, бейджей и BCoins

Документация для интеграции клиентских приложений и серверных сервисов с Bebrikic ID: авторизация, профили, BCoins и SSO.

API: v1
Все запросы выполняются по HTTPS и требуют корректных заголовков.
Базовый URL: https://id.bebrikic.online.

1Аутентификация по API-токену

Используйте персональный API-токен (bapi_...) для доступа к данным. Токен передаётся в заголовке.

X-Api-Token: bapi_xxx
Authorization: Bearer bapi_xxx

2Доступы и поля

  • profile_read — чтение профиля.
  • roles_read — чтение ролей/бейджей.
  • bcoins_read — просмотр BCoins.
  • bcoins_adjust — списание/начисление BCoins.

3Формат ответов

Успешный ответ содержит ok: true. Ошибки возвращаются с detail.

{"ok": true, "user": {"id": 1, "username": "nolbdva"}}
{"detail": "Invalid API token"}

SSO / OAuth 2.0 (Authorization Code)

Используется для входа через Bebrikic ID с возвратом на ваш сайт.

Шаг 1: Авторизация

/oauth/authorize?client_id=CLIENT_ID&redirect_uri=https://nyrp.ru/callback&state=xyz

redirect_uri должен совпадать с зарегистрированным 1:1.

Шаг 2: Обмен кода на токен

{
  "client_id":"CLIENT_ID",
  "client_secret":"CLIENT_SECRET",
  "code":"code_xxx"
}
{"access_token":"...","token_type":"bearer"}

Шаг 3: Получение профиля

GET /me
Authorization: Bearer ACCESS_TOKEN

Результат содержит ID, username, email и разрешённые поля профиля.

Профиль по ID

curl -H "X-Api-Token: bapi_xxx" \
  https://id.bebrikic.online/api/public/users/1
{"ok":true,"user":{"id":1,"username":"nolbdva","avatar_url":"https://..."}}

Профиль по username

curl -H "X-Api-Token: bapi_xxx" \
  https://id.bebrikic.online/api/public/users/by-username/nolbdva
{"ok":true,"user":{"id":1,"username":"nolbdva"}}

Публичные поля

Список полей контролируется настройками токена: вы можете выдавать доступ только к нужному набору данных.

id
username
avatar_url
bcoins

Получение BCoins

Если разрешено поле bcoins, значение приходит в профиле пользователя.

{"ok":true,"user":{"id":1,"username":"nolbdva","bcoins":1300}}

Начисление / списание

POST /api/public/bcoins/adjust
{
  "user_id": 1,
  "delta": -250,
  "reason": "Покупка набора",
  "source": "NYRP"
}
{"ok":true,"user_id":1,"bcoins":1050}

Схема: User

ПолеТипОписание
idintУникальный ID пользователя.
usernamestringИмя пользователя.
display_namestringОтображаемое имя.
avatar_urlstringСсылка на аватар.
bcoinsintБаланс BCoins (если разрешён).

Схема: BCoins

ПолеТипОписание
user_idintID пользователя.
deltaintИзменение баланса.
reasonstringПричина операции.
sourcestringСервис-источник.
created_atdatetimeДата операции.

Kotlin: примеры

Kotlin: запрос профиля

val client = OkHttpClient()
val req = Request.Builder()
  .url("https://id.bebrikic.online/api/public/users/1")
  .header("X-Api-Token", "bapi_xxx")
  .build()
val res = client.newCall(req).execute()
val body = res.body?.string()

Kotlin: обмен OAuth-кода

val json = """
  {"client_id":"CLIENT_ID","client_secret":"CLIENT_SECRET","code":"code_xxx"}
""".trimIndent()
val req = Request.Builder()
  .url("https://id.bebrikic.online/oauth/token")
  .post(json.toRequestBody("application/json".toMediaType()))
  .build()

Ошибки и коды

  • 400 Некорректный запрос или неверные параметры.
  • 401 Неверный токен или истёкший OAuth‑код.
  • 403 Недостаточно прав для этого действия.
  • 404 Ресурс не найден.
  • 429 Превышены лимиты запросов.

Правила безопасности

  • Не передавайте client_secret в браузер или публичные клиенты.
  • Храните токены в серверной сессии или безопасном хранилище.
  • Не логируйте секреты и токены в открытом виде.
  • Используйте state в OAuth для защиты от CSRF.