# Использование API подписки SkyDNS

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

Все запросы выполняются через протокол HTTPS. С помощью GET запросов. Каждый запрос должен содержать публичный ключ провайдера с именем параметра **key**.

Например:

```
curl "https://www.skydns.ru/provider_api/{имя метода}?key=abcd&a=1&b=1"
```

Предупреждение

**Публичный ключ передается отдельным письмом и не должен публиковаться в открытом доступе!**

На данный момент доступны следующие методы API:

- subscribe - зарегистрировать пользователя в системе с переданными реквизитами и установить тариф провайдера по умолчанию.
- subscribe\_plans - получить список доступных тарифов для создания/изменения пользователя реселлером.
- activate - активировать пользователя провайдера.
- deactivate - деактивировать пользователя провайдера.
- update\_email - обновить email пользователя для восстановления пароля и получения информационных сообщений.
- update\_password - обновить пароль пользователя.
- prolongate - включить или изменить платный тариф для пользователя. Этот метод всегда должен вызываться после метода subscribe для включения услуги пользователю.
- unsubscribe - отключить пользователя и переключить на бесплатный тариф.
- subscription\_info - получить информацию о дате окончания подписки.
- profiles – получить список активных профилей пользователя.
- create\_profile - создать профиль.
- update\_profile – изменить параметры профиля пользователя реселлера.
- add\_ip - добавить один или несколько статических IP адресов пользователя.
- clear\_ip - удалить все статические IP адреса на профиле пользователя.
- list\_ip - получить список всех статических IP адресов пользователя.
- update\_ip - создать или обновить динамический IP адрес пользователя и привязать его к необходимому профилю фильтрации.
- remove\_ip - удалить IP адрес пользователя.
- add\_vpn - создать VPN-сертификат для профиля и получить профиль настройки OpenVPN.
- clear\_vpn\_for\_profile - удалить все vpn-соединения на профиле пользователя.
- clear\_vpn\_for\_user - удалить все vpn-соединения на всех профилях пользователя.
- get\_vpn\_list - получить список всех vpn-соединений пользователя.
- remove\_vpn - удалить vpn-соединение пользователя.
- update\_nat - добавить или обновить привязку профиля к DNS адресам для пользователей за NAT.
- get\_activity - получить информацию об активности пользователя за определенную дату.
- get\_activity\_report - получить отчет об активности пользователя за определенный период времени.
- get\_list\_activity\_report - отчет об активности пользователя за определенный период времени.
- get\_popular\_report - получить отчет о популярных запросах пользователя за определенный период времени.
- get\_category\_report - получить отчет по категориям пользователя за определенный период времени.
- send\_monthly\_stat - отправить статистику за месяц пользователю по электронной почте.
- get\_daily\_stat - получить статистику пользователя за день.
- get\_active\_users - получить список активных пользователей и их тарифы.

Внимание

**API доступно по адресу:** https://www.skydns.ru/provider\_api/

Примечание

**Вызывается по схеме:** https://www.skydns.ru/provider\_api/{имя метода}?{GET параметры запроса}

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

<div class="section" id="bkmrk-"><div class="section"><div class="section"><span id="bkmrk--37"></span></div></div></div>### subscribe

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

Передается 1 обязательный параметр:

<div class="section" id="bkmrk-password%C2%A0--%D0%BF%D0%B0%D1%80%D0%BE%D0%BB%D1%8C-%D1%81%D0%BE"><div class="section"><div class="section">- **password** - пароль создаваемого пользователя.

</div></div></div>Может передаваться 4 необязательных параметра:

<div class="section" id="bkmrk-login%C2%A0--%D0%BB%D0%BE%D0%B3%D0%B8%D0%BD%2C-%D0%BF%D0%BE-%D1%83%D0%BC"><div class="section"><div class="section">- **login** - логин, по умолчанию стандарное именование с уникальным префиксом провайдера.
- **plan** - тарифный план. Сисок доступных для вас планов уточняйте у менеджера СкайДНС или с помощью метода subscribe\_plans. Если вы используете недопустимый код, то в ответ будет выдана ошибка.
- **email** - адрес электронной почты пользователя (может использоваться для самостоятельного восстановления пароля пользователем через личный кабинет и получения служебных уведомлений).
- **customer** - наименование договора.

</div></div></div>**Ответ возвращается в формате JSON следующего вида:**

```
{
    "response": {
        "status": "ok",
        "data": {
            "username": "username",
            "email": "email",
            "plan": "tariff_name"
        }
    }
}
```

<div class="section" id="bkmrk--0"><div class="section"><div class="section" id="bkmrk--38"><div class="highlight-json"><div class="highlight">  
</div></div></div><div class="section"><span id="bkmrk--39"></span></div></div></div>### subscribe\_plans

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

