У нас не получилось загрузить Disqus. Если вы модератор, пожалуйста посмотрите наше руководство по устранению неисправностей.

nodkz • 12 лет назад

Для повышения удобства технического взаимодействия клиентов и партнёров был разработан простой API поверх протокола HTTP. Который позволяет отправлять и принимать данные в трех самых популярных форматах: POST, JSON и XML. Отдавать данные в форматах JSON, XML и Array (обычный print_r php-массива).

Каждый вызов является атомарным и синхронным, то есть все запросы независимы друг от друга. Также все операции являются синхронными: результат операции возвращается сразу же, нет промежуточных состояний при выполнении операции. На данный момент для тестового пользователя разрешено не более 5 запросов в секунду и 1000 запросов в час.

Структура API построена так, что вызов метода и его описание находится по одному адресу, разница только в параметре format=(help|json|xml).
Например:
http://api.ps.kz/kzdomain/w... - вернет WHOIS домена ps.kz
если формат поменять на help, то вы тут же получите справку по этому методу:
http://api.ps.kz/kzdomain/w...
Я думаю это очень удобно.

Вобщем я на связи. Если есть вопросы и недочеты, прошу писать в комментарии.

Gany Berikov • 12 лет назад

Спасибо за сервис. Есть ли ограничение на количество запросов? Например, в KazNIC можно сделать 100 (не уверен) запросов в сутки.

nodkz • 12 лет назад

В данный момент стоит ограничение в 1000 запросов в час и два запроса 5 запросов в секунду на одного пользователя.

В каждом индивидуальном случае лимит на кол-во запросов можно увеличить.

UPD: лимит на кол-во запросов в секунду увеличен до 5

nodkz • 12 лет назад

В случае превышения лимита вы получите следующую ошибку:

{
"result" : "error",
"error_text" : "You have exceeded the allowed limit requests per second. In the next second request's counter will be automatically reset and you'll get access to the API.",
"error_code" : "EXCEEDED_LIMIT_PER_SECOND", // ЛИБО EXCEEDED_LIMIT_PER_HOUR
"error_data" : {},
"see_api_documentation" : "http://api.ps.kz/kzdomain/w...",
"input_params" : {
"command_name" : "kzdomain/whois",
"username" : "test",
"password" : "test",
"output_format" : "json",
"dname" : "ps.kz"
}
}

Alexander Lee • 12 лет назад

Скажите пожалуйста, есть ли тестовые логин и пароль для тестирования запросов/ответов?

nodkz • 12 лет назад

Да конечно есть username=test&password=test либо username=test&password=<?php echo MD5('test') ; ?>

Всем методы в API имеют примеры запросов и ответов. Все примеры полностью работоспособны (они уже содержат тестовый логин и пароль, указывают формат запроса и формат ответа).

Будьте внимательны в примерах запрос для удобства восприятия разбит на несколько строк.
Поэтому перед тем как его отправлять в строку браузера, его необходимо склеить в одну строку.

Я для тестирования использую браузер Chrom'а, просто выделяю все строки и вставляю в адресную строку, он прекрасно все склеивает за меня.

nodkz • 12 лет назад

Единственно не получится протестировать регистрацию и продление домена. Т.к. они сразу отправляют данные в казник и происходит финансовая проводка в нашей биллинговой ситеме.

Поэтому тестирование этих методов необходимо проводить на боевом аккаунте.

nodkz • 12 лет назад
<?php
 
print_r(domainCheck('ps.kz'));
// RETURNS:
//Array
//(
// [ps.kz] => DOMAIN_ALREADY_EXISTS
//)
 
print_r(domainCheck(array('test-nod-123.kz','ps.kz','go.cn','jnet.kz')));
// RETURNS:
//Array
//(
// [test-nod-123.kz] => Available
// [ps.kz] => DOMAIN_ALREADY_EXISTS
// [go.cn] => DOMAIN_BAD_TLD
// [jnet.kz] => DOMAIN_ALREADY_EXISTS
//)
 
 
 
 
/**
* Проверить свободно ли доменное имя либо массив доменов.
*
* В параметр $domains можно передать строку с именем домена, либо
* индексный массив имён доменов (НЕ БОЛЕЕ 20 имён за раз, иначе рискуете не получить ответ).
* Например:
* $domains = 'ps.kz';
* либо
* $domains = array('test-nod-123.kz', 'ps.kz', 'go.cn', 'jnet.kz');
*
*
* В любом случае функция возвращаетт ассоциативный массив, где ключ имя домена,
* а значение это статус проверки. Например:
* return array(
* 'test-nod-123.kz'=>'Available',
* 'ps.kz'=>'DOMAIN_ALREADY_EXISTS',
* 'go.cn'=>'DOMAIN_BAD_TLD',
* 'jnet.kz'=>'DOMAIN_ALREADY_EXISTS',
* )
* Если функция вернула пустой массив, то произошла какая-то ошибка. Функция ошибки не отлавливает.
*
* @param string|array $domains
* @return array
*/

