📊 Информация о последнем сбросе промо-баллов
Эндпоинт для получения информации о последнем сбросе промо-баллов.
🔗 Эндпоинт
GET /api/v1/promo/last_reset
📝 Описание
Возвращает информацию о последнем сбросе промо-баллов, включая время, причину и статистику.
🔐 Аутентификация
Требуется API ключ в заголовке Authorization.
📋 Параметры запроса
| Параметр | Тип | Обязательный | Описание | По умолчанию |
|---|---|---|---|---|
include_stats | boolean | Нет | Включать статистику сброса | true |
🧪 Тестирование
🔧 Интерактивный API Тестер
Попробуйте наши API эндпоинты прямо здесь
⚠️ Примечание: Используется прокси для обхода CORS. Если запросы не работают, проверьте подключение к интернету.
Тестовый ключ
🔥 Популярные эндпоинты
📋 Примеры запросов
📊 Получить информацию о последнем сбросе
curl -H "Authorization: Bearer test_key_12345" \
"http://138.124.109.53:5000/api/v1/promo/last_reset"
📈 Получить информацию без статистики
curl -H "Authorization: Bearer test_key_12345" \
"http://138.124.109.53:5000/api/v1/promo/last_reset?include_stats=false"
📊 Получить информацию с полной статистикой
curl -H "Authorization: Bearer test_key_12345" \
"http://138.124.109.53:5000/api/v1/promo/last_reset?include_stats=true"
📊 Структура ответа
✅ Успешный ответ (200 OK)
{
"success": true,
"data": {
"reset_id": "reset_20240115_103000",
"timestamp": "2024-01-15T10:30:00Z",
"admin_user": "admin@example.com",
"reason": "Monthly reset",
"total_servers": 2847,
"affected_servers": 2847,
"notify_users": false,
"stats": {
"servers_before_reset": 2847,
"servers_after_reset": 2847,
"total_promo_points_reset": 142350,
"average_promo_points_per_server": 50,
"reset_duration": "2.5s"
}
}
}
📋 Описание полей
| Поле | Тип | Описание |
|---|---|---|
reset_id | string | Уникальный ID сброса |
timestamp | string | Время сброса (ISO 8601) |
admin_user | string | Email администратора |
reason | string | Причина сброса |
total_servers | number | Общее количество серверов |
affected_servers | number | Количество затронутых серверов |
notify_users | boolean | Были ли уведомлены пользователи |
stats | object | Статистика сброса |
📊 Статистика (stats)
| Поле | Тип | Описание |
|---|---|---|
servers_before_reset | number | Количество серверов до сброса |
servers_after_reset | number | Количество серверов после сброса |
total_promo_points_reset | number | Общее количество сброшенных промо-баллов |
average_promo_points_per_server | number | Среднее количество промо-баллов на сервер |
reset_duration | string | Время выполнения сброса |
❌ Возможные ошибки
401 Unauthorized
{
"success": false,
"error": {
"code": 401,
"message": "Неверный API ключ",
"details": "Проверьте заголовок Authorization"
}
}
404 Not Found
{
"success": false,
"error": {
"code": 404,
"message": "Сбросы не найдены",
"details": "История сбросов промо-баллов пуста"
}
}
429 Too Many Requests
{
"success": false,
"error": {
"code": 429,
"message": "Превышен лимит запросов",
"details": "Лимит: 60 запросов в минуту. Попробуйте через 45 секунд.",
"retry_after": 45
}
}
💻 Примеры кода
🟨 JavaScript/Node.js
async function getLastPromoReset(apiKey, includeStats = true) {
const url = new URL('http://138.124.109.53:5000/api/v1/promo/last_reset');
url.searchParams.append('include_stats', includeStats);
const response = await fetch(url, {
headers: {
'Authorization': `Bearer ${apiKey}`,
'Content-Type': 'application/json'
}
});
if (!response.ok) {
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
}
return response.json();
}
// Использование
try {
const lastReset = await getLastPromoReset('test_key_12345', true);
console.log(`=== Последний сброс промо-баллов ===`);
console.log(`ID сброса: ${lastReset.data.reset_id}`);
console.log(`Время: ${new Date(lastReset.data.timestamp).toLocaleString()}`);
console.log(`Администратор: ${lastReset.data.admin_user}`);
console.log(`Причина: ${lastReset.data.reason}`);
console.log(`Всего серверов: ${lastReset.data.total_servers}`);
console.log(`Затронуто серверов: ${lastReset.data.affected_servers}`);
console.log(`Уведомления: ${lastReset.data.notify_users ? 'Отправлены' : 'Не отправлены'}`);
if (lastReset.data.stats) {
console.log(`\n=== Статистика сброса ===`);
console.log(`Серверов до сброса: ${lastReset.data.stats.servers_before_reset}`);
console.log(`Серверов после сброса: ${lastReset.data.stats.servers_after_reset}`);
console.log(`Всего сброшено промо-баллов: ${lastReset.data.stats.total_promo_points_reset}`);
console.log(`Среднее промо-баллов на сервер: ${lastReset.data.stats.average_promo_points_per_server}`);
console.log(`Время выполнения: ${lastReset.data.stats.reset_duration}`);
}
} catch (error) {
console.error('Ошибка:', error.message);
}
🐍 Python
import requests
def get_last_promo_reset(api_key, include_stats=True):
url = 'http://138.124.109.53:5000/api/v1/promo/last_reset'
headers = {
'Authorization': f'Bearer {api_key}',
'Content-Type': 'application/json'
}
params = {
'include_stats': include_stats
}
response = requests.get(url, headers=headers, params=params)
response.raise_for_status()
return response.json()
# Использование
try:
last_reset = get_last_promo_reset('test_key_12345', True)
print("=== Последний сброс промо-баллов ===")
print(f"ID сброса: {last_reset['data']['reset_id']}")
print(f"Время: {last_reset['data']['timestamp']}")
print(f"Администратор: {last_reset['data']['admin_user']}")
print(f"Причина: {last_reset['data']['reason']}")
print(f"Всего серверов: {last_reset['data']['total_servers']}")
print(f"Затронуто серверов: {last_reset['data']['affected_servers']}")
print(f"Уведомления: {'Отправлены' if last_reset['data']['notify_users'] else 'Не отправлены'}")
if last_reset['data']['stats']:
print("\n=== Статистика сброса ===")
print(f"Серверов до сброса: {last_reset['data']['stats']['servers_before_reset']}")
print(f"Серверов после сброса: {last_reset['data']['stats']['servers_after_reset']}")
print(f"Всего сброшено промо-баллов: {last_reset['data']['stats']['total_promo_points_reset']}")
print(f"Среднее промо-баллов на сервер: {last_reset['data']['stats']['average_promo_points_per_server']}")
print(f"Время выполнения: {last_reset['data']['stats']['reset_duration']}")
except Exception as e:
print(f"Ошибка: {e}")
🐘 PHP
<?php
function getLastPromoReset($apiKey, $includeStats = true) {
$url = "http://138.124.109.53:5000/api/v1/promo/last_reset";
$params = http_build_query([
'include_stats' => $includeStats
]);
$url .= '?' . $params;
$context = stream_context_create([
'http' => [
'method' => 'GET',
'header' => [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json'
]
]
]);
$response = file_get_contents($url, false, $context);
return json_decode($response, true);
}
// Использование
try {
$lastReset = getLastPromoReset('test_key_12345', true);
echo "=== Последний сброс промо-баллов ===\n";
echo "ID сброса: {$lastReset['data']['reset_id']}\n";
echo "Время: {$lastReset['data']['timestamp']}\n";
echo "Администратор: {$lastReset['data']['admin_user']}\n";
echo "Причина: {$lastReset['data']['reason']}\n";
echo "Всего серверов: {$lastReset['data']['total_servers']}\n";
echo "Затронуто серверов: {$lastReset['data']['affected_servers']}\n";
echo "Уведомления: " . ($lastReset['data']['notify_users'] ? 'Отправлены' : 'Не отправлены') . "\n";
if ($lastReset['data']['stats']) {
echo "\n=== Статистика сброса ===\n";
echo "Серверов до сброса: {$lastReset['data']['stats']['servers_before_reset']}\n";
echo "Серверов после сброса: {$lastReset['data']['stats']['servers_after_reset']}\n";
echo "Всего сброшено промо-баллов: {$lastReset['data']['stats']['total_promo_points_reset']}\n";
echo "Среднее промо-баллов на сервер: {$lastReset['data']['stats']['average_promo_points_per_server']}\n";
echo "Время выполнения: {$lastReset['data']['stats']['reset_duration']}\n";
}
} catch (Exception $e) {
echo "Ошибка: {$e->getMessage()}\n";
}
?>
🔗 Связанные эндпоинты
- Принудительный сброс промо-баллов - сброс промо-баллов всех серверов
- История сбросов промо-баллов - история сбросов промо-баллов