Всё взаимодействие с сервером API осуществляется по протоколу JSON-RPC, данные отправляются через POST-запросы.
Адрес для отправки запросов: https://did-api.plusofon.ru
{
"id": null,
"jsonrpc": "2.0",
"error": {
"code": -32600,
"message": "Invalid Request"
}
}
Это ошибка отправки запроса. Запрос необходимо отправлять в поле формы JSON-RPC, как это сделать – описано ниже.
/**
* Функция получения содержимого страницы.
*
* @return Содержимое страницы.
*/
function send_post_request( $Host , $URL , $PostParameters )
{
$Params = array();
foreach( $PostParameters as $Key => $Value )
{
$Params [] = $Key.'='.$Value;
}
$Curl = curl_init();
curl_setopt( $Curl , CURLOPT_FOLLOWLOCATION , 1 );
curl_setopt( $Curl , CURLOPT_MAXREDIRS , 5 );
curl_setopt( $Curl , CURLOPT_POST , 1 );
curl_setopt( $Curl , CURLOPT_POSTFIELDS , $PostParameters );
curl_setopt( $Curl , CURLOPT_RETURNTRANSFER , 1 );
curl_setopt( $Curl , CURLOPT_SSL_VERIFYPEER , 0 );
curl_setopt( $Curl , CURLOPT_URL , "$Host/$URL" );
curl_setopt( $Curl , CURLOPT_REFERER , "$Host/" );
$Result = curl_exec( $Curl );
if( $Result === false )
{
$Error = curl_error( $Curl );
curl_close( $Curl );
throw( new Exception( $Error ) );
}
else
{
curl_close( $Curl );
}
return( $Result );
}
/**
* Враппер для отправки запросов.
*/
function rpc_did_api_send_request( $Parameters )
{
global $DIDAPIHost;
$PostParameters = array( 'jsonrpc' => $Parameters );
$Result = send_post_request( $DIDAPIHost , '' , $PostParameters );
$Result = json_decode( $Result );
return( $Result->result );
}
/**
* Коннект к Numbering API.
*/
function rpc_did_api_connect( $Login , $Password )
{
return(
rpc_did_api_send_request(
'{ "jsonrpc" : "2.0" , "method" : "connect" , "params" : [ "'.$Login.
'" , "'.$Password.'" ] , "id" : 1 }'
)
);
}
POST connect
Метод позволяет идентификатор сессии, которую необходимо использовать в других вызовах API-методов.
Логин и пароль вы можете получить по запросу у своего персонального менеджера.
Параметры Body
"params" |
array | массив с параметрами |
"login" |
string | ваш логин |
"password" |
string | ваш пароль |
"partition" |
string | |
"id" |
integer | ИД запроса |
Параметр
"id"(идентификатор запроса) используется при асинхронном выполнении запросов к серверу.
Если же API-методы вызываются в синхронном режиме (например из PHP-скриптов), то в этом поле можно указывать любое целочисленное значение.
{
"jsonrpc": "2.0",
"method": "connect",
"params": ["<login>", "<password>", "<partition>"],
"id": 1
}
В ответе возвращается ИД сессии, который необходимо использовать в других вызовах API-методов.
Длительность сессии — 1 час, после чего необходимо получать новый идентификатор.
...
Если подключение не произошло, то возвращается объект:
{
"result": "error%",
"id": 1,
"jsonrpc": "2.0"
}
POST search_numbers
Метод позволяет найти номера для дальнейшего подключения.
Параметры Body
"params" |
array | массив с параметрами |
"session_id" |
string | ИД сессии |
[ ] |
object | объект с параметрами поиска |
"search_field" |
string | поле для поиска |
"search_pattern" |
string | значение для поиска |
"from" |
integer | выборка результатов поиска начиная с этого порядкового номера |
"limit" |
integer | выборка результатов поиска в этом количестве |
"id" |
integer | идентификатор запроса |
Допустимые значения для параметров поиска:
| Фильтр | "search_field" | "search_pattern" |
|---|---|---|
| Регионы | "regions" |
см. метод "POST get_regions" |
| Статусы номеров | "access_state" |
|
| Код города все коды городов и DEF-номеров — трёхзначные |
"city_code" |
см. метод "POST get_city_codes" |
| Номер телефона (без кода города) | "phone_number" |
строка, можно использовать спецсимволы:
|
| Список номеров (вместе с кодами и без "7") | "numbers" |
4951332210 4951332211 |
| Категория номера | "number_type" |
возможные варианты:
|
| Массив категорий номеров | "number_types" |
аналогично предыдущему пункту |
| Маска для поиска номеров | "phone_number_mask" |
XYYZZZZ |
| Ближайшие номера должны быть заданы код города номер телефона |
"city_code_near""phone_number_near" |
"495""7773707" |
| Начало периода, когда номера были зарезервированы | "reserved_from" |
дата |
| Конец периода, когда номера были зарезервированы | "reserved_to" |
дата |
| Начало периода, когда номера были забронированы | "booked_from" |
дата |
| Конец периода, когда номера были забронированы | "booked_to" |
дата |
| Начало периода, когда c номерами были последние действия | "action_from" |
дата |
| Конец периода, когда c номерами были последние действия | "action_to" |
дата |
Все поля могут быть использованы как по отдельности, так и в любой комбинации друг с другом.
{
"jsonrpc": "2.0",
"method": "search_numbers",
"params": ["ttkafq919po8f7ad8hc0lqrm01",
{
"usage_statuses": ["free", "sold"]
}
],
"id": 9
}
В ответе возвращается список найденных номеров.
Кроме того в ответе возвращается параметр "display_mask", в котором выводится рекомендованный шаблон красивого форматирования номера. Например, вместо стандартного форматирования 100 02 22 лучше использовать 1 000 222, это позволит подчеркнуть красоту номера и обосновать его принадлежность к той или иной категории красивости (серебро, золото и т.д.).
POST search_numbers_count
Метод позволяет посчитать количество номеров, удовлетворяющих условиям поиска.
Параметры аналогичны методу "POST search_numbers".
"result" |
integer | количество найденных номеров |
"id" |
integer | идентификатор запроса |
{
"result": "42",
"id": 11,
"jsonrpc": "2.0"
}
POST get_regions
Метод позволяет получить список регионов, которые можно использовать в поиске номеров.
Параметры Body
"params" |
array | массив с параметрами |
"session_id" |
string | ИД сессии |
{
"jsonrpc": "2.0",
"method": "get_regions",
"params": ["ttkafq919po8f7ad8hc0lqrm01"],
"id": 13
}
В ответе возвращается список регионов.
{
"result": <список_регионов> ,
"id": 13,
"jsonrpc": "2.0"
}
POST get_city_codes
Метод позволяет получить список кодов городов, которые можно использовать в поиске номеров.
Параметры Body
"params" |
array | массив с параметрами |
"session_id" |
string | ИД сессии |
{
"jsonrpc": "2.0",
"method": "get_city_codes",
"params": ["ttkafq919po8f7ad8hc0lqrm01"],
"id": 18
}
В ответе возвращается список регионов.
{
"result": <список_кодов_городов> ,
"id": 18,
"jsonrpc": "2.0"
}
POST reserv_numbers
Метод позволяет зарезервировать список номеров для дальнейшего подключения. Зарезервировать можно только свободный номер.
Параметры Body
"params" |
array | * массив с параметрами |
"session_id" |
string | * ИД сессии |
"login" |
string | ваш логин |
"numbers" |
array | * массив номеров для резервирования (без "7") |
"timeout" |
integer | длительность резерва в минутах, от 15 до 7 200 минут (5 дней), если не указано, то 15 минут |
"id" |
integer | идентификатор запроса |
{
"jsonrpc": "2.0",
"method": "reserv_numbers",
"params": ["ttkafq919po8f7ad8hc0lqrm01", "user-login", ["4951332210", "4951332211"]],
"id": 3
}
В ответе возвращается:
"result" |
object | объект |
"reserved_numbers" |
array | массив зарезервированных номеров |
"numbers_not_found" |
array | массив номеров, которые не удалось найти |
"error_numbers" |
array | массив номеров с прочими ошибками |
"id" |
integer | идентификатор запроса |
{
"result": {
"reserved_numbers": [ <список_зарезервированных_номеров> ],
"numbers_not_found": [ <ненайденные_номера> ],
"error_numbers": [ <прочие_необработанные_номера> ]
},
"id": 3,
"jsonrpc": "2.0"
}
POST book_numbers
Метод позволяет забронировать список номеров для дальнейшего подключения. Забронировать можно только те номера, которые были зарезервированы.
Номера бронируются на 31 день. Если номер уже забронирован, то для него бронь будет продлена.
Параметры Body
"params" |
array | массив с параметрами |
"session_id" |
string | ИД сессии |
"numbers" |
array | массив номеров для бронирования (без "7") |
"id" |
integer | идентификатор запроса |
{
"jsonrpc": "2.0",
"method": "book_numbers",
"params": ["ttkafq919po8f7ad8hc0lqrm01", ["4951332210", "4951332211"]],
"id": 4
}
В ответе возвращается список забронированных номеров.
POST sell_numbers
Метод позволяет подключить список номеров. Подключить можно свободные, зарезервированные или забронированные номера.
Стоимость подключения и использования номеров вы можете уточнить у своего персонального менеджера.
Параметры Body
"params" |
array | массив с параметрами |
"session_id" |
string | ИД сессии |
"numbers" |
array | массив номеров для подключения (без "7") |
"id" |
integer | идентификатор запроса |
{
"jsonrpc": "2.0",
"method": "sell_numbers",
"params": ["ttkafq919po8f7ad8hc0lqrm01", ["4951332210", "4951332211"]],
"id": 5
}
В ответе возвращается список подключенных номеров.
POST install_numbers
Метод позволяет отрулить на оборудование подключенные номера.
Параметры Body
"params" |
array | массив с параметрами |
"session_id" |
string | ИД сессии |
"numbers" |
array | массив номеров для отруливания (без "7") |
"operator_id" |
string | ИД оператора |
"equipment_group_id" |
string | ИД группы оборудования |
"grace" |
string | маркер промо-периода возможные варианты:
|
"id" |
integer | идентификатор запроса |
{
"jsonrpc": "2.0",
"method": "install_numbers",
"params": ["ttkafq919po8f7ad8hc0lqrm01", ["4951332210", "4951332211"], "12345", "123456789"],
"id": 20
}
В ответе возвращается список отруленных номеров.
В случае ошибки возвращается параметр "error_message", содержащий описание ошибки.
POST return_numbers
Метод позволяет вернуть (отключить) подключенные, забронированные или зарезервированные номера.
Параметры Body
"params" |
array | массив с параметрами |
"session_id" |
string | ИД сессии |
"numbers" |
array | массив номеров для возврата (без "7") |
"id" |
integer | идентификатор запроса |
{
"jsonrpc": "2.0",
"method": "return_numbers",
"params": ["ttkafq919po8f7ad8hc0lqrm01", ["4951332210", "4951332211"]],
"id": 21
}
В ответе возвращается:
"result" |
object | объект c результатами |
"reserved_numbers" |
array | массив отключенных номеров |
"numbers_not_found" |
array | массив номеров, которые не удалось найти |
"error_numbers" |
array | массив номеров с прочими ошибками |
"id" |
integer | идентификатор запроса |
{
"result": {
"reserved_numbers": [ <список_отключенных_номеров> ],
"numbers_not_found": [ <ненайденные_номера> ],
"error_numbers": [ <прочие_необработанные_номера> ]
},
"id": 30,
"jsonrpc": "2.0"
}