**Ответ возвращается в формате JSON следующего вида:**

```
{
    "response": {
        "status": "ok",
        "data": {
            "plan1": "tariff_name1",
            "plan2": "tariff_name2"
        }
    }
}
```

<div class="section" id="bkmrk--1"><div class="section"><div class="section" id="bkmrk--40"><div class="highlight-json"><div class="highlight">  
</div></div></div><div class="section"><span id="bkmrk--41"></span></div></div></div>### activate

Активировать пользователя провайдера.

Передается 1 обязательный параметр:

<div class="section" id="bkmrk-ident%C2%A0--login-%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE"><div class="section"><div class="section">- **ident** - login пользователя, которого необходимо активировать.

</div></div></div>**Ответ возвращается в формате JSON следующего вида:**

```
{
    "response": {
        "status": "ok"
    }
}
```

<div class="section" id="bkmrk--2"><div class="section"><div class="section" id="bkmrk--42"><div class="highlight-json"><div class="highlight">  
</div></div></div><div class="section"><span id="bkmrk--43"></span></div></div></div>### deactivate

Деактивировать пользователя провайдера.

Передается 1 обязательный параметр:

<div class="section" id="bkmrk-ident%C2%A0--login-%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE-0"><div class="section"><div class="section">- **ident** - login пользователя, которого необходимо деактивировать.

</div></div></div>**Ответ возвращается в формате JSON следующего вида:**

```
{
    "response": {
        "status": "ok"
    }
}
```

<div class="section" id="bkmrk--3"><div class="section"><div class="section" id="bkmrk--44"><div class="highlight-json"><div class="highlight">  
</div></div></div><div class="section"><span id="bkmrk--45"></span></div></div></div>### update\_email

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

Передается 2 обязательных параметра:

<div class="section" id="bkmrk-ident%C2%A0--login-%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE-1"><div class="section"><div class="section">- **ident** - login пользователя, у которого изменяется email.
- **email** - новый email пользователя. Если в базе уже есть пользователь с таким email, будет возвращена ошибка.

</div></div></div>**Ответ возвращается в формате JSON следующего вида:**

```
{
    "response": {
        "status": "ok"
    }
}
```

<div class="section" id="bkmrk--4"><div class="section"><div class="section" id="bkmrk--46"><div class="highlight-json"><div class="highlight">  
</div></div></div><div class="section"><span id="bkmrk--47"></span></div></div></div>### update\_password

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

Передается 2 обязательных параметра:

<div class="section" id="bkmrk-ident%C2%A0--login-%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE-2"><div class="section"><div class="section">- **ident** - login пользователя.
- **password** - новый пароль пользователя.

</div></div></div>**Ответ возвращается в формате JSON следующего вида:**

```
{
    "response": {
        "status": "ok"
    }
}
```

<div class="section" id="bkmrk--5"><div class="section"><div class="section" id="bkmrk--48"><div class="highlight-json"><div class="highlight">  
</div></div></div><div class="section"><span id="bkmrk--49"></span></div></div></div>### prolongate

Включить или изменить платный тариф для пользователя. Этот метод всегда должен вызываться после метода subscribe для включения услуги пользователю.

Передается 1 обязательный параметр:

<div class="section" id="bkmrk-ident%C2%A0--login-%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE-3"><div class="section"><div class="section">- **ident** - login пользователя, у которого включается платная подписка.

</div></div></div>Может передаваться 1 необязательный параметр:

<div class="section" id="bkmrk-plan%C2%A0%D1%81-%D0%B4%D0%BE%D1%81%D1%82%D1%83%D0%BF%D0%BD%D1%8B%D0%BC%D0%B8-%D0%B7%D0%BD"><div class="section"><div class="section">- **plan** с доступными значениями: PREMIUM, SCHOOL, BUSINESS. Список доступных для вас планов уточняйте у менеджера СкайДНС или с помощью метода subscribe\_plans. Если вы используете недопустимый код, то в ответ будет выдана ошибка.

</div></div></div>Eсли параметр **plan** не передан, то по умолчанию включается план PREMIUM.

**Ответ возвращается в формате JSON следующего вида:**

```
{
    "response": {
        "status": "ok"
    }
}
```

<div class="section" id="bkmrk--6"><div class="section"><div class="section" id="bkmrk--50"><div class="highlight-json"><div class="highlight">  
</div></div></div><div class="section"><span id="bkmrk--51"></span></div></div></div>### unsubscribe

Отключить пользователя и переключить на бесплатный тариф.

Передается 1 параметр:

<div class="section" id="bkmrk-ident%C2%A0--login-%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE-4"><div class="section"><div class="section">- **ident** - login пользователя, аккаунт которого переключается в бесплатный режим.

