Группа методов позволяет подключать и отключать телефонные номера, а также управлять переадресациями этих номеров.
Метод позволяет купить телефонные номера.
POST
api/v1/number/buy
https://restapi.plusofon.ru
numbers
array
массив покупаемых номеров
возможные варианты параметра
owner_type
:
business
«бизнес» — номер для использования в логике АТС
personal
«персональный» — номер для персонального использования одним пользователем
curl -X POST \
"https://restapi.plusofon.ru/api/v1/number/buy" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Client: 10553" \
-H "Authorization: Bearer {token}" \
-d '{"numbers":[],"owner_type":"minus"}'
const url = new URL(
"https://restapi.plusofon.ru/api/v1/number/buy"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Client": "10553",
"Authorization": "Bearer {token}",
};
let body = {
"numbers": [],
"owner_type": "minus"
}
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/number/buy',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Client' => '10553',
'Authorization' => 'Bearer {token}',
],
'json' => [
'numbers' => [],
'owner_type' => 'minus',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://restapi.plusofon.ru/api/v1/number/buy'
payload = {
"numbers": [],
"owner_type": "minus"
}
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
}
Метод позволяет найти на витрине подходящий номер для покупки.
GET
api/v1/number/search
https://restapi.plusofon.ru
region
integer
ИД региона
city_code
integer
код города
phone_number
string
номер телефона, без кода города
number_type
string
категория красивости номера
phone_type
string
тип номера
возможные варианты параметра
owner_type
:
business
«бизнес» — номер для использования в логике АТС
personal
«персональный» — номер для персонального использования одним пользователем
можно использовать поиск по маске номера, используя спецсимволы
?
(замена одного любого символа) и *
(замена последовательности любых символов)
возможные варианты параметра
number_type
:
0
«простой» номер
5
«бронзовый» номер
1
«серебряный» номер
2
«золотой» номер
3
«платиновый» номер
4
«эксклюзивный» номер
возможные варианты параметра
phone_type
:
abc
городской номер
def
мобильный номер
800
номер 8-800
curl -X GET \
-G "https://restapi.plusofon.ru/api/v1/number/search" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Client: 10553" \
-H "Authorization: Bearer {token}" \
-d '{"owner_type":"business","region":4,"city_code":4,"phone_number":"error","number_type":"0","phone_type":"abc"}'
const url = new URL(
"https://restapi.plusofon.ru/api/v1/number/search"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Client": "10553",
"Authorization": "Bearer {token}",
};
let body = {
"owner_type": "business",
"region": 4,
"city_code": 4,
"phone_number": "error",
"number_type": "0",
"phone_type": "abc"
}
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/number/search',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Client' => '10553',
'Authorization' => 'Bearer {token}',
],
'json' => [
'owner_type' => 'business',
'region' => 4,
'city_code' => 4,
'phone_number' => 'error',
'number_type' => '0',
'phone_type' => 'abc',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://restapi.plusofon.ru/api/v1/number/search'
payload = {
"owner_type": "business",
"region": 4,
"city_code": 4,
"phone_number": "error",
"number_type": "0",
"phone_type": "abc"
}
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Client': '10553',
'Authorization': 'Bearer {token}'
}
response = requests.request('GET', url, headers=headers, json=payload)
response.json()
number_type
категория красивости номера
number
номер телефона с кодом города
buy_price
стоимость подключения
period_price
абонентская плата
owner_type
режим покупки номера
phone_type
тип номера
возможные варианты поля
number_type
:
0
«простой» номер
5
«бронзовый» номер
1
«серебряный» номер
2
«золотой» номер
3
«платиновый» номер
4
«эксклюзивный» номер
возможные варианты поля
owner_type
:
business
«бизнес» — номер для использования в логике АТС
personal
«персональный» — номер для персонального использования одним пользователем
возможные варианты поля
phone_type
:
abc
городской номер
def
мобильный номер
800
номер 8-800
Найдены номера по выбранным критериям:
{
"current_page": 100,
"data": [
{
"number_type": 0,
"number": "4951332210",
"buy_price": "99.00",
"period_price": "99.00",
"owner_type": "personal",
"phone_type": "abc"
},
{
"number_type": 0,
"number": "4951332211",
"buy_price": "99.00",
"period_price": "99.00",
"owner_type": "personal",
"phone_type": "abc"
},
...
],
"first_page_url": "http:\/\/localhost\/api\/v1\/number\/search?page=1",
"from": 1981,
"next_page_url": "http:\/\/localhost\/api\/v1\/number\/search?page=101",
"path": "http:\/\/localhost\/api\/v1\/number\/search",
"per_page": 20,
"prev_page_url": "http:\/\/localhost\/api\/v1\/number\/search?page=99",
"to": 2000,
"success": true
}
Метод позволяет получить список всех доступных кодов регионов.
GET
api/v1/number/code-regions
https://restapi.plusofon.ru
Метод не имеет параметров.
curl -X GET \
-G "https://restapi.plusofon.ru/api/v1/number/code-regions" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Client: 10553" \
-H "Authorization: Bearer {token}" \
-d '{"type":"rerum"}'
const url = new URL(
"https://restapi.plusofon.ru/api/v1/number/code-regions"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Client": "10553",
"Authorization": "Bearer {token}",
};
let body = {
"type": "rerum"
}
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/number/code-regions',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Client' => '10553',
'Authorization' => 'Bearer {token}',
],
'json' => [
'type' => 'rerum',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://restapi.plusofon.ru/api/v1/number/code-regions'
payload = {
"type": "rerum"
}
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Client': '10553',
'Authorization': 'Bearer {token}'
}
response = requests.request('GET', url, headers=headers, json=payload)
response.json()
В ответе возвращается массив code_regions
:
id
ИД региона
title
название региона
code
массив телефонных кодов региона
{
"code_regions": [
{
"id": 65,
"title": "Улан-Удэ (301)",
"code": [
"301"
]
},
{
"id": 23,
"title": "Ижевск(341)",
"code": [
"341"
]
}
],
"success": true
}
Метод позволяет получить список всех номеров, подключенных в текущем личном кабинете.
GET
api/v1/number
https://restapi.plusofon.ru
phone_type
возможные варианты параметра
phone_type
:
abc
городской номер
def
мобильный номер
800
номер 8-800
curl -X GET \
-G "https://restapi.plusofon.ru/api/v1/number" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Client: 10553" \
-H "Authorization: Bearer {token}" \
-d '{"phone_type":"nihil"}'
const url = new URL(
"https://restapi.plusofon.ru/api/v1/number"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Client": "10553",
"Authorization": "Bearer {token}",
};
let body = {
"phone_type": "nihil"
}
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/number',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Client' => '10553',
'Authorization' => 'Bearer {token}',
],
'json' => [
'phone_type' => 'nihil',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://restapi.plusofon.ru/api/v1/number'
payload = {
"phone_type": "nihil"
}
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
ИД подключенного номера
number
номер в международном формате
phone_type
тип номера
owner_type
режим покупки номера
period_price
абонентская плата
buy_price
стоимость подключения
black_list
ИД подключенного чёрного списка
aon_for_sips
массив SIP-аккаунтов, для которых номер установлен в качестве АОНа
/ id
ИД SIP-аккаунта
/ name
название SIP-аккаунта
following
объект с параметрами переадресации номера
/ name
имя сущности
/ cli_type
режим показа АОНа
integration_following
объект с параметрами переадресации номера для интеграции
/ host
адрес хоста интеграции
/ type
тип интеграции
/ cli_type
режим показа АОНа
возможные варианты поля
phone_type
:
abc
городской номер
def
мобильный номер
800
номер 8-800
возможные варианты поля
owner_type
:
business
«бизнес» — номер для использования в логике АТС
personal
«персональный» — номер для персонального использования одним пользователем
{
"current_page": 1,
"data": [
{
"id": 15,
"number": "79309993750",
"phone_type": "def",
"owner_type": "business",
"period_price": 99,
"buy_price": 99,
"black_list": null,
"aon_for_sips": [],
"following": {
"name": "Sip аккаунт test@plusofontest.ru",
"cli_type": "Номер и имя звонящего"
},
"integration_following": {
"host": "test.amocrm.ru",
"type": "amo",
"cli_type": "Переадресующий номер"
}
},
{
"id": 17,
"number": "74951334527",
"phone_type": "abc",
"owner_type": "personal",
"period_price": 150,
"buy_price": 1,
"black_list": null,
"aon_for_sips": [
{
"id": 73,
"name": "test@plusofontest.ru"
}
],
"following": null,
"integration_following": null
}
],
"first_page_url": "http:\/\/localhost\/api\/v1\/number?page=1",
"from": 1,
"last_page": 1,
"last_page_url": "http:\/\/localhost\/api\/v1\/number?page=1",
"next_page_url": null,
"path": "http:\/\/localhost\/api\/v1\/number",
"per_page": 15,
"prev_page_url": null,
"to": 2,
"total": 2,
"success": true
}
Метод позволяет получить список всех номеров с подключенной услугой обмена SMS-сообщениями.
GET
api/v1/number/sms
https://restapi.plusofon.ru
Метод не имеет параметров.
curl -X GET \
-G "https://restapi.plusofon.ru/api/v1/number/sms" \
-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/number/sms"
);
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/number/sms',
[
'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/number/sms'
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Client': '10553',
'Authorization': 'Bearer {token}'
}
response = requests.request('GET', url, headers=headers)
response.json()
В ответе возвращается массив data
:
id
ИД номера
number
номер в международном формате
phone_type
тип номера
owner_type
режим покупки номера
sms_packet
объект со свойствами подключенного пакета SMS
/ packet
ИД пакета
/ packet_name
название пакета
/ sms_amount
квота пакета
/ price
абонентская плата за пакет
/ sms_remaining
остаток квоты
возможные варианты поля
phone_type
:
abc
городской номер
def
мобильный номер
800
номер 8-800
возможные варианты поля
owner_type
:
business
«бизнес» — номер для использования в логике АТС
personal
«персональный» — номер для персонального использования одним пользователем
{
"current_page": 1,
"data": [
{
"id": 22,
"number": "79309992501",
"phone_type": "def",
"owner_type": "personal",
"sms_packet": {
"packet": "8460040d-374c-a7d8-abbe-6241614add81",
"packet_name": "Пакет СМС 500",
"sms_amount": 500,
"price": "300.00",
"sms_remaining": 500
}
}
],
"first_page_url": "http:\/\/localhost\/api\/v1\/number\/sms?page=1",
"from": 1,
"last_page": 1,
"last_page_url": "http:\/\/localhost\/api\/v1\/number\/sms?page=1",
"next_page_url": null,
"path": "http:\/\/localhost\/api\/v1\/number\/sms",
"per_page": 15,
"prev_page_url": null,
"to": 1,
"total": 1,
"success": true
}
Метод позволяет настроить переадресацию с подключенного номера.
POST
api/v1/number/follow
https://restapi.plusofon.ru
type
string
код типа переадресации
type_default
string
код типа переадресации по умолчанию (только для типов bitrix
и amo
)
numbers
array
массив ИД номеров, для которых устанавливается переадресация
sip_id
integer
ИД SIP-аккаунта, на который устанавливается переадресация (только для типа sip
)
destination_number
string
телефонный номер, на который устанавливается переадресация (только для типа number
)
group_id
integer
ИД группы, на которую устанавливается переадресация (только для типа group
)
scenario_id
integer
ИД сценария, на который устанавливается переадресация (только для типа scenario
)
call_queue_id
integer
ИД очереди вызовов, на которую устанавливается переадресация (только для типа call_queue
)
destination_uri
string
адрес SIP URI, на который устанавливается переадресация (только для типа sip_uri
)
host
string
адрес хоста интеграции (только для типов bitrix
и amo
)
cli_type
string
код типа показа АОНа при переадресации (обязательно для всех типов, кроме empty
)
cli_type_default
string
код типа показа АОНа при переадресации 3 (только для типов bitrix
и amo
)
curl -X POST \
"https://restapi.plusofon.ru/api/v1/number/follow" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Client: 10553" \
-H "Authorization: Bearer {token}" \
-d '{"type":"eligendi","type_default":"tempora","numbers":[6],"sip_id":7,"destination_number":"voluptatem","group_id":16,"scenario_id":5,"call_queue_id":4,"destination_uri":"molestias","host":"quas","cli_type":"ut","cli_type_default":"iure"}'
const url = new URL(
"https://restapi.plusofon.ru/api/v1/number/follow"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Client": "10553",
"Authorization": "Bearer {token}",
};
let body = {
"type": "eligendi",
"type_default": "tempora",
"numbers": [
6
],
"sip_id": 7,
"destination_number": "voluptatem",
"group_id": 16,
"scenario_id": 5,
"call_queue_id": 4,
"destination_uri": "molestias",
"host": "quas",
"cli_type": "ut",
"cli_type_default": "iure"
}
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/number/follow',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Client' => '10553',
'Authorization' => 'Bearer {token}',
],
'json' => [
'type' => 'eligendi',
'type_default' => 'tempora',
'numbers' => [
6,
],
'sip_id' => 7,
'destination_number' => 'voluptatem',
'group_id' => 16,
'scenario_id' => 5,
'call_queue_id' => 4,
'destination_uri' => 'molestias',
'host' => 'quas',
'cli_type' => 'ut',
'cli_type_default' => 'iure',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://restapi.plusofon.ru/api/v1/number/follow'
payload = {
"type": "eligendi",
"type_default": "tempora",
"numbers": [
6
],
"sip_id": 7,
"destination_number": "voluptatem",
"group_id": 16,
"scenario_id": 5,
"call_queue_id": 4,
"destination_uri": "molestias",
"host": "quas",
"cli_type": "ut",
"cli_type_default": "iure"
}
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
}
Метод позволяет назначить чёрный список для подключенного номера.
PATCH
api/v1/number/contact-list
https://restapi.plusofon.ru
contact_list_id
integer
ИД списка контактов
numbers
array
массив ИД номеров, на которых назначается список
Для удаления назначения необходимо передать запрос без указания contact_list_id
.
curl -X PATCH \
"https://restapi.plusofon.ru/api/v1/number/contact-list" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Client: 10553" \
-H "Authorization: Bearer {token}" \
-d '{"contact_list_id":15,"numbers":[22]}'
const url = new URL(
"https://restapi.plusofon.ru/api/v1/number/contact-list"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Client": "10553",
"Authorization": "Bearer {token}",
};
let body = {
"contact_list_id": 15,
"numbers": [
22
]
}
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/number/contact-list',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Client' => '10553',
'Authorization' => 'Bearer {token}',
],
'json' => [
'contact_list_id' => 15,
'numbers' => [
22,
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://restapi.plusofon.ru/api/v1/number/contact-list'
payload = {
"contact_list_id": 15,
"numbers": [
22
]
}
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
}
Метод позволяет удалить телефонный номер, подключенный в текущем личном кабинете.
DELETE
api/v1/number/{numberId}
https://restapi.plusofon.ru
curl -X DELETE \
"https://restapi.plusofon.ru/api/v1/number/31" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Client: 10553" \
-H "Authorization: Bearer {token}" \
-d '{"pin":"quo"}'
const url = new URL(
"https://restapi.plusofon.ru/api/v1/number/31"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Client": "10553",
"Authorization": "Bearer {token}",
};
let body = {
"pin": "quo"
}
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/number/31',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Client' => '10553',
'Authorization' => 'Bearer {token}',
],
'json' => [
'pin' => 'quo',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://restapi.plusofon.ru/api/v1/number/31'
payload = {
"pin": "quo"
}
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
}
Метод позволяет получить список всех зарезервированных (но не купленных) номеров текущего личного кабинета.
GET
api/v1/number/reserve
https://restapi.plusofon.ru
Метод не имеет параметров.
curl -X GET \
-G "https://restapi.plusofon.ru/api/v1/number/reserve" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Client: 10553" \
-H "Authorization: Bearer {token}" \
-d '{"phone_type":"natus"}'
const url = new URL(
"https://restapi.plusofon.ru/api/v1/number/reserve"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Client": "10553",
"Authorization": "Bearer {token}",
};
let body = {
"phone_type": "natus"
}
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/number/reserve',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Client' => '10553',
'Authorization' => 'Bearer {token}',
],
'json' => [
'phone_type' => 'natus',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://restapi.plusofon.ru/api/v1/number/reserve'
payload = {
"phone_type": "natus"
}
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
ИД подключенного номера
number
номер в международном формате
reserved_untill
дата и время окончания резерва
phone_type
тип номера
owner_type
режим покупки номера
buy_price
стоимость подключения
period_price
абонентская плата
возможные варианты поля
phone_type
:
abc
городской номер
def
мобильный номер
800
номер 8-800
возможные варианты поля
owner_type
:
business
«бизнес» — номер для использования в логике АТС
personal
«персональный» — номер для персонального использования одним пользователем
{
"current_page": 1,
"data": [
{
"id": 5,
"number": "74951919036",
"reserved_untill": "2022-06-08 15:42:21",
"phone_type": "abc",
"owner_type": "personal",
"buy_price": 99,
"period_price": 99
},
{
"id": 6,
"number": "74951919034",
"reserved_untill": "2022-06-08 15:43:54",
"phone_type": "abc",
"owner_type": "business",
"buy_price": 790,
"period_price": 150
}
],
"first_page_url": "http:\/\/localhost\/api\/v1\/number\/reserve?page=1",
"from": 1,
"last_page": 1,
"last_page_url": "http:\/\/localhost\/api\/v1\/number\/reserve?page=1",
"next_page_url": null,
"path": "http:\/\/localhost\/api\/v1\/number\/reserve",
"per_page": 15,
"prev_page_url": null,
"to": 2,
"total": 2,
"success": true
}
Метод позволяет зарезирвировать (но не купить) телефонный номер.
POST
api/v1/number/reserve
https://restapi.plusofon.ru
number
integer
номер телефона с кодом города
short
integer
признак краткосрочного резерва
возможные варианты параметра
owner_type
:
business
«бизнес» — номер для использования в логике АТС
personal
«персональный» — номер для персонального использования одним пользователем
возможные варианты параметра
short
:
1
curl -X POST \
"https://restapi.plusofon.ru/api/v1/number/reserve" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Client: 10553" \
-H "Authorization: Bearer {token}" \
-d '{"number":11,"owner_type":"sit","short":17}'
const url = new URL(
"https://restapi.plusofon.ru/api/v1/number/reserve"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Client": "10553",
"Authorization": "Bearer {token}",
};
let body = {
"number": 11,
"owner_type": "sit",
"short": 17
}
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/number/reserve',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Client' => '10553',
'Authorization' => 'Bearer {token}',
],
'json' => [
'number' => 11,
'owner_type' => 'sit',
'short' => 17,
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://restapi.plusofon.ru/api/v1/number/reserve'
payload = {
"number": 11,
"owner_type": "sit",
"short": 17
}
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/number/reserve/{reserveNumberId}
https://restapi.plusofon.ru
reserveNumberId
curl -X DELETE \
"https://restapi.plusofon.ru/api/v1/number/reserve/42" \
-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/number/reserve/42"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Client": "10553",
"Authorization": "Bearer {token}",
};
fetch(url, {
method: "DELETE",
headers: headers,
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->delete(
'https://restapi.plusofon.ru/api/v1/number/reserve/42',
[
'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/number/reserve/42'
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Client': '10553',
'Authorization': 'Bearer {token}'
}
response = requests.request('DELETE', url, headers=headers)
response.json()
В ответе может возвращаться:
success
признак успешно выполненного запроса
message
сообщение об ошибке
Номер успешно удалён из резерва:
{
"success": true
}
Метод позволяет получить список всех доступных типов переадресации.
GET
api/v1/number/follow-types
https://restapi.plusofon.ru
Метод не имеет параметров.
curl -X GET \
-G "https://restapi.plusofon.ru/api/v1/number/follow-types" \
-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/number/follow-types"
);
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/number/follow-types',
[
'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/number/follow-types'
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Client': '10553',
'Authorization': 'Bearer {token}'
}
response = requests.request('GET', url, headers=headers)
response.json()
В ответе возвращается массив follow_types
:
type
код переадресации
title
название переадресации
owner_types
массив режимов аренды, для которых доступна переадресация
возможные варианты поля
owner_type
:
business
«бизнес» — номер для использования в логике АТС
personal
«персональный» — номер для персонального использования одним пользователем
{
"follow_types": [
{
"type": "sip",
"title": "Sip аккаунт",
"owner_types": [
"personal",
"business"
]
},
{
"type": "number",
"title": "Номер",
"owner_types": [
"personal",
"business"
]
},
{
"type": "group",
"title": "Группа",
"owner_types": [
"business"
]
},
{
"type": "scenario",
"title": "Сценарий",
"owner_types": [
"business"
]
}
]
}
Метод позволяет получить список всех доступных типов работы определителя номера (АОН) для входящих вызовов.
GET
api/v1/number/cli-types
https://restapi.plusofon.ru
Метод не имеет параметров.
curl -X GET \
-G "https://restapi.plusofon.ru/api/v1/number/cli-types" \
-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/number/cli-types"
);
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/number/cli-types',
[
'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/number/cli-types'
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Client': '10553',
'Authorization': 'Bearer {token}'
}
response = requests.request('GET', url, headers=headers)
response.json()
В ответе возвращается массив cli_types
:
type
код типа АОНа
title
название типа АОНа
{
"cli_types": [
{
"type": "Y",
"title": "Номер и имя звонящего"
},
{
"type": "N",
"title": "Переадресующий номер"
}
]
}
Метод позволяет получить список всех настроенных в текущем личном кабинете внешних номеров.
GET
api/v1/number/external
https://restapi.plusofon.ru
Метод не имеет параметров.
curl -X GET \
-G "https://restapi.plusofon.ru/api/v1/number/external" \
-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/number/external"
);
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/number/external',
[
'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/number/external'
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Client': '10553',
'Authorization': 'Bearer {token}'
}
response = requests.request('GET', url, headers=headers)
response.json()
В ответе возвращается массив external_numbers
:
number
номер в международном формате
source
SIP-аккаунт или перечень SIP-серверов
customer_id
ИД текущего личного кабинета
type
тип подключения внешнего номера
status
статус регистрации в сети (только для типа АТС
)
возможные варианты поля
type
:
АТС
тип «АТС», регистрация на SIP-сервере по логину и паролю
SIP-URI
тип «SIP-URI», приём вызовов на выделенный адрес
{
"external_numbers": [
{
"number": "79104445566",
"source": "21201588169353@sip.plusofon.ru",
"customer_id": 42291,
"type": "АТС",
"status": false
},
{
"number": "79104445567",
"source": "sip.plusofon.ru,sip.plusofon.ru1,sip.plusofon.ru2",
"host": "4229179104445567@ext.plusofon.ru",
"customer_id": 42291,
"type": "SIP-URI"
}
],
"success": true
}
Метод позволяет получить список статусов регистрации в сети внешнего номера. Работает только для типа «АТС».
GET
api/v1/number/external/status
https://restapi.plusofon.ru
curl -X GET \
-G "https://restapi.plusofon.ru/api/v1/number/external/status" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Client: 10553" \
-H "Authorization: Bearer {token}" \
-d '{"logins":[]}'
const url = new URL(
"https://restapi.plusofon.ru/api/v1/number/external/status"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Client": "10553",
"Authorization": "Bearer {token}",
};
let body = {
"logins": []
}
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/number/external/status',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Client' => '10553',
'Authorization' => 'Bearer {token}',
],
'json' => [
'logins' => [],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://restapi.plusofon.ru/api/v1/number/external/status'
payload = {
"logins": []
}
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Client': '10553',
'Authorization': 'Bearer {token}'
}
response = requests.request('GET', url, headers=headers, json=payload)
response.json()
В ответе возвращается массив status
:
login
логин подключения
status
статус регистрации в сети
date
дата и время обновления статуса
{
"status": [
{
"login": "111",
"status": "OK",
"date": "2021-02-10 00:00:00"
},
{
"login": "222",
"status": "OK",
"date": "2021-02-10 00:00:00"
}
],
"success": true
}
Метод позволяет настроить новое подключение внешнего номера.
PUT
api/v1/number/external/{type}
https://restapi.plusofon.ru
возможные варианты параметра
type
:
ate
тип «АТС», регистрация на SIP-сервере по логину и паролю
sipuri
тип «SIP-URI», приём вызовов на выделенный адрес
curl -X PUT \
"https://restapi.plusofon.ru/api/v1/number/external/ate" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Client: 10553" \
-H "Authorization: Bearer {token}" \
-d '{"host":"et","number":18,"port":1,"login":"aperiam","secret":"non"}'
const url = new URL(
"https://restapi.plusofon.ru/api/v1/number/external/ate"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Client": "10553",
"Authorization": "Bearer {token}",
};
let body = {
"host": "et",
"number": 18,
"port": 1,
"login": "aperiam",
"secret": "non"
}
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/number/external/ate',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Client' => '10553',
'Authorization' => 'Bearer {token}',
],
'json' => [
'host' => 'et',
'number' => 18,
'port' => 1,
'login' => 'aperiam',
'secret' => 'non',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://restapi.plusofon.ru/api/v1/number/external/ate'
payload = {
"host": "et",
"number": 18,
"port": 1,
"login": "aperiam",
"secret": "non"
}
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
}
Метод позволяет обновить параметры подключения внешнего номера.
PATCH
api/v1/number/external/{type}/{id}
https://restapi.plusofon.ru
id
path
ИД внешнего номера
возможные варианты параметра
type
:
ate
тип «АТС», регистрация на SIP-сервере по логину и паролю
sipuri
тип «SIP-URI», приём вызовов на выделенный адрес
curl -X PATCH \
"https://restapi.plusofon.ru/api/v1/number/external/ate/1" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Client: 10553" \
-H "Authorization: Bearer {token}" \
-d '{"host":"voluptas","number":6,"port":6,"login":"repudiandae","secret":"repellat"}'
const url = new URL(
"https://restapi.plusofon.ru/api/v1/number/external/ate/1"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Client": "10553",
"Authorization": "Bearer {token}",
};
let body = {
"host": "voluptas",
"number": 6,
"port": 6,
"login": "repudiandae",
"secret": "repellat"
}
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/number/external/ate/1',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Client' => '10553',
'Authorization' => 'Bearer {token}',
],
'json' => [
'host' => 'voluptas',
'number' => 6,
'port' => 6,
'login' => 'repudiandae',
'secret' => 'repellat',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://restapi.plusofon.ru/api/v1/number/external/ate/1'
payload = {
"host": "voluptas",
"number": 6,
"port": 6,
"login": "repudiandae",
"secret": "repellat"
}
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
}
Метод позволяет удалить подключение внешнего номера.
DELETE
api/v1/number/external/{type}/{id}
https://restapi.plusofon.ru
id
path
ИД внешнего номера
возможные варианты параметра
type
:
ate
тип «АТС», регистрация на SIP-сервере по логину и паролю
sipuri
тип «SIP-URI», приём вызовов на выделенный адрес
curl -X DELETE \
"https://restapi.plusofon.ru/api/v1/number/external/ate/1" \
-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/number/external/ate/1"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Client": "10553",
"Authorization": "Bearer {token}",
};
fetch(url, {
method: "DELETE",
headers: headers,
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->delete(
'https://restapi.plusofon.ru/api/v1/number/external/ate/1',
[
'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/number/external/ate/1'
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Client': '10553',
'Authorization': 'Bearer {token}'
}
response = requests.request('DELETE', url, headers=headers)
response.json()
В ответе может возвращаться:
success
признак успешно выполненного запроса
message
сообщение об ошибке
Внешний номер успешно удалён:
{
"success": true
}