Platform HTTP API

Формат взаимодействия

Запросы к API выполняются по протоколу HTTP. Входные и выходные структуры данных передаются в теле запроса и ответа в формате JSON.

Авторизация

Большинство вызовов HTTP API требуют процедур аутентификации и авторизации, которые связывают вызовы API с необходимыми приложениями в Вашей учетной записи.

Для этого каждый запрос должен содержать заголовок, либо аргумент X-Authorization с токеном соединения в формате AccessKey token,

Например заголовком:
POST /apps/activate HTTP/1.1
Host: api.unibell.ru
X-Authorization: AccessKey d8ac9959r12b43545da9034,

либо параметром:
POST api.unibell.ru/apps/activate?X-Authorization=AccessKey d8ac9959r12b43545da9034

Формат ответов

JSON схема любого ответа содержит параметр status типа string со следующими значениями:

Значение statusОписание
okБез ошибок
invalidAccessKeyErrorНеверный AccessKey
requiredJsonErrorВ теле запроса требуется JSON
invalidSchemeErrorНеверная схема JSON
invalidDataErrorОшибочные входные данные
prohibitedForAppErrorЗапрещено для данного приложения
prohibitedForServiceErrorЗапрещено для данной услуги
rpcErrorКоммуникационная ошибка

Например:

    {
        …
        “status”: “ok”
        ....
    }

Некоторые GET запросы поддерживают постраничный вывод. Для управления постраничным выводом используются следующие параметры:

ПараметрОписание
pageЗапрашиваемый номер страницы
per_pageКоличество элементов на странице
disable_paginationОтключить постраничный вывод

Например,

GET api.unibell.ru/media?page=1&per_page=10

В ответе на такой запрос будет содержаться json объект pagination:

    {
        …
        "pagination": {
            "totalItems": 2,
            "currentPage": 1,
            "totalPages": 1
        }
        ....
    }

где:

ПараметрОписание
totalItemsОбщее количество элементов
currentPageПорядковый номер страницы
totalPagesОбщее количество страниц

Формат запросов

Управление медиатекой

Медиатека — иерархическое хранилище различных файлов пользователя, напоминающее файловую систему. Объектами хранения медиатеки являются файлы и папки. Файлы могут быть разбиты по папкам. Доступ к медиатеке осуществляется с помощью ЛК или данного API.

ПараметрОписание
totalItemsОбщее количество элементов
currentPageПорядковый номер страницы
totalPagesОбщее количество страниц

Получение списка всех объектов

Запрос

GET api.unibell.ru/media

Ответ

    {
        "status":  "ok",
        "pagination": {
            "totalItems":  2,
            "currentPage":  1,
            "totalPages":  1
        },
        "media": [
            {
                "createdDateTime":  "2020-02-12 18:09:10",
                "id":  65,
                "name":  "Гимны",
                "isFolder":  1
            },
            {
                "createdDateTime":  "2020-03-04 13:17:47",
                "id":  74,
                "name":  такой молодой.mp3",
                "isFolder":  0
            }
        ]
    }

media — массив объектов медиатеки содержащие следующие параметры:

ПараметрОписание
idУникальный идентификатор медиаресурса
nameНаименование
createdDateTimeДата\время загрузки
isFolderПризнак того, что данный объект является папкой. 1 — да, 0 — нет

Получение конкретного объекта

Запрос

GET api.unibell.ru/media/id, где id — уникальный идентификатор медиаресурса

Ответ

Для папок возвращается список вложенных файлов:

    {
        "status": "ok",
        "pagination": {
            "totalPages": 1,
            "totalItems": 2,
            "currentPage": 1
        },
        "media": [
            {
                "isFolder": 0,
                "name": "Гимн пионэров.mp3",
                "createdDateTime": "2020-02-12 18:19:05",
                "id": 67
            },
            {
                "isFolder": 0,
                "name": "Гимн СССР.mp3",
                "createdDateTime": "2020-02-12 18:19:18",
                "id": 68
            }
        ]
    } 

Для файлов возвращается запрашиваемый файл.

Создание папки

Запрос

POST api.unibell.ru/media

    {
        "name": "asdasd"
    }
ПараметрОписание
nameНаименование папки

Ответ

   {
        "status": "ok",
        "media": {
            "name": "asdasd2",
            "createdDateTime": "2020-04-06 18:44:45",
            "isFolder": 1,
            "id": 111
        }
    } 

Загрузка файла

Запрос

POST api.unibell.ru/media — помещает файл в корневую папку
POST api.unibell.ru/media/folder_id — помещает файл в указанную папку

Файл передается в теле запроса посредством Content-Type: multipart/form-data

Ответ

    {
        "status": "ok",
        "media": {
            "name": "test",
            "createdDateTime": "2020-04-06 18:44:45",
            "isFolder": 0,
            "id": 112
        }
    }

