Перейти к содержимому
Вернуться на главную
REST API v1

Документация API голосований

Подключите систему голосований к своему игровому серверу: проверяйте голоса игроков, получайте имя персонажа, игровой мир и IP-адрес и выдавайте награды автоматически.

Base URL https://mmoprime.com/api/v1

Аутентификация

🔑 Токен сервера

Токен выдаётся в личном кабинете проекта: Мои серверы → Редактировать. Передавайте его в параметре запроса server_token.

Методы

Универсальный метод. Если передан character — проверяет, голосовал ли персонаж за последние 24 часа. Иначе возвращает список с пагинацией.

Параметры запроса
Параметр Тип Описание
server_token string required Токен вашего сервера
character string optional Имя персонажа — проверяет конкретный голос
world string optional Название игрового мира / реалма. Работает в обоих режимах: в списке оставляет только голоса этого реалма.
period string optional today yesterday week month all
page integer optional По умолчанию: 1
per_page integer optional Максимум 100. По умолчанию: 50
Ответ — голос найден (режим персонажа)
JSON
{
    "success": true,
    "voted_at": "2025-07-20T15:30:00+03:00",
    "character": "Arthas",
    "server_world": "Lordaeron",
    "server_id": 123
}
Ответ — голос не найден
JSON
{
    "success": false,
    "message": "No vote found for this character"
}
Ответ — режим списка
JSON
{
    "success": true,
    "data": [
        {
            "id": 1,
            "character_name": "Arthas",
            "server_world": "Lordaeron",
            "server_name": "WoW Classic x5",
            "ip_address": "192.168.1.10",
            "voted_at": "2025-07-20 15:30:00"
        }
    ],
    "meta": {
        "current_page": 1,
        "last_page": 5,
        "per_page": 50,
        "total": 243,
        "server_info": {
            "id": 123,
            "name": "WoW Classic x5",
            "game": "World of Warcraft"
        }
    }
}

Поля объекта голоса

ПолеТипОписание
idintegerУникальный ID голоса
character_namestringИмя персонажа
server_worldstring|nullИгровой мир / реалм
server_namestringНазвание сервера
ip_addressstringIP-адрес голосующего
voted_atstringВремя голоса, московское (UTC+3)

Примеры интеграции

Проверка голоса персонажа — PHP
$token = 'your_server_token';
$character = 'Arthas';
$world = 'Lordaeron'; // optional

$url = "https://mmoprime.com/api/v1/votes/by-token?"
    . http_build_query([
        'server_token' => $token,
        'character'    => $character,
        'world'        => $world,
    ]);

$data = json_decode(file_get_contents($url), true);

if ($data['success']) {
    $votedAt   = $data['voted_at'];
    $world     = $data['server_world'];
    // Grant reward
}
Проверка голоса персонажа — JavaScript
const checkVote = async (token, character, world = null) => {
    const params = new URLSearchParams({
        server_token: token,
        character: character,
    });
    if (world) params.set('world', world);

    const res = await fetch(
        `https://mmoprime.com/api/v1/votes/by-token?${params}`
    );
    const data = await res.json();

    if (data.success) {
        console.log('World:', data.server_world);
        // Grant reward
    }
};
Проверка голоса персонажа — Laravel
use Illuminate\Support\Facades\Http;

public function checkVote(string $character, ?string $world = null): bool
{
    $params = [
        'server_token' => config('services.mmovibe.token'),
        'character'    => $character,
    ];
    if ($world) $params['world'] = $world;

    $response = Http::get(
        'https://mmoprime.com/api/v1/votes/by-token',
        $params
    );

    if ($response->successful() && $response->json('success')) {
        // $response->json('server_world')
        // Grant reward
        return true;
    }
    return false;
}

Автоматическая выдача наград

⚡ Рекомендуемый сценарий
  1. 1Настройте задачу cron с запуском раз в 5-15 минут
  2. 2Request today's votes via the API
  3. 3Сверяйте с локальной базой уже обработанных голосов
  4. 4Выдавайте награды за новые голоса и сохраняйте запись

Ежемесячный сброс голосов

Важно: Все голоса автоматически обнуляются 1-го числа каждого месяца в 00:00 по московскому времени. Счётчики сбрасываются в ноль. Обработайте все накопленные голоса до конца месяца.

Советы по интеграции

  • Не опрашивайте API чаще одного раза в минуту. Жёсткий лимит — 120 запросов в минуту, дальше приходит 429.
  • Храните историю наград, чтобы не выдать их дважды
  • Корректно обрабатывайте сетевые ошибки и недоступность API
  • Всегда используйте HTTPS
  • server_world необязателен — используйте его, если на проекте несколько игровых миров