API
Данное описание является предварительным и может меняться. Все изменения будут отражены на данной странице. По всем вопросам "боевой" эксплуатации АПИ - просим связываться по телефону + 7 499 670-1111 (Александр)
Общие принципы
Работа с API производится по адресу https://amelkina.ru/api.php при помощи POST запросов по протоколу https
Запросы и ответы кодируются в utf-8
Запросы
Все параметры запросов размещаются в POST-переменных.
Двоичные данные (файлы) должны быть закодированы в base64
XML файлы уведомлений перед отправкой должны быть зашифрованы при помощи открытого ключа сертификата транспортного шифрования.
Любой запрос имеет как минимум два обязательных параметра:
- clientGUID - VARCHAR(128) - Уникальный ключ разработчика. Выдается по запросу конкретному разработчику. В случае обнаружения ДДОС атаки или иных "проблемных" запросов - ключ, с использованием которого была произведена данная атака - будет заблокирован и потребует замены. Ключ не привязан к конкретному пользователю (банку) и может использоваться разработчиком для автоматизации взаимодействия разных пользователей с сервисом.
- action - VARCHAR(128) - наименование выполняемой функции
Все остальные параметры зависят от выполняемой функции и описываются в соответствующих разделах.
Ответы
Ответы возвращаются в формате JSON в объекте с 4 обязательными полями:
- result - Результат выполнения функции. boolean. true - функция выполнена успешно.
- errorCode - Код ошибки при наличии. Зполняется только при result != true. Важно! код ошибки может быть равен нулю Это НЕ означает успешного выполнения, просто источник ошибки не имеет присвоенного кода ошибки.
- errorMessage - Текст ошибки при наличии. Заполняется только при result != true.
- data - Результат выполнения функции (если есть). В случае двоичных данных - кодируется в base64
Пример ответа сервера в случае ошибки:
{"result":false,"errorCode":-1,"errorMessage":"\u041d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430","data":null}
Пример ответа сервера в случае нормального выполнения:
{"result":true,"errorCode":null,"errorMessage":null,"data":777}
Функции
usersSignatureChallenge - Инициализация авторизации/регистрации посредством ЭП
Параметры: нет
Возвращаемое значение: {"key":"f90...17cb","random":"19e65...ad87"} - Идентификатор случайной строки и сама случайная строка.
Важно! Время жизни (TTL) выданной ключевой пары 2 минуты, поэтому данную функцию следует вызывать непосредственно перед подписыванием, после инициализации крипто-библиотек и т.п.
usersSignatureRegister - Регистрация посредством ЭП
Параметры:
key | VARCHAR(255) | Идентификатор случайной строки Key полученный с помощью функции usersSignatureChallenge() |
signature | BLOB | Отделенная подпись случайной строки полученной с помощью функции usersSignatureChallenge(). Должно быть закодировано в base64. |
VARCHAR(255) | E-mail пользователя | |
idRole | VARCHAR(16) | Роль пользователя. На данный момент должно всегда быть "bank" |
orgName | VARCHAR(255) | Полное наименование огранизации |
orgINN | VARCHAR(20) | ИНН огранизации |
orgKPP | VARCHAR(20) | КПП огранизации |
phoneNumber | VARCHAR(255) | Номер телефона |
phoneCode | VARCHAR(255) | Добавочный номер / контактное лицо |
Возвращаемое значение: ssid - VARCHAR(255) - идентификатор сессии.
Идентификатор сессии должен быть сохранен клиентом до окончания сеанса работы (сессии) для вызова всех остальных функций API.
usersSignatureLogin - Авторизация посредством ЭП
Параметры:
- key - VARCHAR(255) - Идентификатор случайной строки полученный с помощью функции usersSignatureChallenge()
- signature - BLOB - Отделенная подпись случайной строки полученной с помощью функции usersSignatureChallenge(). Должно быть закодировано в base64.
Возвращаемое значение: ssid - VARCHAR(255) - идентификатор сессии.
Идентификатор сессии должен быть сохранен клиентом до окончания работы для вызова всех остальных функций API.
usersSelectRowEx - Получить данные пользователя (включая баланс)
Параметры:- ssid - VARCHAR(255) - Идентификатор сессии полученный с помощью usersSignatureRegister(...) или usersLogin(...) или usersSignatureLogin (...)
usersLogout - Завершение рабочей сессии.
Параметры:- ssid - VARCHAR(255) - Идентификатор сессии полученный с помощью usersSignatureRegister(...) или usersLogin(...) или usersSignatureLogin (...)
pledgesInsert - Создание нового уведомления о залоге.
Параметры:
ssid | VARCHAR(255) | Идентификатор сессии полученный с помощью usersSignatureRegister(...) или usersLogin(...) или usersSignatureLogin (...) |
content | LONGBLOB | Содержимое уведомления о залоге (XML). Значение должно быть закодировано в base64 |
signature | TEXT | Подпись уведомления о залоге. Значение должно быть закодировано в base64 |
fileName | TEXT | задаваемый пользователем идентификатор |
Возвращаемое значение: idPledge - INT - Идентификатор созданного уведомления
pledgesSelect - Получение таблицы с данными уведомлений
Параметры:
ssid | VARCHAR(255) | Идентификатор сессии полученный с помощью usersSignatureRegister(...) или usersLogin(...) или usersSignatureLogin (...) |
idPledge | INT | Фильтр по коду уведомления. Игнорируется если не задан |
idNotificationStatus | INT | Фильтр по коду статуса. Игнорируется если не задан |
selectData | TINYINT(1) | Если равно 1 - будут выбраны поля content и signature. Если не задан или имеет другое значение, то в этих полях будет возвращено NULL. Экономит траффик при выборке списка, когда не требуется содержимое этих полей. |
selectReport | TINYINT(1) | Если равно 1 - будут выбраны поля ReportXML и ReportSIG. Если не задан или имеет другое значение, то в этих полях будет возвращено NULL. Экономит траффик при выборке списка, когда не требуется содержимое этих полей. |
limitOffset | INT | Индекс первой записи выборки (смещение в выражении LIMIT). Использутеся для постаничной выборки. |
limitCount | INT | Количество записей в выборке (количество в выражении LIMIT). Использутеся для постаничной выборки. |
fileName | TEXT | Фильтр по имени файла. Игнорируется если не задан |
Возвращаемое значение: JSON объект - Объект содержит поле data типа array of object содержащее данные и поле foundRows содержащее полное количество записей в выборке (результат SELECT FOUND_ROWS())
Данные отфильтрованы в соответствии с заданными параметрами и отсортированы по полю idPledge в обратном порядке (от новых к старым)
pledgesDelete - Инициировать процесс удаления уведомления
Параметры:
ssid | VARCHAR(255) | Идентификатор сессии полученный с помощью usersSignatureRegister(...) или usersLogin(...) или usersSignatureLogin (...) |
idPledge | INT | Код уведомления. |
Возвращаемое значение: Нет
Важно! Удаление возможно только для уведомлений со статусом 1 и 10
pledgesErrorsSelect - Получить таблицу ошибок уведомления
Параметры:- ssid - VARCHAR(255) - Идентификатор сессии полученный с помощью usersSignatureRegister(...) или usersLogin(...) или usersSignatureLogin (...)
- idPledge - INT - Код уведомления.
notificationStatusesSelect - Получить таблицу расшифровок кодов статуса уведомлений
Параметры: нет
Возвращаемое значение: array of object - Массив записей таблицы кодов статуса уведомлений
pledgeSigPersonChecksSelect - Получить таблицу результатов проверок подписи уведомления
Параметры:- ssid - VARCHAR(255) - Идентификатор сессии полученный с помощью usersSignatureRegister(...) или usersLogin(...) или usersSignatureLogin (...)
- idPledge - INT - Код уведомления.