версия от 2023-08-01
Группа методов позволяет обмениваться SMS-сообщениями, получать информацию и управлять пакетами SMS.
Адрес: https://restapi.plusofon.ru
POST
api/v1/sms
Метод позволяет отправить SMS-сообщение.
Body
text
string
⁎ текст сообщения
number_id
integer
⁎ ИД номера-отправителя i
to
number
⁎ номер-получатель
dlr_level
integer
уровень отчёта о доставке (DLR)
1
— получать DLR уровня 1 — отчёт о доставке от вышестоящего SMSC (SMS-центра)
2
— получать DLR уровня 2 — отчёт о доставки конечному получателю (абонентскому устройству)
3
— получать одновременно DLR 1 и DLR 2
reject_long
boolean
признак запрета отправки SMS, превышающего максимальную длину (по умолчанию — отправлять, false
)
count_pdu
boolean
признак необходимости в ответе количества сегментов сообщения
curl -X POST \
"https://restapi.plusofon.ru/api/v1/sms" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Client: 10553" \
-H "Authorization: Bearer {token}" \
-d '{"text":"mollitia","number_id":2,"to":241.77791,"dlr_level":18,"reject_long":true,"count_pdu":true}'
const url = new URL(
"https://restapi.plusofon.ru/api/v1/sms"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Client": "10553",
"Authorization": "Bearer {token}",
};
let body = {
"text": "mollitia",
"number_id": 2,
"to": 241.77791,
"dlr_level": 18,
"reject_long": true,
"count_pdu": true
}
fetch(url, {
method: "POST",
headers: headers,
body: body
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://restapi.plusofon.ru/api/v1/sms',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Client' => '10553',
'Authorization' => 'Bearer {token}',
],
'json' => [
'text' => 'mollitia',
'number_id' => 2,
'to' => 241.77791,
'dlr_level' => 18,
'reject_long' => true,
'count_pdu' => true,
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://restapi.plusofon.ru/api/v1/sms'
payload = {
"text": "mollitia",
"number_id": 2,
"to": 241.77791,
"dlr_level": 18,
"reject_long": true,
"count_pdu": true
}
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Client': '10553',
'Authorization': 'Bearer {token}'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()
В ответе могут возвращаться следующие поля:
data
объект с данными отправленного сообщения
id
jmx_id
)success
признак успешно выполненного запроса
message
сообщение об ошибке
{
"data": {
"id": "3610afe59f3242ebbdb03f3484b06b8d"
},
"success": true
}
GET
api/v1/sms
Метод позволяет просмотреть список SMS-сообщений.
Body
date_from
date
фильтр по дате начала
date_to
date
фильтр по дате окончания
incoming
integer
фильтр по признаку входящего сообщения
1
— входящее сообщение
0
— исходящее сообщение
receiver
string
фильтр по номеру-получателю
sender
string
фильтр по номеру-отправителю
limit
integer
лимит записей в ответе
curl -X GET \
-G "https://restapi.plusofon.ru/api/v1/sms" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Client: 10553" \
-H "Authorization: Bearer {token}" \
-d '{"date_from":"alias","date_to":"natus","incoming":3,"receiver":"facere","sender":"rem","limit":18}'
const url = new URL(
"https://restapi.plusofon.ru/api/v1/sms"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Client": "10553",
"Authorization": "Bearer {token}",
};
let body = {
"date_from": "alias",
"date_to": "natus",
"incoming": 3,
"receiver": "facere",
"sender": "rem",
"limit": 18
}
fetch(url, {
method: "GET",
headers: headers,
body: body
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://restapi.plusofon.ru/api/v1/sms',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Client' => '10553',
'Authorization' => 'Bearer {token}',
],
'json' => [
'date_from' => 'alias',
'date_to' => 'natus',
'incoming' => 3,
'receiver' => 'facere',
'sender' => 'rem',
'limit' => 18,
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://restapi.plusofon.ru/api/v1/sms'
payload = {
"date_from": "alias",
"date_to": "natus",
"incoming": 3,
"receiver": "facere",
"sender": "rem",
"limit": 18
}
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Client': '10553',
'Authorization': 'Bearer {token}'
}
response = requests.request('GET', url, headers=headers, json=payload)
response.json()
В ответе возвращается массив data
:
created_datetime
дата создания сообщения
sent_datetime
дата отправки сообщения
sender
номер-отправитель
receiver
номер-получатель
msg
текст сообщения
incoming
boolean
признак входящего сообщения
pdu
количество сегментов сообщения
{
"current_page": 1,
"data": [
{
"created_datetime": "2022-07-25 12:59:19",
"sent_datetime": "2022-07-25 12:59:21",
"sender": "79993332210",
"receiver": "79993332211",
"msg": "привет, мир!",
"incoming": false,
"pdu": 1
},
{
"created_datetime": "2022-07-25 13:01:34",
"sent_datetime": "2022-07-25 13:01:36",
"sender": "79993332211",
"receiver": "79993332210",
"msg": "ну да, привет, привет",
"incoming": true,
"pdu": 1
}
],
"first_page_url": "http:\/\/localhost\/api\/v1\/sms?page=1",
"from": 1,
"next_page_url": null,
"path": "http:\/\/localhost\/api\/v1\/sms",
"per_page": 15,
"prev_page_url": null,
"to": 2
}
GET
api/v1/sms/dialog/{number}
Метод позволяет получить список диалогов.
Path
number
stringBody
date_from
date
фильтр по дате начала
date_to
date
фильтр по дате окончания
curl -X GET \
-G "https://restapi.plusofon.ru/api/v1/sms/dialog" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Client: 10553" \
-H "Authorization: Bearer {token}" \
-d '{"date_from":"doloremque","date_to":"aperiam"}'
const url = new URL(
"https://restapi.plusofon.ru/api/v1/sms/dialog"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Client": "10553",
"Authorization": "Bearer {token}",
};
let body = {
"date_from": "doloremque",
"date_to": "aperiam"
}
fetch(url, {
method: "GET",
headers: headers,
body: body
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://restapi.plusofon.ru/api/v1/sms/dialog',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Client' => '10553',
'Authorization' => 'Bearer {token}',
],
'json' => [
'date_from' => 'doloremque',
'date_to' => 'aperiam',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://restapi.plusofon.ru/api/v1/sms/dialog'
payload = {
"date_from": "doloremque",
"date_to": "aperiam"
}
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Client': '10553',
'Authorization': 'Bearer {token}'
}
response = requests.request('GET', url, headers=headers, json=payload)
response.json()
В ответе возвращается массив data
:
id
внутренний ИД сообщения
jasmax_id
сквозной ИД сообщения
sender
номер-отправитель
receiver
номер-получатель
sent_datetime
дата отправки сообщения
created_datetime
дата создания сообщения
msg
текст сообщения
incoming
признак входящего сообщения
1
— входящее сообщение
0
— исходящее сообщение
readed
1
— сообщение прочитано
0
— сообщение не прочитано
interlocutor_number
{
"data": [
{
"id": 15,
"sender": "79993332210",
"receiver": "79993332211",
"sent_datetime": "2022-08-26 10:27:10",
"created_datetime": "2022-08-26 10:27:10",
"msg": "Тест 2",
"incoming": 0,
"readed": 0,
"interlocutor_number": "79993332211",
"jasmax_id": "a7702a80b12d4"
},
{
"id": 114258467,
"sender": "79993332210",
"receiver": "79993332212",
"sent_datetime": "2022-08-17 15:23:29",
"created_datetime": "2022-08-17 15:23:27",
"msg": "Тест 1",
"incoming": 0,
"readed": 0,
"interlocutor_number": "79993332212",
"jasmax_id": "58b90fa618b64186ef"
}
],
"success": true
}
GET
api/v1/sms/unread
Метод позволяет получить количество непрочитанных SMS-сообщений.
Не имеет параметров.
curl -X GET \
-G "https://restapi.plusofon.ru/api/v1/sms/unread" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Client: 10553" \
-H "Authorization: Bearer {token}"
const url = new URL(
"https://restapi.plusofon.ru/api/v1/sms/unread"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Client": "10553",
"Authorization": "Bearer {token}",
};
fetch(url, {
method: "GET",
headers: headers,
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://restapi.plusofon.ru/api/v1/sms/unread',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Client' => '10553',
'Authorization' => 'Bearer {token}',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://restapi.plusofon.ru/api/v1/sms/unread'
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Client': '10553',
'Authorization': 'Bearer {token}'
}
response = requests.request('GET', url, headers=headers)
response.json()
В ответе может возвращаться:
data
объект с количеством непрочитанных сообщений
count
success
признак успешно выполненного запроса
message
сообщение об ошибке
{
"data": {
"count": 1
},
"success": true
}
PATCH
api/v1/sms/dialog/{interlocutor_number}/set-read
Метод позволяет отметить диалог по конкретному номеру, как прочитанный.
Path
interlocutor_number
stringi
, по которому определяется диалогcurl -X PATCH \
-G "https://restapi.plusofon.ru/api/v1/sms/dialog/79993332210/set-read" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Client: 10553" \
-H "Authorization: Bearer {token}"
const url = new URL(
"https://restapi.plusofon.ru/api/v1/sms/dialog/79993332210/set-read"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Client": "10553",
"Authorization": "Bearer {token}",
};
fetch(url, {
method: "PATCH",
headers: headers,
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->PATCH(
'https://restapi.plusofon.ru/api/v1/sms/dialog/79993332210/set-read',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Client' => '10553',
'Authorization' => 'Bearer {token}',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://restapi.plusofon.ru/api/v1/sms/dialog/79993332210/set-read'
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Client': '10553',
'Authorization': 'Bearer {token}'
}
response = requests.request('PATCH', url, headers=headers)
response.json()
В ответе может возвращаться:
success
признак успешно выполненного запроса
message
сообщение об ошибке
{
"success": true
}
PATCH
api/v1/sms/packets
Метод позволяет активировать пакет SMS-сообщений.
curl -X PATCH \
"https://restapi.plusofon.ru/api/v1/sms/packets" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Client: 10553" \
-H "Authorization: Bearer {token}" \
-d '{"number_id":16,"packet":"ut"}'
const url = new URL(
"https://restapi.plusofon.ru/api/v1/sms/packets"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Client": "10553",
"Authorization": "Bearer {token}",
};
let body = {
"number_id": 16,
"packet": "ut"
}
fetch(url, {
method: "PATCH",
headers: headers,
body: body
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->patch(
'https://restapi.plusofon.ru/api/v1/sms/packets',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Client' => '10553',
'Authorization' => 'Bearer {token}',
],
'json' => [
'number_id' => 16,
'packet' => 'ut',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://restapi.plusofon.ru/api/v1/sms/packets'
payload = {
"number_id": 16,
"packet": "ut"
}
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Client': '10553',
'Authorization': 'Bearer {token}'
}
response = requests.request('PATCH', url, headers=headers, json=payload)
response.json()
В ответе могут возвращаться следующие поля:
success
признак успешно выполненного запроса
message
сообщение об ошибке
{
"success": true
}
GET
api/v1/sms/packets
Метод позволяет получить список всех доступных пакетов SMS-сообщений.
Не имеет параметров.
curl -X GET \
-G "https://restapi.plusofon.ru/api/v1/sms/packets" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Client: 10553" \
-H "Authorization: Bearer {token}"
const url = new URL(
"https://restapi.plusofon.ru/api/v1/sms/packets"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Client": "10553",
"Authorization": "Bearer {token}",
};
fetch(url, {
method: "GET",
headers: headers,
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://restapi.plusofon.ru/api/v1/sms/packets',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Client' => '10553',
'Authorization' => 'Bearer {token}',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://restapi.plusofon.ru/api/v1/sms/packets'
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Client': '10553',
'Authorization': 'Bearer {token}'
}
response = requests.request('GET', url, headers=headers)
response.json()
В ответе возвращается массив packets
:
id
ИД пакета
name
название пакета
description
описание
price
абонентская плата
sms_count
количество SMS в пакете
{
"packets": [
{
"id": "401f6fbc-87db-0df2-6ccf-624161f2c7e3",
"name": "Пакет SMS 0",
"description": "Пакет активирует отправку и прием SMS. ",
"price": 0,
"sms_count": 0
},
{
"id": "8ccddfe2-2a7b-bb2a-40f8-624161d3f93a",
"name": "Пакет SMS 50",
"description": "Пакет на 50 SMS в месяц",
"price": 30,
"sms_count": 50
},
{
"id": "16fade6a-1232-d42f-6012-624162c4c018",
"name": "Пакет SMS 1000",
"description": "Пакет на 1000 SMS в месяц",
"price": 600,
"sms_count": 1000
}
],
"success": true
}
Для конкретного номера можно указать URL-адрес обработчика входящих SMS, на который будут приходить вебхуки (POST-запросы) с телом в формате JSON и типом контента «application/json», содержащие SMS-сообщение.
В ответе может возвращаться:
src_number
номер-отправитель
dst_number
номер-получатель
content
текст сообщения
date
дата и время получения сообщения
{
"src_number": "79993332210",
"dst_number": "79993332211",
"content": "мир, привет!",
"date": "2023-07-25 12:29:50"
}
POST
api/v1/sms/url
Метод позволяет указать для конкретного номера URL-адрес обработчика входящих SMS, на который будут приходить вебхуки (POST-запросы) с SMS-сообщениями.
Body
number
string
⁎ телефонный номер
url
string
⁎ адрес обработчика
curl -X POST \
"https://restapi.plusofon.ru/api/v1/sms/url" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Client: 10553" \
-H "Authorization: Bearer {token}" \
-d '{"number":"velit","url":"et"}'
const url = new URL(
"https://restapi.plusofon.ru/api/v1/sms/url"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Client": "10553",
"Authorization": "Bearer {token}",
};
let body = {
"number": "velit",
"url": "et"
}
fetch(url, {
method: "POST",
headers: headers,
body: body
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://restapi.plusofon.ru/api/v1/sms/url',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Client' => '10553',
'Authorization' => 'Bearer {token}',
],
'json' => [
'number' => 'velit',
'url' => 'et',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://restapi.plusofon.ru/api/v1/sms/url'
payload = {
"number": "velit",
"url": "et"
}
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Client': '10553',
'Authorization': 'Bearer {token}'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()
В ответе могут возвращаться следующие поля:
success
признак успешно выполненного запроса
message
сообщение об ошибке
{
"success": true
}
DELETE
api/v1/sms/url
Метод позволяет удалить для всех номеров (или для конкретного номера) URL-адрес обработчика входящих SMS.
Body
number
string
телефонный номер (по умолчанию — для всех номеров)
url
string
⁎ адрес обработчика
curl -X DELETE \
"https://restapi.plusofon.ru/api/v1/sms/url" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Client: 10553" \
-H "Authorization: Bearer {token}" \
-d '{"number":"aperiam","url":"ipsam"}'
const url = new URL(
"https://restapi.plusofon.ru/api/v1/sms/url"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Client": "10553",
"Authorization": "Bearer {token}",
};
let body = {
"number": "aperiam",
"url": "ipsam"
}
fetch(url, {
method: "DELETE",
headers: headers,
body: body
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->delete(
'https://restapi.plusofon.ru/api/v1/sms/url',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Client' => '10553',
'Authorization' => 'Bearer {token}',
],
'json' => [
'number' => 'aperiam',
'url' => 'ipsam',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://restapi.plusofon.ru/api/v1/sms/url'
payload = {
"number": "aperiam",
"url": "ipsam"
}
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Client': '10553',
'Authorization': 'Bearer {token}'
}
response = requests.request('DELETE', url, headers=headers, json=payload)
response.json()
В ответе могут возвращаться следующие поля:
success
признак успешно выполненного запроса
message
сообщение об ошибке
{
"success": true
}
Сразу для всех номеров можно указать URL-адрес обработчика отчётов о доставке (DLR), на который будут приходить вебхуки (POST-запросы) с телом в формате JSON и типом контента «application/json», содержащие этот DLR.
В ответе может возвращаться:
message_status
ESME_ROK
сообщение принято
ESME_RALYBND
связка уже существует
ESME_RBINDFAIL
не удалось выполнить привязку
ESME_RCANCELFAIL
ошибка отмены сообщения
ESME_RCNTSUBDL
недопустимая отправка в список рассылки
ESME_RDELIVERYFAILURE
сбой доставки транзакции
ESME_RINVBNDSTS
неверный статус привязки для данной команды
ESME_RINVCMDID
ид команды неверен или не поддерживается
ESME_RINVCMDLEN
недопустимая длина команды
ESME_RINVDCS
недопустимая кодировка
ESME_RINVDESTFLAG
недопустимый флаг получателя
ESME_RINVDFTMSGID
предопределенное сообщение не найдено
ESME_RINVDLNAME
недопустимое имя списка рассылки
ESME_RINVDSTADDRSUBUNIT
недопустимый элемент адреса получателя
ESME_RINVDSTADR
неверный адрес получателя
ESME_RINVDSTNPI
неверный план нумерации адресов получателя (NPI)
ESME_RINVDSTTON
недопустимый тип номера получателя (TON)
ESME_RINVESMCLASS
недопустимый набор esm
ESME_RINVEXPIRY
недопустимое значение периода действия
ESME_RINVMSGID
недопустимый ид сообщения
ESME_RINVMSGLEN
сообщение слишком длинное
ESME_RINVNUMDESTS
недопустимое количество получателей
ESME_RINVNUMMSGS
недопустимое количество сообщений
ESME_RINVOPTPARAMVAL
недопустимое значение необязательного параметра
ESME_RINVOPTPARSTREAM
ошибка в необязательной части PDU
ESME_RINVPARLEN
недопустимая длина параметра
ESME_RINVPASWD
неверный пароль
ESME_RINVPRTFLG
недопустимый флаг приоритета
ESME_RINVREGDLVFLG
недопустимый флаг доставки
ESME_RINVREPFLAG
недопустимый флаг "replace_if_present"
ESME_RINVSCHED
неверный срок отложенной доставки
ESME_RINVSERTYP
недопустимый тип услуги
ESME_RINVSRCADDRSUBUNIT
недопустимый элемент адреса отправителя
ESME_RINVSRCADR
неверный адрес отправителя
ESME_RINVSRCNPI
неверный план нумерации адресов отправителя (NPI)
ESME_RINVSRCTON
недопустимый тип номера отправителя (TON)
ESME_RINVSUBREP
недопустимая отправка с запросом на замену
ESME_RINVSYSID
неверный системный ид
ESME_RINVSYSTYP
недопустимый системный тип
ESME_RMISSINGOPTPARAM
ожидаемый необязательный параметр отсутствует
ESME_RMSGQFUL
очередь сообщений заполнена
ESME_ROPTPARNOTALLWD
необязательный параметр не разрешен
ESME_RPROHIBITED
esme запрещено использовать указанную операцию
ESME_RQUERYFAIL
ошибка запроса сообщения
ESME_RREPLACEFAIL
не удалось повторно отправить сообщение
ESME_RSERTYPDENIED
указанный тип услуги отклонен
ESME_RSERTYPUNAUTH
esme не авторизован для использования указанной услуги
ESME_RSERTYPUNAVAIL
указанный тип услуги недоступен
ESME_RSUBMITFAIL
не удалось отправить сообщение
ESME_RSYSERR
системная ошибка
ESME_RUNKNOWNERR
неизвестная ошибка
ESME_RX_P_APPN
постоянная ошибка ESME
ESME_RX_R_APPN
ошибка сообщения об отклонении ESME
ESME_RX_T_APPN
временная ошибка ESME
DELIVRD
сообщение доставлено получателю
UNDELIV
сообщение не удалось доставить
ACCEPTD
сообщение было принято SMS-центром
EXPIRED
истёк срок действия сообщения
DELETED
сообщение было удалено
UNKNOWN
статус сообщения неизвестен
REJECTD
сообщение было отклонено
level
уровень DLR
id
внутренний ИД сообщения
jmx_id
сквозной ИД сообщения
donedate
дата доставки сообщения
sub
...
err
...
id_smsc
ИД SMS-центра
dlvrd
...
subdate
...
{
"message_status": "ESME_ROK",
"id": "a8bca126-a658-4d95-9597-c8dc47fe4170",
"level": "1",
"jmx_id": "fad79df82475491da0bba9e9d07cb33e"
}
{
"message_status": "DELIVRD",
"donedate": "2307251237",
"sub": "001",
"err": "000",
"level": "2",
"id_smsc": "1854FB649B4BAA",
"dlvrd": "001",
"subdate": "2307251237",
"id": "e16c1024-ca0d-430e-84c8-b8266549e1ca",
"jmx_id": "1b9f98d7dfb84fc79c5cb5c4a7296818"
}
PUT
api/v1/sms/dlr-url
Метод позволяет указать URL-адрес обработчика отчётов о доставке (DLR), на который будут приходить вебхуки (POST-запросы) с телом в формате JSON и типом контента «application/json».
Body
url
stringcurl -X PUT \
"https://restapi.plusofon.ru/api/v1/sms/dlr-url" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Client: 10553" \
-H "Authorization: Bearer {token}" \
-d '{"url":"iusto"}'
const url = new URL(
"https://restapi.plusofon.ru/api/v1/sms/dlr-url"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Client": "10553",
"Authorization": "Bearer {token}",
};
let body = {
"url": "iusto"
}
fetch(url, {
method: "PUT",
headers: headers,
body: body
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->put(
'https://restapi.plusofon.ru/api/v1/sms/dlr-url',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Client' => '10553',
'Authorization' => 'Bearer {token}',
],
'json' => [
'url' => 'iusto',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://restapi.plusofon.ru/api/v1/sms/dlr-url'
payload = {
"url": "iusto"
}
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Client': '10553',
'Authorization': 'Bearer {token}'
}
response = requests.request('PUT', url, headers=headers, json=payload)
response.json()
В ответе может возвращаться:
success
признак успешно выполненного запроса
message
сообщение об ошибке
{
"success": true
}