Документация SMS API (формат JSON) version 2.0
https://routee.sayqal.uz
Краткое описание
Взаимодействие с SMS API OOO "Sayqal Solutions" осуществляется по протоколу HTTP в теле формат JSON.
Postman collection и заметка как сгенерировать TOKEN и ПРИМЕРЫ
Отправка SMS
Запрос на отправку SMS с одним номером получателя.
POST запрос на https://routee.sayqal.uz/sms/TransmitSMS
post /sms/TransmitSMS
Запрос на отправку SMS с одним номером получателя.
POST запрос на https://routee.sayqal.uz/sms/TransmitSMS
Body
Media type: application/json
Type: object
Properties- utime: required(integer)
Текущий (системный) UNIX timeStamp.
Используется только в генерации TOKEN-а.Example:
1710160313
- username: required(string)
User Name партнера
- service: required(object)
Информация о сервисе
- service: required(integer)
Идентификационный номер предоставляемой услуги
- numbera: (string)
Номер услуги (1515, 6670 итд)
- nickname: (string)
Ник (Альфа номер) отправителя
- mclass: (integer)
Accepts values between 0 and 3, for Message Class 0 to 3, A value of 0 sends the message directly to display, 1 sends to mobile, 2 to SIM and 3 to SIM toolkit
- service: required(integer)
- message: required(object)
SMS сообщения
- smsid: required(string)
Уникальный идентификатор для каждого СМС в системе партнера
- phone: required(string - pattern: 998YYХХХХХХХ)
Номер абонента получателя (в международном формате 998981250765). Абоненты РУз
- text: required(string)
Текст СМС сообщения. Длина до 918 символов когда все символы в латинице и до 938 символов когда в тексте присуствует хотя бы один символ не в латинице. Длинный текст разбиваеться по частям:
- по 153 символов если длина текста больше 160 символов и если все символы в латинице (из таблицы ASCII)
- по 67 символов если длина текста больше 70 символов и если текст на русском (в UNICODE-е)
счет выставляется на каждый часть (СМС) отдельно
- validityTime: (string - default: sysdate + 24 часа - pattern: yyyy-mm-dd hh24:mi:ss)
Срок жизни
Example:
2024-03-12 17:31:53
- smsid: required(string)
Example:
{
"utime":1571347689,
"username":"test",
"service":{
"service":1
},
"message":{
"smsid":101,
"phone":"998981250765",
"text":"test text"
}
}
HTTP status code 200
Body
Media type: application/json
Type: object
Properties- transactionid: required(integer)
Уникальный идентификатор для каждого СМС в системе Sayqal Solutions
- smsid: required(string)
Уникальный идентификатор для каждого СМС в системе партнера, переданный в запросе
- parts: required(integer)
Количество СМС. Длинные тексты СМС деляться на несколько СМС, смотрите описание message.text
Example:
{
"transactionid":"6988790",
"smsid":"101",
"parts":1
}
HTTP status code 400
При ошибке
Body
Media type: application/json
Type: object
Properties- errorCode: required(integer)
Статус (код ошибки) транзакции
- errorMsg: required(string)
Сообщение об ошибке
Example:
{
"errorCode":110,
"errMsg":"INVALID PARAM. Incorrect value of \"username\""
}
HTTP status code 403
При ошибке в TOKEN
Secured by TransmitSMS
Headers
- X-Access-Token: required(string)
X-Access-Token: c7ee559506c1c07694bec475a6d508e7
ТОКЕН - создаеться следующему способу (Пример в PHP):
function generateTransmitAccessToken($userName, $secretKey, $utime) { $Access = "TransmitSMS {$userName} {$secretKey} {$utime}"; return md5($Access); }
HTTP status code 403
Bad access token.
Групповая отправка SMS
Запрос на отправку SMS на несколько (до 100) номеров получателей.
POST запрос на https://routee.sayqal.uz/sms/MulticastSMS
post /sms/MulticastSMS
Запрос на отправку SMS на несколько (до 100) номеров получателей.
POST запрос на https://routee.sayqal.uz/sms/MulticastSMS
Body
Media type: application/json
Type: object
Properties- utime: required(integer)
Текущий (системный) UNIX timeStamp.
Используется только в генерации TOKEN-а.Example:
1710160313
- username: required(string)
User Name партнера
- service: required(object)
Информация о сервисе
- service: required(integer)
Идентификационный номер предоставляемой услуги. На данном методе (/sms/MulticastSMS) используется индентификаторы услуг с низким приоритетом. Например 3 или 4.
- numbera: (string)
Номер услуги (1515, 6670 итд)
- nickname: (string)
Ник (Альфа номер) отправителя
- mclass: (integer)
Accepts values between 0 and 3, for Message Class 0 to 3, A value of 0 sends the message directly to display, 1 sends to mobile, 2 to SIM and 3 to SIM toolkit
- service: required(integer)
- settings: required(object)
Настройки
- skiperrors: (one of yes, no, y, n, 1, 0 - default: no)
Этот параметр указывает, что процесс должен пропустить ошибки и продолжить выполнение. Пропускаеться только те ошибки связанные с номерами из массива СМС получателей, и не влияет на глобальные ошибки.
- textsource: required(one of text, defaulttext, templatetext, templateid)
Источник текста СМС, определяет в каком параметре запроса должен быть указан текст СМС. Принимает одно из следующих значений:
- text - Для каждого номера из массива СМС получателей свой уникалный текст (параметр запроса - message.text)
- defaulttext - Текст общый для всех номеров из массива СМС получателей (параметр запроса - settings.defaulttext)
- templatetext - Текст общый по шаблону для всех номеров из массива СМС получателей (параметр запроса - settings.templatetext)
- templateid - Текст общый по идентификатору шаблона для всех номеров из массива СМС получателей (параметр запроса - settings.templateid).
- defaulttext: (string)
Когда источник текста указан settings.textSource = defaultText, то этот параметр являеться объязателным.
- templatetext: (string)
Когда источник текста указан settings.textSource = templatetext, то этот параметр являеться объязателным. Смотрите описание парааметра запроса message.variables.
- templateid: (integer)
Когда источник текста указан settings.textSource = templateid, то этот параметр являеться объязателным. Шаблон идентифицируеться в персональном кабинете. Смотрите описание парааметра запроса message.variables.
- defaultvalidityTime: (string - default: sysdate + 24 часа - pattern: yyyy-mm-dd hh24:mi:ss)
Срок жизни по умолчанию.
Example:
2024-03-12 17:31:53
- skiperrors: (one of yes, no, y, n, 1, 0 - default: no)
- messages: required(array of message - minItems: 1 - maxItems: 100)
Массив номеров СМС получателей.
Items: message
- smsid: required(string)
Уникальный идентификатор для каждого СМС в системе партнера
- phone: required(string - pattern: 998YYХХХХХХХ)
Номер абонента получателя (в международном формате 998981250765). Абоненты РУз
- text: (string)
Текст СМС сообщения. Длина до 918 символов когда все символы в латинице и до 938 символов когда в тексте присуствует хотя бы один символ не в латинице. Длинный текст разбиваеться по частям:
- по 153 символов если длина текста больше 160 символов и если все символы в латинице (из таблицы ASCII)
- по 67 символов если длина текста больше 70 символов и если текст на русском (в UNICODE-е)
счет выставляется на каждый часть (СМС) отдельно
- validityTime: (string - default: sysdate + 24 часа - pattern: yyyy-mm-dd hh24:mi:ss)
Срок жизни, если не указан значение этого параметра, то 2 вида развития событий
- Срок жизни = settings.defaultvalidityTime - если указано знечения параметра settings.defaultvalidityTime
- Срок жизни = default значению - если не указано знечения параметра settings.defaultvalidityTime
Example:
2024-03-12 17:31:53
- variables: (object)
Значении параметров шаблона. Когда источник текста (settings.textSource) указан templatetext или templateid, то этот параметр (объект) являеться объязателным.
Значении параметров шаблона указывается как обычный элемент объекта: "PARAM1": "VALUE1".
Сами параметры шаблона в тексте шаблона указывается врутри фигурных скобок, например: {PARAM1}.
Текст шаблона для примера:
Уважаемый(ая) {FIO}, оплатите свой долг в размере {DOLG} сум в течении {OTSROCHKA} дня.Example:
{ "FIO": "Иванов Иван Иванович", "DOLG": "123 456.78", "OTSROCHKA": "3" }
- smsid: required(string)
Examples:
Вариант №1 - textsource = text:
{
"utime": 1710160700,
"username": "test",
"service": {
"service": 4
},
"settings": {
"textsource": "text"
},
"messages": [
{
"smsid": 101,
"phone": "998981250765",
"text": "test text 0765"
},
{
"smsid": 102,
"phone": "998981250795",
"text": "test text 0795"
}
]
}
Вариант №2 - textsource = defaulttext:
{
"utime": 1710160700,
"username": "test",
"service": {
"service": 4
},
"settings": {
"textsource": "defaulttext",
"defaulttext": "test text for all"
},
"messages": [
{
"smsid": 101,
"phone": "998981250765"
},
{
"smsid": 102,
"phone": "998981250795"
}
]
}
Вариант №3 - textsource = templatetext:
{
"utime": 1710160700,
"username": "test",
"service": {
"service": 4
},
"settings": {
"textsource": "templatetext",
"templatetext": "Уважаемый(ая) {FIO}, оплатите свой долг в размере {DOLG} сум в течении {OTSROCHKA} дня."
},
"messages": [
{
"smsid": 101,
"phone": "998981250765",
"variables": {
"FIO": "Иванов Иван Иванович",
"DOLG": "123 456.78",
"OTSROCHKA": "3"
}
}
]
}
HTTP status code 200
Body
Media type: application/json
Type: object
Properties- success: required(array of messageSuccess)
Успешно приняты
Items: messageSuccess
- transactionid: required(integer)
Уникальный идентификатор для каждого СМС в системе Sayqal Solutions
- smsid: required(string)
Уникальный идентификатор для каждого СМС в системе партнера
- parts: required(integer)
Количество СМС. Длинные тексты СМС деляться на несколько СМС, смотрите описание message.text
- transactionid: required(integer)
- errors: (array of messageError)
Ошибка при обработке, когда settings.skiperrors = yes
Items: messageError
- errorCode: required(integer)
Статус (код ошибки) транзакции
- errorMsg: required(string)
Сообщение об ошибке
- smsid: required(string)
Уникальный идентификатор для каждого СМС в системе партнера
- phone: required(string - pattern: 998YYХХХХХХХ)
Номер абонента получателя (в международном формате 998981250765). Абоненты РУз
- errorCode: required(integer)
Example:
{
"success": [
{
"transactionid": "1349549962",
"smsid": "101",
"parts": "1"
}
],
"errors": [
{
"errorCode": 117,
"errMsg": "INVALID PARAM. Incorrect value of \"text\"",
"smsid": 102,
"phone": "981250795"
}
]
}
HTTP status code 400
При ошибке
Body
Media type: application/json
Type: object
Properties- errorCode: required(integer)
Статус (код ошибки) транзакции
- errorMsg: required(string)
Сообщение об ошибке
Example:
{
"errorCode":110,
"errMsg":"INVALID PARAM. Incorrect value of \"username\""
}
HTTP status code 403
При ошибке в TOKEN
Secured by MulticastSMS
Headers
- X-Access-Token: required(string)
X-Access-Token: c7ee559506c1c07694bec475a6d508e7
ТОКЕН - создаеться следующему способу (Пример в PHP):
function generateTransmitAccessToken($userName, $secretKey, $utime) { $Access = "MulticastSMS {$userName} {$secretKey} {$utime}"; return md5($Access); }
HTTP status code 403
Bad access token.
Получение статуса (состояние) SMS
Запрос для получение статуса (информацию о последном состоянии SMS сообщения) SMS.
POST запрос на https://routee.sayqal.uz/sms/StatusSMS
post /sms/StatusSMS
Запрос для получение статуса (информацию о последном состоянии SMS сообщения) SMS.
POST запрос на https://routee.sayqal.uz/sms/StatusSMS
Body
Media type: application/json
Type: object
Properties- utime: required(integer)
Текущий (системный) UNIX timeStamp.
Используется только в генерации TOKEN-а.Example:
1710160313
- username: required(string)
User Name партнера
- transactionid: required(integer)
Уникальный идентификатор в системе Sayqal Solutions (из ответа TransmitSMS)
- smsid: required(string)
Уникальный идентификатор в системе партнера
Example:
{
"utime":1571373906,
"username":"test",
"transactionid":6988790,
"smsid":101
}
HTTP status code 200
Статус (состояния) SMS сообщения
Body
Media type: application/json
Type: object
Properties- smsid: required(string)
Уникальный идентификатор для каждого СМС в системе партнера
- status: required(integer)
Статус (состояние) этого СМС.
- 0 - DELIVERED (доставлено)
- 1 - UNDELIVERED (не доставлено)
- 2 - EXPIRED (срок действия истек)
- 3 - ENROUTE (в обработке)
- 4 - ACCEPTED (принят СМС сервером, ожидается отчет о доставке)
- 5 - UNKNOWN (системная ошибка)
- statusdate: required(string - pattern: yyyy-mm-dd hh24:mi:ss)
Время изменение статуса СМС
- parts: required(integer)
Количество СМС. Длинные тексты СМС деляться на несколько СМС
Example:
{
"smsid":101,
"status":0,
"statusdate":"2024-03-18 19:00:00",
"parts": 1
}
HTTP status code 400
При ошибке
Body
Media type: application/json
Type: object
Properties- errorCode: required(integer)
Статус (код ошибки) транзакции
- errorMsg: required(string)
Сообщение об ошибке
Example:
{
"errorCode": 108,
"errMsg": "Data not found in DB"
}
HTTP status code 403
При ошибке в TOKEN
Secured by StatusSMS
Headers
- X-Access-Token: required(string)
X-Access-Token: c7ee559506c1c07694bec475a6d508e7
ТОКЕН - создаеться следующему способу (Пример в PHP):
function generateStatusAccessToken($userName, $secretKey, $utime) { $Access = "StatusSMS {$userName} {$secretKey} {$utime}"; return md5($Access); }
HTTP status code 403
Bad access token.
Получение детализации SMS
Запрос для получение детализации SMS по номеру получателя.
POST запрос на https://routee.sayqal.uz/sms/DetalSMS
post /sms/DetalSMS
Запрос для получение детализации SMS по номеру получателя.
POST запрос на https://routee.sayqal.uz/sms/DetalSMS
Body
Media type: application/json
Type: object
Properties- utime: required(integer)
Текущий (системный) UNIX timeStamp.
Используется только в генерации TOKEN-а.Example:
1710160313
- username: required(string)
User Name партнера
- phone: required(string - pattern: 998YYХХХХХХХ)
Номер абонента получателя (в международном формате 998981250765). Абоненты РУз
- datebegin: required(string - pattern: yyyy-mm-dd hh24:mi:ss)
начало периода
- dateend: required(string - pattern: yyyy-mm-dd hh24:mi:ss)
конец периода
Example:
{
"utime":1571723785,
"username":"test",
"phone":"998981250765",
"datebegin":"2024-03-18 00:00:00",
"dateend":"2024-03-18 23:59:59"
}
HTTP status code 200
Список (массив) SMS за период
Body
Media type: application/json
Type: object
Properties- count: required(integer)
Количество SMS
- messages: required(array of objectSMS)
Массив SMS сообщений
Items: objectSMS
- smsid: required(string)
Уникальный идентификатор для каждого СМС в системе партнера
- text: required(string)
Текст SMS сообщения
- status: required(integer)
Статус (состояние) этого СМС.
- 0 - DELIVERED (доставлено)
- 1 - UNDELIVERED (не доставлено)
- 2 - EXPIRED (срок действия истек)
- 3 - ENROUTE (в обработке)
- 4 - ACCEPTED (принят СМС сервером, ожидается отчет о доставке)
- 5 - UNKNOWN (системная ошибка)
- statusdate: required(string - pattern: yyyy-mm-dd hh24:mi:ss)
Время изменение статуса СМС
- partmax: required(integer)
Максимальный количество частей при делении длинных СМС
- partnum: required(integer)
Номер части при делении длинных СМС
- smsid: required(string)
Example:
{
"count":2,
"messages":[
{
"smsid":"6885620",
"text":"test message",
"status":0,
"sdate":"2019-10-05 17:39:46",
"partmax":1,
"partnum":1
},
{
"smsid":"6885752",
"text":"test message 1",
"status":0,
"sdate":"2019-10-21 00:15:19",
"partmax":1,
"partnum":1
}
]
}
HTTP status code 400
При ошибке
Body
Media type: application/json
Type: object
Properties- errorCode: required(integer)
Статус (код ошибки) транзакции
- errorMsg: required(string)
Сообщение об ошибке
Example:
{
"errorCode":110,
"errMsg":"INVALID PARAM. Incorrect value of \"username\""
}
HTTP status code 403
При ошибке в TOKEN
Secured by DetalSMS
Headers
- X-Access-Token: required(string)
X-Access-Token: c7ee559506c1c07694bec475a6d508e7
ТОКЕН - создаеться следующему способу (Пример в PHP):
function generateStatusAccessToken($userName, $secretKey, $utime) { $Access = "DetalSMS {$userName} {$secretKey} {$utime}"; return md5($Access); }
HTTP status code 403
Bad access token.