Notell API Docs
English

Интеграция

Запуск игры

Запуск игры создаёт сессию игрока и возвращает ссылку на клиент игры. Этот метод нужен для каждого игрока, открывающего игру.

Режимы#

gametype определяет, как оплачивается сессия:

  • "demo" — режим с кошельком: игра идёт на ваш кошелёк через колбэки кошелька. Значение называется demo по историческим причинам.
  • "fun" — демо-режим (поведение описано в разделе Демо-режим): бесплатная игра на изолированном демо-кошельке. Ваш кошелёк не вызывается, в отчёты ничего не попадает.

Любое другое значение отклоняется с REAL_MODE_DISABLED.

POST /playGame.do#

POST/playGame.do

Создаёт сессию (или возвращает существующую при незавершённом раунде) и ссылку для открытия в браузере игрока.

Request#

curl
curl -X POST https://notell-api.com/playGame.do \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: launch-player-1024-0001' \
  -d '{"provider":"own","partner":"demo-casino","api_key":"YOUR_API_KEY","player_id":"player-1024","symbol":"gates-of-olympus","currency":"EUR","gametype":"demo","lang":"de","client_platform":"mobile"}'
JSON
{
  "provider": "own",
  "partner": "demo-casino",
  "api_key": "YOUR_API_KEY",
  "player_id": "player-1024",
  "symbol": "gates-of-olympus",
  "currency": "EUR",
  "gametype": "demo",
  "lang": "de",
  "client_platform": "mobile"
}
JSON (демо-режим)
{
  "provider": "own",
  "partner": "demo-casino",
  "api_key": "YOUR_API_KEY",
  "symbol": "gates-of-olympus",
  "currency": "EUR",
  "gametype": "fun",
  "demo_balance": "100000.00",
  "lang": "en"
}

Необязательный заголовок: Idempotency-Key (Соглашения).

ПолеТипОбязательноОписание
providerstringдаВсегда "own".
partnerstringдаИдентификатор вашего проекта.
api_keystringдаAPI-ключ вашего проекта.
player_idstringс gametype "demo"Ваш идентификатор игрока, 1–128 печатных ASCII-символов. С "fun" необязателен и лишь определяет демо-кошелёк.
symbolstringдаИдентификатор игры: game_id из каталога или списка игр.
currencystringдаОдин из 157 фиатных кодов ISO 4217 в верхнем регистре (Валюты). Криптовалюты отклоняются.
gametypeenumда"demo" (режим с кошельком) или "fun" (демо-режим).
langstringнетСтандартный код языка, например en, de, pt-BR, zh-Hant (Языки). По умолчанию: язык проекта по умолчанию, он должен поддерживаться игрой, иначе UNSUPPORTED_LANGUAGE.
client_platformenumнетdesktop или mobile. По умолчанию: desktop. Выбирает сборку клиента игр Pragmatic Play; на других провайдеров не влияет.
regionenumнетRU или NONE. Принимается для совместимости; сессию не меняет.
demo_balancemoneyнетТолько с gametype "fun": начальный демо-баланс, 1.00–10 000 000.00, десятичная строка или число не более чем с двумя знаками. По умолчанию: 100000.00.
demo_resetbooleanнетТолько с gametype "fun" и player_id: пополнить демо-кошелёк этого игрока до demo_balance при данном запуске.

Любое другое поле приводит к INVALID_REQUEST; устаревшее поле freespins отклоняется с PROMO_UNSUPPORTED, используйте фриспины через /gameActions.do. Параметров лобби или URL возврата нет: возврат на ваш сайт организуйте на своей странице вокруг игры.

Response#