</div></div></div>**Ответ возвращается в формате JSON следующего вида:**

```
{
    "response": {
        "status": "ok"
    }
}
```

<div class="section" id="bkmrk--7"><div class="section"><div class="section" id="bkmrk--52"><div class="highlight-json"><div class="highlight">  
</div></div></div><div class="section"><span id="bkmrk--53"></span></div></div></div>### subscription\_info

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

Передается 1 параметр:

<div class="section" id="bkmrk-ident%C2%A0--login-%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE-5"><div class="section"><div class="section">- **ident** - login пользователя, у которого проверяется срок подписки.

</div></div></div>**Ответ возвращается в формате JSON следующего вида:**

```
{
    "response": {
        "status": "ok",
        "data": {
            "date_end": 1390930655
        }
    }
}
```

<div class="section" id="bkmrk--8"><div class="section"><div class="section"><div class="highlight-json"><div class="highlight">  
</div></div><div class="admonition note">  
</div></div></div></div>Примечание

Дата окончания в unix time.

Предупреждение

В настоящее время не используется, зарезервировано для будущего использования.

<div class="section" id="bkmrk--9"><div class="section"><div class="section" id="bkmrk--54"><div class="admonition warning">  
</div></div><div class="section"><span id="bkmrk--55"></span></div></div></div>### profiles

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

Передается 1 обязательный параметр:

<div class="section" id="bkmrk-ident%C2%A0%E2%80%93-login-%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE"><div class="section"><div class="section">- **ident** – login пользователя, у которого необходимо получить список профилей.

</div></div></div>**Ответ возвращается в формате JSON следующего вида:**

```
{
    "response": {
        "status": "ok",
        "data": {
            "ид профиля 1": "имя профиля",
            "ид профиля 2": "имя профиля",
            "ид профиля 3": "имя профиля"
        }
    }
}
```

<div class="section" id="bkmrk--10"><div class="section"><div class="section"><div class="highlight-json"><div class="highlight">  
</div></div><div class="admonition note">  
</div></div></div></div>Примечание

“имя профиля” передается в кодировке utf-8.

<div class="section" id="bkmrk--11"><div class="section"><div class="section" id="bkmrk--56"><div class="admonition note">  
</div></div><div class="section"><span id="bkmrk--57"></span></div></div></div>### create\_profile

Создать профиль.

Передается 2 обязательных параметра:

<div class="section" id="bkmrk-ident%C2%A0--login-%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE-6"><div class="section"><div class="section">- **ident** - login пользователя.
- **name** – имя профиля.

</div></div></div>Дополнительно можно передать 2 необязательных параметра:

<div class="section" id="bkmrk-tls%C2%A0%E2%80%93-%D0%B1%D1%83%D0%B4%D0%B5%D1%82-%D0%BB%D0%B8-%D0%B8%D1%81%D0%BF%D0%BE%D0%BB"><div class="section"><div class="section">- **tls** – будет ли использоваться TLS. Принимает значения: True, False.
- **blockpage\_id** – id страницы блокировки, которую необходимо установить на профиль.

</div></div></div>**Ответ возвращается в формате JSON следующего вида:**

```
{
    "response": {
        "status": "ok"
    }
}
```

<div class="section" id="bkmrk--12"><div class="section"><div class="section" id="bkmrk--58"><div class="highlight-json"><div class="highlight">  
</div></div></div><div class="section"><span id="bkmrk--59"></span></div></div></div>### update\_profile

Изменить параметры профиля пользователя реселлера.

Передается 1 обязательный параметр:

<div class="section" id="bkmrk-profile_id%C2%A0%E2%80%93-id-%D0%BF%D1%80%D0%BE%D1%84"><div class="section"><div class="section">- **profile\_id** – id профиля пользователя, который необходимо изменить.

</div></div></div>Дополнительно можно передать 2 необязательных параметра:

<div class="section" id="bkmrk-name%C2%A0%E2%80%93-%D0%BD%D0%BE%D0%B2%D0%BE%D0%B5-%D0%B8%D0%BC%D1%8F-%D0%BF%D1%80%D0%BE"><div class="section"><div class="section">- **name** – новое имя профиля пользователя.
- **tls** – булево значение для установки профилю, будет ли использоваться TLS. Принимает значения: True, False.

</div></div></div>**Ответ возвращается в формате JSON следующего вида:**

```
{
    "response": {
        "status": "ok",
        "data": {
            "id": "profile_id",
            "name": "profile_name",
            "tls": "True|False"
        }
    }
}
```

