# Документация модуля skydns_website.api.application (API Агентов)

#### Доступные методы API

Модуль хранения представлений JSON-RPC API. Используется агентами.

Curl запросы для тестирования выглядит так:

```
curl -X POST http://localhost:8000/api/json/v2 -L –user user:password > -d ‘{“id”:0, “jsonrpc”:”2.0”,”method”:”renameProfile”,”params”:[1234, “abcd”]}’
```

В простейшем случае связку кредитов можно использовать такую:

```
plantest-premium@skydns.ru:plantest
```

```
skydns_website.api.application.views.add_domain(<em>request</em>, <em>profile</em>, <em>choice</em>, <em>domain</em>, <em>ip=None</em>, <em>comment=''</em>)
```

##### JSONRPC Method: addDomain

Добавить домен.

<table class="docutils field-list" frame="void" id="bkmrk-%D0%9F%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B%3A-profile%C2%A0%E2%80%93" rules="none" style="width: 79.0123%; height: 207.45px;"><colgroup><col class="field-name" style="width: 18.125%;"></col><col class="field-body" style="width: 81.7188%;"></col></colgroup><tbody valign="top"><tr class="field-odd field" style="height: 137.05px;"><th class="field-name" style="height: 137.05px;">Параметры:</th><td class="field-body" style="height: 137.05px;">- **profile** – профиль пользователя
- **choice** – тип домена
- **domain** – домен
- **ip** – IP адрес (если передать IP, то будет добавлен не домен, а алиас)
- **comment** – комментарий к домену

</td></tr><tr class="field-even field" style="height: 35.2px;"><th class="field-name" style="height: 35.2px;">Результат:</th><td class="field-body" style="height: 35.2px;">id добавленного домена.

</td></tr><tr class="field-odd field" style="height: 35.2px;"><th class="field-name" style="height: 35.2px;">Тип результата:</th><td class="field-body" style="height: 35.2px;">int

</td></tr></tbody></table>

```
skydns_website.api.application.views.add_profile(<em>request</em>, <em>name</em>)
```

##### JSONRPC Method: addProfile

Метод создает профиль и возвращает словарь с данными о профиле.

<table class="docutils field-list" frame="void" id="bkmrk-%D0%9F%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B%3A-name%C2%A0%E2%80%93-%D0%B8%D0%BC" rules="none"><colgroup><col class="field-name"></col><col class="field-body"></col></colgroup><tbody valign="top"><tr class="field-odd field"><th class="field-name">Параметры:</th><td class="field-body">**name** – имя создаваемого профиля</td></tr><tr class="field-even field"><th class="field-name">Результат:</th><td class="field-body">данные созданного профиля в формате:

```
{

‘id’: id профиля, 
‘default’: является ли профиль профилем по умолчанию, 
‘token’: токен, 
‘name’: название профиля, 
‘white_list_only’: включена ли фильтрация только по белому списку, 
‘is_schedule_enabled’: включено ли расписание, 
‘safe_search_enabled’: статус безопасного поиска, 
‘safe_youtube_enabled’: статус фильтрации YouTube (для API v2), 
‘block_unknown_enabled’: статус фильтрации неизвестных сайтов (для API v2)

}
```

</td></tr><tr class="field-odd field"><th class="field-name">Тип результата:</th><td class="field-body">dict</td></tr></tbody></table>

```
skydns_website.api.application.views.categories(<em>request</em>, <em>language='en'</em>)
```

##### JSONRPC Method: categories

Получить список сгруппированных категорий.

<table class="docutils field-list" frame="void" id="bkmrk-%D0%9F%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B%3A-language%C2%A0" rules="none"><colgroup><col class="field-name"></col><col class="field-body"></col></colgroup><tbody valign="top"><tr class="field-odd field"><th class="field-name">Параметры:</th><td class="field-body">**language** – язык выдачи</td></tr><tr class="field-even field"><th class="field-name">Результат:</th><td class="field-body">список сгруппированных категорий в формате:

```
[
   {
      “title”: “group1”, “items”: [
         {
            “title”: “item1”, “id”: 1
      ]

]
```

</td></tr><tr class="field-odd field"><th class="field-name">Тип результата:</th><td class="field-body">list</td></tr></tbody></table>

```
skydns_website.api.application.views.change_schedule(request, profile, segments)
```

**JSONRPC Method: setSchedule**

Установить расписание фильтрации.

<table id="bkmrk-%D0%9F%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B%3A-profile%C2%A0%E2%80%93-0"><tbody valign="top"><tr class="field-odd field"><th class="field-name">Параметры:</th><td class="field-body">- **profile** – профиль пользователя
- **segments** – список сегментов вида: \[\[&lt;offset1&gt;, &lt;true|false&gt;\], \[&lt;offset2&gt;, &lt;true|false&gt;\]\]

</td></tr><tr class="field-even field"><th class="field-name">Результат:</th><td class="field-body">\[True\]

</td></tr><tr class="field-odd field"><th class="field-name">Тип результата:</th><td class="field-body">list

</td></tr></tbody></table>

```
skydns_website.api.application.views.clear_domains(request, profile, choice )
```

**JSONRPC Method: clearDomains**

Удалить все домены определенного типа у профиля.

<table id="bkmrk-%D0%9F%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B%3A-profile%C2%A0%E2%80%93-1"><tbody valign="top"><tr class="field-odd field"><th class="field-name">Параметры:</th><td class="field-body">- **profile** – профиль пользователя
- **choice** – тип домена

</td></tr><tr class="field-even field"><th class="field-name">Результат:</th><td class="field-body">None

</td></tr></tbody></table>