Переименование объекта

Запрос

PUT api.unibell.ru/media/id, где id — уникальный идентификатор медиаресурса

    {
        "name": "asdasd"
    }

Ответ

    {
        "status": "ok",
        "media": {
            "name": "asdasd",
            "createdDateTime": "2020-04-06 18:44:45",
            "isFolder": 1,
            "id": 111
        }
    } 

Удаление объекта

Запрос

DELETE api.unibell.ru/media/id, где id — уникальный идентификатор медиаресурса

Ответ

    {
        “status”: “ok”
    }

Управление приложениями

Активация приложения

Выполняет активацию заранее созданного приложения.

Запрос

POST api.unibell.ru/apps/activate

 {
"reference": "123456789",
"sourceAddr": "XXXXXXXXXXX",
"destAddr": "XXXXXXXXXXX",
"sex": 1,
"volume": 1,
"language": "xx-XX",
"rate": 1,
"scenarioData": "text=Привет, как дела?"
}
ПараметрТипОписание
referencestringПользовательский параметр с которым будет вызван callback по результатам выполнения приложения
sourceAddrstringИсходящий номер
destAddrstringНомер телефона получателя
scenarioDatastringПеременные сценария для данного приложения. Представляет из себя набор пар параметр=значение, разделенных знаком — &.
sexintПол. 0 — женский, 1 — мужской
volumeintГромкость голоса (0-2)
rateintСкорость проговаривания текста (0-4). (0 — самая медленная)
languagestringЯзык синтеза. Для русского этот параметр опускается.
Доступные языки:
en-US — Английский (США)
en-IN — Английский (Индия)
en-IE — Английский (Ирландия)
en-UA — Английский (Австралия)
en-GB-WLS — Английский (Уэльс)
en-NZ — Английский (Новая Зеландия)
en-ZA — Английский (Южная Африка)
ar-AE — Арабский (Персидский залив)
nl-NL — Голландский
nl-BE — Голландский (Бельгия)
da-DK — Датский
is-IS — Исландский
es-ES — Испанский (Европа)
es-US — Испанский (США)
es-MX — Испанский (Мексика)
it-IT — Итальянский
ca-ES — Каталанский
cmn-CN — Китайский (Северный Китай)
yue-CN — Китайский (Кантон/Гуанчжоу)
ko-KR — Корейский
de-DE — Немецкий
de-AT — Немецкий (Австралия)
nb-NO — Норвежский
pl-PL — Польский
pt-PT — Португальский (Европа)
pt-BR — Португальский (Бразилия)
ro-RO — Румынский
ru-RU — Русский
tr-TR — Турецкий
cy-GB — Валлийский
fi-FI — Финский
fr-FR — Французский
fi-CA — Французский (Канада)
fr-BE — Французский (Бельгия)
sv-SE — Шведский
ja-JP — Японский

Ответ

    {
        “status”: “ok”
    }

При исполнении приложения могут быть настроены callback по протоколу HTTP/HTTPS. Callback настраивают на два вида события — начало исполнения(Start callback) и завершение исполнения(End callback). Поддерживается Basic авторизация. Параметры передаются в URL запроса.

Например,
GET www.host.ru?type=startCallback&reference=324234

Параметры передаваемые в startCallback:

ПараметрОписание
referenceПользовательский параметр переданный в запросе активации
typeТип callback запроса, в данном случае — startCallback

Параметры передаваемые в endCallback:

ПараметрОписание
referenceПользовательский параметр переданный в запросе активации
typeТип callback запроса, в данном случае — endCallback
stateРезультат выполнения приложения
errorКод ошибки, либо 0 — в случае успешного выполнения
durationДлительность вызова

где, state — результат выполнения сценария:

stateЗначениеОписание
STATE_OK2Приложение выполнено успешно
STATE_ERR5Ошибка в результате выполнения

error — код ошибки:

errorЗначениеОписание
ERR_NO_ANSWER16Абонент не взял трубку, попытки дозвона исчерпаны
ERR_BUSY17Абонент занят, попытки дозвона исчерпаны
ERR_ALERTING19Абонент не доступен
ERR_CONGESTION34Перегрузка каналов связи
ERR_PLAY1001Ошибка воспроизведения файла, файл не найден, неверный формат
ERR_TTS1002, 1017Ошибка TTS преобразования
ERR_ASR1003Ошибка ASR преобразования

Проверка баланса

Запрос

GET api.unibell.ru/balance

Выводит в формате JSON лицевой счет и его баланс. Лицевой счет отображается тот, на котором находится приложение, ключ от которого указан в авторизации запроса

Ответ

     {
        "personalAccountId": "0000000000",
        "balance": "100.0"
     }
На этой странице