<div class="section" id="bkmrk--13"><div class="section"><div class="section" id="bkmrk--60"><div class="highlight-json"><div class="highlight">  
</div></div></div><div class="section"><span id="bkmrk--61"></span></div></div></div>### add\_ip

Добавить один или несколько статических IP адресов пользователя.

Передаeтся 2 обязательных параметра:

<div class="section" id="bkmrk-ident%C2%A0--login-%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE-7"><div class="section"><div class="section">- **ident** - login пользователя.
- **ip** - один или несколько IP адресов. При передаче нескольких адресов, каждое значение нужно указывать отдельным параметром.

</div></div></div>Дополнительно можно передать 2 необязательных параметра:

<div class="section" id="bkmrk-profile%C2%A0--%D1%87%D0%B8%D1%81%D0%BB%D0%BE%D0%B2%D0%BE%D0%B9-i"><div class="section"><div class="section">- **profile** - числовой id профиля, к которому необходимо привязать IP адреса.
- **comment** - комментарий к IP адресу.

</div></div></div>Если параметр **profile** не будет передан, то IP адреса будут привязаны к профилю “По умолчанию”.

**Ответ возвращается в формате JSON следующего вида:**

```
{
    "response": {
        "status": "ok",
        "data": {
            "added_addresses": ["1.1.1.1", "1.1.1.2"]
        }
    }
}
```

Если какие-то из переданных адресов не удалось добавить, то дополнительно будет выведен их список:

```
{
    "response": {
        "status": "ok",
        "data": {
            "added_addresses": ["1.1.1.1", "1.1.1.2"],
            "invalid_adresses": [
                {"1.invalid.ip.adress": "IP address is invalid"},
                {"0.0.0.0": "This address is not public"}
            ]
        }
    }
}
```

<div class="section" id="bkmrk--14"><div class="section"><div class="section" id="bkmrk--62"><div class="highlight-json"><div class="highlight">  
</div></div></div><div class="section"><span id="bkmrk--63"></span></div></div></div>### clear\_ip

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

Передается 2 обязательных параметра:

<div class="section" id="bkmrk-ident%C2%A0--login-%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE-8"><div class="section"><div class="section">- **ident** - login пользователя.
- **profile** - числовой id профиля.

</div></div></div>**Ответ возвращается в формате JSON следующего вида:**

```
{
    "response": {
        "status": "ok"
    }
}
```

<div class="section" id="bkmrk--15"><div class="section"><div class="section" id="bkmrk--64"><div class="highlight-json"><div class="highlight">  
</div></div></div><div class="section"><span id="bkmrk--65"></span></div></div></div>### list\_ip

Получить список всех статических IP адресов пользователя.

Передается 1 обязательный параметр:

<div class="section" id="bkmrk-ident%C2%A0--login-%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE-9"><div class="section"><div class="section">- **ident** - login пользователя, у которого необходимо получить IP адреса.

</div></div></div>Дополнительно можно передать 1 необязательный параметр:

<div class="section" id="bkmrk-profile%C2%A0--%D1%87%D0%B8%D1%81%D0%BB%D0%BE%D0%B2%D0%BE%D0%B9-i-0"><div class="section"><div class="section">- **profile** - числовой id профиля, для которого необходимо получить IP адреса.

</div></div></div>Если параметр **profile** не будет передан, то IP адреса будут получены для всех профилей.

**Ответ возвращается в формате JSON следующего вида:**

```
{
    "response": {
        "status": "ok",
        "data": {
            "ip": [
                {"address": "1.2.3.4", "comment": "example.com"},
                {"address": "1.2.3.5", "comment": "example.com"}
            ],
        }
    }
}
```

<div class="section" id="bkmrk--16"><div class="section"><div class="section" id="bkmrk--66"><div class="highlight-json"><div class="highlight">  
</div></div></div><div class="section"><span id="bkmrk--67"></span></div></div></div>### update\_ip

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

Передается 2 обязательных параметра:

<div class="section" id="bkmrk-ident%C2%A0--login-%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE-10"><div class="section"><div class="section">- **ident** - login пользователя.
- **ip** - новый динамический IP адрес пользователя.

</div></div></div>Предоставленный IP адрес будет установлен на профиле Основной указанного пользователя. Если предоставленный IP уже привязан к другому пользователю провайдера, то привязка будет убрана и IP адрес будет привязан к указанному в методе пользователю.

Дополнительно можно передать 2 необязательных параметра:

<div class="section" id="bkmrk-hostname%C2%A0--%D0%BF%D0%BE%D0%B7%D0%B2%D0%BE%D0%BB%D1%8F%D0%B5%D1%82"><div class="section"><div class="section">- **hostname** - позволяет привязать несколько IP адресов к одному профилю, а также профилям, отличным от профиля Основной. При последующих обновлениях адреса привязка к профилю будет сохраняться.
- **profile** - числовой id профиля к которому необходимо привязать IP адрес пользователя. Если данный параметр будет опущен, то по умолчанию привязка произойдет на профиль Основной. Числовые коды профилей доступны в личном кабинете в списке профилей.