<dl class="function" id="bkmrk-skydns_website.api.a-4"><dt id="bkmrk-skydns_website.api.a-50">`skydns_website.api.application.views.``domains`<span class="sig-paren">(</span>*request*, *profile*, *choice*<span class="sig-paren">)</span></dt><dd>**JSONRPC Method: domains**

Получить список доменов определенного типа для профиля.

<table class="docutils field-list" frame="void" rules="none"><colgroup><col class="field-name"></col><col class="field-body"></col></colgroup><tbody valign="top"><tr class="field-odd field"><th class="field-name">Параметры:</th><td class="field-body">- **profile** – профиль пользователя
- **choice** – тип домена (‘black’, ‘white’ или ‘alias’)

</td></tr><tr class="field-even field"><th class="field-name">Результат:</th><td class="field-body">для запроса чёрных или белых доменов - список словарей в формате:

```
{

“domain”: домен, “id”: id домена

]
```

для запроса алиасов - список словарей в формате:

```
[
{
“domain”: домен, “id”: id домена, “ip”: ip-адрес

]
```

</td></tr></tbody></table>

<dl class="docutils"></dl><dl class="docutils"><dt><table class="docutils field-list" frame="void" rules="none"><colgroup><col class="field-name"></col><col class="field-body"></col></colgroup><tbody valign="top"><tr class="field-odd field"><th class="field-name">Тип результата:</th><td class="field-body">list</td></tr></tbody></table>

</dt></dl></dd></dl><dl class="function" id="bkmrk-skydns_website.api.a-5"><dt id="bkmrk-skydns_website.api.a-51">```
skydns_website.api.application.views.enable_schedule(request, profile, flag)
```

</dt><dd>**JSONRPC Method: setScheduleEnabled**

Включить/выключить расписание для профиля.

<table class="docutils field-list" frame="void" rules="none"><colgroup><col class="field-name"></col><col class="field-body"></col></colgroup><tbody valign="top"><tr class="field-odd field"><th class="field-name">Параметры:</th><td class="field-body">- **profile** – профиль пользователя
- **flag** – флаг включить/выключить

</td></tr><tr class="field-even field"><th class="field-name">Результат:</th><td class="field-body">flag

</td></tr><tr class="field-odd field"><th class="field-name">Тип результата:</th><td class="field-body">bool

</td></tr></tbody></table>

</dd></dl><dl class="function" id="bkmrk-skydns_website.api.a-6"><dt id="bkmrk-skydns_website.api.a-52">```
skydns_website.api.application.views.feedback(request, title, message)
```

</dt><dd>**JSONRPC Method: feedback**

Отправить сообщение обратной связи пользователя.

<table class="docutils field-list" frame="void" rules="none"><colgroup><col class="field-name"></col><col class="field-body"></col></colgroup><tbody valign="top"><tr class="field-odd field"><th class="field-name">Параметры:</th><td class="field-body">- **title** – заголовок сообщения для отправки
- **message** – сообщение для отправки

</td></tr><tr class="field-even field"><th class="field-name">Результат:</th><td class="field-body">None

</td></tr></tbody></table>

</dd></dl><dl class="function" id="bkmrk-skydns_website.api.a-7"><dt id="bkmrk-skydns_website.api.a-53">```
skydns_website.api.application.views.get_advertising(request)
```

</dt><dd>**JSONRPC Method: getAdvertising**

Получить информацию об акции.

<table class="docutils field-list" frame="void" rules="none"><colgroup><col class="field-name"></col><col class="field-body"></col></colgroup><tbody valign="top"><tr class="field-odd field"><th class="field-name">Результат:</th><td class="field-body">\[&lt;strAdvUrl&gt;, &lt;strImageUrl&gt;\]</td></tr><tr class="field-even field"><th class="field-name">Тип результата:</th><td class="field-body">list</td></tr></tbody></table>

</dd></dl><dl class="function" id="bkmrk-skydns_website.api.a-8"><dt id="bkmrk-skydns_website.api.a-54">```
skydns_website.api.application.views.get_agent_profile(request, uid, hostname, version, os_info, address)
```

</dt><dd>**JSONRPC Method: getProfile**

Возвращает необходимые настройки (токен, UID) для работы агентского приложения. Если передан UID - метод вернёт информацию об уже существующем профиле с этим UID. Если UID пуст, но переданы все остальные параметры - будет создан новый профиль.

<table class="docutils field-list" frame="void" rules="none"><colgroup><col class="field-name"></col><col class="field-body"></col></colgroup><tbody valign="top"><tr class="field-odd field"><th class="field-name">Параметры:</th><td class="field-body">- **uid** – uid
- **hostname** – имя хоста
- **version** – версия
- **os\_info** – информация
- **address** – IP адрес

</td></tr><tr class="field-even field"><th class="field-name">Результат:</th><td class="field-body">список с данными профиля агента: \[uid, token, profile\_id\]

</td></tr><tr class="field-odd field"><th class="field-name">Тип результата:</th><td class="field-body">list

</td></tr></tbody></table>

</dd></dl><dl class="function" id="bkmrk-skydns_website.api.a-9"><dt id="bkmrk-skydns_website.api.a-55">```
skydns_website.api.application.views.get_categories_daily_stat(request, profile, lang='en', categories_list=None)
```

</dt><dd>**JSONRPC Method: getCategoriesDailyStats**

Получить статистику по категориям за сутки для нужного профиля.

<table class="docutils field-list" frame="void" rules="none"><colgroup><col class="field-name"></col><col class="field-body"></col></colgroup><tbody valign="top"><tr class="field-odd field"><th class="field-name">Параметры:</th><td class="field-body">- **profile** – профиль пользователя
- **lang** – язык выдачи
- **categories\_list** – список идентификаторов категорий. Если его нет, то будет получена статистика блокировок по всем категориям для профиля пользователя

