# API категоризации доменов

# API категоризации доменов

#### Назначение API категоризации доменов SkyDNS

API категоризации сайтов предназначено для того чтобы предоставить разработчикам и сторонним системам быстрый и легкий способ получения данных из базы категорированных сайтов SkyDNS. API предназначено для интеграции с другими системами, где требуется проверка категорий сайтов (системы фильтрации, рекламные системы и т.п.). API категоризации сайтов использует стандартную спецификацию JSON для обработки запросов. API не предназначено для доступа к нему конечных пользователей интегрируемой системы, а должно запрашиваться с промежуточного сервера интегрируемой системы.

<p class="callout info">Для целей повышения скорости обработки, данные выдаваемые API категоризации сайтов могут быть кэшированы на стороне интегрируемой системы на срок не более 12 часов.</p>

#### Как работать с API категоризации сайтов

<p class="callout info">Все русскоязычные тексты выдаются в формате Unicode, пример «\\u0424\\u0438\\u0448\\u0438\\u043d\\u0433».</p>

##### Адреса доступа к API категоризации сайтов

Для доступа к API вы можете использовать следующие адреса:

1. **z.api.skydns.ru** - для целей тестирования и анонимного доступа (количество запросов ограничено 10 запросами в минуту)
2. **x.api.skydns.ru** – для зарегистрированных пользователей (без ограничения числа запросов)

##### Авторизация

Для запросов к x.api.skydns.ru нужно использовать Basic Authorization. Нужно передавать специальный HTTP заголовок Authorization в каждом запросе. В заголовке Authorization передается строка `<client_id>:<client_secret>`, закодированная методом base64. При этом следует указывать базовый **(Basic)** метод авторизации.

Пример заголовка:

```
Authorization: Basic Ndc2MDE4N2Q4MWJjNGI3Nzk5NDc2YjQycjUxMDM3MTM6ZjI1YmViZjk5MWZmNDE5ODkzZGIyNTU3MjhlNGUxZGU=
```

##### Получение списка категорий веб сайта

Запрос:

```
GET http://skydns-api/domain/www.website.com
```

**Вернет результат в формате JSON (номера категорий, флаг хороший/плохой, имена категорий):**

```
{
   "category": [3, 6],
   "bad": true,
   "category_name": [
         "Сайты, распространяющие вирусы",
         "Наркотики"
      ]
}
```

##### Получение списка категорий URL

Запрос:

```
GET http://skydns-api/url/http://www.website.com/path/to?arg=val
```

**Вернет результат в формате JSON (номера категорий, флаг хороший/плохой, имена категорий):**

```
{
   "category": [3, 6],
   "bad": true,
   "category_name": [
      "Сайты, распространяющие вирусы",
      "Наркотики"
   ]
}
```

##### Получение списка категорий

Запрос:

```
GET http://skydns-api/catgroups
```

**Вернет результат в формате JSON:**

```
[
   {"Черные сайты": {
      "3":"Сайты, распространяющие вирусы", "4":"Фишинг",
      "6":"Наркотики",
      }
   },
   {"Сайты для взрослых": {
      "13":"Сайты для взрослых",
      "14":"Алкоголь и табак",
      }
   },
]
```

##### Запросы

Если домен категоризирован, API возвращает код 200, название категории и ее номер.

```
curl --user <client_id>:<client_secret> https://x.api.skydns.ru/domain/website.com
```

```
StatusCode        : 200

StatusDescription : OK

Content           : {
   "category": [49],
   "bad": false,
   "category_name": ["Сайты, распространяющие вирусы", "Наркотики"]
}
```

Если домен не существует, API возвращает код 206, категорию 0 и NXDOMAIN.

```
curl --user <client_id>:<client_secret> https://x.api.skydns.ru/domain/does.not.exist
```

```
StatusCode        : 206

StatusDescription : Partial Content

Content           : {"category": [0], "bad": false, "category_name": ["Non-Existing Domain"]}
```

Если домен не категоризирован, API возвращает код 404 без JSON.

```
curl --user <client_id>:<client_secret> https://x.api.skydns.ru/domain/com
```

```
StatusCode        : 404
Content           : The remote server returned an error: (404) Not Found.
```