Площадка
Используйте PlatformFetchGamePlatform как основной запрос конфигурации при запуске витрины. Кэшируйте результат на клиенте и обновляйте его при перезагрузке страницы или после сброса серверного кэша настроек.
Контекст выполнения: браузер витрины или сервер площадки. Браузер передаёт Content-Type, X-Game-Platform-ID, совпадающий Origin и cookie игрока с credentials: 'include'. Сервер дополнительно передаёт X-Game-Platform-Api-Key. Никогда не раскрывайте API-ключ браузеру.
Получение полной конфигурации витрины
fragment PlatformSeoTemplate on SeoTemplates {
headerTemplate(lang: $lang)
h1Template(lang: $lang)
descriptionTemplate(lang: $lang)
ogTitleTemplate(lang: $lang)
ogDescriptionTemplate(lang: $lang)
}
fragment PlatformTypography on GamePlatformTypography {
fontFamily
fontSize
lineHeight
fontWeight
letterSpacing
}
fragment PlatformBannerConfig on BannerConfig {
enableWrapper
wrapperCountdown
frequency
refreshInterval
position
biddersConfig {
codeType
sizes
}
bidders {
key
adServer
params {
key
value
}
}
}
query PlatformConfiguration($lang: Lang) {
result: PlatformFetchGamePlatform {
__typename
... on Problem {
message
}
... on GamePlatform {
id
domain
apiUrl
platformUrl
mainPageId
showPrivacyConsentCheckbox
clickableTitlesForCollections
showBreadcrumbs
showPromoBlock
name(lang: $lang)
title(lang: $lang)
description(lang: $lang)
icon
fullIcon
favicon
supportedLanguages
openGameInSameTab
legalInfo {
privacyPolicyPageId
personalDataConsentPageId
privacyPolicyPageSlug(lang: $lang)
personalDataConsentPageSlug(lang: $lang)
companyLegalName(lang: $lang)
}
socialNetworks {
vk
facebook
twitter
telegram
discord
youtube
}
seoSettings {
ogTitle(lang: $lang)
ogDescription(lang: $lang)
ogImage(lang: $lang)
footerText(lang: $lang)
}
categories(lang: $lang) {
key
name
url
}
tags(lang: $lang) {
key
name
url
}
categoriesSeoTemplates {
...PlatformSeoTemplate
}
tagsSeoTemplates {
...PlatformSeoTemplate
}
collectionsSeoTemplates {
...PlatformSeoTemplate
}
gamesSeoTemplates {
...PlatformSeoTemplate
}
ymCounterId
ymCounterIds
gtagCounterId
mailRuCounterIds
liveInternetCounterIds
styles {
layout
header {
fullWidth
rounded
logoHeight
burgerIcon
}
footer {
isNeedToShowCustomFooter
}
aside {
style
isMonoColor
}
radius {
gameTiles
}
colors {
primary
contentBackground
accent
contentAccent
asideBackground
}
text {
fontSources {
family
weight
src
}
typography {
title1 {
...PlatformTypography
}
title2 {
...PlatformTypography
}
title3 {
...PlatformTypography
}
title4 {
...PlatformTypography
}
title5 {
...PlatformTypography
}
body {
...PlatformTypography
}
body2 {
...PlatformTypography
}
}
}
}
menus {
type
items {
type
entityId
name(lang: $lang)
url(lang: $lang)
icon(lang: $lang)
}
}
adsConfig {
id
adFoxOwnerId
advertonicUserId
adsenseClientId
configs {
web {
implementation
bidders {
id
key
adServer
adServerBidderId
cpmAdjustment
params {
key
type
}
}
banners {
type
enabled
enabledDesktop
bannerId
desktopBannerId
adServer
adServerDesktop
mobileConfig {
...PlatformBannerConfig
}
desktopConfig {
...PlatformBannerConfig
}
}
}
}
}
paymentsConfig {
id
configs {
web {
implementation
activeService
}
}
}
currency {
name(lang: $lang)
pluralisation(lang: $lang)
icon
code
precision
currencySpendUrl
separateCurrencySpendUrlEnabled
}
productsList {
count
items {
id
icon
tag
type
name(lang: $lang)
description(lang: $lang)
price(platform: PARTNER)
currency
currencySymbol
realCurrencyPrice(lang: $lang)
realCurrencyCode(lang: $lang)
realCurrencySymbol(lang: $lang)
benefits {
disableGameAds
disablePlatformAds
currencyAccrual
bonusCurrency
}
}
}
}
}
}
Переменные:
{
"lang": "RU"
}
Успешный результат начинается со следующей структуры; остальные выбранные ветки содержат меню и настройки монетизации:
{
"data": {
"result": {
"__typename": "GamePlatform",
"id": 42,
"domain": "games.example.com",
"apiUrl": "https://api.gamepush.com/gs/api/graphql",
"platformUrl": "https://games.example.com",
"mainPageId": "home",
"name": "Пример игровой площадки",
"supportedLanguages": ["EN", "RU"],
"styles": {
"layout": "PREMIUM",
"colors": {
"primary": "#7c3aed",
"contentBackground": "#ffffff",
"accent": "#f59e0b",
"contentAccent": "#111827",
"asideBackground": "#f3f4f6"
}
}
}
}
}
Применение ответа
- Используйте
styles, изображения и локализованные тексты для визуальной темы. - Используйте
apiUrlдля следующих запросов витрины, если он отличается от стандартного адреса. - Соберите шапку, сайдбар и футер из
menus: элементы сущностей маршрутизируйте поtypeиentityId, прямые ссылки — поurl. - Используйте
categoriesиtagsдля названий и ссылок на страницах категорий, тегов и игр. - Заполните базовые метатеги из
seoSettings. На маршрутах категорий, тегов, подборок и игр применяйте шаблоны соответствующих сущностей. - Инициализируйте только те счётчики аналитики, для которых вернулись настроенные значения, и учитывайте настроенный сценарий согласия. Общие требования к персональным данным описаны в разделе «Аналитика».
- Показывайте только включённые рекламные места и используйте реализацию из
adsConfig. При инициализации AdFox, Advertonic или AdSense передавайте публичные идентификаторы провайдеров из ответа. - Используйте
paymentsConfig,currencyиproductsListдля интерфейса покупок. Секреты платёжных систем в этом ответе не возвращаются. - Показывайте промоблок только при
showPromoBlock: true, а его содержимое получайте через API продвижения. - Получите
mainPageId, ID и slug юридических страниц через API страниц.
Общие принципы этих возможностей описаны в разделах «Реклама» и «Покупки». Эти разделы объясняют продуктовые возможности, а запрос выше остаётся источником специфичной для витрины конфигурации.