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
| Поле | Тип | Описание |
|---|---|---|
| id | int | Уникальный ID пользователя. |
| username | string | Имя пользователя. |
| display_name | string | Отображаемое имя. |
| avatar_url | string | Ссылка на аватар. |
| bcoins | int | Баланс BCoins (если разрешён). |
Схема: BCoins
| Поле | Тип | Описание |
|---|---|---|
| user_id | int | ID пользователя. |
| delta | int | Изменение баланса. |
| reason | string | Причина операции. |
| source | string | Сервис-источник. |
| created_at | datetime | Дата операции. |
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.