Токен для доступа к API Базы Знаний для внешних интеграций


Администратор Базы знаний и/или администратор портала Битрикс24 может перейти в настройки Базы знаний и получить токен для доступа к API Базы Знаний. Токен необходим для того, чтобы использовать Rest API Базы знаний. Все примеры использования продемонстрированы с использованием программы POSTMAN (https://www.postman.com/) и requests - библиотеки управления HTTP-запросами при помощи языка Python.


Коллекция запросов для Postman

Скачать готовую коллекцию запросов для Postman можно по ссылке.
Для импорта коллекции в Postman, нажмите Import в верхнем левом углу рабочего пространства.

В открывшемся окне нажмите "files" и выберите скачанный файл kdb_collection.json.


В рабочее пространство импортируются все примеры, приведённые в таблице ниже.


Адрес для выполнения запросов

При использовании тиражного приложения Базы знаний  запросы нужно направлять на домен articles.it-solution.ru.

В случаях локального развёртывания Базы знаний  домен нужно заменить на тот, который используется для развёртывания.

Запросы необходимо делать на эндпоинт /extapi/ с указанием метода (например, /extapi/article.get/).


Методы для работы со статьями

 Метод Параметры
Возвращает 
Примеры

1

article.get

Получить информацию о статье

Метод GET

Все параметры указываем в URL

Обязательные:

token: str - Токен для интеграции.

id: int - ID статьи, которую получаем.

Если успешно:

tags
readers
editors
custom_access
read_access
edit_access
public_url
is_favorite
is_subscribed
can_edit
user
id
user_id
title
public
rendered_body
directory_id
link_to_id,
external_id
post_id
sort
froala
plain_text
created
edited
call_placement


Если неуспешно:

error: str - Описание ошибки.

Пример POSTMAN


Пример Python
base_url = 'https://articles.it-solution.ru/extapi/'
token = 'ваш токен для интеграции'
method = 'article.get/'
response = requests.get(base_url + method,
                        params={
                            'token': token,
                            'id': 1,
                        }).json()

Результат вызова
{
    "tags": [],
    "readers": [{"type": "all"}],
    "editors": [],
    "custom_access": false,
    "read_access": ["U-180608","U2727","UA"],
    "edit_access": [],
    "public_url": null,
    "is_favorite": false,
    "is_subscribed": true,
    "can_edit": true,
    "user": {
        "id": 1212,
        "kdb_id": 184216,
        "name": "Иван Иванов",
        "extranet": false
    },
    "id": 1,
    "user_id": 184216,
    "title": "Наименование статьи",
    "public": false,
    "rendered_body": "<p>Тело (текст) статьи</p>",
    "directory_id": 2,
    "link_to_id": null,
    "external_id": null,
    "post_id": "",
    "sort": 500,
    "froala": true,
    "plain_text": false,
    "created": "2024-09-09T10:45:18.271Z",
    "edited": "2024-09-09T10:45:18.365Z",
    "call_placement": false
}

2

article.save

Создать или изменить статью

Метод POST

Все параметры указываем в Body

Обязательные:

token: str - Токен для интеграции.

title: str - Название статьи.

Дополнительные:

id
: int - ID статьи, которую изменяем (если не указан, создаётся новая статья).

link_to_id
: int
external_id
: uuid
body
: text
directory_id
: int
sort
: int
tags
: str
tags_delimiter
: str
force
: bool
plain_text
: bool
release_lock
: bool

Если успешно:

result: str:

"created" - статья создана;
"saved" - статья изменена.

article
: dict - такой же формат данных, как в результате метода articles.get.

Если неуспешно:

error: str - Описание ошибки.

Пример POSTMAN


Пример Python
base_url = 'https://articles.it-solution.ru/extapi/'
token = 'ваш токен для интеграции'
method = 'article.save/'
response = requests.post(base_url + method,
                         data={
                             'token': token,
                             'title': 'Название статьи',
                         }).json()

Результат вызова
{
    "result": "created",
    "article": {/* аналогично article.get */}
}

3

article.delete

Удалить статью

Метод POST

Все параметры указываем в Body

Обязательные:

token: str - Токен для интеграции.

id: int - ID удаляемой статьи.

Дополнительные:

force: bool: - Форсированное удаление админом (обход блокировок).


from_bin: bool - Удалить из корзины.

Если успешно:

result: str - "ok".

Если неуспешно:

error: str - Описание ошибки.

Пример POSTMAN


Пример Python
base_url = 'https://articles.it-solution.ru/extapi/'
token = 'ваш токен для интеграции'
method = 'article.delete/'
response = requests.post(base_url + method,
                         data={
                             'token': token,
                             'id': 1,
                         }).json()

Результат вызова
{
    "result": "ok"
}

Методы для работы с разделами 

Метод Параметры
Возвращает Примеры

1

directory.save

Создать или изменить директорию

Метод POST

Все параметры указываем в Body

Обязательные:

token: str - Токен для интеграции.

name: str - Имя директории.

Дополнительные:

id: int - ID директории, которую изменяем (если не указан, создаётся новая директория).

parent_id
: int - ID родительской директории.

sort
: int
icon_name
: str
description
: text
for_templates
: bool
required_to_read
: bool

Если успешно:

result: str - "ok".


created: bool - Создана ли новая директория.

id
: int - ID директории.


Если неуспешно:

error: str - Описание ошибки.


Пример POSTMAN


Пример Python
base_url = 'https://articles.it-solution.ru/extapi/'
token = 'ваш токен для интеграции'
method = 'directory.save/'
response = requests.post(base_url + method,
                         data={
                             'token': token,
                             'name': 'Имя директории'
                         })

Результат вызова
{
    "result": "ok",
    "created": true,
    "id": 154640
}

2

directory.delete

Удалить пустую директорию

Метод POST

Все параметры указываем в Body

Обязательные:

token: str - Токен для интеграции.

Дополнительные:

dirs: list - Список ID удаляемых директорий.

articles: list - Список ID удаляемых статей.


force: bool - форсированное удаление админом (обход блокировок).

Если успешно:

success: bool - true.


Если неуспешно:

error: str - Описание ошибки.

Пример POSTMAN


Пример Python
base_url = 'https://articles.it-solution.ru/extapi/'
token = 'ваш токен для интеграции'
method = 'directory.delete/' response = requests.post(base_url + method,                          json={ 'token': token, 'dirs': [154650], })

Результат вызова
{
    "success": true
}

3

directory.set.access

Установить права доступа для директории

Метод POST

Все параметры указываем в Body

Обязательные:

token: str - Токен для интеграции.

В URL необходимо указать ID нужной директории после названия метода:


/directory.set.access/{{directory_id}}/

Дополнительные:

read: list - Список кодов групп Битрикс, которым нужно дать права на чтение директории.

edit
: list - Список кодов групп Битрикс, которым нужно дать права на изменение директории.

Примеры кодов групп в Битрикс, которые обрабатываются Базой знаний:

UA - Все пользователи;
U1 - Пользователь с ID = 1;
G1 - Группа пользователей с ID = 1;
D1 - Сотрудники отдела с ID = 1;
DR1 - Сотрудники отдела с ID = 1 и его подотделов;
SG1 - Группа соцсети с ID = 1.

force: bool - форсированная установка прав админом (обход блокировок).

result: str:
"ok" - права установлены;
"will-lose-access" - права не установлены, так как это повлечёт потерю прав у пользователя, выполняющего запрос.

read_access
: list - Список кодов групп Битрикс, которым сейчас даны права на чтение директории.


edit_access
: list - Список кодов групп Битрикс, которым сейчас даны права на изменение директории.

Если ошибка:

error: str
- Описание ошибки.

Пример POSTMAN



Пример Python
base_url = 'https://articles.it-solution.ru/extapi/'
token = 'ваш токен для интеграции'
directory_id = 154640
method = f'directory.set.access/{directory_id}/'
response = requests.post(base_url + method,
                         json={
                             'token': token,
                             'read': ['UA'],
                             'edit': ['UA'],
                         })

Результат вызова
{
    "result": "ok",
    "read_access": ["UA"],
    "edit_access": ["UA"],
}

Методы для работы событиями 

Метод Параметры Возвращает Примеры

1

event.list

Получить список событий

Метод GET

Все параметры указываем в URL

Обязательные:

token: str - Токен для интеграции.

Дополнительные:

start_id: int - Если указан, то будут получены события с ID не меньше указанного.


type: str - Если указан, то будут получены события с типом, равным указанному.

Если успешно:

events: list - Список с объектами событий формата:
{
    "id": int - ID события.
    "type": str - Тип события.
    "dt": str - Дата/время события.
    "data": dict - Данные события.
}

Формат объекта data:
{
    "user_id": int - ID пользователя.
    "article_id": int - ID статьи.
}

Список будет отсортирован по убыванию ID события, если не указан start_id. Если же указан - сортировка будет по возрастанию ID.

За один вызов может быть выдано не более 100 событий.

Если неуспешно:

error: str
- Описание ошибки.


Пример POSTMAN

Пример Python
base_url = 'https://articles.it-solution.ru/extapi/'
token = 'ваш токен для интеграции'
method = 'event.list/'
response = requests.get(base_url + method,
                        json={
                            'token': token,
                        })

Результат вызова
{
    "events": [
        {
            "id": 5765353,
            "type": "ARTICLE_VIEW",
            "dt": "2024-09-19T15:01:35.450Z",
            "data": {
                "user_id": 148705,
                "article_id": 255096
            }
        }, … ]
}

 


Как получить токен 

Чтобы получить токен для интеграции, перейдите в настройки Базы Знаний (пролистать левое меню до конца) и нажмите “Создать токен для интеграции”. 


Появится поле с токеном пользователя для интеграции Базы Знаний (у каждого пользователя свой токен). 
Токен при необходимости можно посмотреть, скопировать или обновить (создастся новый токен для интеграции, а старый перестанет действовать).