База знаний
База знаний Pyrus предназначена для хранения документов и совместной работы над ними. Это упорядоченное хранилище информации и полноценный текстовый редактор в одном флаконе. В нём есть всё для совместного редактирования и комментирования документов в режиме онлайн.
Методы Public API для Базы знаний позволяют работать со статьями и темами в ней: читать, создавать, обновлять, удалять контент, получать дерево структуры и управлять правами доступа к материалам.
- GET/
knowledgebase/ {id}Получение статьи/темы - PUT/
knowledgebase/ {id}Обновление статьи/темы - POST/
knowledgebaseСоздание статьи/темы - GET/
knowledgebase/ structureПолучить структуру базы знаний - GET/
knowledgebase/ {id}/ permissionsПолучение прав доступа к статье/теме - PUT/
knowledgebase/ {id}/ permissionsИзменение прав доступа к статье/теме - DELETE/
knowledgebase/ {id}Удаление статьи/темы
GET /knowledgebase/{id}
Получение статьи или темы по ID. Метод возвращает содержание статьи или темы в формате Markdown.
GET https://api.pyrus.com/v4 /knowledgebase /{id}
Тело ответа
{
"id": "OJHEAFQ26YT",
"title": "Title",
"type": "article",
"body": "# Hello\n\n- one\n- two\n\n\n\n",
"author": {
"id": 1731,
"first_name": "Bob",
"last_name": "Smith",
"email": "Bob.Smith@gmail.com",
"type": "user"
},
"parent_topic_id": "OJHEAFQ26YT",
"created_at": "2026-01-10T12:34:56Z",
"updated_at": "2026-01-22T09:15:00Z",
"last_edited_by": {
"id": 1731,
"first_name": "Bob",
"last_name": "Smith",
"email": "Bob.Smith@gmail.com",
"type": "user"
},
"version": 4,
"access_right": "write",
"is_open_for_organization": true,
"is_public": false,
"attachments": [
{
"id": "ab43bc19-079d-4ba2-94ad-e8b18f05a885",
"name": "image.png",
"size": 13567,
"url": "https://files.pyrus.com/services/kb?Id=ab43bc19-079d-4ba2-94ad-e8b18f05a885"
}
]
}
curl
curl -X GET 'https://api.pyrus.com/v4/knowledgebase/{id}' \
-H 'Authorization: Bearer <YOUR_ACCESS_TOKEN>'
PUT /knowledgebase/{id}
Обновление контента статьи или параметров темы по ID.
PUT https://api.pyrus.com/v4 /knowledgebase /{id}
Тело запроса
{
"title": "Title",
"body": "# Hello\n\n- one\n- two\n",
"parent_topic_id": "TOPIC123",
"parent_topic_id_changed": true
}
Тело ответа
{
"id": "OJHEAFQ26YT",
"title": "Title",
"type": "article",
"body": "# Hello\n\n- one\n- two\n",
"author": {
"id": 1731,
"first_name": "Bob",
"last_name": "Smith",
"email": "Bob.Smith@gmail.com",
"type": "user"
},
"parent_topic_id": "OJHEAFQ26YT",
"created_at": "2026-01-10T12:34:56Z",
"updated_at": "2026-01-22T09:15:00Z",
"last_edited_by": {
"id": 1731,
"first_name": "Bob",
"last_name": "Smith",
"email": "Bob.Smith@gmail.com",
"type": "user"
},
"version": 4,
"access_right": "write",
"is_open_for_organization": true,
"is_public": false,
"attachments": []
}
curl
curl -X PUT 'https://api.pyrus.com/v4/knowledgebase/{id}' \
-H 'Authorization: Bearer <YOUR_ACCESS_TOKEN>' \
-H 'Content-Type: application/json' \
-d '{
"title": "Title",
"body": "# Hello\n\n- one\n- two\n",
"parent_topic_id": "TOPIC123",
"parent_topic_id_changed": true
}'
Параметры
- title (опциональный) — новый заголовок статьи или темы;
- body (опциональный) — тело статьи в формате Markdown;
- parent_topic_id (опциональный) — указывает, в какую тему переместить статью или тему;
- null/omit = корень;
- parent_topic_id_changed (опциональный) — флаг, показывает, что параметр parent_topic_id был изменен.
POST /knowledgebase
Создание статьи или темы в Базе знаний.
POST https://api.pyrus.com/v4 /knowledgebase
Тело запроса
{
"type": "article",
"title": "Title",
"parent_topic_id": "TOPIC123",
"body": "# Hello\n\n- one\n- two\n"
}
Тело ответа
{
"id": "OJHEAFQ26YT",
"title": "Title",
"type": "article",
"body": "# Hello\n\n- one\n- two\n",
"author": {
"id": 1731,
"first_name": "Bob",
"last_name": "Smith",
"email": "Bob.Smith@gmail.com",
"type": "user"
},
"parent_topic_id": "OJHEAFQ26YT",
"created_at": "2026-01-10T12:34:56Z",
"updated_at": "2026-01-22T09:15:00Z",
"last_edited_by": {
"id": 1731,
"first_name": "Bob",
"last_name": "Smith",
"email": "Bob.Smith@gmail.com",
"type": "user"
},
"version": 4,
"access_right": "write",
"is_open_for_organization": true,
"is_public": false
}
curl
curl -X POST 'https://api.pyrus.com/v4/knowledgebase' \
-H 'Authorization: Bearer <YOUR_ACCESS_TOKEN>' \
-H 'Content-Type: application/json' \
-d '{
"type": "article",
"title": "Title",
"parent_topic_id": "TOPIC123",
"body": "# Hello\n\n- one\n- two\n"
}'
Параметры
- type (опциональный) — показывает формат элемента Базы знаний — статья (article) или тема (topic);
- title (обязательный) — заголовок статьи или название темы;
- parent_topic_id (опциональный) — указывает, в какую тему переместить статью или тему;
- null/omit = корень;
- body (обязательный для article) — тело статьи в формате Markdown.
GET /knowledgebase/structure
Получение структуры Базы знаний.
GET https://api.pyrus.com/v4 /knowledgebase /structure
Тело ответа
{
"parent_topic_id": "TOPIC123",
"depth": 3,
"items": [
{
"id": "OJHEAFQ26YT",
"type": "topic",
"title": "Getting Started",
"parent_topic_id": null,
"access_right": "write",
"is_open_for_organization": true,
"children": [
{
"id": "ABC123",
"type": "article",
"title": "Introduction",
"parent_topic_id": "OJHEAFQ26YT",
"access_right": "read",
"is_open_for_organization": true,
"children": []
}
]
}
]
}
curl
curl -X GET 'https://api.pyrus.com/v4/knowledgebase/structure' \ -H 'Authorization: Bearer <YOUR_ACCESS_TOKEN>'
Параметры
parent_topic_id (опциональный, строка) — ID темы, от которого строится дерево структуры Базы знаний:
- omit/null → строим от корня.
depth (опциональный, целое число) — глубина раскрытия дерева структуры, по умолчанию равно 2.
GET /knowledgebase/{id}/permissions
Получение прав доступа для статьи или темы Базы знаний по ID.
GET https://api.pyrus.com/v4 /knowledgebase /{id} /permissions
Тело ответа
{
"global_permission": "read",
"inherit": true,
"readers": [
{
"id": 1731,
"first_name": "Bob",
"last_name": "Smith",
"email": "Bob.Smith@gmail.com",
"type": "user"
}
],
"editors": [
{
"id": 1731,
"first_name": "Bob",
"last_name": "Smith",
"email": "Bob.Smith@gmail.com",
"type": "user"
}
]
}
curl
curl -X GET 'https://api.pyrus.com/v4/knowledgebase/OJHEAFQ26YT/permissions' \ -H 'Authorization: Bearer <YOUR_ACCESS_TOKEN>'
PUT /knowledgebase/{id}/permissions
Изменение прав доступа для статьи или темы по ID.
PUT https://api.pyrus.com/v4 /knowledgebase /{id} /permissions
Тело запроса
{
"inherit": true,
"readers": [123, 456],
"editors": [789]
}
Тело ответа
{
"global_permission": "read",
"inherit": true,
"readers": [
{
"id": 1731,
"first_name": "Bob",
"last_name": "Smith",
"email": "Bob.Smith@gmail.com",
"type": "user"
}
],
"editors": [
{
"id": 1731,
"first_name": "Bob",
"last_name": "Smith",
"email": "Bob.Smith@gmail.com",
"type": "user"
}
]
}
curl
curl -X PUT 'https://api.pyrus.com/v4/knowledgebase/{id}/permissions' \
-H 'Authorization: Bearer <YOUR_ACCESS_TOKEN>' \
-H 'Content-Type: application/json' \
-d '{
"inherit": false,
"readers": [123, 456],
"editors": [789]
}'
Параметры
- inherit — параметр только для тем. Если значение равно true, права доступа переходят от родительской (parent) темы. Для статьи параметр не поддерживается.
- readers, editors — массив пользователей.
DELETE /knowledgebase/{id}
Удаление статьи или темы Базы знаний по ID.
DELETE https://api.pyrus.com/v4 /knowledgebase /{id}
Тело ответа
{
"deleted": true,
}
curl
curl -X DELETE 'https://api.pyrus.com/v4/knowledgebase/{id}?delete_with_children=true' \
-H 'Authorization: Bearer <YOUR_ACCESS_TOKEN>'
Параметры
- delete_with_children (опциональный, булев тип) — определяет, удалять ли вложенные статьи или темы.
Форматирование документов в Markdown
При работе с API Базы знаний содержимое документа возвращается в формате Markdown с расширениями.
Помимо стандартных средств форматирования текста Markdown, поддерживаются некоторые HTML-элементы и специальные кастомные узлы. Это позволяет передавать не только обычный текст, заголовки, списки и таблицы, но и встроенные изображения, вложения, раскрывающиеся блоки, элемент iframe, ссылки на статьи и другие элементы документа.
Внутристрочное форматирование
Полужирный текст
**text**
Курсив
*text*
Зачеркнутый текст
~~text~~
Встроенный код (строчный)
`text`
Ссылка
[text](href)
Подчеркнутый текст
<u>text</u>
Подсказка: в стандартном Markdown подчеркивание не поддерживается, поэтому используется HTML-формат.
Подсветка текста (выделение цветом)
<mark data-color="...">text</mark>
Подсказка: для выделения цветом используется HTML-тег mark с цветовым токеном.
Доступные цветовые токены: red, pink, orange, orangeYellow, yellow, green, greenBlue, blue, violet, purple, gray.
Стандартные элементы Markdown
Заголовки
Используются заголовки от первого до третьего уровня:
# Заголовок 1 ## Заголовок 2 ### Заголовок 3
Цитата
Каждая строка цитируемого блока текста начинается с символа >:
> Первая строка цитаты > Вторая строка цитаты
Маркированный список
Для оформления списков используется стандартный синтаксис Markdown:
- первый пункт - второй пункт
Для оформления вложенных списков используется отступ в 4 пробела от основного списка:
- Пункт
- Вложенный пункт
Нумерованный список
Используется стандартный синтаксис Markdown для нумерации:
1. Первый пункт 2. Второй пункт
Блок кода
Для оформления блока кода используется следующий формат (обрамление тремя обратными кавычками):
``` code ```
Пример:
```json
{
"name": "example"
}
```
Таблица
Для оформления таблиц используются стандартные средства форматирования Markdown:
| c1 | c2 | |---|---| | c3 | c4 |
Пример:
| Поле | Описание | |---|---| | title | Заголовок документа | | content | Содержимое документа |
Кастомные узлы
Раскрывающийся блок (спойлер)
Для блока с раскрытием используется конструкция details:
<details> <summary>Summary</summary> content... </details>
Пример:
<details> <summary>Подробнее</summary> Здесь находится скрытый текст, который показывается после раскрытия блока. </details>
Изображение
Если у изображения явно заданы размеры, используется HTML-тег img:
<img src="guid" alt="image" width="150" height="200">
Если размеры не указаны, для оформления изображения может использоваться стандартный Markdown-формат.
Пример:
 // для новых файлов нужен только guid  // ссылка на существующий файл в статье