</div></div></div>**Ответ возвращается в формате JSON следующего вида:**

```
{
    "response": {
        "status": "ok"
    }
}
```

<div class="section" id="bkmrk--17"><div class="section"><div class="section" id="bkmrk--68"><div class="highlight-json"><div class="highlight">  
</div></div></div><div class="section"><span id="bkmrk--69"></span></div></div></div>### remove\_ip

Удалить IP адрес пользователя.

Передается 2 обязательных параметра:

<div class="section" id="bkmrk-ident%C2%A0--login-%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE-11"><div class="section"><div class="section">- **ident** - login пользователя.
- **ip** - IP адрес пользователя, который необходимо удалить.

</div></div></div>**Ответ возвращается в формате JSON следующего вида:**

```
{
    "response": {
        "status": "ok"
    }
}
```

<div class="section" id="bkmrk--18"><div class="section"><div class="section" id="bkmrk--70"><div class="highlight-json"><div class="highlight">  
</div></div></div><div class="section"><span id="bkmrk--71"></span></div></div></div>### add\_vpn

Создать VPN-сертификат для профиля и получить профиль настройки OpenVPN.

Передается 3 обязательных параметра:

<div class="section" id="bkmrk-ident%C2%A0--login-%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE-12"><div class="section"><div class="section">- **ident** - login пользователя, которому запрашивается профиль настройки OpenVPN.
- **name** - уникальное для пользователя название создаваемого VPN-подключения.
- **profile\_id** - идентификатор профиля пользователя, для которого запрашивается профиль настройки OpenVPN. Если **profile\_id** не соответствует ни одному из профилей пользователя, будет получена соответствующая ошибка.

</div></div></div>**Ответ возвращается в формате JSON следующего вида:**

```
{
    "response": {
        "status": "ok",
        "data": {
            "ovpn": "client\nremote vpn.skydns.ru 1194 udp\nnobind\ndev tun\npersist-tun\npersist-key\nverify-x509-name vpn.skydns.ru name\nremote-cert-tls server\ncipher AES-128-CBC\n\n<ca>\n-----BEGIN CERTIFICATE-----\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\n-----END CERTIFICATE-----\n</ca>\n<cert>\n-----BEGIN CERTIFICATE-----\n-----END CERTIFICATE-----\n</cert>\n<key>\n-----BEGIN PRIVATE KEY-----\n-----END PRIVATE KEY-----\n</key>\n"
        }
    }
}
```

<div class="section" id="bkmrk--19"><div class="section"><div class="section"><div class="highlight-json"><div class="highlight">  
</div></div><div class="admonition note">  
</div></div></div></div>Примечание

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

<div class="section" id="bkmrk--20"><div class="section"><div class="section" id="bkmrk--72"><div class="admonition note">  
</div></div><div class="section"><span id="bkmrk--73"></span></div></div></div>### clear\_vpn\_for\_profile

Удалить все vpn-соединения на профиле пользователя.

Передается 1 обязаетельный параметр:

<div class="section" id="bkmrk-profile_id%C2%A0--%D1%87%D0%B8%D1%81%D0%BB%D0%BE%D0%B2%D0%BE"><div class="section"><div class="section">- **profile\_id** - числовой id профиля, у которого необходимо удалить все vpn-соединения.

</div></div></div>**Ответ возвращается в формате JSON следующего вида:**

```
{
    "response": {
        "status": "ok"
    }
}
```

<div class="section" id="bkmrk--21"><div class="section"><div class="section" id="bkmrk--74"><div class="highlight-json"><div class="highlight">  
</div></div></div><div class="section"><span id="bkmrk--75"></span></div></div></div>### clear\_vpn\_for\_user

Удалить все vpn-соединения на всех профилях пользователя.

Передается 1 обязательный параметр:

<div class="section" id="bkmrk-ident%C2%A0--login-%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE-13"><div class="section"><div class="section">- **ident** - login пользователя, у которого необходимо удалить vpn-соединения.

</div></div></div>**Ответ возвращается в формате JSON следующего вида:**

```
{
    "response": {
        "status": "ok"
    }
}
```

<div class="section" id="bkmrk--22"><div class="section"><div class="section" id="bkmrk--76"><div class="highlight-json"><div class="highlight">  
</div></div></div><div class="section"><span id="bkmrk--77"></span></div></div></div>### get\_vpn\_list

Получить список всех vpn-соединений пользователя.

