Подпись HTTP-запросов
Авторизация с помощью секретного токена и подписи
При обращении к API Платформы через HTTP предпочтительным способом авторизации является секретный токен.
Создавать новые токены можно в разделе "Настройки" личного кабинета:

Для авторизации используется цифровая подпись, формирующаяся по следующему алгоритму:
md5(params + token)
Где token
— Ваш секретный токен,
а params
— конкатенация пар "имя=значение",
отсортированных в алфавитном порядке по имени, где "имя" — это параметр запроса,
а "значение" — его значение.
В расчете учитываются все параметры запроса, кроме sign
.
Например, если существует активный секретный токен 2LsWvGkYYOjyPw3GWbp5L
,
и в запросе участвуют следующие параметры:
Параметр | Значение |
login | user |
sender | terasms.ru |
target | 71234567890 |
message | hello |
md5("login=usermessage=hellosender=terasms.rutarget=712345678902LsWvGkYYOjyPw3GWbp5L")
Обратите внимание, что все параметры запроса при формировании подписи отсортированы в алфавитном порядке по имени.
Запрос в таком случае будет выглядеть следующим образом:
https://auth.terasms.ru/outbox/send?login=user&sender=terasms.ru&target=71234567890&message=hello&sign=10bf3c359f70f3d38e8162beae1d6c87
При формировании запроса в форматах JSON и XML логика формирования подписи аналогична.
В случае если тело запроса имеет несколько уровней вложенности, т.е. значения параметров сами являются массивами или ассоциативными массивами, то имена (ключи) для таких параметров игнорируются, а из значения, которое является вложенным массивом, строка для конкатенации формируется по изначальному алгоритму (рекурсивно).
Примеры формирования подписи JSON-запроса
Запрос:
> POST https://auth.terasms.ru/outbox/getstatus/json
{
"login": "user",
"message_ids": [11222, 11223]
}
Токен:
2LsWvGkYYOjyPw3GWbp5L
Формирование подписи:
md5("login=user0=112221=112232LsWvGkYYOjyPw3GWbp5L")
Обратите внимание, что имя параметра message_ids
в формировании подписи не участвует.
Сформированный запрос:
> POST https://auth.terasms.ru/outbox/getstatus/json
{
"login": "user",
"message_ids": [11222, 11223],
"sign": "803cbc83bf0112e8d942909c18635d40"
}
Запрос:
> POST https://auth.terasms.ru/outbox/msend_json
{
"login": "user",
"smsPackage": [
{
"target": 78002223344,
"sender": "Info",
"message": "foo"
},
{
"target": 78002223345,
"sender": "Info",
"message": "bar"
}
]
}
Токен:
2LsWvGkYYOjyPw3GWbp5L
Формирование подписи:
md5("login=usermessage=foosender=Infotarget=78002223344message=barsender=Infotarget=780022233452LsWvGkYYOjyPw3GWbp5L")
Обратите внимание, что имя параметра smsPackage
в формировании подписи не участвует.
Сформированный запрос:
> POST https://auth.terasms.ru/outbox/msend_json
{
"login": "user",
"smsPackage": [
{
"target": 78002223344,
"sender": "Info",
"message": "foo"
},
{
"target": 78002223345,
"sender": "Info",
"message": "bar"
}
],
"sign": "4f94d78b216031eb6797bdd35f2daff1"
}
Авторизация с помощью логина и пароля
При формировании запроса Вы также можете использовать Ваш логин и пароль на Платформе. Логин передаётся в виде параметра login
, пароль
в виде параметра password
.
Пример запроса:
https://auth.terasms.ru/outbox/send?login=user&password=secret&sender=terasms.ru&target=71234567890&message=hello