json
{
  "status": "ok",
  "link": "https://notell-api.com/gs2c/html5Game.do?symbol=vs20olympgate&mgckey=4c9e1f0a7b3d58e2a6c4d09f13b87e5a2d6f40c8b1e97a35d0f2c64b8e1a93d7",
  "meta": {
    "session_id": "9d0c3f7e-41b8-4a52-9c0e-6d3f5a7b8c21",
    "currency": "EUR",
    "language": "de"
  }
}
ПолеТипОписание
statusstring"ok".
linkstringURL для открытия в браузере игрока (или в iframe). Вид зависит от игры: считайте его непрозрачным. Содержит токен сессии: передавайте только этому игроку и не логируйте.
meta.session_idstringИдентификатор сессии; он же встречается в колбэках вашего кошелька.
meta.currencystringВалюта сессии.
meta.languagestringСтандартный код языка сессии.
meta.gametypestring"fun" только в демо-режиме.

meta содержит и информационные поля о сборке игры; неизвестные игнорируйте.

Errors#

КодHTTPКогда
UNAUTHORIZED401Неизвестный partner или неверный api_key.
INVALID_REQUEST400Поле отсутствует или некорректно: неизвестное поле, неверная currency, пустой player_id или длиннее 128, неверные client_platform или region, demo_reset не boolean, demo_balance / demo_reset с gametype "demo".
REAL_MODE_DISABLED400gametype не равен ни demo, ни fun.
UNSUPPORTED_GAME404symbol не указан или отсутствует в каталоге.
PROMO_UNSUPPORTED400Передано устаревшее поле freespins.
INVALID_IDEMPOTENCY_KEY400Некорректный Idempotency-Key.
IDEMPOTENCY_CONFLICT400Тот же ключ использован с другим телом.
UNSUPPORTED_LANGUAGE400lang некорректен или не поддерживается игрой (также для языка проекта по умолчанию, если lang не указан).
INVALID_DEMO_BALANCE400demo_balance вне диапазона 1.00–10 000 000.00 или более чем с двумя знаками.
DEMO_UNAVAILABLE503Демо-режим не подготовлен на этом сервере.
ROUND_IN_PROGRESS400Незавершённый раунд этого игрока в этой игре идёт в другой валюте.
BALANCE_UNAVAILABLE400Ваш кошелёк ответил на session_info со "status":"error".
CALLBACK_HTTP_ERROR400Ваш кошелёк ответил на session_info HTTP-статусом не 2xx.
INVALID_CALLBACK_RESPONSE400Ответ на session_info недопустим (правила ответа кошелька).
WALLET_IDENTITY_MISMATCH400Сохранённые настройки кошелька проекта (URL колбэка, флаг идемпотентного кошелька) не совпадают с конфигурацией платформы; обратитесь к менеджеру.
REQUEST_FAILED400Некорректный JSON, отсутствующий или неподдерживаемый тип содержимого, таймаут или сбой соединения с кошельком. Тело больше 128 КиБ до API не доходит: веб-сервер отвечает HTTP 413.
RATE_LIMITED429Превышена квота запуска (Соглашения).

Что происходит при запуске#

  1. Проверяется ключ и валидируется тело.
  2. В режиме с кошельком платформа вызывает ваш кошелёк с session_info для игрока. Если кошелёк не ответил успешно, запуск завершается одним из кодов кошелька выше, сессия не создаётся. В демо-режиме вместо этого используется изолированный демо-кошелёк.
  3. Сессия сохраняется (истекает через 2 часа после создания), и возвращается ссылка.

Повторный запуск и незавершённые раунды#

  • Игрок с незавершённым раундом в той же игре всегда продолжает его: запуск возвращает ссылку на сессию, которой принадлежит раунд (истёкшая сессия возобновляется с новым токеном и сроком), и session_info не отправляется.
  • Если вы запускаете игру на другом языке, пока раунд не завершён, сессия переключается на новый язык.
  • Если незавершённый раунд идёт в другой валюте, запуск отвечает ROUND_IN_PROGRESS; запускайте в исходной валюте.
  • Повтор вызова с тем же Idempotency-Key и телом возвращает тот же ответ.

См. также#

Документация для операторов и интеграторов.Платформа TEST_ONLY: невыводимые единицы, реальные платежи не используются.