function domainCheck($domains){
if(!is_array($domains)){
$domains=(array)$domains;
}
 
// подготавливаем URL для отправки запроса
$url= requestPrepareUrl(
$username='test',
$password='test',
$requestData=array(
'controller'=>'kzdomain',
'action'=>'check',
'dname'=>$domains,
)
);
 
// делаем запрос данных на апи сервер
$data= requestRun($url);
 
if(is_array($data)){
if(isset($data['answer']['domains'])&&is_array($data['answer']['domains'])){
$result=array();
foreach($data['answer']['domains']as$val){
if($val['result']=='Available'){
$result[$val['dname']]='Available';
}else{
$result[$val['dname']]=$val['error_code'];
}
}
return$result;
}
}
returnarray();
}
 
 
 
/**
* Подготовить URL для обращения к API.
*
* Необходимо указать свой логин и пароль.
* В параметре $requestData значения controller и action являются обязательными.
* Например: $requestData = array('controller'=>'kzdomain', 'action'=>'check', 'dname'=>'ps.kz');
*
* @param string $user
* @param string $password
* @param array $requestData
* @return string
*/

function requestPrepareUrl($username,$password,array$requestData){
if(empty($requestData['controller'])||empty($requestData['action'])||!is_scalar($requestData['controller'])||!is_scalar($requestData['action'])){
throw new Exception('Incorrect $requestData. You not provide valid controller and action names.');
}
 
$url='https://api.ps.kz/'.$requestData['controller'].'/'.$requestData['action'];
$url.='?username='.urlencode($username);
$url.='&password='.urlencode($password);
$url.='&input_format=http&output_format=json';
 
unset($requestData['controller']);
unset($requestData['action']);
$url.='&'.http_build_query($requestData,'custom','&');
 
return$url;
}
 
 
/**
* Произвести запрос на указанный URL и вернуть данные в виде массива.
*
* @param string $url
* @throws Exception
* @return array
*/

function requestRun($url){
$c=curl_init();
curl_setopt($c, CURLOPT_URL,$url);
 
// задаем дополнительные настройки
curl_setopt($c, CURLOPT_RETURNTRANSFER,1);
curl_setopt($c, CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($c, CURLOPT_SSL_VERIFYHOST,0);
 
$result=curl_exec($c);
 
$e_no=curl_errno($c);
$e_str=curl_error($c);
if($e_no>0){
throw new Exception('CURL error: '.$e_str.' ('.$e_no.')');
}
curl_close($c);
 
$data=@json_decode($result,true);
if(is_array($data)){
return$data;
}else{
returnarray();
}
}
 
 
?>
Рустем Джантаев • 12 лет назад

Заметил пару дней назад что

print_r(domainCheck('ps.kz'));

дает пустой массив пправте ПЛИЗ

Рустем Джантаев • 12 лет назад

Заметил пару дней назад что

print_r(domainCheck('ps.kz'));

дает пустой массив
дайте знать как исправите СПАСИБО

Максим Радченко • 12 лет назад

Спасибо что написали об ошибке. Исправил. Проверьте.

Gany Berikov • 12 лет назад

Как можно получить логин и пароль?
Отравил заявку в отдел продаж, а там молчок.

Никита Красулин • 12 лет назад

В тот же день отправили по почте :)

RustemDzhantaev • 12 лет назад

будут ли АИПшки силами которых можно получить ftp логин создать субдомен и залить на сам сервер

nodkz • 12 лет назад

К сожалению, такой функционал не планируется.

Как я понимаю вы говорите про Shared Hosting. Мы используем Parallel Plesk, у которого есть достаточно богатый API. Но достаточно сложно его будет пробросить через наш API. Надо учитывать, то что на сервере находятся другие клиенты и разделение доступа превращаются в семь кругов ада.

Т.к. у вас достаточно специфичная задача, то рекомендуем купить VPS хостинг, установить на него Parallel Plesk и пользоваться напрямую через их API.

RustemDzhantaev • 12 лет назад

все правильно ) есть одно но . Клиент покупает на нашем сайте хостинг и домен , далее он выбирает нужный ему шаблон оплачивает все и одним нажатием кнопки у него создается свой домен хостинг и ваш апи бросает все это на его хостинг

Никита Красулин • 12 лет назад

Не до конца понятна идея. Сейчас созвонюсь с Вами, попробую уточнить.

Никита Красулин • 12 лет назад

Попробовал позвонить по телефону, указанному в Вашем личном кабинете. Он недоступен.

Можете здесь более подробно объяснить Вашу идею или позвонить мне на +7-777-2258149

николай • 10 лет назад

сейчас работаю над похожей ситуацией есть решение

Andrii Kurdiumov • 12 лет назад

Можно ли использовать существующий Plesk API для того чтобы автоматизировать работу с shared hosting купленным у вас?

Интернет-компания PS • 11 лет назад

Извиняюсь за долгий ответ.
Нет, к сожалению в данный момент это невозможно.

Тест • 3 лет назад

Тестовое сообщение для теста