2025-08-02 00:18:09 +03:00
|
|
|
|
# API Reference
|
|
|
|
|
|
|
|
|
|
|
|
## Обзор
|
|
|
|
|
|
|
|
|
|
|
|
Quoter предоставляет REST API для загрузки файлов, управления квотами и получения файлов с автоматической генерацией миниатюр.
|
|
|
|
|
|
|
|
|
|
|
|
## Базовый URL
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
http://localhost:8080
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## Аутентификация
|
|
|
|
|
|
|
|
|
|
|
|
Все API endpoints (кроме получения файлов) требуют аутентификации через заголовок `Authorization`:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
Authorization: Bearer <your-jwt-token>
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## Endpoints
|
|
|
|
|
|
|
|
|
|
|
|
### 1. Проверка состояния сервера
|
|
|
|
|
|
|
|
|
|
|
|
#### GET /
|
|
|
|
|
|
Проверяет работоспособность сервера.
|
|
|
|
|
|
|
|
|
|
|
|
**Ответ:**
|
|
|
|
|
|
```
|
|
|
|
|
|
200 OK
|
|
|
|
|
|
ok
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 2. Загрузка файлов
|
|
|
|
|
|
|
|
|
|
|
|
#### POST /
|
|
|
|
|
|
Загружает файл в S3 хранилище.
|
|
|
|
|
|
|
|
|
|
|
|
**Заголовки:**
|
|
|
|
|
|
```
|
|
|
|
|
|
Authorization: Bearer <token>
|
|
|
|
|
|
Content-Type: multipart/form-data
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**Параметры:**
|
|
|
|
|
|
- `file` - файл для загрузки
|
|
|
|
|
|
|
|
|
|
|
|
**Ответ:**
|
|
|
|
|
|
```
|
|
|
|
|
|
200 OK
|
|
|
|
|
|
filename.ext
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**Ошибки:**
|
2025-09-01 20:36:15 +03:00
|
|
|
|
- `400 Bad Request` - нет файлов или все файлы пустые
|
|
|
|
|
|
- `401 Unauthorized` - неверный или отсутствующий токен
|
|
|
|
|
|
- `413 Payload Too Large` - превышена квота пользователя или лимит размера файла
|
2025-08-02 00:18:09 +03:00
|
|
|
|
- `415 Unsupported Media Type` - неподдерживаемый тип файла
|
2025-09-01 20:36:15 +03:00
|
|
|
|
- `500 Internal Server Error` - ошибка загрузки в S3 или обновления квоты
|
2025-08-02 00:18:09 +03:00
|
|
|
|
|
2025-09-01 20:36:15 +03:00
|
|
|
|
### 3. Получение информации о текущем пользователе
|
|
|
|
|
|
|
|
|
|
|
|
#### GET /
|
|
|
|
|
|
Получает информацию о залогиненном пользователе с данными о квоте.
|
|
|
|
|
|
|
|
|
|
|
|
**Заголовки:**
|
|
|
|
|
|
```
|
|
|
|
|
|
Authorization: Bearer <token>
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**Ответ:**
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"user_id": "user123",
|
|
|
|
|
|
"username": "john_doe",
|
|
|
|
|
|
"token_type": "session",
|
|
|
|
|
|
"created_at": "1642248600",
|
|
|
|
|
|
"last_activity": "1642335000",
|
|
|
|
|
|
"auth_data": "{\"roles\": [\"user\"]}",
|
|
|
|
|
|
"device_info": "{\"platform\": \"web\"}",
|
|
|
|
|
|
"quota": {
|
|
|
|
|
|
"current_quota": 1073741824,
|
|
|
|
|
|
"max_quota": 5368709120,
|
|
|
|
|
|
"usage_percentage": 20.0
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**Ошибки:**
|
|
|
|
|
|
- `401 Unauthorized` - неверный или отсутствующий токен
|
|
|
|
|
|
|
|
|
|
|
|
### 4. Получение файлов
|
2025-08-02 00:18:09 +03:00
|
|
|
|
|
|
|
|
|
|
#### GET /{filename}
|
|
|
|
|
|
Получает файл по имени.
|
|
|
|
|
|
|
|
|
|
|
|
**Примеры:**
|
|
|
|
|
|
```
|
|
|
|
|
|
GET /image.jpg
|
|
|
|
|
|
GET /image_300.jpg
|
|
|
|
|
|
GET /image_300.jpg/webp
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2025-09-01 20:36:15 +03:00
|
|
|
|
### 5. Управление квотами
|
2025-08-02 00:18:09 +03:00
|
|
|
|
|
|
|
|
|
|
#### GET /quota
|
|
|
|
|
|
Получает информацию о квоте пользователя.
|
|
|
|
|
|
|
|
|
|
|
|
**Параметры запроса:**
|
|
|
|
|
|
- `user_id` - ID пользователя
|
|
|
|
|
|
|
|
|
|
|
|
**Пример:**
|
|
|
|
|
|
```
|
|
|
|
|
|
GET /quota?user_id=user123
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**Ответ:**
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"user_id": "user123",
|
|
|
|
|
|
"current_quota": 1073741824,
|
|
|
|
|
|
"max_quota": 5368709120
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
#### POST /quota/increase
|
|
|
|
|
|
Увеличивает квоту пользователя.
|
|
|
|
|
|
|
|
|
|
|
|
**Тело запроса:**
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"user_id": "user123",
|
|
|
|
|
|
"additional_bytes": 1073741824
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**Ответ:**
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"user_id": "user123",
|
|
|
|
|
|
"current_quota": 2147483648,
|
|
|
|
|
|
"max_quota": 5368709120
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
#### POST /quota/set
|
|
|
|
|
|
Устанавливает квоту пользователя.
|
|
|
|
|
|
|
|
|
|
|
|
**Тело запроса:**
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"user_id": "user123",
|
|
|
|
|
|
"new_quota_bytes": 2147483648
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**Ответ:**
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"user_id": "user123",
|
|
|
|
|
|
"current_quota": 2147483648,
|
|
|
|
|
|
"max_quota": 5368709120
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## Коды ошибок
|
|
|
|
|
|
|
|
|
|
|
|
| Код | Описание |
|
|
|
|
|
|
|-----|----------|
|
|
|
|
|
|
| 200 | Успешный запрос |
|
2025-09-01 20:36:15 +03:00
|
|
|
|
| 400 | Неверные параметры запроса или нет файлов |
|
2025-08-02 00:18:09 +03:00
|
|
|
|
| 401 | Неавторизованный доступ |
|
|
|
|
|
|
| 404 | Файл не найден |
|
2025-09-01 20:36:15 +03:00
|
|
|
|
| 413 | Превышена квота пользователя или лимит размера файла (500 МБ) |
|
2025-08-02 00:18:09 +03:00
|
|
|
|
| 415 | Неподдерживаемый тип файла |
|
|
|
|
|
|
| 500 | Внутренняя ошибка сервера |
|
|
|
|
|
|
|
|
|
|
|
|
## Примеры использования
|
|
|
|
|
|
|
|
|
|
|
|
### Загрузка изображения
|
|
|
|
|
|
```bash
|
|
|
|
|
|
curl -X POST http://localhost:8080/ \
|
|
|
|
|
|
-H "Authorization: Bearer your-token" \
|
|
|
|
|
|
-F "file=@image.jpg"
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2025-09-01 20:36:15 +03:00
|
|
|
|
### Получение информации о пользователе
|
|
|
|
|
|
```bash
|
|
|
|
|
|
curl -H "Authorization: Bearer your-token" \
|
|
|
|
|
|
http://localhost:8080/
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2025-08-02 00:18:09 +03:00
|
|
|
|
### Получение миниатюры
|
|
|
|
|
|
```bash
|
|
|
|
|
|
curl http://localhost:8080/image_300.jpg
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### Увеличение квоты
|
|
|
|
|
|
```bash
|
|
|
|
|
|
curl -X POST http://localhost:8080/quota/increase \
|
|
|
|
|
|
-H "Authorization: Bearer your-token" \
|
|
|
|
|
|
-H "Content-Type: application/json" \
|
|
|
|
|
|
-d '{"user_id": "user123", "additional_bytes": 1073741824}'
|
|
|
|
|
|
```
|