Видео
Для встраивания видео используется тег video:
<video src="..."></video>
Пример:
<video src="https://www.youtube.com/watch?v=dQw4w9WgXcQ&list=RDdQw4w9WgXcQ"></video>
Доступные для встраивания ресурсы: YouTube, Rutube, VK Video, Vimeo.
Схемы
Для встроенных схем используется специальный iframe-узел:
<iframe data-node="drawio" src="..." width="..."></iframe>
Пример:
<iframe data-node="drawio" src="https://files.pyrus.com/services/kb?Id=12345678-1234-1234-1234-1234567890ab" width="1000"></iframe>
Группа вложений
Для списка вложенных файлов используется контейнер attachmentsGroup:
<div data-node="attachmentsGroup"> <a data-node="attachment" href="guid">File name</a> ... </div>
Пример:
<div data-node="attachmentsGroup"> <a data-node="attachment" href="11111111-1111-1111-1111-111111111111">Report</a> <a data-node="attachment" href="https://files.pyrus.com/services/kb?Id=12345678-1234-1234-1234-1234567890ab">Specification</a> </div>
Информационный блок
Для выделенных блоков используется узел hintBlock с цветовым токеном:
<div data-node="hintBlock" data-color="..."> ...content </div>
Подсказка: доступные цветовые токены: red, pink, orange, orangeYellow, yellow, green, greenBlue, blue, violet, purple, gray.
Пример:
<div data-node="hintBlock" data-color="blue"> Обратите внимание: этот формат расширяет стандартный Markdown. </div>
Ссылка на статью Базы знаний
Для внутренних ссылок на статьи используется специальный формат ссылок.
<a data-node="articleLink" data-article-id="...">...</a>
Подсказка: Используйте data-article-id или data-topic-id в зависимости от типа сущности бз.
Пример:
<a data-node="articleLink" data-article-id="AWTGbWIdMj1">Открыть связанную статью</a> <a data-node="articleLink" data-topic-id="BWVGbWIdMj2">Открыть связанную тему</a>
Якорная ссылка
Для внутренних якорей используется специальный узел:
<a data-node="anchorLink" data-id="..."/>
Пример:
<a data-node="anchorLink" data-id="section-intro"/>
Загрузка файлов в контент
Для добавления guid в блоки изображений и файлов воспользуйтесь следующим методом.