Передается 1 обязательный параметр:

<div class="section" id="bkmrk-ident%C2%A0--login-%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE-14"><div class="section"><div class="section">- **ident** - login пользователя, у которого необходимо получить список vpn соеденений.

</div></div></div>**Ответ возвращается в формате JSON следующего вида:**

```
{
    "response": {
        "status": "ok",
        "data": [
            {"id": "vpn_id1", "profile": "profile_name", "ip": "vpn_hostname1", "name": "vpn_name1"},
            {"id": "vpn_id2", "profile": "profile_name", "ip": "vpn_hostname2", "name": "vpn_name2"}
        ]
    }
}
```

<div class="section" id="bkmrk--23"><div class="section"><div class="section" id="bkmrk--78"><div class="highlight-json"><div class="highlight">  
</div></div></div><div class="section"><span id="bkmrk--79"></span></div></div></div>### remove\_vpn

Удалить vpn-соединение пользователя.

Передается 1 обязательный параметр:

<div class="section" id="bkmrk-id%C2%A0--id-vpn-%D1%81%D0%BE%D0%B5%D0%B4%D0%B8%D0%BD%D0%B5%D0%BD"><div class="section"><div class="section">- **id** - id vpn соединения, которое необходимо удалить.

</div></div></div>**Ответ возвращается в формате JSON следующего вида:**

```
{
    "response": {
        "status": "ok"
    }
}
```

<div class="section" id="bkmrk--24"><div class="section"><div class="section" id="bkmrk--80"><div class="highlight-json"><div class="highlight">  
</div></div></div><div class="section"><span id="bkmrk--81"></span></div></div></div>### update\_nat

Добавить или обновить привязку профиля к DNS адресам для пользователей за NAT.

Передается 2 обязательных параметра:

<div class="section" id="bkmrk-profile_id%C2%A0--id-%D0%BF%D1%80%D0%BE%D1%84"><div class="section"><div class="section">- **profile\_id** - id профиля пользователя.
- **address** - IP адрес NAT DNS.

</div></div></div>**Ответ возвращается в формате JSON следующего вида:**

```
{
    "response": {
        "status": "ok"
    }
}
```

<div class="section" id="bkmrk--25"><div class="section"><div class="section" id="bkmrk--82"><div class="highlight-json"><div class="highlight">  
</div></div></div><div class="section"><span id="bkmrk--83"></span></div></div></div>### get\_activity

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

Передается 1 обязательный параметр:

<div class="section" id="bkmrk-ident%C2%A0--login-%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE-15"><div class="section"><div class="section">- **ident** - login пользователя, для которого необходимо получить информацию.

</div></div></div>Дополнительно можно передать 2 необязательных параметра:

<div class="section" id="bkmrk-date%C2%A0--%D0%B4%D0%B0%D1%82%D0%B0%2C-%D0%B7%D0%B0-%D0%BA%D0%BE%D1%82%D0%BE"><div class="section"><div class="section">- **date** - дата, за которую необходимо получить отчет о действиях пользователя в формате YYYY-MM-DD. Если параметр не задан, то отчет будет сформирован за сегодня.
- **profile\_id** - идентификатор профиля пользователя, для которого запрашивается отчет.

</div></div></div>Значение параметра **date** должно быть не ранее, чем 1 января предыдущего года.

**Ответ возвращается в формате JSON следующего вида:**

```
{
    "response": {
        "status": "ok",
        "data": {
            "requests": "2600",
            "blocks": "581"
        }
    }
}
```

<div class="section" id="bkmrk--26"><div class="section"><div class="section"><div class="highlight-json"><div class="highlight">  
</div></div><div class="admonition note">  
</div></div></div></div>Примечание

Где **requests** - это общее количество запросов за указанную дату, **blocks** - количество блокировок.

<div class="section" id="bkmrk--27"><div class="section"><div class="section" id="bkmrk--84"><div class="admonition note">  
</div></div><div class="section"><span id="bkmrk--85"></span></div></div></div>### get\_activity\_report

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

Передается 3 обязательных параметра:

<div class="section" id="bkmrk-ident%C2%A0--login-%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE-16"><div class="section"><div class="section">- **ident** - login пользователя, для которого необходимо получить информацию.
- **start** - дата начала периода для получения статистики в формате YYYY-MM-DD.
- **end** - дата окончания периода для получения статистики в формате YYYY-MM-DD.

</div></div></div>Дополнительно можно передать 1 необязательный параметр:

<div class="section" id="bkmrk-profile_id%C2%A0--%D0%B8%D0%B4%D0%B5%D0%BD%D1%82%D0%B8%D1%84"><div class="section"><div class="section">- **profile\_id** - идентификатор профиля пользователя, для которого запрашивается отчет.