</td></tr><tr class="field-even field"><th class="field-name">Результат:</th><td class="field-body">словарь формата: {

```
<category_name>: <value> ...

}
```

</td></tr><tr class="field-odd field"><th class="field-name">Тип результата:</th><td class="field-body">dict

</td></tr></tbody></table>

</dd></dl><dl class="function" id="bkmrk-skydns_website.api.a-10"><dt id="bkmrk-skydns_website.api.a-56">```
skydns_website.api.application.views.get_filtering_status(request)
```

</dt><dd>**JSONRPC Method: getFilteringStatus**

Получить состояние фильтрации пользователя. :return: &lt;состояние фильтрации&gt; :rtype: bool

</dd></dl><dl class="function" id="bkmrk-skydns_website.api.a-11"><dt id="bkmrk-skydns_website.api.a-57">```
skydns_website.api.application.views.get_limited_agent_profile(request, uid, hostname, version, os_info, address)
```

</dt><dd>**JSONRPC Method: getLimitedProfile**

Это модификация метода get\_agent\_profile (getProfile). Этот метод проверяет, сколько уже выдано токенов пользователю (мобильных или десктопных Linux), и если это число превышает максимум (ПФ max\_mobile\_agents и max\_desktop\_agents соответственно), отдаёт фейловые токены (‘’, 9999999999, &lt;profile\_id&gt;) Если запрос не мобильного или десктопного Linux агента, токены генерируются без условий. Если передан UID - метод вернёт информацию об уже существующем профиле с этим UID. Если UID пуст, но переданы все остальные параметры - будет создан новый профиль.

<table class="docutils field-list" frame="void" rules="none"><colgroup><col class="field-name"></col><col class="field-body"></col></colgroup><tbody valign="top"><tr class="field-odd field"><th class="field-name">Параметры:</th><td class="field-body">- **uid** – uid
- **hostname** – имя хоста
- **version** – версия
- **os\_info** – информация
- **address** – IP адрес

</td></tr><tr class="field-even field"><th class="field-name">Результат:</th><td class="field-body">список с данными профиля агента: \[uid, token, profile\_id\]

</td></tr><tr class="field-odd field"><th class="field-name">Тип результата:</th><td class="field-body">list

</td></tr></tbody></table>

</dd></dl><dl class="function" id="bkmrk-skydns_website.api.a-12"><dt id="bkmrk-skydns_website.api.a-58">```
skydns_website.api.application.views.get_linux_supporting(request, tag=None, version=None)
```

</dt><dd>**JSONRPC Method: getLinuxSupporting**

Получить версии Linux-агента: минимальную поддерживаемую (подлежащую принудительному обновлению) и текущую.

<table class="docutils field-list" frame="void" rules="none" style="width: 262.963%;"><colgroup><col class="field-name" style="width: 15.6917%;"></col><col class="field-body" style="width: 84.2836%;"></col></colgroup><tbody valign="top"><tr class="field-odd field"><th class="field-name">Параметры:</th><td class="field-body">- **tag** – тег для получения версий (по умолчанию - самая новая без разбора версии ОС)
- **version** – текущая версия установленного агента

</td></tr><tr class="field-even field"><th class="field-name">Результат:</th><td class="field-body">словарь вида:

```
{

‘minimalSupported’: <минимально поддерживаемая версия (целое неотрицательное число)>, ‘current’: <текущая версия мобильного агента (целое неотрицательное число)>, ‘url’: <url до пакета>, ‘checksum’: <контрольная сумма пакета>, ‘announces’: анонсы версий, от version до последней, если version не указан, то все

[
{

‘version’: <номер версии> ‘announce’: <анонс для этой версии>

]

}
```

</td></tr><tr class="field-odd field"><th class="field-name">Тип результата:</th><td class="field-body">dict

</td></tr></tbody></table>

</dd></dl><dl class="function" id="bkmrk-skydns_website.api.a-13"><dt id="bkmrk-skydns_website.api.a-59">```
skydns_website.api.application.views.get_plans_list(request, mobile=False)
```

</dt><dd>**JSONRPC Method: getPlans**

Получить список тарифных планов.

<table class="docutils field-list" frame="void" rules="none" style="width: 232.716%;"><colgroup><col class="field-name" style="width: 20.2725%;"></col><col class="field-body" style="width: 79.7027%;"></col></colgroup><tbody valign="top"><tr class="field-odd field"><th class="field-name">Параметры:</th><td class="field-body">**mobile** – True - выдавать только мобильные планы, False - все</td></tr><tr class="field-even field"><th class="field-name">Результат:</th><td class="field-body">список тарифов в формате: ```
[
{
‘code’: код тарифа, ‘name’: название тарифа, ‘price’: стоимость тарифа, ‘trialPeriod’: сколько дней триального периода на тарифе, ‘period’: на сколько месяцев покупается тариф, ‘isMobile’: является ли тариф мобильным, ‘description’: URL страницы сайта с описанием тарифа

]
```

</td></tr><tr class="field-odd field"><th class="field-name">Тип результата:</th><td class="field-body">list</td></tr></tbody></table>

</dd></dl><dl class="function" id="bkmrk-skydns_website.api.a-14"><dt id="bkmrk-skydns_website.api.a-60">```
skydns_website.api.application.views.get_popular_report(request, start, end, profile_id=None)
```

</dt><dd>**JSONRPC Method: getPopularReport**

Отчет о популярных запросах пользователя за определенный период времени.

<table class="docutils field-list" frame="void" rules="none" style="width: 174.815%;"><colgroup><col class="field-name" style="width: 13.0944%;"></col><col class="field-body" style="width: 86.8809%;"></col></colgroup><tbody valign="top"><tr class="field-odd field"><th class="field-name">Параметры:</th><td class="field-body">- **start** – дата начала периода для получения статистики в формате YYYY-MM-DD
- **end** – дата окончания периода для получения статистики в формате YYYY-MM-DD
- **profile\_id** – id профиля. Если не задан, будет создан отчёт по всем профилям пользователя

</td></tr><tr class="field-even field"><th class="field-name">Результат:</th><td class="field-body">словарь вида:

```
{

“labels”: [“example.com”, “google.com”, “asdfg.com”], “datasets”: [

{“label”: “Requests”, “data”: [630, 474, 290]}, {“label”: “NXdomain”, “data”: [0, 0, 290]}, {“label”: “Blocks”, “data”: [630, 0, 0]}

]

}
```

</td></tr></tbody></table>

</dd></dl><dl class="function" id="bkmrk-skydns_website.api.a-15"><dt id="bkmrk-skydns_website.api.a-61">```
skydns_website.api.application.views.get_ssl_certificate(request, version=1)
```

</dt><dd>**JSONRPC Method: getSSLCertificate**

Получить ссылку на корневой SSL-сертификат СкайДНС.

<table class="docutils field-list" frame="void" rules="none"><colgroup><col class="field-name"></col><col class="field-body"></col></colgroup><tbody valign="top"><tr class="field-odd field"><th class="field-name">Результат:</th><td class="field-body">&lt;прямая ссылка до сертификата&gt;</td></tr><tr class="field-even field"><th class="field-name">Тип результата:</th><td class="field-body">str</td></tr></tbody></table>

</dd></dl><dl class="function" id="bkmrk-skydns_website.api.a-16"><dt id="bkmrk-skydns_website.api.a-62">```
skydns_website.api.application.views.get_ssl_certificate_data_v2(request, version=1)
```

</dt><dd>Получить ссылки на скачивание SSL-сертификатов СкайДНС.

```
 :return: {

“certs”: [
“cert/url”, “cert/url”
], “expires”: “YYYY-MM-DDTHH:MM:SS”

} :rtype: dict curl test request: curl –location –request POST ‘https://skynds.ru/api/json/v2‘ –header ‘Content-Type: application/json’ –data-raw ‘{

“id”: 0, “jsonrpc”: “2.0”, “method”: “getSSLCertificatesDataV2”, “params”: [“3”]
}’

>{
“id”:0,”jsonrpc”:”2.0”, “result”:{

“expires”:”2028-01-19T00:00:00”, “certs”:[

“https://www.skynds.ru/userfiles/certs/skydns_iss.crt”, “https://www.skynds.ru/userfiles/certs/skydns_root.crt“
]

}

}
```

</dd></dl><dl class="function" id="bkmrk-skydns_website.api.a-17"><dt id="bkmrk-skydns_website.api.a-63">```
skydns_website.api.application.views.get_user_plan_info(request)
```

</dt><dd>**JSONRPC Method: getPlan**

Получить информацию о тарифе пользователя.

<table class="docutils field-list" frame="void" rules="none"><colgroup><col class="field-name"></col><col class="field-body"></col></colgroup><tbody valign="top"><tr class="field-odd field"><th class="field-name">Результат:</th><td class="field-body">информация о тарифе в формате: { <div>‘name’: название плана, ‘expired’: количество дней до истечения оплаченного периода, ‘isMobile’: поддерживает ли тариф мобильные устройства (true | false)</div>}

</td></tr><tr class="field-even field"><th class="field-name">Тип результата:</th><td class="field-body">dict</td></tr></tbody></table>

</dd></dl><dl class="function" id="bkmrk-skydns_website.api.a-18"><dt id="bkmrk-skydns_website.api.a-64">```
skydns_website.api.application.views.get_version(request, tag=None)
```

</dt><dd>**JSONRPC Method: getAPCVersion**

Получить версии мобильного приложения.

<table class="docutils field-list" frame="void" rules="none"><colgroup><col class="field-name"></col><col class="field-body"></col></colgroup><tbody valign="top"><tr class="field-odd field"><th class="field-name">Параметры:</th><td class="field-body">**tag** – тег для получения версий, по умолчанию ‘default’</td></tr><tr class="field-even field"><th class="field-name">Результат:</th><td class="field-body">словарь вида: { <div>‘minimalSupported’: &lt;минимально поддерживаемая версия (целое неотрицательное число)&gt;, ‘current’: &lt;текущая версия мобильного агента (целое неотрицательное число)&gt;</div>}

</td></tr><tr class="field-odd field"><th class="field-name">Тип результата:</th><td class="field-body">dict</td></tr></tbody></table>

</dd></dl><dl class="function" id="bkmrk-skydns_website.api.a-19"><dt id="bkmrk-skydns_website.api.a-65">```
skydns_website.api.application.views.intentional_crash(request)
```

</dt><dd>**JSONRPC Method: intentionalCrash**

Специальный метод, всегда выдающий JsonRpcRuntimeError.

<table class="docutils field-list" frame="void" rules="none"><colgroup><col class="field-name"></col><col class="field-body"></col></colgroup><tbody valign="top"><tr class="field-odd field"><th class="field-name">Результат:</th><td class="field-body">None</td></tr></tbody></table>

</dd></dl><dl class="function" id="bkmrk-skydns_website.api.a-20"><dt id="bkmrk-skydns_website.api.a-66">```
skydns_website.api.application.views.multi_schedule(request, profile)
```

</dt><dd>**JSONRPC Method: multiSchedule**

Получить расписание фильтрации.

<table class="docutils field-list" frame="void" rules="none"><colgroup><col class="field-name"></col><col class="field-body"></col></colgroup><tbody valign="top"><tr class="field-odd field"><th class="field-name">Параметры:</th><td class="field-body">**profile** – профиль пользователя</td></tr><tr class="field-even field"><th class="field-name">Результат:</th><td class="field-body">расписание фильтрации в формате: ```
[
[<offset1>, <True|False>], [<offset2>, <True|False>], ...

]
```

</td></tr><tr class="field-odd field"><th class="field-name">Тип результата:</th><td class="field-body">list</td></tr></tbody></table>

</dd></dl><dl class="function" id="bkmrk-skydns_website.api.a-21"><dt id="bkmrk-skydns_website.api.a-67">```
skydns_website.api.application.views.my_ip(request)
```

</dt><dd>**JSONRPC Method: myip**

Получение текущего IP адреса клиента.

<table class="docutils field-list" frame="void" rules="none"><colgroup><col class="field-name"></col><col class="field-body"></col></colgroup><tbody valign="top"><tr class="field-odd field"><th class="field-name">Результат:</th><td class="field-body">IP адрес клиента</td></tr><tr class="field-even field"><th class="field-name">Тип результата:</th><td class="field-body">str</td></tr></tbody></table>

</dd></dl><dl class="function" id="bkmrk-skydns_website.api.a-22"><dt id="bkmrk-skydns_website.api.a-68">```
skydns_website.api.application.views.profile_schedule_activity(request, profile)
```

</dt><dd>**JSONRPC Method: profileScheduleActivity**

Получить количество минут до изменения состояния фильтрации профилей.

<table class="docutils field-list" frame="void" rules="none"><colgroup><col class="field-name"></col><col class="field-body"></col></colgroup><tbody valign="top"><tr class="field-odd field"><th class="field-name">Параметры:</th><td class="field-body">**profile** – профиль пользователя</td></tr><tr class="field-even field"><th class="field-name">Результат:</th><td class="field-body">\[&lt;флаг: работает ли фильтрация по профилю&gt;, &lt;количество минут до смены состояния&gt;\] количество минут = -1, если расписание выключено или нет других состояний.</td></tr></tbody></table>

<dl class="docutils"><dt>Пример:</dt><dd><dl class="first last docutils"><dt>```
first segment state last segment current offset
change | /

v v v v

|//////////| False |///////////////X/| 0———260———1090————–10k | True |///////////| True |
```

</dt></dl></dd></dl><table class="docutils field-list" frame="void" rules="none"><colgroup><col class="field-name"></col><col class="field-body"></col></colgroup><tbody valign="top"><tr class="field-odd field"><th class="field-name">Тип результата:</th><td class="field-body">list</td></tr></tbody></table>

</dd></dl><dl class="function" id="bkmrk-skydns_website.api.a-23"><dt id="bkmrk-skydns_website.api.a-69">```
skydns_website.api.application.views.profiles(request)
```

</dt><dd>**JSONRPC Method: profiles**

Получение списка профилей.

<table class="docutils field-list" frame="void" rules="none" style="width: 352.222%;"><colgroup><col class="field-name" style="width: 17.7786%;"></col><col class="field-body" style="width: 82.1967%;"></col></colgroup><tbody valign="top"><tr class="field-odd field"><th class="field-name">Результат:</th><td class="field-body">список профилей в формате: ```
 [
{
‘id’: id профиля, ‘default’: является ли профиль профилем по умолчанию, ‘token’: токен, ‘name’: название профиля, ‘white_list_only’: включена ли фильтрация только по белому списку, ‘is_schedule_enabled’: включено ли расписание, ‘safe_search_enabled’: статус безопасного поиска, ‘safe_youtube_enabled’: статус фильтрации YouTube (для API v2), ‘block_unknown_enabled’: статус фильтрации неизвестных сайтов (для API v2)

]
```

</td></tr><tr class="field-even field"><th class="field-name">Тип результата:</th><td class="field-body">list</td></tr></tbody></table>

</dd></dl><dl class="function" id="bkmrk-skydns_website.api.a-24"><dt id="bkmrk-skydns_website.api.a-70">```
skydns_website.api.application.views.register_user(request, username, password)
```

</dt><dd>**JSONRPC Method: register**

Регистрация нового пользователя в облачном сервисе контент-фильтрации SkyDNS.

<table class="docutils field-list" frame="void" rules="none"><colgroup><col class="field-name"></col><col class="field-body"></col></colgroup><tbody valign="top"><tr class="field-odd field"><th class="field-name">Параметры:</th><td class="field-body">- **username** – имя пользователя
- **password** – пароль создаваемого пользователя

</td></tr><tr class="field-even field"><th class="field-name">Результат:</th><td class="field-body">\[True\], если регистрация прошла успешно, \[False, “error”\] в противном случае

</td></tr><tr class="field-odd field"><th class="field-name">Тип результата:</th><td class="field-body">list

</td></tr></tbody></table>

</dd></dl><dl class="function" id="bkmrk-skydns_website.api.a-25"><dt id="bkmrk-skydns_website.api.a-71">```
skydns_website.api.application.views.remove_agent_profile(request, uid)
```

</dt><dd>**JSONRPC Method: removeAgentProfile**

Метод удаляет AgentInfo отфильтрованный по заданному uid атрибуту.

<table class="docutils field-list" frame="void" rules="none"><colgroup><col class="field-name"></col><col class="field-body"></col></colgroup><tbody valign="top"><tr class="field-odd field"><th class="field-name">Параметры:</th><td class="field-body">**uid** – uid</td></tr><tr class="field-even field"><th class="field-name">Результат:</th><td class="field-body">количество удалённых записей</td></tr><tr class="field-odd field"><th class="field-name">Тип результата:</th><td class="field-body">int</td></tr></tbody></table>

</dd></dl><dl class="function" id="bkmrk-skydns_website.api.a-26"><dt id="bkmrk-skydns_website.api.a-72">```
skydns_website.api.application.views.remove_domain(request, profile, choice, id)
```

</dt><dd>**JSONRPC Method: removeDomain**

Удалить домен у заданного профиля.

TODO: параметр choice можно убрать и выбирать домен только по id.

<table class="docutils field-list" frame="void" rules="none"><colgroup><col class="field-name"></col><col class="field-body"></col></colgroup><tbody valign="top"><tr class="field-odd field"><th class="field-name">Параметры:</th><td class="field-body">- **profile** – профиль пользователя
- **choice** – тип домена
- **id** – id домена

</td></tr><tr class="field-even field"><th class="field-name">Результат:</th><td class="field-body">None

</td></tr></tbody></table>

</dd></dl><dl class="function" id="bkmrk-skydns_website.api.a-27"><dt id="bkmrk-skydns_website.api.a-73">```
skydns_website.api.application.views.remove_profile(request, profile)
```

</dt><dd>**JSONRPC Method: removeProfile**

Метод удаляет указанный профиль.

<table class="docutils field-list" frame="void" rules="none"><colgroup><col class="field-name"></col><col class="field-body"></col></colgroup><tbody valign="top"><tr class="field-odd field"><th class="field-name">Параметры:</th><td class="field-body">**profile** – числовой id удаляемого профиля</td></tr><tr class="field-even field"><th class="field-name">Результат:</th><td class="field-body">None</td></tr></tbody></table>

</dd></dl><dl class="function" id="bkmrk-skydns_website.api.a-28"><dt id="bkmrk-skydns_website.api.a-74">```
skydns_website.api.application.views.rename_profile(request, profile_id, name)
```

</dt><dd>**JSONRPC Method: renameProfile**

Метод устанавливает новое имя для профиля. Возвращает актуальное имя.

<table class="docutils field-list" frame="void" rules="none"><colgroup><col class="field-name"></col><col class="field-body"></col></colgroup><tbody valign="top"><tr class="field-odd field"><th class="field-name">Параметры:</th><td class="field-body">- **profile\_id** – числовой id профиля, имя которого необходимо изменить
- **name** – новое имя профиля

</td></tr><tr class="field-even field"><th class="field-name">Результат:</th><td class="field-body">новое имя профиля

</td></tr><tr class="field-odd field"><th class="field-name">Тип результата:</th><td class="field-body">string

</td></tr></tbody></table>

</dd></dl><dl class="function" id="bkmrk-skydns_website.api.a-29"><dt id="bkmrk-skydns_website.api.a-75">```
skydns_website.api.application.views.send_debug_info(request, uid, info)
```

</dt><dd>Отправить логи для отладки.

<table class="docutils field-list" frame="void" rules="none"><colgroup><col class="field-name"></col><col class="field-body"></col></colgroup><tbody valign="top"><tr class="field-odd field"><th class="field-name">Параметры:</th><td class="field-body">**info** – информация лога формата \[{“command\_title”: &lt;log\_name&gt;, “command\_info”” &lt;log\_message&gt;}, ... \]</td></tr><tr class="field-even field"><th class="field-name">Результат:</th><td class="field-body">количество созданных объектов</td></tr></tbody></table>

curl запрос для тестирования выглядит так:

```
$ curl -X POST http://localhost:8000/api/json/v2 -L –user plantest-premium@skydns.ru:plantest1 -d ‘{“id”:0, > “jsonrpc”:”2.0”, “method”:”sendDebugInfo”, > “params”: [“uid”, [{“command_title”: <log_name>, “command_info”” <log_message>}]}’
```

</dd></dl><dl class="function" id="bkmrk-skydns_website.api.a-30"><dt id="bkmrk-skydns_website.api.a-76">```
skydns_website.api.application.views.send_log(request, profile_id=None, log_content='', os_info=None)
```

</dt><dd>**JSONRPC Method: sendLog**

Фиксация в лог-файл лога пользователя с агентского решения.

<table class="docutils field-list" frame="void" rules="none"><colgroup><col class="field-name"></col><col class="field-body"></col></colgroup><tbody valign="top"><tr class="field-odd field"><th class="field-name">Параметры:</th><td class="field-body">- **profile** – профиль пользователя
- **log\_content** – лог пользователя
- **os\_info** – версия системы

</td></tr><tr class="field-even field"><th class="field-name">Результат:</th><td class="field-body">True

</td></tr><tr class="field-odd field"><th class="field-name">Тип результата:</th><td class="field-body">boolean

</td></tr></tbody></table>

</dd></dl><dl class="function" id="bkmrk-skydns_website.api.a-31"><dt id="bkmrk-skydns_website.api.a-77">```
skydns_website.api.application.views.send_package(request, package, file_name, system_tag, version, checksum, announce)
```

</dt><dd>**JSONRPC Method: sendPackage**

Загрузка новых версий агентов на сервер.

<table class="docutils field-list" frame="void" rules="none"><colgroup><col class="field-name"></col><col class="field-body"></col></colgroup><tbody valign="top"><tr class="field-odd field"><th class="field-name">Параметры:</th><td class="field-body">- **package** – содержимое пакета в Base64
- **file\_name** – имя файла
- **system\_tag** – тег версии ОС
- **version** – версия агента
- **checksum** – контрольная сумма
- **announce** – анонс версии

</td></tr><tr class="field-even field"><th class="field-name">Результат:</th><td class="field-body">True

</td></tr><tr class="field-odd field"><th class="field-name">Тип результата:</th><td class="field-body">boolean

</td></tr></tbody></table>

</dd></dl><dl class="function" id="bkmrk-skydns_website.api.a-32"><dt id="bkmrk-skydns_website.api.a-78">```
skydns_website.api.application.views.set_agent_profile(request, uid, profile_id)
```

</dt><dd>**JSONRPC Method: setProfile**

Установить профиль AgentInfo.

<table class="docutils field-list" frame="void" rules="none"><colgroup><col class="field-name"></col><col class="field-body"></col></colgroup><tbody valign="top"><tr class="field-odd field"><th class="field-name">Параметры:</th><td class="field-body">- **uid** – uid AgentInfo
- **profile\_id** – id профиля, который требуется установить

</td></tr><tr class="field-even field"><th class="field-name">Результат:</th><td class="field-body">None

</td></tr></tbody></table>

</dd></dl><dl class="function" id="bkmrk-skydns_website.api.a-33"><dt id="bkmrk-skydns_website.api.a-79">```
skydns_website.api.application.views.set_block_unknown_enabled(request, profile, flag)
```

</dt><dd>**JSONRPC Method: setBlockUnknownEnabled**

Включить/выключить блокировку неизвестных сайтов.

<table class="docutils field-list" frame="void" rules="none"><colgroup><col class="field-name"></col><col class="field-body"></col></colgroup><tbody valign="top"><tr class="field-odd field"><th class="field-name">Параметры:</th><td class="field-body">- **profile** – профиль пользователя
- **flag** – флаг включить/выключить

</td></tr><tr class="field-even field"><th class="field-name">Результат:</th><td class="field-body">None

</td></tr></tbody></table>

</dd></dl><dl class="function" id="bkmrk-skydns_website.api.a-34"><dt id="bkmrk-skydns_website.api.a-80">```
skydns_website.api.application.views.set_categories(request, profile_id, cat_ids_list)
```

</dt><dd>**JSONRPC Method: setFilterCats**

Метод привязывает список категорий фильтрации к профилю пользователя и возвращает актуальный список категорий.

<table class="docutils field-list" frame="void" rules="none"><colgroup><col class="field-name"></col><col class="field-body"></col></colgroup><tbody valign="top"><tr class="field-odd field"><th class="field-name">Параметры:</th><td class="field-body">- **profile\_id** – числовой id профиля
- **cat\_ids\_list** – список id категорий

</td></tr><tr class="field-even field"><th class="field-name">Результат:</th><td class="field-body">актуальный список id категорий

</td></tr><tr class="field-odd field"><th class="field-name">Тип результата:</th><td class="field-body">list

</td></tr></tbody></table>

</dd></dl><dl class="function" id="bkmrk-skydns_website.api.a-35"><dt id="bkmrk-skydns_website.api.a-81">```
skydns_website.api.application.views.set_category(request, profile, cat, state)
```

</dt><dd>**JSONRPC Method: setFilterCat**

Метод позволяет изменить состояние фильтра для категории.

<table class="docutils field-list" frame="void" rules="none"><colgroup><col class="field-name"></col><col class="field-body"></col></colgroup><tbody valign="top"><tr class="field-odd field"><th class="field-name">Параметры:</th><td class="field-body">- **profile** – профиль пользователя
- **cat** – числовой id категории
- **state** – булево значение состояния категории (true/false)

</td></tr><tr class="field-even field"><th class="field-name">Результат:</th><td class="field-body">None

</td></tr></tbody></table>

</dd></dl><dl class="function" id="bkmrk-skydns_website.api.a-36"><dt id="bkmrk-skydns_website.api.a-82">```
skydns_website.api.application.views.set_filtering_status(request, enabled)
```

</dt><dd>**JSONRPC Method: setFilteringStatus**

Установить состояние фильтрации пользователя. :param enabled: состояние фильтрации для установки

<table class="docutils field-list" frame="void" rules="none"><colgroup><col class="field-name"></col><col class="field-body"></col></colgroup><tbody valign="top"><tr class="field-odd field"><th class="field-name">Результат:</th><td class="field-body">&lt;состояние фильтрации&gt;</td></tr><tr class="field-even field"><th class="field-name">Тип результата:</th><td class="field-body">bool</td></tr></tbody></table>

</dd></dl><dl class="function" id="bkmrk-skydns_website.api.a-37"><dt id="bkmrk-skydns_website.api.a-83">```
skydns_website.api.application.views.set_networks(request, profile, hostname)
```

</dt><dd>**JSONRPC Method: updateNic**

Установить динамический IP адрес. IP адрес определяется автоматически из запроса.

<table class="docutils field-list" frame="void" rules="none"><colgroup><col class="field-name"></col><col class="field-body"></col></colgroup><tbody valign="top"><tr class="field-odd field"><th class="field-name">Параметры:</th><td class="field-body">- **profile** – профиль пользователя
- **hostname** – имя хоста

</td></tr><tr class="field-even field"><th class="field-name">Результат:</th><td class="field-body">установленный IP адрес

</td></tr><tr class="field-odd field"><th class="field-name">Тип результата:</th><td class="field-body">str

</td></tr></tbody></table>

</dd></dl><dl class="function" id="bkmrk-skydns_website.api.a-38"><dt id="bkmrk-skydns_website.api.a-84">```
skydns_website.api.application.views.set_safe_search(request, profile, flag)
```

</dt><dd>**JSONRPC Method: setSafeSearchEnabled**

Включить/выключить работу по безопасному поиску.

<table class="docutils field-list" frame="void" rules="none"><colgroup><col class="field-name"></col><col class="field-body"></col></colgroup><tbody valign="top"><tr class="field-odd field"><th class="field-name">Параметры:</th><td class="field-body">- **profile** – профиль пользователя
- **flag** – флаг включить/выключить

</td></tr><tr class="field-even field"><th class="field-name">Результат:</th><td class="field-body">None

</td></tr></tbody></table>

</dd></dl><dl class="function" id="bkmrk-skydns_website.api.a-39"><dt id="bkmrk-skydns_website.api.a-85">```
skydns_website.api.application.views.set_safe_youtube(request, profile, flag)
```

</dt><dd>**JSONRPC Method: setSafeYoutubeEnabled**

Включить/выключить безопасный Youtube.

<table class="docutils field-list" frame="void" rules="none"><colgroup><col class="field-name"></col><col class="field-body"></col></colgroup><tbody valign="top"><tr class="field-odd field"><th class="field-name">Параметры:</th><td class="field-body">- **profile** – профиль пользователя
- **flag** – флаг включить/выключить

</td></tr><tr class="field-even field"><th class="field-name">Результат:</th><td class="field-body">None

</td></tr></tbody></table>

</dd></dl><dl class="function" id="bkmrk-skydns_website.api.a-40"><dt id="bkmrk-skydns_website.api.a-86">```
skydns_website.api.application.views.set_whitelist(request, profile, flag)
```

</dt><dd>**JSONRPC Method: setWhiteListOnly**

Включить/выключить работу по белому списку.

<table class="docutils field-list" frame="void" rules="none"><colgroup><col class="field-name"></col><col class="field-body"></col></colgroup><tbody valign="top"><tr class="field-odd field"><th class="field-name">Параметры:</th><td class="field-body">- **profile** – профиль пользователя
- **flag** – флаг включить/выключить

</td></tr><tr class="field-even field"><th class="field-name">Результат:</th><td class="field-body">None

</td></tr></tbody></table>

</dd></dl><dl class="function" id="bkmrk-skydns_website.api.a-41"><dt id="bkmrk-skydns_website.api.a-87">```
skydns_website.api.application.views.system_info(request)
```

</dt><dd>**JSONRPC Method: systemInfo**

Получение информации о настройках системы.

<table class="docutils field-list" frame="void" rules="none" style="width: 112.84%;"><colgroup><col class="field-name" style="width: 21.7592%;"></col><col class="field-body" style="width: 78.2161%;"></col></colgroup><tbody valign="top"><tr class="field-odd field"><th class="field-name">Результат:</th><td class="field-body">системная информация в формате: ```
 {
‘public_dns’: DNS, ‘nxdomain’: NX domain, ‘blockpage’: blockpage, ‘blockpage_token’: blockpage token, ‘blockapi’: block api

}
```

</td></tr><tr class="field-even field"><th class="field-name">Тип результата:</th><td class="field-body">dict</td></tr></tbody></table>

</dd></dl><dl class="function" id="bkmrk-skydns_website.api.a-42"><dt id="bkmrk-skydns_website.api.a-88">```
skydns_website.api.application.views.test_auth(request, username, password)
```

</dt><dd>**JSONRPC Method: testAuth**

Аутентификация пользователя.

<table class="docutils field-list" frame="void" rules="none"><colgroup><col class="field-name"></col><col class="field-body"></col></colgroup><tbody valign="top"><tr class="field-odd field"><th class="field-name">Результат:</th><td class="field-body">результат аутентификации (true или false)</td></tr><tr class="field-even field"><th class="field-name">Тип результата:</th><td class="field-body">bool</td></tr></tbody></table>

</dd></dl><dl class="function" id="bkmrk-skydns_website.api.a-43"><dt id="bkmrk-skydns_website.api.a-89">```
skydns_website.api.application.views.user_filter(request, profile)
```

</dt><dd>**JSONRPC Method: userFilter**

Получить список категорий профиля пользователя.

<table class="docutils field-list" frame="void" rules="none"><colgroup><col class="field-name"></col><col class="field-body"></col></colgroup><tbody valign="top"><tr class="field-odd field"><th class="field-name">Результат:</th><td class="field-body">список id категорий профиля</td></tr><tr class="field-even field"><th class="field-name">Тип результата:</th><td class="field-body">list</td></tr></tbody></table>

</dd></dl><dl class="function" id="bkmrk-skydns_website.api.a-44"><dt id="bkmrk-skydns_website.api.a-90">```
skydns_website.api.application.views.user_info(request)
```

</dt><dd>**JSONRPC Method: userInfo**

Получить информацию о пользователе.

<table class="docutils field-list" frame="void" rules="none" style="width: 219.506%;"><colgroup><col class="field-name" style="width: 16.5532%;"></col><col class="field-body" style="width: 83.4221%;"></col></colgroup><tbody valign="top"><tr class="field-odd field"><th class="field-name">Результат:</th><td class="field-body">информация о пользователе в формате: ```
{
‘username’: юзернейм, ‘plan’: {
‘name’: название тарифного плана, ‘code’: код тарифного плана, ‘date_end’: дата конца оплаченного периода, ‘features’: {
название_опции: значение, ...

},

}, ‘tz’: смещение от UTC в часах, ‘tz_minutes’: смещение от UTC в минутах

}
```

</td></tr><tr class="field-even field"><th class="field-name">Тип результата:</th><td class="field-body">dict</td></tr></tbody></table>

</dd></dl>