🔌 API Документация
REST API для интеграции BugLand в ваши приложения
Базовая информация
BugLand API - это REST API, который позволяет интегрировать функционал платформы в ваши приложения.
Base URL
https://bl.isvery.fun
Аутентификация
API поддерживает два способа аутентификации:
- Cookie-based: После входа через
/api/login сессия сохраняется в cookie
- API токены: Используйте заголовок
Authorization: Bearer YOUR_TOKEN
API токены можно создать в настройках профиля. Они начинаются с префикса bl_.
⚠️ Rate Limiting (Защита от спама)
API защищен от спама с помощью rate limiting. Лимиты на IP адрес:
| Endpoint |
Лимит |
| POST /api/bugs |
5 запросов в минуту |
| POST /api/comments |
10 запросов в минуту |
| POST /api/projects |
3 запроса в час |
| POST /api/register |
3 запроса в час |
| POST /api/vote |
20 запросов в минуту |
При превышении лимита вы получите ответ 429 Too Many Requests с заголовком Retry-After.
Аутентификация
POST
/api/register
Регистрация нового пользователя
Request Body:
{
"username": "user123",
"email": "user@example.com",
"password": "password123"
}
Response:
{
"success": true,
"message": "Регистрация успешна"
}
POST
/api/login
Вход в систему
Request Body:
{
"username": "user123",
"password": "password123"
}
Response:
{
"success": true
}
// + Set-Cookie header с session ID
POST
/api/logout
Выход из системы
Проекты
GET
/api/projects
Получить список всех публичных проектов
Response:
[
{
"id": 1,
"name": "My Project",
"slug": "my-project",
"description": "Project description",
"icon_url": "https://...",
"is_private": 0,
"owner_name": "user123",
"bugs_count": 5,
"created_at": "2024-01-01T00:00:00.000Z"
}
]
POST
/api/projects
Создать новый проект (требуется авторизация)
Request Body:
{
"name": "My Project",
"description": "Project description",
"icon_url": "https://...",
"website": "https://...",
"github": "https://github.com/...",
"discord": "https://discord.gg/...",
"telegram": "https://t.me/...",
"youtube": "https://youtube.com/...",
"vk": "https://vk.com/...",
"is_private": false
}
PATCH
/api/projects/:id
Обновить проект (только владелец)
POST
/api/projects/:id/members
Добавить участника (только владелец)
Request Body:
{
"username": "user123"
}
POST
/api/projects/:id/members/:userId/remove
Удалить участника (только владелец)
POST
/api/projects/:id/tags
Добавить тег (только владелец)
Request Body:
{
"name": "bug",
"color": "#ff0000"
}
Баги
GET
/api/bugs/feed
Получить ленту открытых багов (последние 20)
GET
/api/projects/:projectId/bugs
Получить все баги проекта
POST
/api/bugs
Создать баг репорт
Request Body:
{
"projectId": 1,
"title": "Bug title",
"description": "Bug description",
"tags": [1, 2]
}
PATCH
/api/bugs/:id/status
Изменить статус бага (владелец/участник)
Request Body:
{
"status": "resolved"
}
// Статусы: open, in-progress, resolved, rejected
POST
/api/bugs/:id/vote
Проголосовать за баг (требуется авторизация)
Request Body:
{
"vote": 1 // 1 для плюса, -1 для минуса
}
GET
/api/bugs/:id/comments
Получить комментарии к багу
POST
/api/bugs/:id/comments
Добавить комментарий (требуется авторизация)
Request Body:
{
"content": "Comment text"
}
Профиль
GET
/api/profile
Получить свой профиль (требуется авторизация)
PATCH
/api/profile
Обновить профиль (требуется авторизация)
Request Body:
{
"avatar_url": "https://...",
"bio": "About me",
"website": "https://...",
"github": "https://github.com/...",
"discord": "https://discord.gg/...",
"telegram": "https://t.me/...",
"youtube": "https://youtube.com/...",
"vk": "https://vk.com/...",
"twitter": "https://twitter.com/..."
}
Коды ошибок
| Код |
Описание |
| 200 |
Успешный запрос |
| 400 |
Неверные данные запроса |
| 401 |
Требуется авторизация |
| 403 |
Доступ запрещен |
| 404 |
Ресурс не найден |
| 500 |
Внутренняя ошибка сервера |
Примеры использования
JavaScript (Fetch API)
// Создание бага
const response = await fetch('/api/bugs', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
projectId: 1,
title: 'Bug title',
description: 'Bug description',
tags: [1, 2]
})
});
const result = await response.json();
console.log(result);
cURL
curl -X POST https://your-worker.workers.dev/api/bugs \
-H "Content-Type: application/json" \
-d '{
"projectId": 1,
"title": "Bug title",
"description": "Bug description",
"tags": [1, 2]
}'