</div></div></div>Если диапазон **start** - **end** охватывает более чем 30 суток, то в отчет попадают только последние 30 из них.

Начало периода **start** должно быть не ранее, чем 1 января предыдущего года.

**Ответ возвращается в формате JSON следующего вида:**

```
{
    "response": {
        "status": "ok",
        "data": {
            "labels": [
                "2016-06-29 14:00:00",
                "2016-06-29 15:00:00"
            ],
            "datasets": [
                {
                    "label": "Requests",
                    "data": [375, 275]
                },
                {
                    "label": "Blocks",
                    "data": [13, 0]
                }
            ]
        }
    }
}
```

<div class="section" id="bkmrk--28"><div class="section"><div class="section"><div class="highlight-json"><div class="highlight">  
</div></div><div class="admonition note">  
</div></div></div></div>Примечание

Где **labels** - список значений для оси времени. **datasets** - список словарей содержащих наборы данных по определенном параметрам отчета, *label* - название параметра отчета, *data* - список значений соответстующих датам из списка **labels**.

Примечание

В **datasets** используются следующие наборы данных: **Requests** - количество запросов, **Blocks** - количество блокировок.

<div class="section" id="bkmrk--29"><div class="section"><div class="section" id="bkmrk--86"><div class="admonition note">  
</div></div><div class="section"><span id="bkmrk--87"></span></div></div></div>### get\_list\_activity\_report

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

Передается 3 обязательных параметра:

<div class="section" id="bkmrk-ident%C2%A0--login-%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE-17"><div class="section"><div class="section">- **ident** - login пользователя, для которого необходимо получить информацию (в запросе может быть несколько).
- **start** - дата начала периода для получения статистики в формате YYYY-MM-DD.
- **end** - дата окончания периода для получения статистики в формате YYYY-MM-DD.

</div></div></div>Пример запроса:

[https://skydns.ru/provider\_api/get\_list\_activity\_report/?key=supersecretkey&amp;start=2023-04-01&amp;end=2023-04-17&amp;ident=username1&amp;ident=username2](https://skydns.ru/provider_api/get_list_activity_report/?key=supersecretkey&start=2023-04-01&end=2023-04-17&ident=username1&ident=username2)

**Ответ возвращается в формате JSON следующего вида:**

```
{
    "data": {
        "2023-04-03": {
            "username1": {
                "visits": 28251,
                "blocks": 1106
            },
            "username2": {
                "visits": 4854,
                "blocks": 760
            }
        },
    }
}
```

<div class="section" id="bkmrk--30"><div class="section"><div class="section" id="bkmrk--88"><div class="highlight-json"><div class="highlight">  
</div></div></div><div class="section"><span id="bkmrk--89"></span></div></div></div>### get\_popular\_report

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

Передается 3 обязательных параметра:

<div class="section" id="bkmrk-ident%C2%A0--login-%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE-18"><div class="section"><div class="section">- **ident** - login пользователя, для которого необходимо получить информацию.
- **start** - дата начала периода для получения статистики в формате YYYY-MM-DD.
- **end** - дата окончания периода для получения статистики в формате YYYY-MM-DD.

</div></div></div>Дополнительно можно передать 1 необязательный параметр:

<div class="section" id="bkmrk-profile_id%C2%A0--%D0%B8%D0%B4%D0%B5%D0%BD%D1%82%D0%B8%D1%84-0"><div class="section"><div class="section">- **profile\_id** - идентификатор профиля пользователя, для которого запрашивается отчет.

</div></div></div>Если диапазон **start** - **end** охватывает более чем 30 суток, то в отчет попадают только последние 30 из них.

Начало периода **start** должно быть не ранее, чем 1 января предыдущего года.

**Ответ возвращается в формате JSON следующего вида:**

```
{
    "response": {
        "status": "ok",
        "data": {
            "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]
                }
            ]
        }
    }
}
```

<div class="section" id="bkmrk--31"><div class="section"><div class="section"><div class="highlight-json"><div class="highlight">  
</div></div><div class="admonition note">  
</div></div></div></div>Примечание

Где **labels** - список значений для оси времени. **datasets** - список словарей содержащих наборы данных по определенном параметрам отчета, *label* - название параметра отчета, *data* - список значений соответстующих датам из списка **labels**.

Примечание

в **datasets** используются следующие наборы данных: **Requests** - количество запросов, **Blocks** - количество блокировок, **NXdomain** - количество неразрезолвенных доменов.

<div class="section" id="bkmrk--32"><div class="section"><div class="section" id="bkmrk--90"><div class="admonition note">  
</div></div><div class="section"><span id="bkmrk--91"></span></div></div></div>### get\_category\_report

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

Передается 3 обязательных параметра:

<div class="section" id="bkmrk-ident%C2%A0--login-%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE-19"><div class="section"><div class="section">- **ident** - login пользователя, для которого необходимо получить информацию.
- **start** - дата начала периода для получения статистики в формате YYYY-MM-DD.
- **end** - дата окончания периода для получения статистики в формате YYYY-MM-DD.

</div></div></div>Дополнительно можно передать 1 необязательный параметр:

<div class="section" id="bkmrk-profile_id%C2%A0--%D0%B8%D0%B4%D0%B5%D0%BD%D1%82%D0%B8%D1%84-1"><div class="section"><div class="section">- **profile\_id** - идентификатор профиля пользователя, для которого запрашивается отчет.

</div></div></div>Если диапазон **start** - **end** охватывает более чем 30 суток, то в отчет попадают только последние 30 из них.

Начало периода **start** должно быть не ранее, чем 1 января предыдущего года.

**Ответ возвращается в формате JSON следующего вида:**

```
{
    "response": {
        "status": "ok",
        "data": {
            "Фильмы и видео онлайн": "5",
            "Файловые архивы": "2",
            "Дом, семья, хобби": "3"
        }
    }
}
```

<div class="section" id="bkmrk--33"><div class="section"><div class="section"><div class="highlight-json"><div class="highlight">  
</div></div><div class="admonition note">  
</div></div></div></div>Примечание

Где **data** - представляет собой словарь, *ключ* - название категории, *значение* - количество посещений.

<div class="section" id="bkmrk--34"><div class="section"><div class="section" id="bkmrk--92"><div class="admonition note">  
</div></div><div class="section"><span id="bkmrk--93"></span></div></div></div>### send\_monthly\_stat

Отправить пользователю по электронной почте статистику за месяц.

Передается 3 обязательных параметра:

<div class="section" id="bkmrk-ident%C2%A0--login-%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE-20"><div class="section"><div class="section">- **ident** - login пользователя.
- **year** - год в формате YYYY.
- **month** - месяц в формате MM, за который необходимо сформировать отчет.

</div></div></div>Дополнительно можно передать 1 необязательный параметр:

<div class="section" id="bkmrk-profile_id%C2%A0--%D0%B8%D0%B4%D0%B5%D0%BD%D1%82%D0%B8%D1%84-2"><div class="section"><div class="section">- **profile\_id** - идентификатор профиля пользователя, для которого запрашивается статистика.

</div></div></div>На email пользователя будет выслан отчет в формате CSV со статистикой за указанный месяц. Отчет содержит следующие столбцы: “Timestamp”, “Domain name”, “Visits”, “Blocks”, “Profile”, “Categories”.

Значение параметра **year** должно быть не меньше прошлого года.

**Ответ возвращается в формате JSON следующего вида:**

```
{
    "response": {
        "status": "ok"
    }
}
```

<div class="section" id="bkmrk--35"><div class="section"><div class="section" id="bkmrk--94"><div class="highlight-json"><div class="highlight">  
</div></div></div><div class="section"><span id="bkmrk--95"></span></div></div></div>### get\_daily\_stat

Получить статистику пользователя за день.

Передается 2 обязательных параметра:

<div class="section" id="bkmrk-date%C2%A0--%D0%B4%D0%B0%D1%82%D0%B0-%D0%B2-%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82"><div class="section"><div class="section">- **date** - дата в формате ‘YYYY-MM-DD’ определяет день, за который необходима статистика.
- **ident** - имя пользователя, для которого необходима статистика.

</div></div></div>Дополнительно можно передать 2 необязательных параметра:

<div class="section" id="bkmrk-email_to%C2%A0--email%2C-%D0%BD%D0%B0"><div class="section"><div class="section">- **email\_to** - email, на который будет отправлена статистика.
- **profile\_id** - идентификатор профиля пользователя, для которого запрашивается статистика.

</div></div></div>Значение параметра **date** должно быть не ранее, чем 1 января предыдущего года.

**Ответ возвращается в формате JSON следующего вида:**

```
{
    "response": {
        "status": "ok",
        "data": {
            "result": "ссылка на файл"
        }
    }
}
```

<div class="section" id="bkmrk--36"><div class="section"><div class="section" id="bkmrk--96"><div class="highlight-json"><div class="highlight">  
</div></div></div><div class="section"><span id="bkmrk--97"></span></div></div></div>### get\_active\_users

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

**Ответ возвращается в формате JSON следующего вида:**

```
{
    "data": [
        {
            "username": "username1",
            "plan_name": "Бизнес"
        },
        {
            "username": "username1",
            "plan_name": "Школа"
        },
    ]
}
```