🔐 API Авторизация

API Svortex использует JWT (JSON Web Tokens) для авторизации запросов. Это обеспечивает безопасность и простоту использования.

🌐 Base URL

https://svortex.ru/api

Все API эндпоинты начинаются с этого базового URL.

📝 Регистрация

POST /auth/register

Public

Отправить код подтверждения на email:

Request Body:
{
  "username": "john_doe",
  "email": "john@gmail.com",
  "password": "securepass123",
  "referral_code": "ABC123" // опционально
}
Response (200 OK):
{
  "message": "Код подтверждения отправлен на ваш email",
  "email": "john@gmail.com",
  "expiresIn": 15
}

POST /auth/complete-registration

Public

Завершить регистрацию с кодом:

Request Body:
{
  "username": "john_doe",
  "email": "john@gmail.com",
  "password": "securepass123",
  "code": "123456",
  "referral_code": "ABC123" // опционально
}
Response (200 OK):
{
  "message": "Регистрация успешна",
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "user": {
    "id": 123,
    "username": "john_doe",
    "email": "john@gmail.com",
    "balance": 0,
    "is_admin": false
  }
}

🔑 Вход

POST /auth/login

Public
Request Body:
{
  "email": "john@gmail.com",
  "password": "securepass123"
}
Response (200 OK):
{
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "user": {
    "id": 123,
    "username": "john_doe",
    "email": "john@gmail.com",
    "balance": 150.50,
    "is_admin": false,
    "pterodactyl_id": 456
  }
}

⚠️ Rate Limiting: Максимум 5 попыток входа за 15 минут.

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

После успешной авторизации используйте полученный JWT токен в заголовке Authorization:

HTTP Header:
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
Пример запроса (cURL):
curl -X GET https://svortex.ru/api/user/profile \
  -H "Authorization: Bearer YOUR_JWT_TOKEN" \
  -H "Content-Type: application/json"
Пример запроса (JavaScript):
const response = await fetch('https://svortex.ru/api/user/profile', {
  method: 'GET',
  headers: {
    'Authorization': `Bearer ${token}`,
    'Content-Type': 'application/json'
  }
});

const data = await response.json();

👤 Информация о пользователе

GET /user/profile

Auth Required

Получить информацию о текущем пользователе:

Response (200 OK):
{
  "id": 123,
  "username": "john_doe",
  "email": "john@gmail.com",
  "first_name": "John",
  "last_name": "Doe",
  "balance": 150.50,
  "is_admin": false,
  "pterodactyl_id": 456,
  "referral_code": "ABC123",
  "created_at": "2025-01-01T00:00:00.000Z"
}

❌ Коды ошибок

400 Bad Request

Неверные данные в запросе. Проверьте поля и формат.

401 Unauthorized

Токен отсутствует, невалиден или истек.

403 Forbidden

Недостаточно прав для выполнения операции.

404 Not Found

Запрошенный ресурс не найден.

429 Too Many Requests

Превышен лимит запросов. Подождите и повторите.

500 Internal Server Error

Внутренняя ошибка сервера. Обратитесь в поддержку.

⏱️ Rate Limiting

API защищен от злоупотреблений системой rate limiting:

Общие запросы
Большинство эндпоинтов
500 / 15 мин
Авторизация
Логин, регистрация
5 / 15 мин
Платежи
Создание платежей
5 / 1 мин
Админ панель
Административные операции
1500 / 5 мин

ℹ️ При превышении лимита вы получите ответ 429 Too Many Requests с заголовком Retry-After указывающим когда можно повторить запрос.

📚 Что дальше?