API VoteServeur v1
Награды за голоса для 68 игр в каталоге. Одна и та же API везде: server_token + одно поле идентификации (ник, Steam или Discord — определяется автоматически).
Базовый URL
https://voteserveur.fr/api/v1
JSON UTF-8. Лимит IP: ~90 запр. / мин на публичных эндпоинтах чтения; claim строже.
Аутентификация
server_token (40–64 симв.) виден только владельцу (управление сервером). Храните в секрете.
- Запрос:
?server_token=TOKEN - Заголовок:
X-Server-Token: TOKEN - Заголовок:
Authorization: Bearer TOKEN
Без валидного токена → 404 (не раскрывает, существует ли slug).
Путь игрока (пошагово)
- Создайте карточку на /ru/serveurs/nouveau.
- Скачайте пакет на /ru/plugins/{game} (токен уже встроен).
- Установите плагин / запустите поллер (см.
INSTALL.txtв ZIP). Рекомендуемый интервал: 10 минут. - Игрок голосует с отмеченной галочкой награды и вводит один идентификатор (ник / Discord / Steam) — получает код claim (напр.
/vsclaim ABC123). - Скрипт вызывает
GET /votes/pending, затемGET /votes/claim?identity=…→ еслиclaimed = 1, выдайте награду один раз. Или игрок забирает черезclaim-code. - Опционально:
votes/playerдля месячных уровней (5 / 10 / 30 голосов…).
GET /votes/claim (рекомендуется)
Единый claim: один параметр identity. API сама определяет ник / SteamID64 / Discord. Эндпоинты claim-username / claim-steam / claim-discord остаются (совместимость).
GET https://voteserveur.fr/api/v1/votes/claim?server_token=TOKEN&identity=Pseudo
GET https://voteserveur.fr/api/v1/votes/claim?server_token=TOKEN&identity=76561198000000000
GET https://voteserveur.fr/api/v1/votes/claim?server_token=TOKEN&identity=123456789012345678
Та же схема claimed 0 / 1 / 2, что у старых claim.
GET /votes/claim-username
Забирает голос за последние 2 часа по нику или имени-фамилии. Подставить голос нельзя.
GET https://voteserveur.fr/api/v1/votes/claim-username?server_token=TOKEN&playername=Pseudo
GET https://voteserveur.fr/api/v1/votes/claim-username?server_token=TOKEN&playername=Jean%20Dupont
{
"code": 200,
"success": true,
"claimed": 1,
"message": "Голос получен"
}
claimed: 0— нет подходящего голосаclaimed: 1— получен сейчас → выдайте наградуclaimed: 2— уже получен
Варианты ника (Bob, Bob!, B o b, Jean Dupont / JeanDupont) объединяются (один игрок).
GET /votes/claim-steam
GET https://voteserveur.fr/api/v1/votes/claim-steam?server_token=TOKEN&steam_id=76561198000000000
Та же схема ответа, что у claim-username.
GET /votes/claim-discord
Забор по ID Discord (snowflake 17–20 цифр). Удобно для Discord, Habbo с Discord, ботов и т.д.
GET https://voteserveur.fr/api/v1/votes/claim-discord?server_token=TOKEN&discord_id=123456789012345678
Также принимает формат упоминания <@123…>. Та же схема ответа, что у claim-username.
GET /votes/claim-code
Забор по одноразовому коду после голосования (6 симв., действует 2 ч). Рекомендуемая команда в игре: /vsclaim ABC123.
GET https://voteserveur.fr/api/v1/votes/claim-code?server_token=TOKEN&code=ABC123
Та же схема claimed 0/1/2. Если у голоса был ник, в ответе может быть playername.
GET /votes/check
Проверка без списания: 0 не голосовал · 1 уже получен · 2 голосовал, не получен.
GET https://voteserveur.fr/api/v1/votes/check?server_token=TOKEN&playername=Pseudo
GET /votes/check-steam
GET https://voteserveur.fr/api/v1/votes/check-steam?server_token=TOKEN&steam_id=7656119…
GET /votes/check-discord
GET https://voteserveur.fr/api/v1/votes/check-discord?server_token=TOKEN&discord_id=123456789012345678
GET /votes/check-ip
Есть ли у IP HTTP-клиента недавний голос (антиабьюз для плагина). Нужен токен.
GET https://voteserveur.fr/api/v1/votes/check-ip?server_token=TOKEN
GET /votes/last
Последние голоса (окно ~1 ч) — отладка / Discord-оверлей.
GET https://voteserveur.fr/api/v1/votes/last?server_token=TOKEN
GET /votes/pending
Незабранные голоса в окне claim (2 ч), галочка награды. Один запрос на весь сервер — опрашивать примерно каждые ~10 минут — API сразу отдаёт всех незабранных.
GET https://voteserveur.fr/api/v1/votes/pending?server_token=TOKEN&limit=50
{
"success": true,
"votes": [
{ "id": "…", "playername": "Pseudo", "steam_id": null, "discord_id": "123…", "created_at": "…", "created_ts": 1710000000 }
]
}
Затем вызовите claim?identity=… для каждого подходящего онлайн-игрока.
GET /votes/top
Агрегированный рейтинг игроков. Params: period=month|day|all, limit (макс. 50).
GET https://voteserveur.fr/api/v1/votes/top?server_token=TOKEN&period=month&limit=10
GET /votes/player (алиас /votes/stats)
Статистика игрока (месяц / всего) — для уровней универсального поллера.
GET https://voteserveur.fr/api/v1/votes/player?server_token=TOKEN&playername=Pseudo
GET https://voteserveur.fr/api/v1/votes/stats?server_token=TOKEN&steam_id=7656119…
{
"success": true,
"player_name": "Pseudo",
"votes_month": 12,
"votes_total": 48
}
GET /server
Публичная информация карточки, привязанной к токену.
GET https://voteserveur.fr/api/v1/server?server_token=TOKEN
GET /servers/{token}
Вариант пути: /servers/{token}, /full, /stats, /advices, /players-ranking.
GET https://voteserveur.fr/api/v1/servers/TOKEN
GET https://voteserveur.fr/api/v1/servers/TOKEN/full
GET https://voteserveur.fr/api/v1/servers/TOKEN/stats
GET https://voteserveur.fr/api/v1/servers/TOKEN/advices
GET https://voteserveur.fr/api/v1/servers/TOKEN/players-ranking
Коды и ошибки
200— OK (даже если claimed: 0)400— отсутствующие / неверные параметры404— неизвестный токен429— лимит запросов
Скрипты и плагины
ZIP-пакет для каждой игры (нативный и/или универсальный поллер), токен встроен, только владелец:
- Индекс плагинов — гайд установки на каждую игру
- GTA: FiveM + RageMP + SA-MP в одном ZIP
- Пошаговые гайды по серверам: /ru/guides
Пример curl
# Claim
curl -s -H 'X-Server-Token: TOKEN' \
'https://voteserveur.fr/api/v1/votes/claim-username?playername=Nayvroxi'
# Статистика за месяц (уровни)
curl -s -H 'X-Server-Token: TOKEN' \
'https://voteserveur.fr/api/v1/votes/player?playername=Nayvroxi'