ОБЩАЯ ИНФОРМАЦИЯ

Данный API предоставляет доступ к некоторой информации о картах Game-Keeper и позволяет проводить ряд операций. Этот API является ПО промежуточного слоя, не следует предоставлять к нему доступ конечному пользователю (владельцу карты), т.к. в API отсутствуют возможности аутентификации и авторизации.

Если запрос к API был обработан, API отвечает HTTP кодом 200 OK, и возвращает информацию в json следующего вида

{
  "data": null,
  "errors": []
}

data - запрашиваемые данные, зависят от запроса, 
errors - список ошибок, возникших при выполнении запроса. 
Успешность выполнения запроса определяется отсутствием ошибок.

Информация о карте

Запрос

GET 
/api2/cards
? [n=<номер карты>]

Ответ

Различные данные о карте.

Пример

{
    "errors": [],
    "data":{
        "card": 200,
        "bonus": 24,
        "bonusI": 0,
        "points": 11585.5,
        "moneyCash": 9903,
        "moneyBCard": 1658.5,
        "moneyCS": 0,
        "tickets": 0,
        "moneyAccum": 13498.5,
        "cardPrice": 0,
        "level": "Стандартный",
        "state": 1,
        "activation": "2018-02-15T20:13:52.0+03:00"
    }
}

История операций

Запрос

GET 
/api2/cards/history
? [n=<номер карты>]

Ответ

Последние 100 операций по карте.

Пример

{
  "errors": [],
  "data": [
    {
      "date": "2018-05-04T14:37:20.160+03:00",
      "name": "Возврат поплнения баланса (ОчкиД_ПК)",
      "value": -11,
      "u1code": "",
      "u2code": "ОчкиД_ПК"
    },
    {
      "date": "2018-05-04T14:37:20.157+03:00",
      "name": "Возврат поплнения баланса",
      "value": -11,
      "u1code": "Visa",
      "u2code": ""
    },
    {
      "date": "2018-04-12T14:43:50.847+03:00",
      "name": "Покупка очков",
      "value": 12,
      "u1code": "руб.",
      "u2code": ""
    },
    {
      "date": "2018-04-12T14:43:50.843+03:00",
      "name": "Покупка очков (ОчкиДеньги)",
      "value": 12,
      "u1code": "",
      "u2code": "ОчкиДеньги"
    }
  ]
}

Пополнение счета

Запрос

POST
/api2/cards/deposit
? [n=<номер карты>]
& [amount=<сумма пополнения>]
& [currid=<идентификатор валюты>]

Ответ

Содержит сумму бонусов, начисленную за пополнение, баланс карты после пополнения и номер операции пополнения в Game-Keeper. Этот номер используется при отмене операции.

Пример

{
  "errors": [],
  "data": {
    "orderNo": 67508,
    "points": 17847,
    "bonus": 0
  }
}

Отмена пополнения счета

Запрос

POST
/api2/cards/opercancel
? [opid=<номер операции>]

Ответ

Содержит успешность выполнения отмены.

Пример

{
  "errors": [],
  "data": null
}

Информация о владельце карты

Запрос

GET
/api2/cards//owner
? [n=<номер карты>]

Ответ

Различные данные о владельце карты.

{
    "errors": [],
    "data": {
        "card": 208,
        "first_name": "first",
        "last_name": "last",
        "middle_name": "m",
        "birthday": "1999-09-19T00:00:00.0+03:00",
        "gender": 0,
        "phone": "+71234567890",
        "email": "az@b.c",
        "address": "address",
        "mailing_consent": true
    }
}

Изменение информации о владельце карте

Запрос

POST
/api2/cards//owner
? [n=<номер карты>]

Данные о владельце в теле запроса в json.

{
    "first_name": "first",
    "last_name": "last",
    "middle_name": "m",
    "birthday": "1999-09-19T00:00:00.0+03:00",
    "gender": 0,
    "phone": "+71234567890",
    "email": "az@b.c",
    "address": "address",
    "mailing_consent": true
}

Пол: 0-женский, 1-мужской.

Телефон следует передавать строкой в виде последовательности цифр без разделителей предваряемой знаком +, если с номером телефона планируется работа через приложения Гейм-Кипер (касса, редактор и т.п.). Если номер телефона будет использоваться только через web api, то формат строки может быть любой. Корректность и существование номера телефона или e-mail не проверяются.

Ответ

Содержит успешность выполнения запроса.

Пример

{
  "errors": [],
  "data": null
}

Информация о совладельцах карты

Запрос

GET
/api2/cards//coowners
? [n=<номер карты>]

Ответ

Различные данные о совладельцах карты.

{
    "errors": [],
    "data": [
        {
            "id": 1,
            "name": "fish",
            "birthday": "2001-02-05T00:00:00.0+03:00",
            "gender": 1
        },
        {
            "id": 6,
            "name": "енот",
            "birthday": "2009-12-05T00:00:00.0+03:00",
            "gender": 1
        },
        {
            "id": 7,
            "name": "ушан",
            "birthday": "2015-12-05T00:00:00.0+03:00",
            "gender": 0
        }
    ]
}

Изменение информации о совладельце карте

Запрос

POST
/api2/cards//coowner
? [n=<номер карты>]
& [id=<"id" совладельца при обновлении>]

Данные о совладельце в теле запроса в json.

{
    "name": "ушанка",
    "birthday": "2004-12-05T00:00:00.0+03:00",
    "gender": 0
}

Пол: 0-женский, 1-мужской.

Ответ

Содержит успешность выполнения запроса.

Пример

{
  "errors": [],
  "data": null
}

ОБРАБОТКА ОШИБОК

Ошибка (элемент массива errors) имеет свойства: 
text - текст ошибки, 
app - код приложения, сгенерировавшего ошибку; при технических ошибках (ошибках подключения) указывает работоспособность какого компонента системы (связи между какими компонентами системы) следует проверять, восстанавливать.

Возможные значения: 
ApiSrv - сервер, обрабатывающий вызовы api 
ExtSrv - промежуточный сервер 
PosSrv - кассовый сервер 
Unknown

Примеры

{
    "errors": [
        {
            "app": "ApiSrv",
            "text": "gender: The field gender must be between 0 and 1."
        },
        {
            "app": "ApiSrv",
            "text": "first_name: The field first_name must be a string with a maximum length of 42."
        }
    ],
    "data": null
}

{
    "errors": [
        {
            "app": "ExtSrv",
            "text": "Socket Error # 10061\r\nConnection refused."
        }
    ],
    "data": null
}

{
    "errors": [
        {
            "app": "PosSrv",
            "text": "Карта не зарегистрирована."
        }
    ],
    "data": null
}