API White-label площадки
API White-label площадки предоставляет конфигурацию, контент, функции игрока, обратную связь и статистику для собственного frontend площадки GamePush. Он использует GraphQL, но отличается контекстом доступа от общего серверного API.
Адрес GraphQL API
Отправляйте запросы GamePush на адрес:
https://api.gamepush.com/gs/api/graphql
Используйте метод POST и JSON-тело с полем query и, когда необходимо, variables. API White-label площадки и общий серверный API используют один GraphQL endpoint, но разные заголовки доступа и операции.
Откройте площадку в панели GamePush. Её числовой ID находится в URL страницы на месте {id}: panel/platforms/{id}. В разделе «API» можно скопировать API KEY площадки, необходимый только для серверных запросов. Для первого запроса конфигурации используйте стандартный адрес. Если в ответе указан другой apiUrl, отправляйте последующие запросы API площадки на этот настроенный адрес в том же формате.
Есть два контекста выполнения:
| Контекст | Обязательные данные запроса | Для чего использовать |
|---|---|---|
| Сервер площадки | Content-Type, X-Game-Platform-Api-Key, X-Game-Platform-ID | Полный каталог с метриками, работа с обратной связью и статистика |
| Браузер игрока | Content-Type, X-Game-Platform-ID, совпадающий браузерный Origin и credentials: 'include' | Публичная конфигурация и контент, вход игрока, профиль, мои игры и покупки |
API-ключ — серверный секрет. Не добавляйте его в frontend-бандл, не передавайте браузеру и не сохраняйте в репозитории.
Секретный ключ, расположенный рядом с API-ключом, используется для подписей вебхуков. Он не является ключом доступа к GraphQL. Внутренние заголовки и токены GamePush не относятся к публичному API.
Функция для браузерных запросов
Браузер самостоятельно добавляет заголовок Origin. API проверяет, что origin совпадает с доменом площадки. Параметр credentials: 'include' позволяет браузеру получать и отправлять HttpOnly-cookie сессии игрока.
const apiUrl = 'https://api.gamepush.com/gs/api/graphql';
const platformId = '42';
async function requestWhiteLabelApi(query, variables = {}) {
const response = await fetch(apiUrl, {
method: 'POST',
credentials: 'include',
headers: {
'Content-Type': 'application/json',
'X-Game-Platform-ID': platformId,
},
body: JSON.stringify({ query, variables }),
});
const payload = await response.json();
if (!response.ok || payload.errors?.length) {
throw new Error(payload.errors?.[0]?.message ?? `HTTP ${response.status}`);
}
return payload.data;
}
Не добавляйте API-ключ в эту функцию. Cookie игрока управляется браузером и не должна читаться из JavaScript.
Обработка результата GraphQL
Операции API площадки возвращают union-тип. По __typename отличайте успешный объект от Problem. HTTP 200 сам по себе не означает успешный бизнес-результат.
const data = await requestWhiteLabelApi(query, variables);
const result = data.result;
if (result.__typename === 'Problem') {
throw new Error(result.message);
}
Разделы API
- Быстрый старт: серверная функция и первые запросы.
- Площадка: брендирование, SEO, аналитика, меню, реклама и платежная конфигурация.
- Игры: игровой контент, пагинация, фильтры и метрики.
- Страницы: метаданные страниц и блоки для отображения.
- Подборки: метаданные подборок и игры с пагинацией.
- Промо: промобаннеры, предложение PWA и игра дня.
- Игрок: вход, профиль, мои игры и покупки.
- Обратная связь: создание и обработка обращений с витрины.
- Статистика: записанные агрегаты рекламы и покупок.
API White-label площадки читает настройки, подготовленные в панели управления. Административные операции создания, изменения, публикации и удаления остаются операциями панели и не входят в это руководство по API.