Действия

UPS. Описание API: различия между версиями

Материал из Флора AI

Нет описания правки
 
(не показаны 152 промежуточные версии 5 участников)
Строка 8: Строка 8:
|'''<small>servicetype</small>'''
|'''<small>servicetype</small>'''
|<small>запрос</small>
|<small>запрос</small>
|<small>Тип сервиса. Возможные значения: spr, smc, see, sbs, tts</small>
|<small>Тип сервиса. Возможные значения: spr, smc, see, sbs, tts.</small>
|-
|-
|'''<small>servertype</small>'''
|'''<small>servertype</small>'''
|<small>запрос</small>
|<small>запрос</small>
|<small>Тип группы серверов. Возможные значения: trainer (серверы обучения), cluster (рабочие серверы)</small>
|<small>Тип группы серверов. Возможные значения: trainer (серверы обучения), cluster (рабочие серверы).</small>
|-
|-
|'''<small>model</small>'''
|'''<small>model</small>'''
|<small>запрос</small>
|<small>запрос</small>
|<small>Название модели</small>
|<small>Название модели.</small>
|-
|-
|'''<small>modeltype</small>'''
|'''<small>modeltype</small>'''
|<small>запрос</small>
|<small>запрос</small>
|<small>Тип модели. Возможные значения: '''future''' - планируемая/черновик, '''current''' - текущая/рабочая, '''previous''' - архивная.</small>
|<small>Тип модели. Возможные значения: '''future''' планируемая/черновик, '''current''' текущая/рабочая, '''previous''' архивная.</small>
|-
|-
|'''<small>error</small>'''
|'''<small>error</small>'''
|<small>ответ</small>
|<small>ответ</small>
|<small>Флаг ошибки</small>
|<small>Флаг ошибки.</small>
|-
|-
|'''<small>message</small>'''
|'''<small>message</small>'''
|<small>ответ</small>
|<small>ответ</small>
|<small>Информационное сообщение</small>
|<small>Информационное сообщение.</small>
|}
|}


Строка 37: Строка 37:


===== '''/auth: методы  авторизации''' =====
===== '''/auth: методы  авторизации''' =====
{| class="wikitable mw-collapsible"
{| class="wikitable" style="width: 110%"
!Метод
|+
!Описание
!style="color:green;width: 15%" |'''POST/auth/access'''
!Входные параметры
! colspan="3" style="width: 85%" |Получение токенов доступа. <small>Токен доступа определяет, какие из методов будут доступны конкретному пользователю. Формируется на основании роли. Дополнительный входной параметр во всех методах, кроме перечисленных в разделе «nopassword» конфигурационного файла. Время действия токена определяется параметром auth.accessLifeTime конфигурационного файла.</small>
!Ответ
!Пояснения
|-
|-
|<small>POST</small>
|colspan="2" style="width: 50%" |
<small>/auth/access</small>
* <small>'''username''' — логин</small>
|<small>Предназначен для получения токенов доступа</small>
| <small>username - логин
password - пароль
</small>
|<small>{
  "x-access-token": "XXXXXXXXXXXXXXXXXXXX",
  "x-refresh-token": "XXXXXXXXXXXXXXXXXXXX"


* <small>'''password''' — пароль</small>
|colspan="2" style="width: 50%" |<small>{</small>


<small>"x-access-token": "XXXXXXXXXXXXXXXXXXXX",</small>


}</small>
<small>"x-refresh-token": "XXXXXXXXXXXXXXXXXXXX"</small>
| <small>Токен доступа определяет какие из методов будут доступны конкретному пользователю. Формируется на основании роли. Дополнительный входной параметр во всех методах, кроме перечисленных в разделе "nopassword" конфигурационного файла. Время действия токена определяется параметром auth.accessLifeTime конфигурационного файла.</small>
 
<small>}</small>  
|-
!style="color:green;width: 15%" |'''POST/auth/dataset/add'''
! colspan="3" style="width: 85%" |Добавление dataset (набора данных). <small>Dataset (набор данных) используется для ограничения доступа к данным. В ответе метод вернет id созданного набора данных.</small>
|-
|colspan="2" style="width: 50%" |
* <small>data — json строка вида: {    "name": "название нового набора"     }</small>
|colspan="2" style="width: 50%" |<small>{</small>
 
<small>"error": 0</small>
 
<small>"message": "success",</small>
 
<small>"dataset_id": "XXXXXXXXXXXXX"</small>
 
<small>}</small>  
|-
|-
|<small>POST</small><small>/auth/dataset/add</small>
!style="color:red;width: 15%" |'''DELETE/auth/dataset/delete/{id}'''
|<small>Предназначен для добавления dataset (набора данных)</small>
! colspan="3" style="width: 85%" |Удаление dataset (набора данных).  
|  <small>{   </small>
<small>"name": "test2"   }</small>
|{
"error": 0,
"message": "success",
"dataset_id": "XXXXXXXXXXXXX"
}
|<small>dataset (набор данных) используется для ограничения доступа к данным. В ответе метод вернет id созданного набора данных</small>
|-
|-
|<small>DELETE</small><small>/auth/dataset/delete/{id}</small>
|colspan="2" style="width: 50%" |
|<small>Предназначен для удаления dataset (набора данных)</small>
* <small>'''id''' — идентификатор набора данных</small>  
|'''id''' - идентификатор набора данных
|colspan="2" style="width: 50%" |<small>{</small>
|{


<small>"error": 0,</small>


"error": 0,
<small>"message": "success"</small>


<small>}</small>
|-
!style="color:green;width: 15%" |'''POST/auth/dataset/modify/{id}'''
! colspan="3" style="width: 85%" |Переименование dataset (набора данных). <small>Метод меняет все параметры набора данных, но на данный момент времени у набора данных, кроме id, только один параметр — наименование.</small>
|-
|colspan="2" style="width: 50%" |
* <small>'''id''' — идентификатор набора данных</small>
* <small>'''data''' — JSON c новыми параметрами</small>
|colspan="2" style="width: 50%" |<small>{</small>


"message": "success"
<small>"error": 0,</small>


<small>"message": "success"</small>


}
<small>}</small>
| -
|-
|-
|<small>POST</small><small>/auth/dataset/modify/{id}</small>
!style="color:blue;width: 15%" |'''GET/auth/datasets'''
|<small>Предназначен для переименования dataset (набора данных)</small>
! colspan="3" style="width: 85%" |Получение списка наборов данных.
|<small>'''id''' - идентификатор набора данных</small><small>'''data''' - JSON c новыми параметрами</small>
|{
"error": 0,
"message": "success"
}
|<small>Метод меняет все параметры набора данных, но на данный момент времени у набора данных кроме id только один параметр - наименование</small>
|-
|-
|<small>GET</small><small>/auth/datasets</small>
|colspan="2" style="width: 50%" |<small>Нет входных параметров</small>
|<small>Предназначен для получения списка наборов данных</small>
|colspan="2" style="width: 50%" |<small>[</small>
| -
|[
{"id": "XXXXXXXXXXXXXXXXXX",


"name": "XXX"},
<small>{"id": "XXXXXXXXXXXXXXXXXX",</small>


{"id": "0",
<small>"name": "XXX"},</small>


"name": "По умолчанию"}
<small>{"id": "0",</small>


]
<small>"name": "По умолчанию"}</small>
| -
 
<small>]</small>
|-
!style="color:blue;width: 15%" |'''GET/auth/refresh'''
! colspan="3" style="width: 85%" |Обновление токенов доступа. <small>Время, в течение которого можно обновить доступ, регулируется параметром auth.refreshLifeTime конфигурационного файла. Служебный метод, используется в основном в веб-интерфейсе, чтобы не запрашивать лишний раз пароль.</small>
|-
|-
|<small>GET</small><small>/auth/refresh</small>
|colspan="2" style="width: 50%" |
|<small>Предназначен для обновления токенов доступа</small>
* <small>'''x-refresh-token''' токен обновления доступа</small>
|<small>'''x-refresh-token''' - токен обновления доступа</small>
|colspan="2" style="width: 50%" |<small>{</small>
|<small>{
  "x-access-token": "XXXXXXXXXXXXXXXXXXXX",
  "x-refresh-token": "XXXXXXXXXXXXXXXXXXXX"


<small>"x-access-token": "XXXXXXXXXXXXXXXXXXXX",</small>


<small>"x-refresh-token": "XXXXXXXXXXXXXXXXXXXX"</small>


}</small>
<small>}</small>  
|<small>Время в течение которого можно обновить доступ регулируется параметром auth.refreshLifeTime</small>
|-
<small>конфигурационного файла. Служебный метод, используется в основном в вэбинтерфейсе чтобы не запрашивать лишний раз пароль</small>
!style="color:blue;width: 15%" |'''GET/auth/rights'''
! colspan="3" style="width: 85%" |Получение списка прав доступа. <small>Служебный метод — по токену получает название роли и все права доступа этой роли, а также общедоступные методы.</small>
|-
|-
|<small>GET</small><small>/auth/rights</small>
|colspan="2" style="width: 50%" |<small>Нет входных параметров</small>
|<small>Предназначен для получения списка прав доступа</small>
|colspan="2" style="width: 50%" |<small><<<{  "РОЛЬ": [</small>
| -
 
|
<small>    "GET:/......"  ],</small>
<<{
 
  "РОЛЬ": [
<small>  "nopassword": [    "GET:/.......",</small>
    "GET:/......"
 
  ],
<small>...............</small>
  "nopassword": [
 
    "GET:/.......",
<small><<<...............</small>
...............
 
<small>    "POST:/......."  ]  }</small>
|-
!style="color:green;width: 15%" |'''POST/auth/role/add'''
! colspan="3" style="width: 85%" |Создание роли. <small>Служебный метод — используется веб-интерфейсом при создании роли.</small>
|-
|colspan="2" style="width: 50%" |
* <small>'''data''' — JSON с параметрами роли:{</small>
 
<small>"name": "проверка создания",</small>
 
<small>"rights": [    "набор прав через запятую" ]</small>
 
<small>}</small>
|colspan="2" style="width: 50%" |<small>{</small>
 
<small>"error": 0, "message": "success", "role_id": "a7e68bb83169f864c2fc868401b5250c"</small>


<<...............
<small>}</small>
    "POST:/......."
|-
  ]
!style="color:red;width: 15%" |'''DELETE/auth/role/delete/{id}'''
}
! colspan="3" style="width: 85%" |Удаление роли.
|<small>Служебный метод - по токену получает название роли и все права доступа этой роли а также общедоступные методы</small>
|-
|-
|<small>POST</small><small>/auth/role/add</small>
|colspan="2" style="width: 50%" |
|<small>Предназначен для создания роли</small>
* <small>'''id''' роли</small>
|<small>'''data''' - JSON с параметрами роли:</small> <small>{</small>
|colspan="2" style="width: 50%" |<small>{"error": 0,"message": "success"}</small>
<small>"name": "проверка создания", </small>
<small>"rights": [   </small><small> "набор прав через запятую" </small><small>] </small><small>}</small>
|<small>{
"error": 0,
"message": "success",
"role_id": "a7e68bb83169f864c2fc868401b5250c"
}</small>
|<small>Служебный метод - используется вебинтерфейсом при создании роли</small>
|-
|-
|<small>DELETE</small><small>/auth/role/delete/{id}</small>
!style="color:green;width: 15%" |'''POST/auth/role/modify/{id}'''
|<small>Предназначен для удаления роли</small>
! colspan="3" style="width: 85%" |Изменение роли. <small>Параметры как при создании роли. Роль будет переписана.</small>
|<small>'''id''' роли</small>
|<small>{</small><small>"error": 0,</small><small>"message": "success"</small><small>}</small>
| -
|-
|-
|<small>POST</small><small>/auth/role/modify/{id}</small>
|colspan="2" style="width: 50%" |
|<small>Предназначен для изменения роли</small>
* <small>'''id''' роли</small>
|<small>'''id роли'''</small><small>'''data''' - JSON с параметрами роли</small>
* <small>'''data''' JSON с параметрами роли:{</small>
|<small>{</small><small>"error": 0,</small><small>"message": "success"</small><small>}</small>
 
|<small>параметры как при создании роли. роль будет переписана</small>
<small>"name": "проверка создания",</small>  
 
<small>"rights": [    "набор прав через запятую" ]</small>  
 
<small>}</small>  
|colspan="2" style="width: 50%" |<small>{"error": 0,"message": "success"}</small>
|-
|-
|<small>GET</small><small>/auth/roles</small>
!style="color:blue;width: 15%" |'''GET/auth/roles'''
|<small>Предназначен для получения списка ролей</small>
! colspan="3" style="width: 85%" |Получение списка ролей.
| -
|-
|<small>[</small>
|colspan="2" style="width: 50%" |<small>Нет входных параметров</small>
<small>{</small>
|colspan="2" style="width: 50%" |<small>[{</small>


<small>"id": "XXXXXXXXXXX",</small>
<small>"id": "XXXXXXXXXXX",</small>


<small>"name": "имя роли",</small>  
<small>"name": "имя роли",</small>
 
<small>"rights": [ "набор прав через запятую" ]</small>
 
<small>},............]</small>
|-
!style="color:green;width: 15%" |'''POST/auth/user/add'''
! colspan="3" style="width: 85%" |Создание нового пользователя. <small>Метод вернет или id нового пользователя или описание ошибки</small>
|-
|colspan="2" style="width: 50%" |
* <small>'''data''' — json строка {</small>


<small>"rights": "набор прав через запятую" ]</small>  
<small>"username": "login_name", "fullname": "Отображаемое Имя","password": "XXXXX","role": "role_id",</small>


<small>},</small>  
<small>"dataset": "default dataset id", "datasets": [ "dataset id", ................. ] }</small>
|colspan="2" style="width: 50%" |<small>{"error": 0,</small>


<small>............</small>  
<small>"message": "success",</small>


<small>]</small>
<small>"user_id": "XXXXXXXXXXXXXXXX"}</small>
| -
|-
!style="color:red;width: 15%" |'''DELETE/auth/user/delete/{id}'''
! colspan="3" style="width: 85%" |Удаление пользователя
|-
|colspan="2" style="width: 50%" |
* <small>'''user_id''' - идентификатор пользователя</small>
|colspan="2" style="width: 50%" |<small>{"error": 0,"message": "success"}</small>
|-
!style="color:blue;width: 15%" |'''GET/auth/user/get/{id}'''
! colspan="3" style="width: 85%" |Получение параметров пользователя
|-
|colspan="2" style="width: 50%" |
* <small>'''user_id''' — идентификатор пользователя</small>
|colspan="2" style="width: 50%" |<small>{"id": "XXXXXXXXXX",</small>
 
<small>"username": "loginname",</small>
 
<small>"fullname": "Full Name",</small>
 
<small>"role": "0",</small>
 
<small>"dataset": "0",</small>
 
<small>"datasets": [ "0", "2dc34d3454243522e5407d3a170815a2" ] }</small>  
|-
!style="color:blue;width: 15%" |'''GET/auth/user/info'''
! colspan="3" style="width: 85%" |Получение параметров пользователя по его токену доступа. <small>Служебный метод - для предоставления прав текущему пользователю по его токену</small>
|-
|-
|<small>POST</small>
|colspan="2" style="width: 50%" |
<small>/auth/user/add</small>
* <small>'''x-access-token'''</small>
|<small>Предназначен для создания нового пользователя</small>
|colspan="2" style="width: 50%" |<small>{"id": "XXXXXXXXXX",</small>
|<small>{</small>
<small>"username": "login_name",</small>
<small>"fullname": "Отображаемое Имя",</small><small>"password": "XXXXX",</small><small>"role": "role_id",</small>  


<small>"dataset": "default dataset id",</small>  
<small>"username": "loginname",</small>
<small>"datasets": "dataset id",</small>
 
<small>................. ]</small>
<small>"fullname": "Full Name",</small>
<small>}</small>
|<small>{</small>
<small>"error": 0,</small>  


<small>"message": "success",</small>
<small>"role": "0",</small>


<small>"user_id": "XXXXXXXXXXXXXXXX"</small>
<small>"dataset": "0",</small>


<small>}</small>
<small>"datasets": [  "0",  "2dc34d3454243522e5407d3a170815a2"]  },  "rights": [..........] }</small>
| -
|-
|-
|<small>DELETE</small>
!style="color:blue;width: 15%" |'''GET/auth/user/list'''
<small>/auth/user/delete/{id}</small>
! colspan="3" style="width: 85%" |Получение списка пользователей с их параметрами. <small>Тоже самое что и в методе GET /auth/user/info, только для всех пользователей</small>
|<small>Предназначен для удаления пользователя</small>
|<small>'''user_id'''</small>
|
|
|-
|-
|<small>GET</small>
|colspan="2" style="width: 50%" |<small>Нет входных параметров</small>
<small>/auth/user/get/{id}</small>
|colspan="2" style="width: 50%" |[
|<small>Предназначен для получения параметров пользователя</small>
|<small>'''user_id'''</small>
|<small>{</small>
<small>"id": "XXXXXXXXXX",</small>


<small>"username": "loginname",</small>  
<small>{"id": "XXXXXXXXXX",</small>


<small>"fullname": "Full Name",</small>  
<small>"username": "loginname",</small>


<small>"role": "0",</small>  
<small>"fullname": "Full Name",</small>


<small>"dataset": "0",</small>  
<small>"role": "0",</small>


<small>"datasets": [</small>  
<small>"dataset": "0",</small>


<small>"0",</small>  
<small>"datasets": [  "0",  "2dc34d3454243522e5407d3a170815a2"]  },  "rights": [..........] },</small>


<small>"2dc34d3454243522e5407d3a170815a2"]</small>  
......
 
]
|-
!style="color:green;width: 15%" |'''POST/auth/user/modify/{id}'''
! colspan="3" style="width: 85%" |Изменение параметров пользователя
|-
|colspan="2" style="width: 50%" |
* <small>'''data''' — параметры пользователя как при создании</small>
* <small>'''id''' — идентификатор пользователя</small>
|colspan="2" style="width: 50%" |<small>{ "error": 0,</small>


<small>}</small>
<small>"message": "success"}</small>  
| -
|-
!style="color:green;width: 15%" |'''POST/auth/user/password'''
! colspan="3" style="width: 85%" |Смена пароля пользователя по его токену доступа.
|-
|colspan="2" style="width: 50%" |
* '''<small>password</small>'''
|colspan="2" style="width: 50%" |{ "error": 0,"message": "success"}
|-
!style="color:green;width: 15%" |'''POST/auth/userlog'''
! colspan="3" style="width: 85%" |Получение действий пользователя за период времени по его токену
|-
|-
|<small>GET</small>
|colspan="2" style="width: 50%" |
<small>/auth/user/info</small>
* <small>'''from''' — начало периода в формате "%Y-%m-%d %H:%M"</small>
|<small>Предназначен для получения параметров пользователя по его токену доступа</small>
 
|<small>'''x-access-token'''</small>
* <small>'''to''' — конец периода в формате "%Y-%m-%d %H:%M"</small>
|<small>{</small><small>"id": "XXXXXXXXXX",</small>  
|colspan="2" style="width: 50%" |<small>{</small>
 
<small>  "error": 0,</small>
 
<small>  "message": "success",</small>


<small>"username": "loginname",</small>  
<small>  "data": [</small>


<small>"fullname": "Full Name",</small>  
<small>    [</small>


<small>"role": "0",</small>  
<small>      "время",</small>


<small>"dataset": "0",</small>  
<small>      "id",</small>


<small>"datasets": [</small>  
<small>      "метод",</small>


<small>"0",</small>  
<small>      {измененные данные в формате метода}</small>


<small>"2dc34d3454243522e5407d3a170815a2"]</small>  
<small>    ],</small>


<small>},</small>
<small>    [</small>


<small>"rights": [</small>
<small>      "время",</small>


<small>..........</small>
<small>      "id",</small>


<small>]</small>
<small>      "метод",</small>
| -
 
|-
<small>      {измененные данные в формате метода}</small>
|<small>GET</small>
 
<small>/auth/user/list</small>
<small>    ],</small>
|<small>Предназначен для получения списка пользователей с их параметрами</small>
| -
|<small>тоже самое что и в методе GET</small> <small>/auth/user/info</small><small>, только для всех пользователей</small>
| -
|-
|<small>POST</small>
<small>/auth/user/modify/{id}</small>
|<small>Предназначен для изменения параметров пользователя</small>
|<small>'''data -''' параметры пользователя как при создании</small> <small>'''id -''' идентификатор пользователя</small>
|<small>{</small>  <small>"error": 0,</small>  


<small>"message": "success"</small>
<small>    .........</small>


<small>}</small>
<small>}</small>
| -
|-
|-
|<small>POST</small>
!style="color:blue;width: 15%" |'''GET/auth/version'''
<small>/auth/user/password</small>
! colspan="3" style="width: 85%" |Получение версии сервиса ups
|<small>Предназначен для смены пароля пользователя по его токену доступа</small>
|-
|<small>'''password'''</small>
|colspan="2" style="width: 50%" |<small>Нет входных параметров</small>
|<small>{</small>  <small>"error": 0,</small><small>"message": "success"</small>
|colspan="2" style="width: 50%" |<small>{</small>


<small>}</small>
<small>  "version": "4.082 release"</small>
| -
|-
|<small>GET</small>
<small>/auth/version</small>
|<small>Предназначен для получения верчии UPS</small>
| -
|<small>{</small>
<small>"version": "4.049 beta"</small>


<small>}</small>
<small>}</small>
| -
|}
|}


===== '''/lang: методы мультиязычности''' =====
===== '''/lang: методы мультиязычности''' =====
{| class="wikitable mw-collapsible"
{| class="wikitable"  style="width: 110%"
!Метод
|+
!Описание
!style="color:blue;width: 15%" |'''GET/lang/'''
!Входные параметры
! colspan="3" style="width: 85%" |Выводит информацию о переводе элементов интерфейса на текущий язык
!Ответ
!Пояснения
|-
|-
|<small>GET</small>
| colspan="2" style="width: 50%" |<small>Нет входных параметров</small>
<small>/</small>
| colspan="2" style="width: 50%" |<small>{ "see":"Сущности",</small>
|<small>Предназначен для вывода информации о переводе элементов интерфейса на текущий язык</small>
| <small>-</small>
|<code><small>{</small></code>
<code><small>"see":"Сущности",</small></code>


<code><small>"smc":"Классификатор",</small></code>
<small>"smc":"Классификатор",</small>


<code><small>...</small></code>
<small>... }</small>
|-
!style="color:blue;width: 15%" |'''GET/lang/wallpaper'''
! colspan="3" style="width: 85%" |Отдает случайный фон рабочего стола в виде jpeg из каталога «wallpapers» на сервере ups
|-
| colspan="2" style="width: 50%" |<small>Нет входных параметров</small>
| colspan="2" style="width: 50%" |<small>image/jpeg</small>
|}


<code><small>}</small></code>
| <small>-</small>
|}


===== '''/server: получение информации о серверах''' =====
===== '''/server: получение информации о серверах''' =====
{| class="wikitable mw-collapsible"
 
!Метод
{| class="wikitable" style="width: 110%"
!Описание
|+
!Входные параметры
!style="color:blue;width: 15%" |GET/server/get/addresses/{servicetype}
!Ответ
! colspan="3" style="width: 85%" |Вывод информации о серверах, обслуживающих данный сервис, а также настроенных параметров обращения к данным серверам.
!Пояснения
<small>'''trainer''' — сервер обучения, '''cluster''' — рабочие серверы, '''connect''' — время на подключение, '''read''' — время на ответ,</small>
 
<small>'''failed''' — время пребывания в сбойных, '''install''' — время на установку модели, '''info''' — время на получение информации о модели,</small>
 
<small>'''counter''' — счетчик запросов, '''current''' — индекс последнего опрошенного cluster-сервера</small>
 
<small>'''fail''' — массив сбойных серверов со временем постановки в сбой.</small>
|-
|-
|<small>GET</small>
| colspan="2" style="width: 50%" |
<small>/get/addresses/{servicetype}</small>
* <small>'''servicetype''' тип сервиса</small>
|<small>Предназначен для вывода информации о сервера, обслуживающих данный сервис, а также настроеных параметров обращения к данным серверам</small>
| colspan="2" style="width: 50%" |<small>{  "trainer": "<nowiki>http://127.0.0.1:6181</nowiki>",</small>
|
 
* <small>'''servicetype''' - тип сервиса</small>
<small>  "cluster": "<nowiki>http://127.0.0.1:6181</nowiki>"  ],</small>
|<code><small>{</small></code>  
<code><small>  "trainer": "<nowiki>http://127.0.0.1:6181</nowiki>",</small></code>


<code><small>  "cluster": [</small></code>  
<small>  "timers": {  "connect": 0.5,</small>


<code><small>    "<nowiki>http://127.0.0.1:6181</nowiki>"</small></code>
<small>    "read": 1,</small>


<code><small>  ],</small></code>  
<small>    "failed": 600,</small>


<code><small>  "timers": {</small></code>
<small>    "install": 60,</small>


<code><small>    "connect": 0.5,</small></code>
<small>    "info": 3 },</small>


<code><small>    "read": 1,</small></code>
<small>  "counter": 0,</small>


<code><small>    "failed": 600,</small></code>
<small>  "current": 0,</small>


<code><small>    "install": 60,</small></code>
<small>  "fail": {"<nowiki>http://127.0.0.1:6181</nowiki>":1686295678} }</small>
|-
!style="color:blue;width: 15%" |GET/server/get/models/{servicetype}/{servertype}
! colspan="3" style="width: 85%" |Вывод информации о моделях указанного сервиса на каждом сервере указанного типа. <small>Вывод представляет собой массив URL-серверов, для каждого из которых указан список моделей.</small>
|-
| colspan="2" style="width: 50%" |
* <small>'''servicetype''' — тип сервиса</small>


<code><small>    "info": 3</small></code>
* <small>'''servertype''' — тип серверов</small>
| colspan="2" style="width: 50%" |<small>{  "<nowiki>http://127.0.0.1:6181</nowiki>": [</small>


<code><small>  },</small></code>
<small>    "model1",</small>


<code><small>  "counter": 0,</small></code>
<small>    ...</small>


<code><small>  "current": 0,</small></code>
<small>    "modelN"</small>


<code><small>  "fail": {</small></code>
<small>  ],  ... }</small>
|}
 
===== '''/model: методы работы с моделями''' =====
{| class="wikitable"  style="width: 110%"
|+
!style="color:green;width: 15%" |'''<small>POST/model/add/{servicetype}/{model}</small>'''
! colspan="3" style="width: 85%" |Создание пустой модели в указанном сервисе. <small>Доступно для следующих сервисов: '''smc''', '''see''', '''spr'''.</small>
|-
| colspan="2" style="width: 30%" |
* <small>'''servicetype''' — тип сервиса</small>
* <small>'''model''' — название модели</small>
| colspan="2" style="width: 70%" |<small>{</small>


<code><small>"<nowiki>http://127.0.0.1:6181</nowiki>":1686295678</small></code>
<small>"error":0,</small>


<code><small>}</small></code>
<small>"message":"success"</small>


<code><small>}</small></code>
<small>}</small>  
|
|-
* <small>'''trainer''' - сервер обучения</small>
!style="color:green;width: 15%" |'''<small>POST/model/apply/{servicetype}/{model}</small>'''
* <small>'''cluster''' - рабочие серверы</small>
! colspan="3" style="width: 85%" |Применение установленной на рабочих серверах модели. <small>После применения модель становится доступна для штатного режима работы. Доступно для следующих сервисов: '''smc''', '''see''', '''spr'''.</small>
* <small>'''connect''' - время на подключение</small>
* <small>'''read''' - время на ответ</small>
* <small>'''failed''' - время пребывание в сбойных</small>
* <small>'''install''' - время на установку модели</small>
* <small>'''info''' - время на получение информации о модели</small>
* <small>'''counter''' - счетчик запросов</small>
* <small>'''current''' - индекс последнего опрошенного cluster-сервера</small>
* <small>'''fail''' - массив сбойных серверов со временем постановки в сбой</small>
|-
|-
|<small>GET</small>
| colspan="2" style="width: 50%" |
<small>/get/models/{servicetype}/{servertype}</small>
* <small>'''servicetype''' тип сервиса</small>
|<small>Предназначен для вывода информации о моделях указанного сервиса на каждом сервере указанного типа</small>
* <small>'''model''' — название модели</small>
|
| colspan="2" style="width: 50%" |<small>{</small>
* <small>'''servicetype''' - тип сервиса</small>
* <small>'''servertype''' - тип серверов</small>
|<code><small>{</small></code>
<code><small>  "<nowiki>http://127.0.0.1:6181</nowiki>": [</small></code>


<code><small>    "model1",</small></code>
<small>"error":0,</small>


<code><small>    ...</small></code>
<small>"message":"success"</small>


<code><small>    "modelN"</small></code>
<small>}</small>
|-
!style="color:red;width: 15%" |'''<small>DELETE/model/delete/{servicetype}/{model}</small>'''
! colspan="3" style="width: 85%" |Полностью удаляет модель из системы и со всех управляемых серверов. <small>Доступно для следующих сервисов: smc, see, spr.</small>  
|-
| colspan="2" style="width: 50%" |
* <small>'''servicetype''' — тип сервиса</small>
* <small>'''model''' — название модели</small>
| colspan="2" style="width: 50%" |<small>{</small>


<code><small>  ],</small></code>
<small>"error":0,</small>
 
<small>"message":"success"</small>


<code><small>  ...</small></code>
<small>}</small>
|-
!style="color:blue;width: 15%" |'''<small>GET/model/errors/{servicetype}/{model}/{modeltype}</small>'''
! colspan="3" style="width: 85%" |Запрос на получение списка ошибок модели после тестирования/обучения.  <small>Доступен для сервисов see и smc. Ответ содержит список вложенных списков. В каждом три значения: правильное значение, предсказанное моделью значение и начальные данные (фраза).</small>
|-
| colspan="2" style="width: 50%" |
* <small>'''type''' — тип ошибок в выводе</small>
<small>'''- train''' ошибки обучения</small>


<code><small>}</small></code>
<small>'''- test''' ошибки тестирования</small>
|<small>Вывод представляет собой массив url серверов, для каждого из которых указан список моделей</small>
|}


<small>'''- mark''' ошибки авторазметки</small>
* <small>'''servicetype''' — тип сервиса</small>
* <small>'''model''' — название модели</small>
* <small>'''modeltype''' — тип модели</small>
| colspan="2" style="width: 50%" |<small>[ [true, predicted, phrase],</small>


<small>... ]</small>
|-
!style="color:blue;width: 15%" |'''<small>GET/model/export/{servicetype}/{model}/{modeltype}</small>'''
! colspan="3" style="width: 85%" |Экспорт модели, модель скачивается в виде zip-архива.
|-
| colspan="2" style="width: 50%" |
* <small>'''servicetype''' — тип сервиса</small>
* <small>'''model''' — название модели</small>
* <small>'''modeltype''' — тип модели</small>
| colspan="2" style="width: 50%" |<small>Файл model.zip, где model — название модели</small>
|-
! style="color:red;width: 15%" |'''<small>DELETE/model/handler/{servicetype}/{model}</small>'''
! colspan="3" style="width: 85%" |Удаление постобработчика из модели типа future. <small>Более подробно об обработчике см. руководства пользователя [[SMC. Руководство пользователя|smc]] и [[SEE. Руководство пользователя|see]].</small>
|-
| colspan="2" style="width: 50%" |
* <small>'''servicetype''' — тип сервиса</small>
* <small>'''model''' — название модели</small>
| colspan="2" style="width: 50%" |<small>{"error":0,</small>
<small>"message":"success"</small>


===== '''/model: методы работы с моделями''' =====
<small>}</small>
{| class="wikitable mw-collapsible"
|-
!Метод
! style="color:green;width: 15%" |'''<small>POST/model/handler/{servicetype}/{model}</small>'''
!Описание
! colspan="3" style="width: 85%" |Отправка файла-постобработчика в указанную модель типа future. <small>Обработчик становится активным сразу после успешной отправки. Более подробно об обработчике см. руководства пользователя [[SMC. Руководство пользователя|smc]] и [[SEE. Руководство пользователя|see]].</small>
!Входные параметры
!Ответ
!Пояснения
|-
|-
|<small>POST</small>
| colspan="2" style="width: 50%" |
<small>/add/{servicetype}/{model}</small>
* <small>'''servicetype''' тип сервиса</small>
|<small>Предназначен для создания пустой модели в указанном сервисе.</small>
* <small>'''model''' название модели</small>
<small>Доступно для следующих сервисов: smc, see, spr.</small>
* <small>'''handler''' — файл, содержащий программный код python постобработчика</small>
|
| colspan="2" style="width: 50%" |<small>{"error":0,</small>
* <small>'''servicetype''' - тип сервиса</small>
* <small>'''model''' - название модели</small>
|<code><small>{</small></code>
<code><small>"error":0,</small></code>


<code><small>"message":"success"</small></code>
<small>"message":"success"</small>


<code><small>}</small></code>
<small>}</small>  
| <small>-</small>
|-
!style="color:blue;width: 15%" |'''<small>GET/model/handler/{servicetype}/{model}</small>'''
! colspan="3" style="width: 85%" |Получение файла-постобработчика из модели типа future.
|-
| colspan="2" style="width: 50%" |
* <small>'''servicetype''' — тип сервиса</small>
* <small>'''model''' — название модели</small>
| colspan="2" style="width: 50%" |<small>Файл handler.py</small>
|-
!style="color:red;width: 15%" |'''<small>DELETE/model/handler/{servicetype}/{model}/{modeltype}</small>'''
! colspan="3" style="width: 85%" |Удаление постобработчика в указанной модели указанного типа.
|-
|-
|<small>POST</small>
| colspan="2" style="width: 50%" |
<small>/install/{servicetype}/{model}</small>
* <small>'''servicetype''' тип сервиса</small>
|<small>Предназначен для установки импортированной или обученной модели на рабочих серверах.</small>
* <small>'''model''' название модели</small>
<small>Доступно для следующих сервисов: smc, see, spr.</small>
* <small>'''modeltype''' — тип модели</small>
|
| colspan="2" style="width: 50%" |<small>{</small>
* <small>'''servicetype''' - тип сервиса</small>
* <small>'''model''' - название модели</small>
|<code><small>{</small></code>
<code><small>"error":0,</small></code>


<code><small>"message":"success"</small></code>
<small>"error":0,</small>


<code><small>}</small></code>
<small>"message":"success"</small>
| <small>-</small>
 
<small>}</small>  
|-
! style="color:green;width: 15%" |'''<small>POST/model/handler/{servicetype}/{model}/{modeltype}</small>'''
! colspan="3" style="width: 85%" |Отправка файла-постобработчика в указанную модель указанного типа. <small>Становится активным сразу после успешной отправки.</small>
|-
|-
|<small>POST</small>
| colspan="2" style="width: 50%" |
<small>/apply/{servicetype}/{model}</small>
* <small>'''modeltype''' — тип модели</small>
|<small>Предназначен для применения установленной на рабочих серверах модели. После применения модель становится доступна для штатного режима работы.</small>
* <small>'''servicetype''' — тип сервиса</small>
<small>Доступно для следующих сервисов: smc, see, spr.</small>
* <small>'''model''' — название модели</small>
|
* <small>'''handler''' — файл, содержащий программный код python постобработчика</small>
* <small>'''servicetype''' - тип сервиса</small>
| colspan="2" style="width: 50%" |<small>{</small>
* <small>'''model''' - название модели</small>
 
|<code><small>{</small></code>
<small>"error":0,</small>
<code><small>"error":0,</small></code>


<code><small>"message":"success"</small></code>
<small>"message":"success"</small>


<code><small>}</small></code>
<small>}</small>  
| <small>-</small>
|-
! style="color:blue;width: 15%" |'''<small>GET/model/handler/{servicetype}/{model}/{modeltype}</small>'''
! colspan="3" style="width: 85%" |Получение файла-постобработчика из указанной модели указанного типа.
|-
| colspan="2" style="width: 50%" |
* <small>'''servicetype''' — тип сервиса</small>
* <small>'''model''' — название модели</small>
* <small>'''modeltype''' — тип модели</small>
| colspan="2" style="width: 50%" |<small>Файл handler.py</small>
|-
!style="color:green;width: 15%" |'''<small>POST/model/import/{servicetype}/{model}</small>'''
! colspan="3" style="width: 85%" |Импортирует модель в черновик (modeltype=future)
|-
|-
|<small>POST</small>
| colspan="2" style="width: 50%" |
<small>/restore/{servicetype}/{model}</small>
* <small>'''servicetype''' — тип сервиса</small>
|<small>Откат модели. Делает текущую рабочую модель черновиком (future), рабочие серверы после выполнения данного метода продолжают уже с возвращенной моделью. Схематично действия над modeltype в результате выполнения данного метода можно представить так:</small>
* <small>'''model''' — название модели</small>
* '''<small>current -> future</small>'''
* <small>'''zip-model''' — zip с файлами модели</small>
* '''<small>previous -> current</small>'''
| colspan="2" style="width: 50%" |<small>{</small>
* '''<small>null -> previous</small>'''
 
|
<small>"error":0,</small>
*<small>'''servicetype''' - тип сервиса</small>
* <small>'''model''' - название модели</small>
|<small><code>{</code><code>"error":0,</code></small>


<code><small>"message":"success"</small></code>
<small>"message":"success"</small>


<code><small>}</small></code>
<small>}</small>  
| <small>-</small>
|-
!style="color:blue;width: 15%" |'''<small>GET/model/info/{servicetype}</small>'''
! colspan="3" style="width: 85%" |Получение информации о всех моделях указанного сервиса. <small>Аналогичен методу GET /info/{servicetype}/{model}, но выводит информацию обо всех моделях.</small>
|-
|-
|<small>DELETE</small>
| colspan="2" style="width: 50%" |
<small>/delete/{servicetype}/{model}</small>
* <small>'''servicetype''' тип сервиса</small>
|<small>Полностью удаляет модель из системы и со всех управляемых серверов.</small>
| colspan="2" style="width: 50%" |<small>{   "model1": {</small>
<small>Доступно для следующих сервисов: smc, see, spr.</small>
|
* <small>'''servicetype''' - тип сервиса</small>
* <small>'''model''' - название модели</small>
|<code><small>{</small></code>
<code><small>"error":0,</small></code>


<code><small>"message":"success"</small></code>
<small>    "previous": null,</small>


<code><small>}</small></code>
<small>    "current": null,</small>
| <small>-</small>
 
<small>    "future": {</small>
 
<small>      "status": "empty",</small>
 
<small>      ...</small>
 
<small>    }    },   ...  }</small>  
|-
!style="color:blue;width: 15%" |'''<small>GET/model/info/{servicetype}/{model}</small>'''
! colspan="3" style="width: 85%" |Получение информации о каждом типе (modeltype) указанной модели. <small>Итоговый массив содержит переменные типа modeltype, в каждой из который содержится информация о модели.</small>
|-
|-
|<small>GET</small>
| colspan="2" style="width: 50%" |
<small>/errors/{servicetype}/{model}/{modeltype}</small>
* <small>'''servicetype''' тип сервиса</small>
|<small>Запрос на получение списка ошибок модели после тестирования. Если тестирования не было, то содержит ошибки проверки на обучающем корпусе. Доступен для сервисов see и smc</small>
* <small>'''model''' название модели</small>
|
| colspan="2" style="width: 50%" |<small>{    "previous": null,</small>
*<small>'''servicetype''' - тип сервиса</small>
 
* <small>'''model''' - название модели</small>
<small>  "current":  {</small>
* <small>'''modeltype''' - тип модели</small>
 
|<small><code>[</code> <code>[true, predicted, phrase],</code></small>
<small>    "status": "trained",</small>
<small><code>...</code>
 
<code>]</code></small>
<small>    ... },</small>
|<small>содержит список вложенных списков. В каждом три значения: правильное значение, предсказанное моделью значение и начальные данные (фраза)</small>
 
<small>  "future": {</small>
 
<small>    "status": "trained",</small>
 
<small>    ...  }  }</small>  
|-
|-
|<small>GET</small>
!style="color:green;width: 15%" |'''<small>POST/model/install/{servicetype}/{model}</small>'''
<small>/export/{servicetype}/{model}/{modeltype}</small>
! colspan="3" style="width: 85%" |Установка импортированной или обученной модели на рабочих серверах.
|<small>метод экспортирует модель,  модель скачивается в виде zip-архива</small>
<small>Доступно для следующих сервисов: '''smc''', '''see''', '''spr'''.</small>
|
*<small>'''servicetype''' - тип сервиса</small>
* <small>'''model''' - название модели</small>
* <small>'''modeltype''' - тип модели</small>
|<small>файл model.zip, где model - название модели</small>
| <small>-</small>
|-
|-
|<small>POST</small>
| colspan="2" style="width: 50%" |
<small>/import/{servicetype}/{model}</small>
* <small>'''servicetype''' тип сервиса</small>
|<small>Импортирует модель в черновик (modeltype=future)</small>
* <small>'''model''' название модели</small>
|
| colspan="2" style="width: 50%" |<small>{</small>
*<small>'''servicetype''' - тип сервиса</small>
* <small>'''model''' - название модели</small>
* <small>'''zip-model''' - zip с файлами модели</small>
|<code><small>{</small></code>
<code><small>"error":0,</small></code>


<code><small>"message":"success"</small></code>
<small>"error":0,</small>


<code><small>}</small></code>
<small>"message":"success"</small>
| <small>-</small>
 
<small>}</small>  
|-
!style="color:blue;width: 15%" |'''<small>GET/model/log/{servicetype}/{model}/{modeltype}</small>'''
! colspan="3" style="width: 85%" |Выводит лог обучения и тестирования модели. <small>Доступно для следующих сервисов: '''smc''', '''see'''.</small>
|-
|-
|<small>GET</small>
| colspan="2" style="width: 50%" |
<small>/info/{servicetype}/{model}</small>
* <small>'''servicetype''' тип сервиса</small>
|<small>Получение информации о каждом типе (modeltype) указанной модели.</small>
* <small>'''model''' название модели</small>
|
* <small>'''modeltype''' — тип модели</small>
*<small>'''servicetype''' - тип сервиса</small>
| colspan="2" style="width: 50%" |<small>[</small>
* <small>'''model''' - название модели</small>
|<code><small>{</small></code>
<code><small>  "previous": null,</small></code>


<code><small>  "current":  {</small></code>
<small>  "training",</small>


<code><small>    "status": "trained",</small></code>
<small>  "preparing data",</small>


<code><small>    ...</small></code>
<small>  "tokenizing",</small>


<code><small>  },</small></code>
<small>  ...</small>


<code><small>  "future": {</small></code>
<small>]</small>  
|-
!style="color:green;width: 15%" |'''<small>POST/model/restore/{servicetype}/{model}</small>'''
! colspan="3" style="width: 85%" |Откат модели. <small>Делает текущую рабочую модель черновиком (future), рабочие серверы после выполнения данного метода продолжают уже с возвращенной моделью. Схематично действия над modeltype в результате выполнения данного метода можно представить так:</small>
* '''<small>current -> future</small>'''
* '''<small>previous -> current</small>'''
* '''<small>null -> previous</small>'''
|-
| colspan="2" style="width: 50%" |
* <small>'''servicetype''' — тип сервиса</small>
* <small>'''model''' — название модели</small>
| colspan="2" style="width: 50%" |{"error":0,


<code><small>    "status": "trained",</small></code>
"message":"success"


<code><small>    ...</small></code>
}
|}


<code><small>  }</small></code>


<code><small>}</small></code>
===== '''/corpus: работа с данными для обучения моделей''' =====
|<small>Итоговый массив содержит переменные типа modeltype, в каждой из который содержится информация о модели, более подробно о которой можно прочитать в руководствах пользователя [[SMC. Руководство пользователя|smc]] и [[SEE. Руководство пользователя|see]].</small>
Методы данного класса предназначены только для сервисов smc и see
 
{| class="wikitable" style="width: 110%"
|+
!style="color: blue;width: 15%" |'''GET/corpus/automark/list'''
! colspan="3" style="width: 85%" |Перечень заданий автоматической маркировки корпусов.  
|-
|-
|<small>GET</small>
| colspan="2" style="width: 50%" |<small>Нет входных параметров</small>
<small>/info/{servicetype}</small>
| colspan="2" style="width: 50%" |<small>{  "error": 0,</small>
|<small>Получение информации о всех моделях указанного сервиса. Аналогичен методу GET /info/{servicetype}/{model}, но выводит информацию обо всех моделях.</small>
|
*<small>'''servicetype''' - тип сервиса</small>
|<code><small>{</small></code>
<code><small>  "model1": {</small></code>


<code><small>    "previous": null,</small></code>
<small>  "message": "success",</small>


<code><small>    "current": null,</small></code>
<small>  "tasks": [ {</small>


<code><small>    "future": {</small></code>
<small>      "id": "29d9da98-d6c1-4dc1-bbc9-111309816002",</small>


<code><small>      "status": "empty",</small></code>
<small>      "taskname": "test_doc",</small>


<code><small>      ...</small></code>
<small>      "status": "finished"    },</small>


<code><small>    }</small></code>
<small>    {  "id": "1a5e9bdc-9f98-49d2-84de-1a9bde8fc37c",</small>


<code><small>  },</small></code>
<small>      "taskname": "sssss",</small>


<code><small>  ...</small></code>
<small>      "status": "finished"    }  ] }</small>
|-
!style="color: blue;width: 15%" |'''GET/corpus/automark/result/{id}'''
! colspan="3" style="width: 85%" |Результат выполнения задания на автомаркировку корпуса. <small>Если задание завершено в ответе придет маркированый корпус и время старта и финиша задания</small>
|-
| colspan="2" style="width: 50%" |
* <small>'''id''' — идентификатор задания</small>
| colspan="2" style="width: 50%" |<small>{</small>
  <small>"error": 0,</small>
 
  <small>"message": "success",</small>
 
  <small>"started": "2024-10-09 18:05:51",</small>
 
  <small>"finished": "2024-10-09 18:05:51",</small>
 
  <small>"corpus": [[ [], [ ["тэг"],"фраза 1"]],</small>


<code><small>}</small></code>
    <small>[ [], [["тэг"],"фраза 2"]] ]</small>
| <small>-</small>
<small>}</small>
|-
!style="color: blue;width: 15%" |'''GET/corpus/automark/start'''
! colspan="3" style="width: 85%" |Начать автоматическую разметку корпуса.
|-
|-
|<small>GET</small>
| colspan="2" style="width: 50%" |
<small>/log/{servicetype}/{model}/{modeltype}</small>
* <small>'''taskname''' — произвольное имя задания</small>
|<small>Выводит лог обучения и тестирования модели. Доступно для следующих сервисов: smc, see.</small>
 
|
* <small>'''corpus''' — json строка с размечаемым корпусом[[ [класс1,... классН], текст ],</small>
*<small>'''servicetype''' - тип сервиса</small>
 
* <small>'''model''' - название модели</small>
<small>[ [класс1,... классН], текст ]]</small>
* <small>'''modeltype''' - тип модели</small>
|<code><small>[</small></code>
<code><small>  "training",</small></code>


<code><small>  "preparing data",</small></code>
* <small>'''marks''' — json строка с набором меток [    [ метка, [синоним, синоним2 ... синоним Н], порог ],</small>
 
<small>[ метка, [синоним, синоним2 ... синоним Н], порог ]]</small>
 
* <small>'''appendMarks''' — "yes" - дополнить разметку, "no" -заменить разметку</small>
| colspan="2" style="width: 50%" |<small>{</small>
 
<small>  "error": 0,</small>


<code><small>  "tokenizing",</small></code>
<small>  "message": "success",</small>


<code><small>  ...</small></code>
<small>  "id": "уникальный id задания"</small>


<code><small>]</small></code>
<small>}</small>
| <small>-</small>
|-
|-
|<small>GET</small>
!style="color: blue;width: 15%" |'''GET/corpus/automark/status/{id}'''
<small>/handler/{servicetype}/{model}</small>
! colspan="3" style="width: 85%" |<small>Получить статус задания на автоматическую разметку корпуса.</small>  
|<small>Получение файла-постобработчика из модели типа future.</small>
|
*<small>'''servicetype''' - тип сервиса</small>
* <small>'''model''' - название модели</small>
|<small>Файл handler.py</small>
|<small>более подробно об обработчике см. руководства пользователя [[SMC. Руководство пользователя|smc]] и [[SEE. Руководство пользователя|see]].</small>
|-
|-
|<small>POST</small>
| colspan="2" style="width: 50%" |
<small>/handler/{servicetype}/{model}</small>
* <small>'''id''' — уникальный id задания</small>
|<small>Отправка файла-постобработчика в указанную модель типа future. Становится активным сразу после успешной отправки.</small>
| colspan="2" style="width: 50%" |<small>{</small>
|
*<small>'''servicetype''' - тип сервиса</small>
* <small>'''model''' - название модели</small>
* <small>'''handler''' - файл, содержащий программный код python постобработчика</small>
|<small><code>{</code><code>"error":0,</code></small>


<code><small>"message":"success"</small></code>
<small>  "error": "",</small>


<code><small>}</small></code>
<small>  "status": "finished",</small>
|<small>более подробно об обработчике см. руководства пользователя [[SMC. Руководство пользователя|smc]] и [[SEE. Руководство пользователя|see]].</small>
 
|-
<small>  "started": "2024-10-09 13:49:46",</small>
|<small>DELETE</small>
<small>/handler/{servicetype}/{model}</small>
|<small>Удаление постобработчика из модели типа future.</small>
|
*<small>'''servicetype''' - тип сервиса</small>
* <small>'''model''' - название модели</small>
|<small><code>{</code><code>"error":0,</code></small>


<code><small>"message":"success"</small></code>
<small>  "finished": "2024-10-09 13:49:46",</small>


<code><small>}</small></code>
<small>  "progress": 0</small>
|<small>более подробно об обработчике см. руководства пользователя [[SMC. Руководство пользователя|smc]] и [[SEE. Руководство пользователя|see]].</small>
|}


<small>}</small>
|-
!style="color: blue;width: 15%" |'''GET/corpus/automark/stop/{id}'''
! colspan="3" style="width: 85%" |Прервать задание на автоматическую разметку корпуса.
|-
| colspan="2" style="width: 50%" |
* <small>'''id''' — идентификатор задания</small>
| colspan="2" style="width: 50%" |<small>{  "error": 0,</small>


===== '''/corpus: работа с данными для обучения моделей''' =====
<small>  "message": "success"}</small>
Методы данного класса предназначены только для сервисов smc и see
|-
{| class="wikitable mw-collapsible"
!style="color: green;width: 15%" |'''POST/corpus/copy/{servicetype}'''
!Метод
! colspan="3" style="width: 85%" |Копирование корпуса данных
!Описание
!Входные параметры
!Ответ
!Пояснения
|-
|-
|<small>GET</small>
| colspan="2" style="width: 50%" |
<small>/list/{servicetype}</small>
* <small>'''servicetype''' — тип сервиса</small>
|<small>Возвращает список всех корпусов данных для указанного типа сервиса</small>
* <small>'''srcname''' — текущее имя</small>
|
* <small>'''dstname''' — новое имя</small>
* <small>'''servicetype''' - тип сервиса</small>
| colspan="2" style="width: 50%" |<small>{</small>
|<code><small>[</small></code>
<code><small> "корпус1",</small></code>


<code><small> "корпус2",</small></code>
<small>  "error": 0,</small>


<code><small>  ...</small></code>
<small>  "message": "success"</small>


<code><small>]</small></code>
<small>}</small>  
|<small>Список с названиями всех имеющихся корпусов</small>
|-
!style="color: red;width: 15%" |'''DELETE/corpus/delete/{servicetype}'''
! colspan="3" style="width: 85%" |Удаляет корпус с данными
|-
|-
|<small>GET</small><small>/get/{servicetype}</small>
| colspan="2" style="width: 50%" |
|<small>Возвращает JSON с данными корпуса</small>
* <small>'''servicetype''' тип сервиса</small>
|
* <small>'''name''' название корпуса</small>
* <small>'''servicetype''' - тип сервиса</small>
| colspan="2" style="width: 50%" |<small>{  "error": 0,</small>
* <small>'''name''' - название корпуса</small>
|<code><small>[</small></code>
<code><small>  [</small></code>


<code><small>  "generalPayments",</small></code>
<small>  "message": "success"}</small>
|-
!style="color: blue;width: 15%" |'''GET/corpus/export/{servicetype}'''
! colspan="3" style="width: 85%" |Возвращает текстовый файл с корпусом, <small>содержащий строки вида КЛАСС<TAB>ФРАЗА</small>
|-
| colspan="2" style="width: 50%" |
* <small>'''servicetype''' — тип сервиса</small>
* <small>'''name''' — название корпуса</small>
| colspan="2" style="width: 50%" |<small>Файл name.txt</small>
|-
!style="color: blue;width: 15%" |'''GET/corpus/get/{servicetype}'''
! colspan="3" style="width: 85%" |Возвращает JSON с данными корпуса
|-
| colspan="2" style="width: 50%" |
* <small>'''servicetype''' — тип сервиса</small>
* <small>'''name''' — название корпуса</small>
| colspan="2" style="width: 50%" |<code><small>[</small></code>
<code><small>  [ "тэг",</small></code>


<code><small>    "соцвыплата"</small></code>
<code><small>    "фраза"</small></code>


<code><small>  ],</small></code>
<code><small>  ],</small></code>
Строка 683: Строка 814:


<code><small>]</small></code>
<code><small>]</small></code>
|<small>Список вложенных списков со значениями "Класс" и "Фраза"</small>
|-
|-
|<small>GET</small><small>/export/{servicetype}</small>
!style="color: green;width: 15%" |'''POST/corpus/import/{servicetype}'''
|<small>Возвращает текстовый файл с данными, содержащий строки вида КЛАСС<TAB>ФРАЗА</small>
! colspan="3" style="width: 85%" |Метод для импорта корпуса данных. <small>Возможен как из текстового файла со строками вида КЛАСС<TAB>ФРАЗА (доступно для smc и see), так и из логов работы системы (только для smc). Если на вход поступил файл csv, происходит импорт из файла, в противном случае — из логов.</small>
|
* <small>'''servicetype''' - тип сервиса</small>
* <small>'''name''' - название корпуса</small>
|<small>Файл name.txt</small>
|<small>-</small>
|-
|-
|<small>DELETE</small><small>/delete/{servicetype}</small>
| colspan="2" style="width: 50%" |
|<small>Удаляет корпус с данными</small>
* <small>'''servicetype''' — тип сервиса</small>
|
* <small>'''name''' — название корпуса</small>
* <small>'''servicetype''' - тип сервиса</small>
* <small>'''csv''' — файл данных</small>
* <small>'''name''' - название корпуса</small>
* <small>'''startDate''' — дата начала выборки, YYYY-MM-DD</small>
|<code><small>{</small></code>
* <small>'''stopDate''' — дата окончания выборки, YYYY-MM-DD</small>
<code><small>  "error": 0,</small></code>
* <small>'''model''' — имя модели, из логов которой будет произведен импорт</small>
* <small>'''limit''' — числовое ограничение строк импорта</small>
| colspan="2" style="width: 50%" |<small>{</small>


<code><small>  "message": "success"</small></code>
<small>  "error": 0,</small>


<code><small>}</small></code>
<small>  "message": "success"</small>
|<small>-</small>
 
<small>}</small>  
|-
!style="color: blue;width: 15%" |'''GET/corpus/list/{servicetype}'''
! colspan="3" style="width: 85%" |Возвращает список всех корпусов данных для указанного типа сервиса
|-
|-
|<small>POST</small><small>/put/{servicetype}</small>
| colspan="2" style="width: 50%" |
|<small>Перезаписывает корпус отправленным массивом данных</small>
* <small>'''servicetype''' тип сервиса</small>
|
| colspan="2" style="width: 50%" |<small>[ "корпус1",</small>
* <small>'''servicetype''' - тип сервиса</small>
* <small>'''name''' - название корпуса</small>
* <small>'''json''' - строка формата json с данными. Аналогична выводу метода GET /get/{servicetype}</small>
|<code><small>{</small></code>
<code><small>  "error": 0,</small></code>


<code><small>  "message": "success"</small></code>
<small>"корпус2",</small>


<code><small>}</small></code>
<small>  ...]</small>  
|<small>-</small>
|-
!style="color: green;width: 15%" |'''POST/corpus/put/{servicetype}'''
! colspan="3" style="width: 85%" |Перезаписывает корпус отправленным массивом данных
|-
|-
|<small>POST</small><small>/rename/{servicetype}</small>
| colspan="2" style="width: 50%" |
|<small>Переименование корпуса</small>
* <small>'''servicetype''' тип сервиса</small>
|
* <small>'''name''' — название корпуса</small>
* <small>'''servicetype''' - тип сервиса</small>
* <small>'''json''' — строка формата json с данными. Аналогична выводу метода GET /get/{servicetype}</small>
* <small>'''srcname''' - текущее имя</small>
| colspan="2" style="width: 50%" |<small>{</small>
* <small>'''dstname''' - новое имя</small>
 
|<code><small>{</small></code>
<small>  "error": 0,</small>
<code><small>  "error": 0,</small></code>


<code><small>  "message": "success"</small></code>
<small>  "message": "success"</small>


<code><small>}</small></code>
<small>}</small>  
|<small>-</small>
|-
!style="color: green;width: 15%" |'''POST/corpus/rename/{servicetype}'''
! colspan="3" style="width: 85%" |<small>Переименование корпуса</small>
|-
|-
|<small>POST</small><small>/copy/{servicetype}</small>
| colspan="2" style="width: 50%" |
| <small>метод api для копирования корпуса данных</small>
* <small>'''servicetype''' тип сервиса</small>
|
* <small>'''srcname''' текущее имя</small>
* <small>'''servicetype''' - тип сервиса</small>
* <small>'''dstname''' новое имя</small>
* <small>'''srcname''' - текущее имя</small>
| colspan="2" style="width: 50%" |<small>{</small>
* <small>'''dstname''' - новое имя</small>
|<code><small>{</small></code>
<code><small>  "error": 0,</small></code>


<code><small>  "message": "success"</small></code>
<small>  "error": 0,</small>


<code><small>}</small></code>
<small>  "message": "success"</small>
|<small>-</small>
 
|-
<small>}</small>  
|<small>POST</small><small>/import/{servicetype}</small>
|}
| <small>Метод для импорта корпуса данных. Возможен как из текстового файла со строками вида КЛАСС<TAB>ФРАЗА (доступно для smc и see), так и из логов работы системы (только для smc). Если на вход поступил файл '''csv''', происходит импорт из файла, в противном случае из логов.</small>
|
* <small>'''servicetype''' - тип сервиса</small>
* <small>'''name''' - название корпуса</small>
* <small>'''csv''' - файл данных</small>
* <small>'''startDate''' - дата начала выборки, YYYY-MM-DD</small>
* <small>'''stopDate''' - дата окончания выборки, YYYY-MM-DD</small>
* <small>'''model''' - имя модели, из логов которой будет произведен импорт</small>
* <small>'''limit''' - числовое ограничение строк импорта</small>
|<code><small>{</small></code>
<code><small>  "error": 0,</small></code>


<code><small>  "message": "success"</small></code>


<code><small>}</small></code>
|<small>-</small>
|}


===== '''/marks: работа с наборами меток в smc''' =====


===== '''/spr: работа с сервисом SPR''' =====
{| class="wikitable"  style="width: 110%"
{| class="wikitable mw-collapsible"
|+
!Метод
!style="color:green;width: 15%" |'''POST/marks/add'''
!Описание
! colspan="3" style="width: 85%" |Добавление набора менток
!Входные параметры
!Ответ
!Пояснения
|-
|-
|<small>GET</small><small>/spr/audio/{taskID}</small>
| colspan="2" style="width: 50%" |
|<small>Метод для получения аудиофайла отложенного задания</small>
* <small>'''json''' —список меток в формате: [ [  "метка1",</small>
|<small>'''taskID''' - идентификатор задания в очереди</small>
 
|<small>'''Wav''' файл</small>
<small>      ["синоним1", "синоним2", "синоним3", "синонимN" ], 0.9 # достоверность для метки (0 - 1)</small>
|
|-
|<small>GET</small><small>/spr/queue</small>
|<small>Метод для получения очереди отложенных заданий</small>
|
|<small>{</small>
<small>  "id задания": {</small>


<small>   "created": "ХХХХ-ХХ-ХХ ХХ:ХХ:ХХ",</small>
<small>    ],  [ "меткаN",</small>


<small>   "status": "waiting",</small>
<small>      ["синоним11", "синоним21","синоним31", "синонимN1"], 0.9 # достоверность для метки (0 - 1)</small>


<small>   "filename": "wav"</small>
<small>    ] ]</small>


<small>}</small>
* <small>'''name''' — имя создаваемого набора</small>
| colspan="2" style="width: 50%" |<small>{</small>


<small>Статусы</small>
<small>  "error": 0,</small>


<small>'''ready''' - готово</small>
<small>  "message": "success",</small>


<small>'''waiting''' - ожидание</small>
<small>  "id": "132310fa-98c7-4b12-896f-ff113827d077"</small>


<small>'''failed''' - сбой</small>
<small>}</small>
|
|-
!style="color:red;width: 15%" |'''DELETE/marks/delete/{id}'''
! colspan="3" style="width: 85%" |Удаление набора меток
|-
|-
|<small>DELETE</small><small>/spr/queue/{taskID}</small>
| colspan="2" style="width: 50%" |
|<small>Метод для удаления задания из очереди</small>
* <small>'''id''' идентификатор набора меток</small>
|<small>'''taskID''' - идентификатор задания в очереди</small>
| colspan="2" style="width: 50%" |<small>{</small><small>  "error": 0,</small>
|<small>{</small>
"error": 0,


"message": "success"
<small>  "message": "success"</small> <small>}</small>


<small>}</small>
|
|-
|-
|<small>GET</small><small>/spr/result/{taskID}</small>
!style="color:blue;width: 15%" |'''GET/marks/export/{id}'''
|<small>Метод для получения результатов распознавания отложенного задания</small>
! colspan="3" style="width: 85%" |Получение набора меток в виде строк
|<small>'''taskID''' - идентификатор задания в очереди</small>
|<small>Вывод аналогичен выводу метода stt + добавлено поле status, которое содержит информацию о статусе отложенной задачи:</small>
<small>'''ready''' - готово '''waiting''' - ожидание '''not found''' - не найдена '''failed''' - сбой</small>
|
|-
|-
|<small>POST</small>
| colspan="2" style="width: 50%" |
<small>/stt/{model}</small>
* <small>'''id''' идентификатор набора меток</small>
| <small>Метод для отправки файла на распознавание речи. Моно-файлы до 30 секунд распознаются без разбивки на фрагменты. Многоканальные файлы и файлы длиннее 30 секунд предварительно разбиваются на фрагменты по отсутствию речи. Настройка данных параметров описана в [[SPR. Руководство администратора.|руководстве администратора]] SPR. В случае отправки переменной speakers=1, дополнительно производится поиск говорящих и получение метаданных по каждому говорящему.</small>
| colspan="2" style="width: 50%" |<small>Пример:</small>
|
*<small>'''model''' - идентификатор модели</small>
*<small>'''wav''' - файл для распознавания</small>
*<small>'''speakers''' - опция разделения по говорящим</small>
|<small><code>{</code></small>
<small><code>"model":"name",</code></small>  


<small><code>"text":"текст без разбивки",</code></small>  
<small>метка1    синоним1,синоним2,синоним3,синонимN    0.9</small>


<small><code>"speakers":[</code></small>
<small>меткаN    синоним11,синоним21,синоним31,синонимN1    0.9</small>
|-
!style="color:blue;width: 15%" |'''GET/marks/get/{id}'''
! colspan="3" style="width: 85%" |Получение набора меток в виде json
|-
| colspan="2" style="width: 50%" |
* <small>'''id''' — идентификатор набора меток</small>
| colspan="2" style="width: 50%" |<small>Пример:</small>


<small><code>{</code></small>  
<small>{  "error": 0,</small>


<small><code>  "gender":"MALE",</code></small>
<small>  "message": "success",</small>


<small><code>  "age":"20-29",</code></small>
<small>  "data": [</small>


<small><code>  "emotion":"BORE",</code></small>  
<small>    ["метка1", [ "синоним1", "синоним2", "синоним3", "синонимN"  ],</small>


<small><code"id":"Ivan"</code></small>
<small>      0.9</small>


<small><code>}, ...</code></small>
<small>    ],</small>


<small><code>]</code></small>
<small>    ["меткаN", ["синоним11","синоним21", "синоним31","синонимN1"],</small>


<small><code>"splitted":[</code></small>
<small>      0.9</small>


<small><code>{</code></small>  
<small>    ]  ] }</small>
|-
!style="color:green;width: 15%" |'''POST/marks/import/{id}'''
! colspan="3" style="width: 85%" |Импорт в существующий набор меток из файла. <small>Набор будет переписан из файла</small>
|-
| colspan="2" style="width: 50%" |
* <small>'''csv''' — файл "метка"ТАБ"синонимы через запятую"ТАБ"достоверность(число от 0 до 1)"</small>


<small><code>  "start":"00:00:02",</code></small>  
* <small>'''id''' — идентификатор набора</small>
| colspan="2" style="width: 50%" |<small>{</small><small>  "error": 0,</small>


<small><code>  "stop":"00:00:10",</code></small>  
<small>  "message": "success"</small> <small>}</small>
|-
!style="color:blue;width: 15%" |'''GET/marks/list'''
! colspan="3" style="width: 85%" |Получение списка наборов меток
|-
| colspan="2" style="width: 50%" |<small>Нет входных параметров</small>
| colspan="2" style="width: 50%" |<small>Пример:</small>


<small><code>  "channel":0,</code></small>  
<small>{  "error": 0,</small>


<small><code>  "duration":"00:00:08",</code></small>  
<small>  "message": "success",</small>


<small><code>  "start_ms":2255,</code></small>  
<small>  "result": [    { "id": "416fbe08-19e9-453c-b140-37008a08a76c","name": "test" },</small>


<small><code>  "stop_ms":10995,</code></small>  
<small>    {"id": "16e77fa2-7c4d-47f9-8644-6385876525d6","name": "Рыжик" },</small>


<small><code>  "duration_ms":8740,</code></small>  
<small>    {"id": "132310fa-98c7-4b12-896f-ff113827d077", "name": "test" }</small>


<small><code>  "speaker":0,</code></small>  
<small>  ]}</small>
|-
!style="color:green;width: 15%" |'''POST/marks/put/{id}'''
! colspan="3" style="width: 85%" |Импорт в существующий набор меток из json строки. <small>Набор будет переписан</small>
|-
| colspan="2" style="width: 50%" |
* <small>'''json''' — список меток в формате: [ [  "метка1",</small>


<small><code>  "confidence":0.95,</code></small>  
<small>      ["синоним1", "синоним2", "синоним3", "синонимN" ], 0.9 # достоверность для метки (0 - 1)</small>


<small><code>  "text":"текст"</code></small>
<small>    ],  [ "меткаN",</small>


<small><code>}, ...</code></small>  
<small>      ["синоним11", "синоним21","синоним31", "синонимN1"], 0.9 # достоверность для метки (0 - 1)</small>


<small><code>]</code></small>  
<small>    ] ]</small>


<small><code>}</code></small>
* <small>'''id''' — идентификатор заменяемого набора меток</small>
|<small>Более подробное описание доступно в  [[SPR. Руководство пользователя|пользователя SPR]].</small>
| colspan="2" style="width: 50%" |<small>{</small><small>  "error": 0,</small>
 
<small>  "message": "success"</small> <small>}</small>
|-
!style="color:green;width: 15%" |'''POST/marks/rename/{id}'''
! colspan="3" style="width: 85%" |Присваивает новое наименование существующему набору меток
|-
|-
|<small>GET</small><small>/spr/waveform/{taskID}</small>
| colspan="2" style="width: 50%" |
|<small>Служебный метод для отображения аудио в графическом виде, содержит пики сигнала</small>
* <small>'''id''' — идентификатор набора меток</small>
|<small>'''taskID''' - идентификатор задания</small>
* <small>'''name''' — новое имя набора</small>
|<small>{</small>
| colspan="2" style="width: 50%" |<small>{</small><small>  "error": 0,</small>
  <"error": 0,
 
  "waveform": [
<small>  "message": "success"</small> <small>}</small>
    0.016,
  ..........
  ..........
    0.015,
    0.01
  ]
<small>}</small>
|
|}
|}


===== '''/spr: работа с сервисом SPR''' =====
{| class="wikitable"  style="width: 110%"
|+
!style="color:blue;width: 15%" |'''GET/spr/audio/{taskID}'''
! colspan="3" style="width: 85%" |Получение аудиофайла отложенного задания
|-
| colspan="2" style="width: 50%" |
* <small>'''taskID''' — идентификатор задания в очереди/small>
| colspan="2" style="width: 50%" |<small>Wav файл</small>
|-
!style="color:blue;width: 15%" |'''GET/spr/queue'''
! colspan="3" style="width: 85%" |Получение очереди отложенных заданий. <small>Выводит очередь со статусами выполнения заданий. Статусы: '''ready''' — готово,  '''waiting''' — ожидание, '''failed''' — сбой</small>
|-
| colspan="2" style="width: 50%" |<small>Нет входных параметров</small>
| colspan="2" style="width: 50%" | <small>{  "id задания": {</small>
<small>   "created": "ХХХХ-ХХ-ХХ ХХ:ХХ:ХХ",</small>
<small>   "status": "waiting",</small>


===== '''/smc: работа с сервисом SMC''' =====
<small>   "filename": "wav"}</small>
{| class="wikitable mw-collapsible"
|-
!Метод
!style="color:red;width: 15%" |'''DELETE/spr/queue/{taskID}'''
!Описание
! colspan="3" style="width: 85%" |Удаление задания из очереди
!Входные параметры
|-
!Ответ
| colspan="2" style="width: 50%" |
!Пояснения
* <small>'''taskID''' — идентификатор задания в очереди/small>
| colspan="2" style="width: 50%" |<small>{"error": 0,</small>
 
<small>"message": "success"}</small>
|-
!style="color:blue;width: 15%" |'''GET/spr/result/{taskID}'''
! colspan="3" style="width: 85%" |получениеПезультатов распознавания отложенного задания. <small>Статусы: '''ready''' — готово,  '''waiting''' — ожидание, '''failed''' — сбой, '''not found''' — не найдена</small>
|-
| colspan="2" style="width: 50%" |
* <small>'''taskID''' — идентификатор задания в очереди/small>
| colspan="2" style="width: 50%" |<small>Вывод аналогичен выводу метода stt + добавлено поле status, которое содержит информацию о статусе отложенной задачи</small>
|-
!style="color:green;width: 15%" |'''POST/spr/stt/{model}'''
! colspan="3" style="width: 85%" |Отправка файла на распознавание речи. <small>Моно-файлы до 30 секунд распознаются без разбивки на фрагменты. Многоканальные файлы и файлы длиннее 30 секунд предварительно разбиваются на фрагменты по отсутствию речи. Настройка данных параметров описана в [[SPR. Руководство администратора.|руководстве администратора]] spr.</small>
|-
|-
|<small>GET</small>
| colspan="2" style="width: 50%" |
<small>/smc/classify/{model}</small>
* <small>'''model''' — идентификатор модели</small>
|<small>метод для классификации текстовой фразы</small>
* <small>'''wav''' — файл для распознавания</small>
|
* <small>'''speakers''' — опция поиска говорящих по базе SBS. Если 1, то дополнительно производится поиск говорящих и получение метаданных по каждому говорящему (используется сервис SBS с предварительно обученными слепками метаданных говорящих)</small>
* '''id''' - идентификатор модели
* <small>'''punctuation''' — опция для расстановки знаков препинания. Если 1, то дополнительно вызывает метод punctuate в SMC и расставляет знаки препинания в распознанном тексте, значение по умолчанию берётся из файла конфигурации (для модели big пунктуация выполняется в любом случае).</small>
* <small>'''normalization''' — опция обратной нормализации текста, если 1, то выполняется обратная нормализация текста текста (для модели big выполняется в любом случае).</small>
* <small>'''vad''' — используемый VAD, по умолчанию webrtc</small>
* <small>'''toxicity''' — анализировать распознанный текст на токсичность через smc (GET/smc/toxicity).Высказывание анализируется по 4 параметрам, по каждому выдается вероятность от 0 до 1:"оскорбление": 0.13,</small> <small>"непристойность": 0,</small> <small>"угроза": 0,</small> <small>"вежливость": 0.53</small>
* <small>'''emotion''' — выявить эмоции из распознанного текста через smc (GET/smc/emotion). Возможные ответы: negative, neutral, positive.</small>
* <small>'''voice_analyzer''' — анализировать аудиофрагменты каждого из говорящих на эмоции, возраст и пол, запрашивается в sbs метод POST/sbs/analyze.Аудио говорящего анализируется на возраст (child, adult, old).Эмоции (ANGER, BORE, DISAPPOINTMENT, DISGUST, EXCITEMENT, FEAR, NEUTRAL, PAIN, PLEASURE, SADNESS, SUPRISE).</small> <small>Пол (male, female).</small>
* <small>'''speaker_counter''' — количество докладчиков, по умолчанию 0, автоматическое определение количества. При отправке значения -1 разделение на докладчиков будет отключено.</small>
* <small>'''async''' — отложенный запуск распознавания</small>
* <small>'''classifiers'''<nowiki> - дополнительно проанализировать все распознанные фразы через модели smc и/или see. отправляется в виде {"smс":"название модели":{ параметры запроса }}. Подробнее о параметрах запроса см. в документации по сервисам </nowiki>[[SMC. Руководство пользователя|smc]] и [[SEE. Руководство пользователя|see]].</small>
| colspan="2" style="width: 50%" |<small>В случае '''async=1''' возвращается только '''taskID''', результат по taskID смотреть в методе /spr/result.</small>
<small>'''Для коротких файлов''':</small>
 
<small><code>{</code></small>
 
<small><code>  "model": "call",</code></small>
 
<small><code>  "text": "текст фрагмента",</code></small>
 
<code><small>"classifiers": тут ответы от моделей smc и see,</small></code>
 
<code><small>  "words": [</small></code>
 
<code><small>{ "word": "текст",</small></code>
 
<small><code>      "start": 520,</code></small>
 
<code><small>      "stop": 1240 },</small></code>
 
<code><small>    { "word": "фрагмента",</small></code>
 
<small><code>      "start": 1240,</code></small>
 
<code><small>      "stop": 1920  }</small></code>
 
<code><small>]</small></code>
 
<code><small>}</small></code>
 
<small>'''Для транскрибации больших файлов:'''</small>
 
<small><code>{</code></small>
 
<small><code>"speakers": [</code></small>
 
<small><code>    {</code></small>


* '''text''' - текст, подлежащий классификации
<small><code>"id": null,</code></small>


* '''confidenceThreshold''', % - минимальный порог доверия.
<small><code>      "duration": 18980,</code></small>
|{


  "classes": [
<small><code>      "fragments": 3,</code></small>


    {
<small><code>      "age": "old", # только для voice_analyzer=1</code></small>


      "class": "название класса",
<small><code>      "gender": "female" # только для voice_analyzer=1</code></small>


      "confidence": 1
<small><code>}</code></small>


    },
<small><code>],</code></small>


    {
<small><code>"splitted": [</code></small>


      "class": "название класса 2",
<small><code>    {</code></small>


      "confidence": 1
<small><code>"start": "00:00:01.870",</code></small>


    }
<small><code>      "text": "текст.",</code></small>


  ],
<small><code>      "words": [</code></small>


  "groups": [
<small><code>      {</code></small>


    {
<small><code>"word": "текст.",</code></small>


      "group": "название группы 1",
<small><code>          "start": 1870,</code></small>


      "intersection": 2,
<small><code>          "stop": 2710,</code></small>


      "classes": [
<small><code>          "confidence": 0.95263671875</code></small>


        "название класса",
<small><code>}</code></small>


        "название класса 2"
<small><code>],</code></small>


      ]
<small><code>      "stop": "00:00:05.510",</code></small>


    }
<small><code>      "channel": 0,</code></small>


  ],
<small><code>      "duration": "00:00:03.640",</code></small>


  "nearest": [
<small><code>      "start_ms": 1870,</code></small>


    {
<small><code>      "stop_ms": 5510,</code></small>


      "group": "название группы 2",
<small><code>      "duration_ms": 3640,</code></small>


      "percent": 0.6666666666666666,
<small><code>      "speaker": 4,</code></small>


      "need": "название класса которого не хватило 1"
<small><code>      "speakerConfidence": 0.87,</code></small>


    },
<code><small>"classifiers": тут ответы от моделей smc и see,</small></code>


    {
<small><code>      "toxicity": { # только для toxicity=1</code></small>


      "group": ""название группы 3",
<small><code>        "insult": 0,</code></small>


      "percent": 0.6666666666666666,
<small><code>        "obscenity": 0,</code></small>


      "need": "название класса которого не хватило 2"
<small><code>        "threat": 0,</code></small>


    }
<small><code>        "politeness": 0.99</code></small>


  ]
<small><code>},</code></small>


}
<small><code>      "emotion": { "neutral": -0.3315 }, # только для emotion=1</code></small>
|
* '''classes''' - отображается название класса, к которому был отнесен текст, и вероятность его принадлежности к этому классу.


* '''groups''' - название группы и число совпавших классов. Если метки совпадают с несколькими группами, они отображаются в порядке убывания числа совпавших классов (т.е. чем полнее группа, тем выше ее позиция в списке).
<small><code>      "voice_analysis": { # только для voice_analyzer=1</code></small>


* '''nearest''' - отображаются группы, до которых не хватает всего одной метки, с указанием процента заполненности и сортировкой по убыванию этого процента.
<small><code>        "emotion": {</code></small>
|-
|<small>GET</small>


<small>/smc/compress</small>
<small><code>          "class": "NEUTRAL",</code></small>
|<small>Убирает из фразы слова не влияющие на ее смысл.</small>
|
* <small>'''text''' - текст для сжатия</small>


* <small>'''threshold''' - уровень компрессии от 1 до 100. Чем меньше число тем меньше слов будет в итоговой фразе</small>
<small><code>          "confidence": 0.7554781436920166  }</code></small>  
|{


  "text": "сжатый текст"
<small><code>}</code></small>


}
<small><code>}</code></small>
|
 
<small><code>]</code></small>
 
<small><code>}</code></small>
|-
|-
|<small>GET</small>
!style="color:blue;width: 15%" |'''GET/spr/waveform/{taskID}'''
 
! colspan="3" style="width: 85%" |Служебный метод для отображения аудио в графическом виде, содержит пики сигнала.
<small>/smc/correct</small>
|<small>Коррекция правописания. Изменяет неправильно написанные слова меняя их на наиболее близкие правильные (из знакомых модели).</small>
|'''text''' - текст для коррекции
|
|
|-
|-
|<small>GET</small>
| colspan="2" style="width: 50%" |
* <small>'''taskID''' — идентификатор задания</small>
| colspan="2" style="width: 50%" |<small>{"error": 0,</small>


<small>/smc/emotion</small>
<small>"waveform": [</small>
|<small>Анализ эмоций.</small>
|<small>'''text''' - фраза для анализа эмоций</small>
|<small>{ "emotion": "positive", "score": 0.9601 }</small>
|
|-
|<small>POST</small>


<small>/smc/groups/{model}</small>
<small>0.016,</small>
|<small>Добавляет к модели группы</small>
|
* <small>'''id''' - наименование модели</small>


* <small>'''csv-file''' - файл с группами</small>
<small>    0.015,</small>
|<small>{</small>


<small>  "error": 0,</small>
<small>    0.01 ] }</small>  
|}


<small>  "message": "string"</small>
===== '''/smc: работа с сервисом SMC''' =====
{{:SMC. Руководство пользователя}}


<small>}</small>
!style="color:blue;width: 15%" |'''GET/smc/compress'''
|
! colspan="3" style="width: 85%" |Убирает из фразы слова не влияющие на ее смысл.
|-
|-
|<small>GET</small>
| colspan="2" style="width: 50%" |
* <small>'''text''' <span data-darkreader-inline-color="" data-darkreader-inline-bgcolor="">—</span> текст для сжатия</small>


<small>/smc/groups/{model}</small>
* <small>'''threshold''' <span data-darkreader-inline-color="" data-darkreader-inline-bgcolor="">—</span> уровень компрессии от 1 до 100. Чем меньше число тем меньше слов будет в итоговой фразе</small>
|<small>Поиск групп по ранее полученным меткам.</small>  
| colspan="2" style="width: 50%" |<small>{  "text": "сжатый текст"}</small>
|
|-
* <small>'''classes''' - набор меток через запятую</small>
!style="color:blue;width: 15%" |'''GET/smc/correct'''
! colspan="3" style="width: 85%" |Коррекция правописания. <small>Изменяет неправильно написанные слова, меняя их на наиболее близкие правильные (из знакомых модели). Если модель коррекции не смогла предложить правильное написание текста, метод вернёт текст неизменным.</small>
|-
| colspan="2" style="width: 50%" |
*<small>'''text''' - текст для коррекции</small>
*<small>'''correction''' - уровень коррекции, от 1 до 3. По умолчанию 1.</small>
*<small>'''model''' - если указано, то при коррекции дополнительно используется словарь модели</small>
| colspan="2" style="width: 50%" |<small>{  "text": "корректный текст" }</small>  
|-
!style="color:blue;width: 15%" |'''GET/smc/emotion'''
! colspan="3" style="width: 85%" |Анализ эмоций. <small>На выходе один из вариантов: positive, negative, neutral.</small>
|-
| colspan="2" style="width: 50%" |<small>'''text''' <span data-darkreader-inline-color="" data-darkreader-inline-bgcolor="">—</span> фраза для анализа эмоций</small>
| colspan="2" style="width: 50%" |<small>{ "emotion": "positive", "score": 0.9601 }</small>
|-
! style="color:green;width: 15%" |'''POST/smc/groups/{model}'''
! colspan="3" style="width: 85%" |Добавляет к модели группы из корпуса. <small>Группы в модели будут перезаписаны</small>
|-
| colspan="2" style="width: 50%" |
* <small>'''id''' — наименование модели</small>


* <small>'''model''' - имя модели</small>
* <small>'''corpus''' — наименование корпуса- источника групп</small>
|<small>{</small>
| colspan="2" style="width: 50%" |<small>{  "error": 0,</small>


<small>"groups": [</small>
<small>  "message": "string"}</small>
|-
!style="color:blue;width: 15%" |'''GET/smc/groups/{model}'''
! colspan="3" style="width: 85%" |Поиск групп по ранее полученным меткам. <small>Ищет группы по набору меток. Результат — группы (если найдены) и ближайшие группы с указанием недостающих меток. Позволяет сохранять контекст в виде меток и дозапрашивать группы с учетом контекста.</small>
|-
| colspan="2" style="width: 50%" |
* <small>'''classes''' — набор меток через запятую</small>


<small>   {</small>
* <small>'''model''' — имя модели</small>
| colspan="2" style="width: 50%" |<small>{"groups": [</small>


<small>     "group": "Группа 1",</small>
<small>   {     "group": "Группа 1",</small>


<small>     "intersection": 3,</small>
<small>     "intersection": 3,</small>
Строка 1062: Строка 1263:
<small>       "метка2_о",</small>
<small>       "метка2_о",</small>


<small>       "метка3_о"</small>
<small>       "метка3_о"     ]   },</small>
 
<small>     ]</small>
 
<small>   },</small>
 
<small>   {</small>


<small>     "group": "Группа 2",</small>
<small>   {     "group": "Группа 2",</small>


<small>     "intersection": 2,</small>
<small>     "intersection": 2,</small>
Строка 1078: Строка 1273:
<small>       "метка1_о",</small>
<small>       "метка1_о",</small>


<small>       "метка5_о"</small>
<small>       "метка5_о"     ]   }],</small>


<small>     ]</small>
<small>"nearest": [</small>


<small>   }</small>
<small>   {     "group": "Группа до которой не хватило 1 метки",</small>


<small>],</small>
<small>     "percent": 0.75,</small>


<small>"nearest": [</small>
<small>     "need": "недостающая метка_о"   } ] }</small>
|-
!style="color:blue;width: 15%" |'''GET/smc/normalize'''
! colspan="3" style="width: 85%" |Обратная нормализация текста. <small>Пример: двадцать пятого апреля в пятом часу — 25 апреля в 5-м часу.</small>
|-
| colspan="2" style="width: 50%" |
* <small>'''text''' — текст для обработки.</small>
| colspan="2" style="width: 50%" |<small>{"text": "<строка после обратной нормализации>"}</small>
|-
!style="color:blue;width: 15%" |'''GET/smc/punctuate'''
! colspan="3" style="width: 85%" |Расстановка знаков препинания
|-
| colspan="2" style="width: 50%" |
* <small>'''text''' — текст для обработки.</small>
| colspan="2" style="width: 50%" |<small>{  "text": "string"  }</small>
|-
!style="color:green;width: 15%" |'''POST/smc/stop/{model}'''
! colspan="3" style="width: 85%" |Остановка обучения модели. <small>Удаляет тестовую версию модели с сервера обучения, тем самым прерывает обучение.</small>
|-
| colspan="2" style="width: 50%" |
* <small>'''model''' — идентификатор модели</small>
| colspan="2" style="width: 50%" |<small>{  "error": 0,</small>
 
<small>  "message": "string"}</small>
|-
!style="color:green;width: 15%" |'''POST/smc/test/{model}'''
! colspan="3" style="width: 85%" |Запуск тестирования модели smc. <small>Метод асинхронный, статус тестирования можно запросить методом GET/info/{servicetype}/{model}</small>
|-
| colspan="2" style="width: 50%" |
* <small>'''model''' — идентификатор модели</small>
* <small>'''corpus''' — название корпуса с тестовыми данными</small>
| colspan="2" style="width: 50%" |<small>{  "error": 0,</small>
 
<small>  "message": "success" }</small>
|-
!style="color:blue;width: 15%" |'''GET/smc/toxicity'''
! colspan="3" style="width: 85%" |Определение токсичности высказывания. <small>Высказывание анализируется по 4 параметрам, по каждому выдается вероятность от 0 до 1:</small>
|-
| colspan="2" style="width: 50%" |
* <small>'''text''' <span data-darkreader-inline-color="" data-darkreader-inline-bgcolor="">—</span> текстовая строка с высказыванием</small>
| colspan="2" style="width: 50%" |<small>{ "insult": 0.13, # оскорбление</small>


<small>   {</small>
<small>  "obscenity": 0, # брань</small>


<small>     "group": "Группа до которой не хватило 1 метки",</small>
<small>  "threat": 0, # угрозы</small>


<small>     "percent": 0.75,</small>
<small>  "politeness": 0.53 вежливость}</small>
|-
!style="color:green;width: 15%" |'''POST/smc/train/{model}'''
! colspan="3" style="width: 85%" |Добавление модели.
|-
| colspan="2" style="width: 50%" |
* <small>'''model''' — идентификатор модели</small>
* <small>'''corpus''' — имя текстового корпуса для обучения модели или имя набора меток</small>
* <small>'''isMarks''' — если «1», то вместо корпуса метод ожидает набор меток. Модель, созданная из меток, при этом не обучается, созданный файл модели используется для расчетов векторов «на лету» и выдачи результатов на основании сравнения векторов текста и синонимов из файла с метками.</small>
| colspan="2" style="width: 50%" |<small>{ error: INT, message: DESCRIPTION }</small>
|}
 
===== '''/see: работа с сервисом SEE''' =====
{| class="wikitable" style="width: 110%"
|+
!style="color:blue;width: 15%" |'''GET/see/entities/{model}'''
! colspan="3" style="width: 85%" |Поиск сущностей. <small>Вернется массив со всеми моделями, в которых были найдены сущности (модели для поиска указываются в поле id). Каждая переменная с названием модели будет содержать список всех найденных сущностей.</small>
|-
| colspan="2" style="width: 50%" |
* <small>model — идентификатор[ы] модели. Может быть указано несколько через запятую, тогда запрос будет обработан всеми указанными моделями.</small>
* <small>text — текст для анализа.</small>
* <small>similarity — порог похожести найденной сущности на эталонные, %. По умолчанию 70.</small>
| colspan="2" style="width: 50%" |<small>{ ID-модели: [</small>


<small>     "need": "недостающая метка_о"</small>
<small>{ '''position''': 0, # позиция слова начала фрагмента, определяющего сущность</small>


<small>   }</small>
<small>'''confidence''': 1, #вероятность правильного определения сущности</small>


<small>]</small>
<small>text: текст сущности,</small>


<small>}</small>
<small>'''calculated''': vaktsinatsiya # поле, содержащее значение сущности, использованный при обучении модели  }, {...}</small>
|<small>Ищет группы по набору меток. Результат - группы (если найдены) и ближайшие группы с указанием недостающих меток.</small>


<small>Позволяет сохранять контекст в виде меток и дозапрашивать группы с учетом контекста.</small>
<small>]  }</small>  
|-
!style="color:green;width: 15%" |'''POST/see/stop/{model}'''
! colspan="3" style="width: 85%" |Остановка обучения модели
|-
|-
|<small>GET</small>
| colspan="2" style="width: 50%" |
* <small>'''model''' — идентификатор модели</small>
| colspan="2" style="width: 50%" |<small>{  "error": 0,</small>


<small>/smc/normalize</small>
<small>  "message": "success"}</small>
|<small>Обратная нормализация текста</small>
|-
|<small>text - текст для обработки</small>
!style="color:green;width: 15%" |'''POST/see/train/{model}'''
|<small>{"text": "<строка после обратной нормализации>"}</small>
! colspan="3" style="width: 85%" |Запуск обучения модели '''<small>future</small>'''
|Пример: двадцать пятого апреля в пятом часу - 25 апреля в 5-м часу
|-
|-
|<small>GET</small>
| colspan="2" style="width: 50%" |
* <small>'''model''' — идентификатор модели</small>
 
* <small>'''corpus''' — название корпуса с данными</small>


<small>/smc/punctuate</small>
* <small>'''noise''' — уровень шума для генерации синтезированных данных для обучения модели, от 1 до 5, по умолчанию 0</small>
|<small>Расстановка знаков препинания</small>
| colspan="2" style="width: 50%" |<small>{  "error": 0,</small>
|<small>text - текст для преобразования</small>
 
|<small>{</small>
<small>  "message": "success"}</small>
|}
 
===== '''/sbs: работа с сервисом SBS''' =====
 
{| class="wikitable" style="width: 110%"
|+
!style="color:green;width: 15%" |'''POST/sbs/analyze'''
! colspan="3" style="width: 85%" |Получение аналитических метаданных из голосового фрагмента. <small>Вернется массив с метаданными голосового фрагмента.</small>
|-
| colspan="2" style="width: 20%" |
* <small>'''wav''' <span data-darkreader-inline-color="" data-darkreader-inline-bgcolor="">—</span> файл для анализа</small>
| colspan="2" style="width: 80%" |<small>Пример:</small>
 
<small>{ age: {</small>
 
<small>   class: 20-29, # {"00-05", "06-12", "13-19", "20-29", "30-39", "40-49",   "50-59", "60+"}</small>
 
<small>   confidence: 0.99 },</small>
 
<small>emotion: {</small>
 
<small>   class: SADNESS, # { "ANGER", "BORE", "DISAPPOINTMENT", "DISGUST", "EXCITEMENT", "FEAR", "NEUTRAL", "PAIN", "PLEASURE", "SADNESS", "SUPRISE"}</small>
 
<small>   confidence: 0.99 },</small>
 
<small>gender: {</small>


<small>  "text": "string"</small>
<small>   class: FEMALE, # { "MALE", "FEMALE" }</small>


<small>}</small>
<small>   confidence: 0.99 } }</small>
|
|-
! style="color:green;width: 15%" |'''POST/sbs/noiselevel'''
! colspan="3" |<small>Возвращает процент зашумленности аудио</small>
|-
| colspan="2" |
*<small>'''wav''' — файл для анализа</small>
| colspan="2" |<small>Пример ответа:</small>
<small><code>{ error: 0, message: 'success', 'noise': 0.79 }</code></small>
|-
! style="color:green;width: 15%" |'''POST/sbs/search'''
! colspan="3" style="width: 85%" |<small>Поиск говорящего по базе слепков.</small>
|-
|-
|<small>POST</small>
| colspan="2" style="width: 20%" |
*<small>'''wav''' — файл для анализа</small>
*<small>'''threshold''' — порог похожести при поиске, от 0 до 1.</small>
*<small>'''text''' — текст для сравнения с распознанным текстом из wav, необязательный параметр. Если указан, то поиск не будет осуществлен, если распознанный текст будет сильно отличаться от text.</small>
*'''<small>textSimilarity</small>''' - <small>порог похожести текста и распознанного аудио</small>
| colspan="2" style="width: 80%" |<small>Пример ответа:</small>


<small>/smc/stop/{model}</small>
<small>{ error: 0, speaker: Ivan, confidence: 0.79 }</small>
|<small>Остановка обучения модели.</small>
|-
|<small>model - имя модели</small>
! style="color:green;width: 15%" |'''POST/sbs/speakers/add'''
|<small>{</small>
! colspan="3" style="width: 85%" |Добавление слепка в базу.
|-
| colspan="2" style="width: 20%" |
*<small>'''name''' — имя говорящего</small>
*<small>'''wav''' — файл для создания оцифрованного представления говорящего</small>
*<small>'''text''' — текст для сравнения с распознанным текстом из wav, необязательный параметр. Если указан, то поиск не будет осуществлен, если распознанный текст будет сильно отличаться от text. Для использования необходим сервис spr.</small>
*'''<small>textSimilarity</small>''' - <small>порог похожести текста и распознанного аудио</small>
| colspan="2" style="width: 80%" |<small>{</small>


<small>  "error": 0,</small>
<small>  "error": 0,</small>


<small>  "message": "string"</small>
<small>  "id": "251f78d7-ee50-4ba1-a669-ee89fdaf5433"</small>


<small>}</small>
<small>}</small>
|<small>Удаляет тестовую версию модели с сервера обучения, тем самым прерывает обучение</small>
|-
|-
|<small>POST</small>
! style="color:red;width: 15%" |'''DELETE/sbs/speakers/delete/{id}'''
! colspan="3" style="width: 85%" |Удаление слепка из базы.
|-
| colspan="2" style="width: 20%" |
*<small>'''id''' <span data-darkreader-inline-color="" data-darkreader-inline-bgcolor="">—</span> идентификатор говорящего</small>
| colspan="2" style="width: 80%" |<small>{ error: INT, message: DESCRIPTION }</small>
|-
! style="color:blue;width: 15%" |'''GET/sbs/speakers/list'''
! colspan="3" style="width: 85%" |Получение списка всех слепков.
|-
| colspan="2" style="width: 20%" |<small>Входные параметры отсутствуют</small>
| colspan="2" style="width: 80%" |<small>[ {</small>


<small>/smc/test/{model}</small>
<small>    "id": "251f78d7-ee50-4ba1-a669-ee89fdaf5433",</small>
|<small>Предназначен для тестирования модели заранее подготовленным текстовым файлом со строками классов:</small>


<small>класс,класс2,..классN<TAB>ФРАЗА<TAB><nowiki><data></nowiki></small>
<small>    "name": "наименование слепка"</small>


<small>и строками групп:</small>
<small>  }]</small>
|-
! style="color:green;width: 15%" |'''POST/sbs/speakers/modify/{id}'''
! colspan="3" style="width: 85%" |Дообучение слепка.
|-
| colspan="2" style="width: 20%" |
*<small>'''wav''' — файл для обучения</small>
*<small>'''id''' — идентификатор слепка</small>
*<small>'''text''' — текст для сравнения с распознанным текстом из wav, необязательный параметр. Если указан, то слепок не будет дообучен, если распознанный текст будет сильно отличаться от text. Для использования необходим сервис spr.</small>
*'''<small>textSimilarity</small>''' - <small>порог похожести текста и распознанного аудио</small>
| colspan="2" style="width: 80%" |<small>{  "error": 0,</small>


<small>класс,класс2,..классN<TAB>группа<TAB><group></small>
<small>  "message": "Success"}</small>
|-
! style="color:green;width: 15%" |'''POST/sbs/verify/{id}'''
! colspan="3" style="width: 85%" |Сравнение wav-файла cо слепком в базе. <small>В ответе - вероятность совпадения от 0 до 1.</small>
|-
| colspan="2" style="width: 20%" |
*<small>'''name''' —  имя говорящего</small>
*<small>'''wav''' —  файл для создания оцифрованного представления говорящего</small>
*<small>'''text''' —  текст для сравнения с распознанным текстом из '''wav''', необязательный параметр. Если указан, но слепок не будет создан, если распознанный текст будет сильно отличаться от '''text.'''</small>
*'''<small>textSimilarity</small>''' - <small>порог похожести текста и распознанного аудио</small>
| colspan="2" style="width: 80%" |<small>{ "error": 0, "confidence": 0.78 }</small>
|}


<small>Метод асинхронный. Окончание работы проверяется через метод /smc/info/{id}.</small>
====='''/tts: методы работы с сервисом tts'''=====
|
* <small>'''corpus''' - файл тестового корпуса</small>


* <small>'''model''' - имя модели</small>
{| class="wikitable" style="width: 110%"
|<small>{ error: INT, message: DESCRIPTION }</small>
|+
|
! style="color:blue;width: 15%" |'''GET/tts/dictionary/export'''
! colspan="3" style="width: 85%" |Выгрузка пользовательского словаря ударений.
|-
|-
|<small>POST</small>
| colspan="2" style="width: 20%" |<small>Входные параметры отсутствуют</small>
| colspan="2" style="width: 80%" |<small>Простой текст — строки со словом и его интерпретацией с ударением.</small>
|-
! style="color:blue;width: 15%" |'''GET/tts/dictionary/get'''
! colspan="3" style="width: 85%" |Выгрузка пользовательского словаря ударений в виде json.
|-
| colspan="2" style="width: 50%" |<small>Входные параметры отсутствуют</small>
| colspan="2" style="width: 50%" |<small>[ [   "слово",   "замена слова с удар+ением"],</small>


<small>/smc/test/{model}</small>
<small>[   "слово2",   "замена слова2 с удар+ением"],</small>
|<small>Запуск тестирования модели smc</small>
|
* <small>'''model''' - идентификатор модели</small>
* <small>'''corpus''' - название корпуса с данными</small>
* <small>'''confidence''' - уровень доверия, от 0 до 1. Порог, ниже которого класс считается неизвестным. При значении 0 происходит автоматический расчет среднего уровня доверия, которые можно потом получить методом GET /info/{servicetype}/{model}</small>
|<small><code>{  "error": 0,</code></small>


<small><code>  "message": "success"</code></small>
<small>...]</small>
|-
! style="color:green;width: 15%" |'''POST/tts/dictionary/import'''
! colspan="3" style="width: 85%" |Загрузка пользовательского словаря ударений. <small>Текущий словарь будет переписан.</small>
|-
| colspan="2" style="width: 50%" |
*<small>'''csv file''' — файл строк со словом и его интерпретацией с ударением.</small>
| colspan="2" style="width: 50%" |<small>{  "error": 0,</small>


<small><code>}</code></small>
<small>  "message": "сообщение о статусе результата"}</small>
|<small>Метод асинхронный, статус тестирования можно запросить методом GET</small>
|-
<small>/info/{servicetype}/{model}</small>
! style="color:green;width: 15%" |'''POST/tts/dictionary/put'''
! colspan="3" style="width: 85%" |Загрузка пользовательского словаря ударений в виде json. <small>Текущий словарь будет переписан.</small>
|-
| colspan="2" style="width: 50%" |
* <small>'''json''' — строка json следующего вида:</small>
 
<small><code>[</code></small>
 
<small><code>[   "слово",   "замена слова с удар+ением" ],</code></small>
 
<small><code>[ "слово2",   "замена слова2 с удар+ением" ],</code></small>
 
<small><code>...</code></small>
 
<small><code>]</code></small>
| colspan="2" style="width: 50%" |<small>{</small>
 
<small>  "error": 0,</small>
 
<small>  "message": "сообщение о статусе результата"</small>
 
<small>}</small>
|-
! style="color:green;width: 15%" |'''POST/tts/normalize'''
! colspan="3" style="width: 85%" |Нормализация текста <small>— перевод цифр в слова и расстановка ударений (ударения только в нормализованной части фразы), например «в понедельник 10.10.2025» -> «в понедельник дес+ятого октябр+я две т+ысячи дв+адцать п+ятого г+ода».</small>
|-
|-
|<small>POST</small>
| colspan="2" style="width: 50%" |
*<small>'''text''' —  фраза для нормализации</small>
| colspan="2" style="width: 50%" |<small>{  "error": 0,</small>


<small>/smc/train/{model}</small>
<small>  "message": "success",</small>
|<small>Запуск обучения модели future</small>
|
* <small>'''model''' - идентификатор модели</small>
* <small>'''corpus''' - название корпуса с данными</small>
|<small><code>{  "error": 0,</code></small>


<small><code>  "message": "success"</code></small>
<small>  "text": "нормализованный текст" }</small>
|-
! style="color:green;width: 15%" |'''POST/tts/revoice/{revoicer}'''
! colspan="3" style="width: 85%" |Модификация или искажение голоса
|-
| colspan="2" style="width: 50%" |
*<small>'''wav''' —  аудиофайл для обработки</small>  


<small><code>}</code></small>
*<small>'''revoicer''' —  модель модификации голоса</small>
|<small>Метод асинхронный, статус обучения можно запросить методом GET</small>
| colspan="2" style="width: 50%" |<small>wav-файл с модифицированным (искаженным) голосом</small>
<small>/info/{servicetype}/{model}</small>
|-
! style="color:blue;width: 15%" |'''GET/tts/revoicers'''
! colspan="3" style="width: 85%" |Перечень моделей модификации или искажения голоса. <small>Модели поставляются только в составе дистрибутива. Модель distortion — искажение голоса, делает голос неузнаваемым и речь неразборчивой.</small>
|-
| colspan="2" style="width: 50%" |<small>Входные параметры отсутствуют</small>
| colspan="2" style="width: 50%" |<small>[  "distortion" ]</small>
|-
! style="color:green;width: 15%" |'''POST/tts/synthesize/{model}'''
! colspan="3" style="width: 85%" |Синтез звукового файла из текста/
|-
| colspan="2" style="width: 50%" |
*<small>'''ID''' — имя модели</small>
*<small>'''text''' — текст синтезируемой фразы</small>
*<small>'''rate''' — скорость речи</small>
*<small>'''pitch''' — высота (тон)</small>
*<small>'''volume''' — громкость</small>
*<small>'''frequency''' — частота дискретизации (по умолчанию 22050 Гц)</small>
*<small>'''format''' - формат файла результата (wav, opus, ogg, mp3)</small>
*<small>'''link''' - если 1, то вернуть только ссылку на файл</small>
| colspan="2" style="width: 50%" |<small>файл с синтезированой фразой</small>
|}
|}


===== '''/see: работа с сервисом SEE''' =====
====='''/qas: методы работы с сервисом qas'''=====
{| class="wikitable mw-collapsible"
 
!Метод
{| class="wikitable" style="width: 110%"
!Описание
|+
!Входные параметры
! style="color:blue;width: 15%" |'''GET/qas/ask'''
!Ответ
! colspan="2" style="width: 85%" |Метод генерирует ответ на поставленный вопрос на основе информации из документов в базе. <small>Ответ на вопрос генерируется на основе информации, содержащейся в одном или нескольких документах. Документы должны быть в текстовом формате. Ответ возвращается в формате JSON, его можно скачать. Если метод не смог найти ответ, возвращается код ошибки и сообщение.</small>
!Пояснения
|-
|-
|<small>GET</small>
| colspan="2" style="width: 50%" |
<small>/entities/{model}</small>
*<small>'''text''' — текст вопроса, на основе которого будут искаться фрагменты.</small>
|<small>метод для поиска сущностей</small>
*<small>'''category''' — id категории документа. Если не указать категорию, метод вернет ответ на основе всех документов в базе данных. Допускается указание нескольких категорий через разделитель "|".</small>
|
*<small>'''channel''' — id канала</small>
* <small>'''model''' - идентификатор[ы] модели. Может быть указано несколько через запятую, тогда запрос будет обработан всеми указанными моделями</small>
*<small>'''useCache''' — использовать кешированные ответы</small>
* <small>'''text''' - текст</small>
<small>возможные варианты:</small>
* <small>'''similarity''' - порог похожести найденной сущности на эталонные, %. По умолчанию 70.</small>
|<code><small>{ID-модели: [</small></code><code><small>{</small></code>


<code><small>position: 0,</small></code>
<small>- "'''no'''" не использовать</small>


<code><small>confidence: 1,</small></code>
<small>- "'''all'''" использовать все</small>


<code><small>text: текст сущности,</small></code>
<small>- "'''checked'''" использовать только проверенные</small>
*<small>'''useGPT''' — использовать генеративную сеть для поиска ответов в документах. возможные варианты "'''yes'''" "'''no'''"</small>
*<small>'''model''' - имя модели GPT, если кроме default используются другие модели</small>
*<small>'''template''' - ID шаблона запроса к LLM, необязательный параметр</small>


<code><small>calculated: vaktsinatsiya</small></code>
*<small>'''addAlias''' — добавлять похожие вопросы к синонимам, не создавая отдельного вопроса. возможные варианты "'''yes'''" "'''no'''"</small>
*<small>'''maxDocs''' — максимальное количество документов одной категории для формирования контекста при генерации ответа на вопрос, по умолчанию 1</small>
*<small>'''similarityArea -''' определяет допустимую разницу между максимальной и минимальной релевантностью фрагментов при фильтрации результатов</small>
| style="width: 50%" |<small>{</small>


<code><small>}, {...}</small></code>
<small>"error": 0,</small>


<code><small>]</small></code>
<small>"text": "Здесь будет текст ответа"</small>


<code><small>}</small></code>
<small>}</small>
|<small>Вернется массив со всеми моделями, в которых были найдены сущности. Каждая переменная с названием модели будет содержать список всех найденных сущностей.</small>
|-
* <small>'''position''' - позиция слова начала фрагмента, определяющего сущность</small>
! style="color:blue;width: 15%" |'''GET/qas/cachemaker/start'''
* <small>'''confidence''' - вероятность правильного определения сущности</small>
! colspan="2" style="width: 85%" |Генерация ответов на вопросы в кэше.
* <small>'''calculated''' - поле, содержащее измененное постобработчиком (при его наличии) значение сущности либо код сущности, использованный при обучении модели</small>
|-
|-
|<small>POST</small>
| colspan="2" style="width: 50%" |
<small>/train/{model}</small>
*<small>'''category''' - категория для которой генерируются ответы</small>*<small>'''mode''' - режим генерации ответов, возможные значения:</small><small>'''- paraphrase''' - генерирует вариации ответов перефразированием уже проверенных ответов, если таковые имеются на вопросе</small><small>'''- generate''' - генерирует кэш через разные ответы на каждый вопрос по документации</small>
|<small>Запуск обучения модели future</small>
*<small>'''mode''' — режим генерации ответов, возможные значения:'''- paraphrase''' - генерирует вариации ответов перефразированием уже проверенных ответов, если таковые имеются на вопросе'''- generate''' — генерирует кэш через разные ответы на каждый вопрос по документации</small>
|
* <small>'''model''' - идентификатор модели</small>
* <small>'''corpus''' - название корпуса с данными</small>
* <small>'''noise''' - уровень шума для генерации синтезированных данных для обучения модели, от 1 до 5, по умолчанию 2</small>
|<small><code>{</code><code>  "error": 0,</code></small>


<code><small>  "message": "success"</small></code>
*<small>'''option''' - {all | empty} обработать все вопросы  или только не содержащие ответов</small>
*<small>'''category''' - если указан код категории, то генерация только для этой категории</small>


<code><small>}</small></code>
*<small>'''variants''' - количество ответов, от 1 до 9</small>
|<small>Метод асинхронный, статус обучения можно запросить методом GET</small>
*<small>'''replace''' - заменить ответы на сгенерированные</small>
<small>/info/{servicetype}/{model}</small>
*<small>'''maxDocs''' - максимальное количество документов одной категории для формирования контекста при генерации ответа на вопрос, по умолчанию 1</small>
*<small>'''model''' - какую модель использовать для генерации, если кроме default используются другие модели</small>
*<small>'''template''' - ID шаблона запроса к LLM, необязательный параметр</small>
| style="width: 50%" |<small>{"error": 0, "message": "success"}</small>
|-
! style="color:blue;width: 15%" |'''GET/qas/cachemaker/status'''
! colspan="2" style="width: 85%" |Состояние генерации ответов на вопросы в кэше. <small>Статусы: '''started''', '''stopped''', если были ошибки, поле ответа '''error''' будет содержать код ошибки.</small>
|-
|-
|<small>POST</small>
| colspan="2" style="width: 50%" |<small>Входные параметры отсутствуют</small>
<small>/stop/{model}</small>
| style="width: 50%" |<small>{  "error": "",</small>
|<small>Остановка обучения модели</small>
|
* <small>'''model''' - идентификатор модели</small>
|<small><code>{</code><code>  "error": 0,</code></small>


<code><small>  "message": "success"</small></code>
<small>  "status": "started",</small>


<code><small>}</small></code>
<small>  "progress": 33.33}</small>
|<small>-</small>
|}
 
===== '''/sbs: работа с сервисом SBS''' =====
{| class="wikitable mw-collapsible"
!Метод
!Описание
!Входные параметры
!Ответ
!Пояснения
|-
|-
|<small>POST</small>
! style="color:blue;width: 15%" |'''GET/qas/cachemaker/stop'''
<small>/analyze/{model}</small>
! colspan="2" style="width: 85%" |Остановить генерацию ответов на вопросы в кэше.
|<small>Получение аналитических метаданных из голосового фрагмента</small>
|
* <small>'''model''' - идентификатор модели.</small>
* <small>'''wav''' - файл для анализа</small>
|<code><small>{ age: { class: 20-29, confidence: 0.99 }, emotion: { class: SADNESS, confidence: 0.99 }, gender: { class: FEMALE, confidence: 0.99 } }</small></code>
|Более подробные сведения находятся в [[SBS. Руководство пользователя|руководстве пользователя SBS]].
|-
|-
|<small>POST</small>
| colspan="2" style="width: 50%" |<small>Входные параметры отсутствуют</small>
<small>/embedding/{model}</small>
| style="width: 50%" |<small>{"error": 0, "message": "success"}</small>
|<small>Получение оцифрованного представления говорящего</small>
|
* '''<small>model</small>''' <small>- идентификатор модели.</small>
* '''<small>wav</small>''' <small>- файл для анализа</small>
|<small><code>{ error: 0, embedding: [ 0.019493144005537033, -0.08348844200372696, ... ] }</code></small>
| -
|-
|-
|<small>POST</small>
! style="color:green;width: 15%" |'''POST/qas/category/add'''
<small>/search/{model}</small>
! colspan="2" style="width: 85%" |Добавить категорию с указанным именем. <small>В ответе — id созданной категории или сообщение об ошибке:</small>
|<small>Поиск говорящего по базе слепков</small>
|
* '''<small>model</small>''' <small>- идентификатор модели.</small>
* '''<small>wav</small>''' <small>- файл для анализа</small>
|<small><code>{ error: 0, speaker: Ivan, confidence: 0.79 }</code></small>
|<small>-</small>
|-
|-
|<small>DELETE</small>
| colspan="2" style="width: 50%" |
<small>/speaker/{model}/{speaker_id}</small>
*<small>'''name''' — наименование категории</small>
|<small>Удаление слепка из базы</small>
| style="width: 50%" |<small>{  "error": 0,</small>
|
* '''<small>model</small>''' <small>- идентификатор модели.</small>
* <small>'''speaker_id''' - идентификатор говорящего</small>
|<small><code>{  "error": 0,</code></small>


<small><code>  "message": "success"</code></small>
<small>  "message": "success",</small>


<small><code>}</code></small>
<small>  "id": "ad895085-2e48-439a-831e-b5f699b6a54a"  }</small>
|<small>-</small>
|-
! style="color:red;width: 15%" |'''DELETE/qas/category/delete/{id}'''
! colspan="2" style="width: 85%" |Удалить категорию. <small>В ответе или сообщении об успехе, или ошибке, если категория используется или не существует.</small>
|-
| colspan="2" style="width: 50%" |
*<small>'''id''' —  идентификатор категории</small>
| style="width: 50%" |<small>{   "error": 0,</small>
 
<small>  "message": "success" }</small>
|-
! style="color:blue;width: 15%" |'''GET/qas/category/list'''
! colspan="2" style="width: 85%" |Получить список категорий
|-
| colspan="2" style="width: 50%" |<small>Входные параметры отсутствуют</small>
| style="width: 50%" |<small>В ответе json с именами и id категорий</small>
|-
|-
|<small>GET</small>
! style="color:green;width: 15%" |'''POST/qas/category/modify/{id}'''
<small>/speakers/{model}</small>
! colspan="2" style="width: 85%" |Изменить категорию. <small>У категории пока есть только наименование, поэтому метод только переименовывает категорию</small>
|<small>Получение списка всех слепков в модели</small>
|
* '''<small>model</small>''' <small>- идентификатор модели.</small>
|<small><code>[ "Kiryl",</code></small><small><code>"Artem", "vladimir", "Sergey", "vladimir2", "Alla" ]</code></small>
|<small>-</small>
|-
|-
|<small>POST</small>
| colspan="2" style="width: 50%" |
<small>/verify/{model}/{speaker_id}</small>
*<small>'''id''' идентификатор категории</small>
|<small>Сравнение оцифрованного представления wav-файла cо слепком в базе</small>
*<small>'''name''' — наименование категории</small>
|
| style="width: 50%" |<small>{  "error": 0,</small>
* '''<small>model</small>''' <small>- идентификатор модели.</small>
* <small>'''speaker_id''' - идентификатор говорящего</small>
|<small><code>{</code></small><small><code>"error": 0,</code></small>


<small><code>"confidence": 0.78</code></small>
<small>  "message": "success" }</small>
|-
! style="color:green;width: 15%" |'''POST/qas/channel/add'''
! colspan="2" style="width: 85%" |Добавление канала. <small>В ответе id созданного канала или сообщение об ошибке</small>
|-
| colspan="2" style="width: 50%" |
*<small>'''name''' — наименование канала</small>
| style="width: 50%" |<small>{"error": 0,</small>


<small><code>}</code></small>
<small>"message": "success",</small>
|<small>-</small>
|}


===== '''/tts: методы работы с сервисом tts''' =====
<small>"id": "a46fb887-5d98-41e0-8299-bcc94f615e91"}</small>
{| class="wikitable mw-collapsible"
!Метод
!Описание
!Входные параметры
!Ответ
!Пояснения
|-
|-
|GET
! style="color:red;width: 15%" |'''DELETE/qas/channel/delete/{id}'''
<small>/tts/dictionary/export</small>
! colspan="2" style="width: 85%" |Удаление канала
|<small>Предназначен для экспорта пользовательского словаря в виде строк</small>
| <small>-</small>
|<code><small>привет прив+ет</small></code>
| <small>-</small>
|-
|-
|GET
| colspan="2" style="width: 50%" |
<small>/</small><small>tts/dictionary/get</small>
*<small>'''id''' — идентификатор канала</small>
|<small>Предназначен для экспорта пользовательского словаря в виде json</small>
| style="width: 50%" |<small>{ "error": 0, "message": "success" }</small>
|<small>-</small>
|-
|
! style="color:blue;width: 15%" |'''GET/qas/channel/list'''
{| class="wikitable"
! colspan="2" style="width: 85%" |Получить список всех каналов
|
[
  [
    "привет",
    "прив+ет"
  ]
]
|}
|<small>-</small>
|-
|-
|POST
| colspan="2" style="width: 50%" |<small>Входные параметры отсутствуют</small>
<small>/</small><small>tts/dictionary/</small><small>import</small>
| style="width: 50%" |<small>{  "error": 0,</small>
|<small>Предназначен для загрузки пользовательского словаря в виде строк из файла .csv</small>
|csv файл с разделителем - "табуляция"
|{  
 "error": 0,  


 "message": "success",
<small>  "channels": [</small>


 "answers": {
<small>    {      "id": "1",      "name": "voice"    },</small>


   "http://127.0.0.1<nowiki/>:6186": "{\"error\": 0, \"message\": \"success\"}\n"
<small>    {      "id": "56442779-e871-43fd-ae4d-caf4ab6d09b9",      "name": "канал++"    },</small>


 }  
<small>    {      "id": "0",      "name": "default"    }</small>


}  
<small>  ] }</small>
|Пользовательский словарь будет переписан, не дополнен!
|-
! style="color:green;width: 15%" |'''POST/qas/channel/modify/{id}'''
! colspan="2" style="width: 85%" |Изменить канал. <small>У канала пока есть только наименование, поэтому метод только переименовывает канал</small>
|-
|-
|POST
| colspan="2" style="width: 50%" |
<small>/</small><small>tts/dictionary/</small><small>put</small>
*<small>'''name''' — новое наименование канала</small>
|<small>Предназначен для загрузки пользовательского словаря в виде json списка</small>
|[ [ "привет", "прив+ет" ] ]
|{
"error": 0,


"message": "success",
*<small>'''id''' — идентификатор канала</small>
| style="width: 50%" |<small>{  "error": 0,</small>
 
<small>  "message": "success" }</small>
|-
! style="color:green;width: 15%" |'''POST/qas/chat'''
! colspan="2" | Поиск ответа за пределами документов. <small>На стадии разработки, не используется.</small>
|-
| colspan="2" |
*<small>'''text -''' текст вопроса</small>
*<small>'''history''' - история вопросов, будет склеена с text при запросе</small>
*<small>'''model''' - какую модель использовать для ответа, если кроме default используются другие модели</small>
*<small>'''useInternalTemplate''' - использовать ли шаблон запроса. '''no''' - не использовать, либо код шаблона запроса к LLM. Необязательный параметр. Если не указан, используется шаблон по умолчанию.</small>
*<small>'''params''' - необязательный параметр. JSON с произвольными параметрами запроса к LLM. Описание параметров см. в [[QAS. Руководство администратора|руководстве администратора]].</small>
|<small>Пример ответа на вопрос "как пройти в библиотеку"</small><small>{"error": 0,</small>


"answers": {
<small>"text": "1. Проверить время работы библиотеки (обычно от 9 до 20)\n2. Проверить местоположение библиотеки на карте или с помощью сервиса Google Maps\n3. Убедиться, что у вас есть необходимые документы для входа (паспорт, карта члена библиотеки и т.д.)\n4. Посетить библиотеку по адресу: [адрес библиотеки]\n5. Проверить правила поведения в библиотеке перед входом" }</small>
|-
! style="color:green;width: 15%" |'''POST/qas/cleandoc/start'''
! colspan="2" |Очистка документа от лишней информации
|-
| colspan="2" |
* <small>'''text -''' текст документа</small>
* <small>'''model''' - какую модель использовать для ответа, если кроме default используются другие модели</small>
* <small>'''template''' - ID шаблона запроса к LLM, необязательный параметр</small>
* <small>'''doc_id''' - необязательный параметр, ID документа</small>
* <small>'''user_id''' - ID пользователя</small>
|<small>{"error": 0, "message": "success"}</small>
|-
! style="color:blue;width: 15%" | '''GET/qas/cleandoc/stop'''
! colspan="2" |Остановка очистки документа для конкретного пользователя
|-
| colspan="2" |
* <small>'''user_id''' - ID пользователя</small>
|<small>{"error": 0, "message": "success"}</small>
|-
! style="color:blue;width: 15%" | '''GET/qas/cleandoc/status'''
! colspan="2" |Статус очистки документа для конкретного пользователя
|-
| colspan="2" |
* <small>'''user_id''' - ID пользователя</small>
|<small>{</small>
<small>"error": 0,</small>


"http://127<nowiki/>.0.0.1:6186": "{\"error\": 0, \"message\": \"success\"}\n"
<small>"status": stopped | started,</small>


}
<small>"progress": 33.3,</small>


}
<small>"message": string,</small>
|Пользовательский словарь будет переписан, не дополнен!
|}
===== '''/qas: методы работы с сервисом qas''' =====
{| class="wikitable mw-collapsible"
!Метод
!Описание
!Входные параметры
!Ответ
!Пояснения
|-
|<small>GET</small>
<small>/qas/ask</small>
|<small>Метод генерирует ответ на поставленный вопрос на основе информации из документов в базе</small>
|
* <small>'''text''' - текст вопроса, на основе которого будут искаться фрагменты.</small>
* <small>'''category''' - id категории документа. Если не указать категорию, метод вернет ответ на основе всех документов в базе данных.</small>
* <small>'''channel -''' id канала</small>
* '''creative''' - <small>флаг креативности возможные варианты "yes" "no"</small>
* <small>'''useCache''' - использовать кешированные ответы</small>


<small>возможные варианты:</small>
<small>"place": number, #место в очереди</small>


<small>- "'''no'''" не использовать</small>
<small>"queue": True | False #состояния - в очереди или в процессе очистки</small>


<small>- "'''all'''" использовать все</small>
<small>}</small>
|-
! style="color:blue;width: 15%" | '''GET/qas/cleandoc/result'''
! colspan="2" |Результат очистки документа для конкретного пользователя
|-
| colspan="2" |
* <small>'''doc_id''' - необязательный параметр, ID документа</small>
* <small>'''user_id''' - ID пользователя</small>
|<small>{"error": 0,"status": "stopped","text": "очищенный текст","doc_id": "ID документа"}</small>
|-
! style="color:green;width: 15%" |'''POST/qas/doc/add'''
! colspan="2" style="width: 85%" |Загрузить текстовый документ. <small>Добавляет документ в базу. В ответе — id созданного документа или сообщение об ошибке.</small>
|-
| colspan="2" style="width: 50%" |
*<small>'''title''' — заголовок документа</small>
*<small>'''category''' — категория документа</small>
*<small>'''text'''</small> — <small>файл документа</small>
| style="width: 50%" |<small>{"error": 0,</small>


<small>- "'''checked'''" использовать только проверенные</small>
<small>"message": "success",</small>


* <small>'''useGPT''' - использовать генеративную сеть для поиска ответов в документах</small>
<small>"id": "ebe2bc57551c2d17f892987d1f62306d"}</small>
|-
! style="color:red;width: 15%" |'''DELETE/qas/doc/delete/{id}'''
! colspan="2" style="width: 85%" | Удаление документа
|-
| colspan="2" style="width: 50%" |
*<small>'''id''' — идентификатор документа</small>
| style="width: 50%" |<small>{"error": 0,"message": "success"}</small>
|-
! style="color:blue;width: 15%" |'''GET/qas/doc/get/{id}'''
! colspan="2" style="width: 85%" |Выгрузка текста документа
|-
| colspan="2" style="width: 50%" |
*<small>'''id''' — идентификатор документа</small>
| style="width: 50%" |<small>{</small>


<small>возможные варианты "'''yes'''" "'''no'''"</small>
<small>  "error": 0,</small>
|<small>{</small>
<small>"error": 0,</small>


<small>"text": "Здесь будет текст ответа"</small>
<small>  "text": "Здесь будет полный текст документа"</small>


<small>}</small>
<small>}</small>
| <small>Ответ на вопрос генерируется на основе информации, содержащейся в одном или нескольких документах. Документы должны быть в текстовом формате. Ответ возвращается в формате JSON, его можно скачать. Если метод не смог найти ответ, возвращается код ошибки и сообщение.</small>
|-
|-
|<small>GET</small>
! style="color:blue;width: 15%" |'''GET/qas/doc/list'''
! colspan="2" style="width: 85%" |Получение списка имеющихся документов
|-
| colspan="2" style="width: 50%" |<small>Входные параметры отсутствуют</small>
| style="width: 50%" |<small>Пример:</small>
 
<small>{  "error": 0,</small>
 
<small>  "docs": [</small>
 
<small>    {id": "d4999cdee5ad1faf2cb3066ea1b5e96b",</small>


<small>/qas/cachemaker/start</small>
<small>      "title": "PVE. Установка сервисного пакета окружения",</small>
|<small>Генерация ответов на вопросы в кэше.</small>
|
* <small>'''category''' категория для которой генерируются ответы</small>


* <small>'''mode''' - режтм генерайии ответов, возможные значения:</small>
<small>      "category": "Техническая поддержка" },</small>


<small>'''paraphrase''' - генерирует вариации ответов перефразированием уже проверенных ответов, если таковые имеются на вопросе</small>
<small>    {"id": "759042575b965745b9d2af869bca1740",</small>


<small>'''generate''' - генерирует кэш через разные ответы на каждый вопрос по документации</small>
<small>      "title": "UPS. Руководство администратора",</small>


* <small>'''variants''' - количество ответов, от 1 до 9</small>
<small>      "category": "Техническая поддержка"}      ]}</small>
|<small>{"error": 0, "message": "success"}</small>
|-
| -
! style="color:green;width: 15%" |'''POST/qas/doc/modify/{id}'''
! colspan="2" style="width: 85%" |Обновление документа. <small>В случае успеха метод вернет статус выполнения операции (например, «success»), в случае неудачи — код ошибки.</small>
|-
|-
|<small>GET</small>
| colspan="2" style="width: 50%" |
*<small>'''data''' — json c изменяемыми параметрами документа</small>


<small>/qas/cachemaker/status</small>
<small><code>{</code></small>
|<small>Состояние генерации ответов на вопросы в кэше.</small>
<small>'''статусы:''' '''started''', '''stopped''', если были ошибки поле ответа</small>


<small>'''error''' будет содержать код ошибки</small>
<small><code>  title: string,</code></small>
| -
 
|<small>{</small>
<small><code>  category: string,</code></small>


<small>  "error": "",</small>
<small><codetext: string</code></small>


<small>  "status": "started",</small>
<small><code>}</code></small>


<small>  "progress": 33.33</small>
<small>параметр который не меняется может отсутствовать в json</small>


<small>}</small>
*<small>'''id''' — идентификатор документа.</small>
| -
| style="width: 50%" |<small>{"error": INT, "message": DESCRIPTION}</small>
|-
! style="color:green;width: 15%" |'''POST/qas/doc/replace'''
! colspan="2" style="width: 85%" |Замена подстроки в текстах категории <small>Будут заменены все найденные вхождения</small>
|-
|-
|<small>GET</small>
| colspan="2" style="width: 50%" |
*<small>'''search''' - искомая подстрока, будет заменена</small>


<small>/qas/cachemaker/stop</small>
*<small>'''replace''' - текст замены</small>
|<small>Остановить генерацию ответов на вопросы в кэше.</small>
 
| -
*<small>'''category''' - в какой категории искать</small>
|{"error": 0, "message": "success"}
| style="width: 50%" |<small>{"error": INT, "message": DESCRIPTION,"replacements":INT}</small>
| -
|-
|-
|<small>POST</small><small>/qas/category/add</small>
! style="color:green;width: 15%" |'''POST/qas/doc/modifyphrases'''
|<small>Добавить категорию с указанным именем</small>
! colspan="2" |Массовая замена текста в указанных фразах.
|
|-
* <small>'''name''' - наименование категории</small>
| colspan="2" |
|<small>В ответе - id созданной категории или сообщение об ошибке:</small>
*<small>'''phrases''' - JSON массив с изменяемым фразами следующего вида:</small>
<small>[</small>
 
<small>{</small>
<small>{</small>


<small>  "error": 0,</small>
<small>'doc_id': 'ad895085-2e48-439a-831e-b5f699b6a54a',</small>


<small>  "message": "success",</small>
<small>'phrase_id': 5,</small>


<small>  "id": "ad895085-2e48-439a-831e-b5f699b6a54a"</small>
<small>'text': 'новый текст'</small>


<small>}</small>
<small>}</small>
|
 
<small>]</small>
|<small>{"error": 0,"message": "success"}</small>
|-
! style="color:blue;width: 15%" |'''GET/qas/gpt/list'''
! colspan="2" |Получение списка доступных(установленных) GPT моделей
|-
| colspan="2" |<small>Входные параметры отсутствуют</small>
|<small>{  "error": 0,  "message": "success",</small><small>  "models": ["default" ]}</small>
|-
! style="color:green;width: 15%" |'''POST/qas/question/add'''
! colspan="2" style="width: 85%" |Добавление вопроса. <small>В случае успеха метод вернет id вопроса, в случае неудачи — код ошибки.</small>
|-
|-
|<small>DELETE</small>
| colspan="2" style="width: 50%" |
<small>/qas/category/delete/{id}</small>
*<small>'''question''' —  текст вопроса</small>
|<small>Удалить категорию</small>
 
|
*<small>'''category''' —  id категории к которой относится вопрос</small>
* <small>'''id''' - идентификатор категории</small>
 
|<small>{</small>
*<small>'''answers''' —  ответы в виде Json:</small>
 
<small><code>[ { "checked": true, "channel": "0", "answer": "ответ" } ]</code></small>
 
*<small>'''aliases''' —  вопросы к которым подходят ответы из блока answers в виде json:</small>
 
<small><code>["вопрос","еще вопрос"]</code></small>
| style="width: 50%" |<small>{</small>
 
<small>  "error": 0,</small>
<small>  "error": 0,</small>


<small>  "message": "success"</small>
<small>  "id": "527be9f0-f773-4a3e-bd0b-81b40a061d0d"</small>


<small>}</small>
<small>}</small>
|<small>В ответе или сообщение об успехе или ошибке если категория используется или не существует</small>
|-
|-
|<small>GET</small>
! style="color:green;width: 15%" |'''POST/qas/question/append/{id}'''
<small>/qas/category/list</small>
! colspan="2" style="width: 85%" |Добавляет алиасы/кандидаты к другому вопросу
|<small>Получить список категорий</small>
| -
|<small>В ответе json с именами и id категорий</small>
| -
|-
|-
|<small>POST</small>
| colspan="2" style="width: 50%" |
*<small>'''aliases''' —  JSON list с синонимами</small>


<small>/qas/category/modify/{id}</small>
*<small>'''candidates''' JSON list с кандидатами</small>
|<small>Изменить категорию. У категории пока есть только наименование, поэтому метод только переименовывает категорию</small>
|
*<small>'''id''' - идентификатор категории</small>
*<small>'''name''' - наименование категории</small>
|{
  "error": 0,


  "message": "success"
*<small>'''id''' —  идентификатор вопроса к которому добавить синонимы и(или) кандидаты</small>
| style="width: 50%" |<small><nowiki>{error: 0 | 1, message: string}</nowiki></small>
|-
! style="color:green;width: 15%" |'''POST/qas/question/approve/{destination_id}'''
! colspan="2" style="width: 85%" |Перемещает кандидаты в формулировки другого вопроса
|-
| colspan="2" style="width: 50%" |
*<small>'''candidates''' —  json массив c текстами кандидатов</small>


}
*<small>'''destination_id''' —  идентификатор вопроса</small>
| -
| style="width: 50%" |<small><nowiki>{error: 0 | 1, message: string}</nowiki></small>
|-
|-
|<small>POST</small>
! style="color:green;width: 15%" |'''POST/qas/question/delete/list'''
<small>/qas/channel/add</small>
! colspan="2" style="width: 85%" |Удаление списка вопросов или ответов
|<small>Добавление канала</small>
|-
|
| colspan="2" style="width: 50%" |
* <small>'''name''' - наименование канала</small>
*<small>'''questions''' — json строка с перечнем id</small>
|{
 
"error": 0,
*<small>'''type''' — выбор, удалять вопросы или ответы ('''questions''', '''answers''')</small>
| style="width: 50%" |<small>{"error": INT, "message": DESCRIPTION}</small>
|-
! style="color:red;width: 15%" |'''DELETE/qas/question/delete/{id}'''
! colspan="2" style="width: 85%" |Удаление вопроса
|-
| colspan="2" style="width: 50%" |
*<small>'''id''' — идентификатор вопроса</small>
| style="width: 50%" |<small>{"error": INT, "message": DESCRIPTION}</small>
|-
! style="color:blue;width: 15%" |'''GET/qas/question/get/{id}'''
! colspan="2" style="width: 85%" | Получение вопроса вместе с ответами и синонимами вопроса
|-
| colspan="2" style="width: 50%" |
*<small>'''id''' — идентификатор вопроса</small>
| style="width: 50%" |<small>{  "error": 0,</small>
 
<small>  "answers": [</small>
 
<small>    {   "checked": true,</small>
 
<small>      "channel": "0",</small>
 
<small>      "answer": "ответ"    }  ],</small>
 
<small>  "aliases": [</small>


"message": "success",
<small>    "вопрос",</small>


"id": "a46fb887-5d98-41e0-8299-bcc94f615e91"
<small>    "синоним вопроса",</small>


}
<small>    "еще синоним вопроса"  ]  }</small>
|<small>В ответе id созданного канала или сообщение об ошибке</small>
|-
! style="color:blue;width: 15%" |'''GET/qas/question/list'''
! colspan="2" style="width: 85%" | Получение списка вопросов.
|-
|-
|<small>DELETE</small>
| colspan="2" style="width: 50%" |
<small>/qas/channel/delete/{id}</small>
*<small>'''question''' —  фильтр вопросов, ограничение списка по вопросам</small>
|<small>Удаление канала</small>
*<small>'''category''' — фильтр категорий</small>
|
 
* '''id''' - идентификатор канала
*<small>'''answer''' —  фильтр ответов, ограничение списка по ответам</small>
|{
*<small>'''created''' — фильтр по дате создания, оставляет вопросы, созданные '''не ранее''' указанной даты</small>
"error": 0, "message": "success"  
*<small>'''createdBefore''' — фильтр по дате создания, оставляет вопросы, созданные '''не позже''' указанной даты</small>
*<small>'''modified''' — фильтр по дате изменения, оставляет вопросы, '''изменённые в точности''' в указанную дату</small>
*<small>'''onlyNew''' - фильтр, оставляющий только новые (необработанные) вопросы</small>
| style="width: 50%" |<small>{  "error": 0,</small>
 
<small>  "questions": [</small>
 
<small>{"id": "","question": "","incomplete": "",</small>
 
<small>  "aliases": [],"candidates": [],"category": "",</small>
 
<small>  "checked": 0,"unchecked": 0}</small><small>,</small>
 
<small>{"id": "","question": "","incomplete": "",</small>


}
<small>  "aliases": [],"candidates": [],"category": "",</small>
| -
 
<small>  "checked": 0,"unchecked": 0}</small>
 
<small>  ] }</small>
|-
|-
|<small>GET</small>
! style="color:green;width: 15%" |'''POST/qas/question/modify/{id}'''
<small>/qas/channel/list</small>
! colspan="2" style="width: 85%" |Модификация вопроса. <small>Позволяет заменить как все параметры так и отдельные</small>
|<small>Получить список всех каналов</small>
|-
| -
| colspan="2" style="width: 50%" |
|<small>{</small>
*<small>'''data''' —  json c измененными параметрами, пример полного:</small>
<small>  "error": 0,</small>
 
<small><code>{   "answers": [</code></small>
 
<small><code>    {</code></small>
 
<small><code>      "checked": true,</code></small>
 
<small><code>      "channel": "0",</code></small>
 
<small><code>      "answer": "новый ответ"</code></small>
 
<small><code>    }</code></small>
 
<small><code],</code></small>
 
<small><code>"question":"новый вопрос",</code></small>
 
<small><code>"category": "a3801cc0-f8e5-4f3b-bb10-e42148cd772b",</code></small>


<small>  "channels": [</small>
<small><code>  "aliases": [</code></small>


<small>    {</small>
<small><code>    "новый вопрос",</code></small>


<small>      "id": "1",</small>
<small><code>    "синоним",</code></small>


<small>      "name": "voice"</small>
<small><code>    "еще синоним"</code></small>


<small>    },</small>
<small><code]</code></small>


<small>    {</small>
<small><code>}</code></small>


<small>      "id": "56442779-e871-43fd-ae4d-caf4ab6d09b9",</small>
*<small>'''id''' — идентификатор вопроса</small>
| style="width: 50%" |<small>В случае успеха метод вернет статус выполнения операции (например, «success»), в случае неудачи — код ошибки.</small>


<small>      "name": "канал++"</small>
<small>{"error": INT, "message": DESCRIPTION}</small>
|-
! style="color:green;width: 15%" |'''POST/qas/question/replace'''
! colspan="2" |<small>Поиск и замена подстроки. Будут заменены все найденные вхождения</small>
|-
| colspan="2" |
*<small>'''search''' - искомая подстрока, будет заменена</small>


<small>    },</small>
*<small>'''replace''' - текст замены</small>


<small>    {</small>
*<small>'''category''' - в какой категории искать</small>
|<small>{"error": INT, "message": DESCRIPTION,"replacements":INT}</small>
|-
! style="color:green;width: 15%" |'''POST/qas/question/modifyanswers'''
! colspan="2" |Массовая замена текста в указанных ответах.
|-
| colspan="2" |
*<small>'''phrases''' - JSON массив с изменяемым ответами следующего вида:</small>
<small>[</small>


<small>      "id": "0",</small>
<small>{</small>


<small>      "name": "default"</small>
<small>'question_id': 'ad895085-2e48-439a-831e-b5f699b6a54a',</small>


<small>    }</small>
<small>'answer_id': 5,</small>


<small>  ]</small>
<small>'text': 'новый текст'</small>


<small>}</small>
<small>}</small>
| -
 
<small>]</small>
|<small>{"error": 0,"message": "success"}</small>
|-
|-
|<small>POST</small>
! style="color:green;width: 15%" |'''POST/qas/paraphrase'''
<small>/qas/channel/modify/{id}</small>
! colspan="2" |Генерация фраз-синонимов для предложения.
|<small>Изменить канал. У канала пока есть только наименование, поэтому метод только переименовывает канал</small>
|-
|
| colspan="2" |
* <small>'''name''' - новое наименование канала</small>
*<small>'''text -''' предложение</small>
*<small>'''model''' - какую модель использовать для ответа, если кроме default используются другие модели</small>
*<small>'''template''' - ID шаблона запроса к LLM, необязательный параметр</small>
|<small>{"error": 0, "message": "success", "texts": [ "перефразированный текст 1", ... ]}</small>
|-
! style="color:blue;width: 15%" |'''GET/qas/questionlist/answers'''
! colspan="2" style="width: 85%" |Отображает лог массовой обработки вопросов
|-
| colspan="2" style="width: 50%" |<small>Входные параметры отсутствуют</small>
| style="width: 50%" |<small>на выходе :</small>
<small>массив из объектов {</small>
 
<small>  error: number;</small>
 
<small>  question: string;</small>


* <small>'''id''' - идентификатор канала</small>
<small>  answer: string;</small>
|<small>{</small>
<small>  "error": 0,</small>


<small>  "message": "success"</small>
<small>  confidence: number | null;</small>


<small>}</small>
<small>}</small>
|
|-
|-
|<small>POST</small>
! style="color:green;width: 15%" |'''POST/qas/questionlist/start'''
! colspan="2" style="width: 85%" | Старт массовой обработки вопросов из файла
|-
| colspan="2" style="width: 50%" |
*<small>'''questions''' - файл с вопросами</small>
*<small>'''format''' - в json или в text файл с вопросами</small>
*<small>'''category''' — id категории документа. Если не указать категорию, метод вернет ответ на основе всех документов в базе данных. Допускается указание нескольких категорий через разделитель "|".</small>
*<small>'''channel''' — id канала</small>
*<small>'''useCache''' — использовать кешированные ответы</small>
<small>возможные варианты:</small>
 
<small>— "'''no'''" не использовать</small>
 
<small>- "'''all'''" использовать все</small>
 
<small>- "'''checked'''" использовать только проверенные</small>
*<small>'''useGPT''' — использовать генеративную сеть для поиска ответов в документах. возможные варианты "'''yes'''" "'''no'''"</small>
*<small>'''model''' - имя модели GPT, если кроме default используются другие модели</small>
*<small>'''template''' - ID шаблона запроса к LLM, необязательный параметр</small>
*<small>'''maxDocs''' - максимальное количество документов одной категории для формирования контекста при генерации ответа на вопрос, по умолчанию 1</small>
 
*<small>'''addAlias''' — добавлять похожие вопросы к синонимам, не создавая отдельного вопроса. возможные варианты "'''yes'''" "'''no'''"</small>
*<small>'''threshold''' - порог достоверности при обработке</small>
| style="width: 50%" |<small><nowiki>{error: 0 | 1, message: string}</nowiki></small>
|-
! style="color:blue;width: 15%" |'''GET/qas/questionlist/status'''
! colspan="2" style="width: 85%" |Статус массовой обработки вопросов
|-
| colspan="2" style="width: 50%" |<small>Входные параметры отсутствуют</small>
| style="width: 50%" |<small>{     error: string;</small>
 
<small>     status: 'started' | 'stopped';</small>
 
<small>     progress: number; }</small>
|-
! style="color:blue;width: 15%" |'''GET/qas/questionlist/stop'''
! colspan="2" style="width: 85%" |Остановка массовой обработки вопросов
|-
| colspan="2" style="width: 50%" |<small>Входные параметры отсутствуют</small>
| style="width: 50%" |<small><nowiki>{error: 0 | 1, message: string}</nowiki></small>
|-
! style="color:green;width: 15%" |'''POST/qas/mismatchsearcher/start'''
! colspan="2" |Старт поиска несоответствий
|-
| colspan="2" |
*<small>'''category''' — id категории документа. Если не указать категорию, метод вернет ответ на основе всех документов в базе данных. Допускается указание нескольких категорий через разделитель "|".</small>
*<small>'''model''' - имя модели GPT, если кроме default используются другие модели</small>
*<small>'''template''' - ID шаблона запроса к LLM для анализа на несоответствия, необязательный параметр</small>
*<small>'''asktemplate''' - ID шаблона запроса к LLM для генерации ответов по документу, необязательный параметр</small>
*<small>'''answers''' - тип вопросов, по которым осуществляется поиск несоответствий, необязательный параметр, по умолчанию «all»</small>
|<small><nowiki>{error: 0 | 1, message: string}</nowiki></small>
|-
! style="color:blue;width: 15%" |'''GET/qas/mismatchsearcher/status'''
! colspan="2" style="width: 85%" |Статус поиска несоответствий
|-
| colspan="2" style="width: 50%" |<small>Входные параметры отсутствуют</small>
| style="width: 50%" |<small>{     error: string;</small><small><nowiki>     status: 'started' | 'stopped';</nowiki></small>


<small>/qas/doc/add</small>
<small>     progress: number; }</small>
|<small>Предназначен для загрузки текстового документа</small>
|-
|
! style="color:blue;width: 15%" |'''GET/qas/mismatchsearcher/stop'''
* <small>'''text title''' - заголовок документа</small>
! colspan="2" style="width: 85%" |Остановка поиска несоответствий
* <small>'''text category''' - категория документа</small>
|-
* <small>'''text'''</small> - <small>файл документа</small>
| colspan="2" style="width: 50%" |<small>Входные параметры отсутствуют</small>
|
| style="width: 50%" |<small><nowiki>{error: 0 | 1, message: string}</nowiki></small>
<small>{</small>
|-
! style="color:blue;width: 15%" |'''GET/qas/mismatchsearcher/mismatches'''
| colspan="2" |Статус получения результатов
|-
| colspan="2" |<small>Входные параметры отсутствуют</small>
|<small>{"error": 0,"message": "success","mismatches": [{"question_id": "ID вопроса", "question": "вопрос", "category": "ID категории",</small> <small>"answer_id": "ID ответа", "answer": "ответ на вопрос {question}",</small> <small>"description": "результат поиска", "error" : string,</small> <small>"context": "фрагмент документа", "generatedText" : "Результат генерации"</small> <small>}, ... ]</small> <small>}</small>
|-
! style="color:blue;width: 15%" |'''GET/qas/questionmaker/start'''
| colspan="2" |Запуск генерации вопросов
|-
| colspan="2" |
*<small>'''category''' - ID категории, по которой будет происходить генерация вопросов</small>
*<small>'''doc''' - ID документа, по которому будет происходить генерация вопросов</small>
*<small>'''generateAnswers''' - флаг для генерации ответов вместе с вопросами '''[yse|no]''', по умолчанию '''«no»'''</small>
*<small>'''model''' - имя модели GPT, если кроме default используются другие модели</small>
* <small>'''template''' - ID шаблона запроса к LLM для анализа генерации вопросов, необязательный параметр</small>
|<small>{ "error": 0, "message": "success" }</small>
|-
! style="color:blue;width: 15%" |'''GET/qas/questionmaker/status'''
| colspan="2" |Статус генерации вопросов
|-
| colspan="2" |<small>Входные параметры отсутствуют</small>
|<small>{"error": string,</small> <small><nowiki>"status": 'started' | 'stopped',</nowiki></small> <small>"progress": 33.3</small> <small>}</small>
|-
! style="color:blue;width: 15%" |'''GET/qas/questionmaker/stop'''
! colspan="2" style="width: 85%" |Прервать генерацию.
|-
| colspan="2" style="width: 50%" |<small>Входные параметры отсутствуют</small>
| style="width: 50%" |<small>{"error": 0, "message": "success"}</small>
|-
! style="color:blue;width: 15%" |'''GET/qas/search'''
! colspan="2" style="width: 85%" |Поиск фрагментов содержащих ответ
|-
| colspan="2" style="width: 50%" |
*<small>'''text'''  — текст запроса</small>
 
*<small>'''category''' — категория (раздел) знаний. Допускается указание нескольких категорий через разделитель "|".</small>
* <small>'''maxDocs''' - максимальное количество документов одной категории для формирования контекста при поиске ответа на вопрос, по умолчанию 1</small>
*'''<small>similarityArea -</small>''' <small>определяет допустимую разницу между максимальной и минимальной релевантностью фрагментов при фильтрации результатов</small>
| style="width: 50%" |<small>{  "error": 0,</small>
 
<small>  "text": "</small>
 
<small>  Фрагмент 1:Здесь будет текст найденного фрагмента</small>
 
<small>  Фрагмент 2:Здесь будет текст найденного фрагмента",</small>
 
<small>  "fragments": [</small>
 
<small>    {      "id": "3a386b0a9e0e19efb0870685e1d0b484",</small>
 
<small>      "title": "Заголовок документа",</small>
 
<small>      "category": "Категория документа",</small>
 
<small>      "text": "Здесь будет текст найденного фрагмента"    },</small>
 
<small>    {      "id": "44fd73ea1ac63f32cf18d79c854dbfe2",</small>
 
<small>      "title": "Заголовок документа",</small>
 
<small>      "category": "Категория документа",</small>
 
<small>      "text": "Здесь будет текст найденного фрагмента"    }  ]  }</small>
|-
! style="color:green;width: 15%" |'''POST/qas/summarization_template/add'''
! colspan="2" style="width: 85%" |<small>Добавление шаблона протокола. В случае успеха метод вернет id шаблона, в случае неудачи — код ошибки.</small>
|-
| colspan="2" style="width: 50%" |
*<small>'''name''' — название шаблона</small>
 
* <small>'''options''' — json словарь с именами разделов и их описанием</small>
| style="width: 50%" |<small>{  "error": 0,  "id": "527be9f0-f773-4a3e-bd0b-81b40a061d0d"}</small>
|-
! style="color:red;width: 15%" |'''DELETEqas/summarization_template/delete/{id}'''
! colspan="2" style="width: 85%" |<small>Удаление шаблона.</small>
|-
| colspan="2" style="width: 50%" |
*<small>'''id''' — идентификатор шаблона</small>
| style="width: 50%" |{"error": INT, "message": DESCRIPTION}
|-
! style="color:blue;width: 15%" |'''GET/qas/summarization_template/get/{id}'''
! colspan="2" style="width: 85%" |<small>Получение json с шаблоном.</small>
|-
| colspan="2" style="width: 50%" |
*<small>'''id''' — идентификатор шаблона</small>
| style="width: 50%" |<small>На выходе словарь, основные элементы: data — словарь с шаблоном, остальные элементы этого уровня служебные. В data: id, name (идентификатор и наименование).И options — словарь с разделами шаблона.</small>
|-
! style="color:blue;width: 15%" |'''GET/qas/summarization_template/list'''
! colspan="2" style="width: 85%" |<small>Получение всех шаблонов.</small>
|-
| colspan="2" style="width: 50%" |<small>Входные параметры отсутствуют</small>
| style="width: 50%" |<small>На выходе словарь, основной элемент — templates, содержит список шаблонов (каждый шаблон как в выдаче метода GET /qas/summarization_template/get/{id}).</small>
|-
! style="color:green;width: 15%" |'''POST/qas/summarization_template/modify/{id}'''
! colspan="2" style="width: 85%" |<small>Изменение шаблона.</small>
|-
| colspan="2" style="width: 50%" |
*<small>'''data''' — словарь как в выдаче метода GET/qas/summarization_template/get/{id}</small>
 
*<small>'''id''' — идентификатор шаблона</small>
| style="width: 50%" |<small>{"error": INT, "message": DESCRIPTION}</small>
|-
! style="color:green;width: 15%" |'''POST/qas/summarize'''
! colspan="2" style="width: 85%" |<small>Построение протокола или краткого содержания совещания</small>
|-
| colspan="2" style="width: 50%" |
*<small>'''text''' - текст совещания</small>


<small>"error": 0,</small>
*<small>'''options''' — словарь с разделами протокола, где ключ — название раздела, значение - краткая инструкция к формированию раздела.</small>
*<small>'''model''' - какую GPT модель использовать для построения протокола, если кроме default используются другие модели</small>


<small>"message": "success",</small>
*<small>'''file''' — файл с текстом (текст, csv, pdf или текстовые офисные документы)</small>
*<small>'''template''' - ID шаблона запроса к LLM, необязательный параметр</small>
| style="width: 50%" |<small>{  "error": 0,</small>
<small>  "message": "success",</small>


<small>"id": "ebe2bc57551c2d17f892987d1f62306d"</small>
<small>  "summary": "здесь текст протокола"</small>


<small>}</small>
<small>}</small>
| <small>Добавляет документ в базу.</small>
|-
|-
|<small>DELETE</small>
! style="color:green;width: 15%" |'''POST/qas/replace'''
! colspan="2" |корректировка информации в тексте при помощи LLM
|-
| colspan="2" |
*<small>'''text''' - текст</small>
*<small>'''oldinfo''' — старая информация</small>
*<small>'''newinfo''' — новая информация</small>
*'''<small>model</small>''' <small>- какую модель использовать для генерации, если кроме default используются другие модели</small>
*<small>'''template''' - ID шаблона запроса к LLM, необязательный параметр</small>
|<small>{</small><small>  "error": 0,</small><small>  "message": "success",</small>
 
<small>  "text": "итоговый текст"</small>


<small>/qas/doc/delete/{id}</small>
<small>}</small>
|<small>Предназначен для удаления документа</small>
|-
|<small>id  - идентификатор документа</small>
! style="color:green;width: 15%" |'''POST/qas/replacementlist'''
|<small>{</small><small>"error": 0,</small><small>"message": "success"</small><small>}</small>
! colspan="2" |список всех фраз в документах и ответов в вопросах, подлежащих правке. <small>Векторно ищет все фрагменты по указанному тексту.</small>
| -
|-
| colspan="2" |
*<small>'''text''' - текст</small>
*<small>'''category''' — категория, в которой производится векторный поиск</small>
*<small>'''threshold''' — порог похожести, необязательный параметр, если не указан, берется из конфигурационного файла (fragments -> threshold)</small>
*<small>'''answers''' - тип вопросов, по которым осуществляется поиск для внесения правок, необязательный параметр, по умолчанию «all»</small>
|<small>[</small> <small>"error": 0,</small>
<small>"message": "success",</small>
<small>"docs": [],</small>
<small>"answers": []</small>
<small>]</small>
|-
! style="color:green;width: 15%" |'''POST/qas/prompt/add'''
! colspan="2" |Добавление шаблона запроса к LLM. <small>В случае успеха метод вернет id вопроса, в случае неудачи — код ошибки.</small>
|-
|-
|<small>GET</small>
| colspan="2" |
*<small>'''type'''  — тип шаблона</small>  <small>- chat - произвольный чат,</small> <small>- ask - запрос к документам,</small> <small>- cleandoc - очистка документа, форматирование либо другое преобразование,</small> <small>- similars_generator - генерация синонимичных которотких фраз,</small> <small>- paraphrase - перефразировка текста,</small> <small>- summarize - суммаризация текста (формирование краткой выдержки из текста),</small> <small>- question_generator - генерация вопросов по тексту,</small> <small>- replace - замена информации в тексте, mismatch - поиск несоответствий</small>


<small>/qas/doc/get/{id}</small>
*<small>'''name'''  — название шаблона</small>
|<small>Предназначен для выгрузки текста документа</small>
 
|<small>id - идентификатор документа</small>
*<small>'''prompt''' — текст шаблона</small>
|<small>{</small>
 
<small>  "error": 0,</small>
*<small>'''postprompt''' - текст шаблона постобработки результатов (нужен только для summarize)</small>
*<small>'''params''' - параметры запроса к LLM</small>"<small>max_tokens": 4096,</small>  <small>"top_k": 30,</small> <small>"top_p": 0.5,</small> <small>"temperature": 0.5,</small>  <small>"repeat_penalty": 1.3</small>
|<small>{</small><small>  "error": 0,</small>


<small>  "text": "Здесь будет полный текст документа"</small>
<small>  "id": "527be9f0-f773-4a3e-bd0b-81b40a061d0d"</small>


<small>}</small>
<small>}</small>
|
|-
|-
|<small>GET</small>
! style="color:red;width: 15%" |'''DELETE/qas/prompt/delete/{id}'''
! colspan="2" |Удаление шаблона.
|-
| colspan="2" |
*<small>'''id''' — идентификатор вопроса</small>
|<small>{"error": INT, "message": DESCRIPTION}</small>
|-
! style="color:blue;width: 15%" |'''GET/qas/prompt/get/{id}'''
! colspan="2" |Получение шаблона.
|-
| colspan="2" |
*<small>'''id''' — идентификатор вопроса</small>
|<small>{</small><small>  "error": 0,</small><small>  "prompt": {</small>
 
<small>    "id": "cleandoc",</small>
 
<small>    "type": "cleandoc",</small>
 
<small>    "isDefault": false,</small>
 
<small>    "name": "Чистка документа",</small>
 
<small>    "prompt": "Удали сноски, колонтитуры и мусорную информацию из текста ниже. Не удаляй ничего лишнего. Не добавляй ничего, только информация из текста. Выведи только конечный результат без отчета о результате.\n###Текст:\n{context}\n\n###Конечный результат:",</small>
 
<small>    "postprompt": "",</small>
 
<small>    "_modified": 1751475766.7460272,</small>
 
<small>    "_created": 1751475766.7460272,</small>
 
<small>    "_modified_date": "2025-07-02",</small>
 
<small>    "_created_date": "2025-07-02"</small>


<small>/qas/doc/list</small>
<small>  }</small>
|<small>Предназначен для получение списка имеющихся</small> <small>документов</small>
|<small>-</small>
|<small>{</small>
<small>  "error": 0,</small>


<small>  "docs": [</small>
<small>}</small>
|-
! style="color:blue;width: 15%" |'''GET/qas/prompt/list'''
! colspan="2" |Получение списка шаблонов.
|-
| colspan="2" |
|<small>{</small><small>  "error": 0,</small><small>  "prompts": [</small>


<small>    {</small>
<small>    {</small>


<small>      "id": "d4999cdee5ad1faf2cb3066ea1b5e96b",</small>
<small>      "id": "chat",</small>
 
<small>      "type": "chat",</small>
 
<small>      "isDefault": false,</small>


<small>      "title": "PVE. Установка сервисного пакета окружения",</small>
<small>      "name": "Чат",</small>


<small>      "category": "Техническая поддержка"</small>
<small>      "prompt": "Ты спокойный вежливый консультант.[\n\n###История переписки:\n{history}]\n\n###Вопрос: {question}\n###Ответ:",</small>


<small>    },</small>
<small>      "postprompt": "",</small>


<small>    {</small>
<small>      "_modified": 1751475766.7460272,</small>


<small>      "id": "759042575b965745b9d2af869bca1740",</small>
<small>      "_created": 1751475766.7460272,</small>


<small>      "title": "UPS. Руководство администратора",</small>
<small>      "_modified_date": "2025-07-02",</small>


<small>      "category": "Техническая поддержка"</small>
<small>      "_created_date": "2025-07-02"</small>


<small>    }</small>
<small>    }</small>
Строка 1675: Строка 2418:


<small>}</small>
<small>}</small>
|
|-
|-
|<small>POST</small>
! style="color:green;width: 15%" |'''POST/qas/prompt/modify/{id}'''
<small>/qas/doc/modify/{id}</small>
! colspan="2" |Модификация шаблона. Позволяет заменить как все параметры, так и отдельные.
|<small>Метод для обновления документа</small>
|-
|
| colspan="2" |
* <small>'''data''' - json c изменяемыми параметрами документа  {</small>
*<small>'''data''' — json c измененными параметрами:</small>
<small><code>{ "name": "новое имя" }</code></small>
*<small>'''id''' — идентификатор вопроса</small>
|<small>В случае успеха метод вернет статус выполнения операции (например, «success»), в случае неудачи — код ошибки.</small><small>{"error": INT, "message": DESCRIPTION}</small>
|}
 
 
====='''/ses: методы работы с роботом'''=====
 
 
{| class="wikitable" style="width: 110%"
|+''Описание методов API''
! colspan="3" |<small>для некоторых путей, где используется {robot_id} - это обращение к версии черновика, чтобы обращаться к продовой версии - нужен постфикс "_prod", для бэкапа "_backup"</small>
<small>актуально для методов</small>
 
<small>- получения данных робота  GET/ses/robot/get/{id}</small>
 
<small>- применение настроек робота GET/ses/robot/commit/{id}</small>
 
<small>- экспорт робота GET/ses/robot/export/{id}</small>
 
<small>- список скриптов GET/ses/robot/script/list/{robot}</small>


<small>  title: string,</small>
<small>- получение скрипта GET/ses/robot/script/get/{robot}/{id}</small>


<small>  category: string,</small>
<small>- список ЭД GET/ses/robot/data/list/{robot}</small>


<small>  text: string</small>
<small>- получение ЭД GET/ses/robot/data/get/{robot}/{id}</small>


<small>}</small>
<small>- список КТ GET/ses/robot/endpoint/list/{robot}</small>
 
<small>- получение КТ GET/ses/robot/endpoint/get/{robot}/{id}</small>


<small>параметр который не меняется может отсутствовать в json</small>
<small>- метода ask (отладчика) POST/ses/ask/{robot_id}</small>


* <small>'''id''' - идентификатор документа.</small>
<small>- данные сессии (отладчика) GET/ses/session/{robot_id}/{session_id}</small>
|<small>В случае успеха метод вернет статус выполнения операции (например, “success”), в случае неудачи - код ошибки.</small>
|-
<small>{"error": INT, "message": DESCRIPTION}</small>
! style="color:blue;width: 15%" |'''GET/ses/archive/audio/{uuid}'''
|
! colspan="2" style="width: 85%" |Получение аудио-файла из архива диалогов
|-
| colspan="2" style="width: 50%" |
*<small>'''uuid''' - идентификатор диалога</small>
| style="width: 50%" |<small>аудио-файл с расширением opus</small>
|-
! style="color:blue;width: 15%" |'''GET/ses/archive/dialog/{uuid}'''
! colspan="2" style="width: 85%" |Получение диалога из архива
|-
|-
|<small>POST</small>
| colspan="2" style="width: 50%" |
<small>/qas/question/add</small>
*<small>'''uuid''' - идентификатор диалога</small>
|<small>Метод для добавления вопроса</small>
| style="width: 50%" |<small>{ "error": 0,</small><small>  "message": "success",</small>
|
* <small>'''question''' - текст вопроса</small>


* <small>'''category''' - id категории к которой относится вопрос</small>
<small>  "dialog": [{"id": "...",                  "robot": "...",                "channel": "...",</small>  


* <small>'''answers''' - ответы в виде Json:</small>
<small>                 "unknown": true/false,        "closed": true/false,        "endpoint": "...",</small>  


<small>[ { "checked": true, "channel": "0", "answer": "ответ" } ]</small>
<small>                 "answered": true/false,   "models": [...],    "variables": {},   "current": {</small>


* <small>'''aliases''' - вопросы к которым подходят ответы из блока answers в виде json:</small>
<small>                         "id": "...",          "qas": "",          "category": "...",          "entry": [...],</small>  


<small>["вопрос","еще вопрос"]</small>
<small>                         "nearest": "...",    "missingRunData": [...],    "waitingRunData": "...",</small>
|<small>В случае успеха метод вернет id вопроса, в случае неудачи - код ошибки.</small>
 
<small>{</small>
<small>                         "answered": true/false,    "lastreply": "..."},</small>
 
<small>                 "request": {"datetime": "...",          "message": "",          "data": [...]},</small>
 
<small>                 "reply": {"answers": [{"messages": [...],   "voice": "...",</small>  
 
<small>                                     "interruptible": true/false,    "file": null}],</small>


<small>  "error": 0,</small>
<small><nowiki               "datetime": "...", "answered": true/false}}]}</nowiki></small>
|-
! style="color:blue;width: 15%" |'''GET/ses/archive/list'''
! colspan="2" style="width: 85%" |Получение списка диалогов из архива
|-
| colspan="2" style="width: 50%" |
*<small>'''uuid''' - идентификатор диалога</small>
*<small>'''startdate''' - начало временного интервала в формате date %Y-%m-%d %H:%M</small>
*<small>'''enddate''' - конец временного интервала в формате date %Y-%m-%d %H:%M</small>
*<small>'''phone''' - номер телефона</small>
*<small>'''variable''' - переменная в формате variable=value</small>
*<small>'''robot''' - идентификатор робота (id)</small>
*<small>'''text''' - фрагмент текста в любом сообщении</small>
*<small>'''data''' - id элемента данных</small>
*<small>'''channel''' - название канала (коннектора)</small>
| style="width: 50%" |<small>[{"uuid": "...", "datetime": "...","phone": "",</small><small> "channel": [...], "robot": ["..."]}]</small>
|-
! style="color:blue;width: 15%" |'''GET/ses/archive/waveform/{uuid}'''
! colspan="2" style="width: 85%" |Служебный метод для визуализации полученного из архива диалогов аудио-файла, содержит пики сигнала.
|-
| colspan="2" style="width: 50%" |
*<small>'''uuid''' - идентификатор диалога</small>
| style="width: 50%" |<small>[0.016,</small>


<small>  "id": "527be9f0-f773-4a3e-bd0b-81b40a061d0d"</small>
<small>0.015,</small>


<small>}</small>
<small>0.01</small><small>]</small>
|
|-
|-
|<small>DELETE</small>
! style="color:green;width: 15%" |'''POST/ses/ask/{robot_id}'''
<small>/qas/question/delete/{id}</small>
! colspan="2" style="width: 85%" |Получение ответа на запрос пользователя. <small>Метод для отладки робота</small>
|<small>Метод для удаления вопроса</small>
|<small>'''id''' - идентификатор вопроса</small>
|<small>В случае успеха метод вернет статус выполнения операции (например, “success”), в случае неудачи - код ошибки.</small>
<code><small>{"error": INT, "message": DESCRIPTION}</small></code>
|
|-
|-
|<small>GET</small>
| colspan="2" style="width: 50%" |
<small>/qas/question/get/{id}</small>
*<small>'''text''' - текст запроса</small>
|<small>Метод для получения вопроса вместе с ответами и синонимами вопроса</small>
 
|<small>'''id''' - идентификатор вопроса</small>
*<small>'''channel''' - id канала</small>
|<small>{</small>
 
<small>  "error": 0,</small>
*<small>'''connector''' - имя коннектора</small>
 
*<small>'''session''' - uuid сессии, если это не первый запрос в сессии</small>
 
*<small>'''tts''' - вернуть результат синтеза (1- вернуть, 0 - не выполнять синтез)</small>
 
*<small>'''variables''' - словарик с переменными {"переменная1":"значение","переменнаяN":"значение"}</small>
 
*<small>'''handler''' - python скрипт для изменения ответов метода под требования внешних систем, подробнее в следующем разделе. в поле имя файла без расширения.</small>


<small>  "answers": [</small>
*<small>'''restartClosed''' - перезагрузить сессию при её закрытии с новым id (1 - перезагрузить, 0 - не перезагружать)</small>


<small>    {</small>
*<small>'''audio''' - аудиофайл с запросом, текст запроса будет получен распознаванием audio</small>


<small>      "checked": true,</small>
*<small>'''document''' - документ для последующей обработки</small>


<small>      "channel": "0",</small>
*<small>'''robot_id''' - id робота</small>


<small>      "answer": "ответ"</small>
*<small>'''endpoint''' - id точки, в которую передать управление диалогом (необязательный параметр, используется для исходящих оповещений)</small>
| style="width: 50%" |<small>{  "error": 0,</small><small>  "question": "Вопрос",</small>


<small>    }</small>
<small>  "answer": [</small>


<small>  ],</small>
<small>    {   "messages": [</small>


<small>  "aliases": [</small>
<small>                   "ответ"      ],</small>


<small>    "вопрос",</small>
<small>           "voice": "",</small>


<small>    "синоним вопроса",</small>
<small>          "interruptible": true/false,</small>


<small>    "еще синоним вопроса"</small>
<small>"file": ""   }  ],</small>


<small>  ]</small>
<small>  "session": "",</small>


<small>}</small>
<small>"uuid": ""  }</small>
|
|-
! style="color:green;width: 15%" |'''POST/ses/robot/add'''
! colspan="2" style="width: 85%" |Создание нового робота. <small>На выходе id созданного робота или сообщение об ошибке</small>
|-
| colspan="2" style="width: 50%" |
*<small>'''name''' —  имя нового робота</small>
| style="width: 50%" |<small>{  "error": 0,</small><small>  "id": "2fd2f909-2069-4b20-a725-3a598c83f886"}</small>
|-
! style="color:green;width: 15%" |'''POST/ses/robot/apply/{id}'''
! colspan="2" style="width: 85%" | Применение робота. <small>Переводит черновик робота в статус prod. Если до этого был prod вариант —  становится backup.</small>
|-
| colspan="2" style="width: 50%" |
*<small>'''id''' —  идентификатор робота</small>
| style="width: 50%" |<small>{  "error": 0,</small><small>  "message": "success"}</small>
|-
|-
|<small>GET</small>
! style="color:green;width: 15%" |'''POST/ses/robot/cleardraft/{id}'''
<small>/qas/question/list</small>
! colspan="2" style="width: 85%" |Обнуление черновика рабочей версией робота
|<small>Метод для получения списка вопросов.</small>
| -
|<small>{</small>


<small>  "error": 0,</small>
|-
| colspan="2" style="width: 50%" |
*<small>'''id''' —  идентификатор робота</small>
| style="width: 50%" |<small>{  "error": 0,</small><small>  "message": "success"}</small>
|-
! style="color:green;width: 15%" |'''POST/ses/robot/commit/{id}'''
! colspan="2" style="width: 85%" |Применение текущих изменений настроек робота. <small>Применимо ко всем версиям (черновик, рабочая, резервная копия)</small>
|-
| colspan="2" style="width: 50%" |
*<small>'''id''' —  идентификатор робота</small>
| style="width: 50%" |<small>{  "error": 0,</small><small>  "message": "success"}</small>
|-
! style="color:green;width: 15%" |'''POST/ses/robot/data/add/{robot}'''
! colspan="2" style="width: 85%" |Добавление элемента данных
|-
| colspan="2" style="width: 50%" |
*<small>'''data''' —  json строка с параметрами элемента данных</small>


<small>  "questions": [</small>
*<small>'''robot''' —  идентификатор робота</small>
| style="width: 50%" |<small>{  "error": 0,</small><small>  "message": "success"}</small>
|-
! style="color:red;width: 15%" |'''DELETE/ses/robot/data/delete/{robot}/{id}'''
! colspan="2" style="width: 85%" |Удаление элемента данных
|-
| colspan="2" style="width: 50%" |
*<small>'''id''' —  идентификатор элемента данных</small>


<small>    {</small>
*<small>'''robot''' —  идентификатор робота</small>
| style="width: 50%" |<small>{  "error": 0,</small><small>  "message": "success"}</small>
|-
! style="color:blue;width: 15%" |'''GET/ses/robot/data/get/{robot}/{id}'''
! colspan="2" style="width: 85%" |Получение настроек элемента данных
|-
| colspan="2" style="width: 50%" |
*<small>'''id''' —  идентификатор элемента данных</small>  


<small>      "id": "77b42c9b-2075-4a5f-b6d9-a284bba7cf43",</small>
*<small>'''robot''' —  идентификатор робота</small>
| style="width: 50%" |<small>{ "error": 0,                "data": {</small><small>    "id": "id ЭД",         "name": "Имя ЭД",          "comment": "",</small>


<small>      "question": "вопрос",</small>
<small>    "type": "...",     "rtype": "report",     "model": "Имя модели",</small>


<small>      "category": "9580b3b7-34cb-4d0e-ba75-d17313ead16d"</small>
<small>    "param": "Ответ",        "script": "",              "weight": 3,</small>


<small>    },</small>
<small>    "slaveData": [],                 "getOnlyAsNearest": true/false,</small>


<small>    {</small>
<small>    "injectToMessage": true/false,        "longWaiting": true/false,</small>


<small>      "id": "d1836e5e-010e-4f3a-b306-813c3acb7efb",</small>
<small>    "dataWaiting": [],          "actions": {             "alone": {</small>


<small>      "question": "n-й второй вопрос",</small>
<small><nowiki      "default": [{"action": "say",   "type": "random",   "text": ["....."]}]}},</nowiki></small>


<small>      "category": "7d8a3415-cb09-4dad-a169-478ba15ade47"</small>
<small><nowiki>    "exceptions": {}}}</nowiki></small>
|-
! style="color:blue;width: 15%" |'''GET/ses/robot/data/list/{robot}'''
! colspan="2" style="width: 85%" |Получение списка элементов данных
|-
| colspan="2" style="width: 50%" |
*<small>'''robot''' —  идентификатор робота</small>
| style="width: 50%" |<small>[  {   "id": "3ebfe38b-95bf-4927-a662-17f6e5da22ea",</small>
<small>       "name": "pve", "type": "smc", "rtype": "report",</small>


<small>    }</small>
<small>        "weight": 3, "hasNearestAction": false } ]</small>
|-
! style="color:green;width: 15%" |'''POST/ses/robot/data/modify/{robot}/{id}'''
! colspan="2" style="width: 85%" |Изменение элемента данных. <small>Формат '''data''' как на выходе метода  '''GET/ses/robot/data/get/{robot}/{id}'''</small>
|-
| colspan="2" style="width: 50%" |
*<small>'''data''' —  json строка с параметрами элемента данных</small>


<small>  ]</small>
*<small>'''robot''' —  идентификатор робота</small>
*<small>'''id''' —  идентификатор элемента данных</small>
| style="width: 50%" |<small>{  "error": 0,</small><small>  "message": "success"}</small>
|-
! style="color:red;width: 15%" |'''DELETE/ses/robot/delete/{id}'''
! colspan="2" style="width: 85%" |Удаление всех версий робота
|-
| colspan="2" style="width: 50%" |
*<small>'''id''' —  идентификатор робота</small>
| style="width: 50%" |<small>{  "error": 0,</small><small>  "message": "success"}</small>
|-
! style="color:green;width: 15%" |'''POST/ses/robot/endpoint/add/{robot}'''
! colspan="2" style="width: 85%" | Создание конечной точки. <small>Формат '''data''' как на выходе метода '''GET/ses/robot/endpoint/get/{robot}/{id}'''</small>
|-
| colspan="2" style="width: 50%" |
*<small>'''data''' —  json строка с параметрами  конечной точки</small>


<small>}</small>
*<small>'''robot''' —  идентификатор робота</small>
|
| style="width: 50%" |<small>{  "error": 0,</small><small>  "id": "8576593b-b0d8-4b03-a623-74f3132356ea"}</small>
|-
! style="color:red;width: 15%" |'''DELETE/ses/robot/endpoint/delete/{robot}/{id}'''
! colspan="2" style="width: 85%" |Удаление конечной точки.
|-
| colspan="2" style="width: 50%" |
*<small>'''robot''' —  идентификатор робота</small>
*<small>'''id''' —  идентификатор  конечной точки</small>
| style="width: 50%" |<small>{  "error": 0,</small><small>  "message": "success"}</small>
|-
! style="color:blue;width: 15%" |'''GET/ses/robot/endpoint/get/{robot}/{id}'''
! colspan="2" style="width: 85%" |Получение настроек конечной точки
|-
|-
|<small>POST</small>
| colspan="2" style="width: 50%" |
<small>/qas/question/modify/{id}</small>
*<small>'''robot''' —  идентификатор робота</small>
|<small>Метод для модификации вопроса. Позволяет заменить как все параметры так и отдельные</small>
*<small>'''id''' —  идентификатор  конечной точки</small>
|
| style="width: 50%" |<small>{ "error": 0,  "data": {</small><small>    "id": "...", "name": "...", "comment": "",</small>
* <small>'''data''' - json c измененными параметрами, пример полного:</small>


<small>{   "answers": [</small>
<small>    "entryType": "conditions",</small>


<small>    {</small>
<small>    "entry": [{ "conditions": [{ "type": "...", "depth": 5, "id": "...", "operation": "...", "value": ""}], "run": []}],</small>
 
<small>    "run": [],</small>
 
<small>    "actions": { "default": [{ "action": "...", "voice": "", "type": "...",  "interruptible": true/false}]},</small>
 
<small><nowiki>    "type": "report"}}</nowiki></small>
|-
! style="color:blue;width: 15%" |'''GET/ses/robot/endpoint/list/{robot}'''
! colspan="2" style="width: 85%" |Получение списка конечных точек робота
|-
| colspan="2" style="width: 50%" |
*<small>'''robot''' —  идентификатор робота</small>
| style="width: 50%" |<small>[{ "error": 0,  "data": {</small><small>    "id": "...", "name": "точка 1", "comment": "",</small>
 
<small>    "entryType": "conditions",</small>


<small>      "checked": true,</small>
<small>    "entry": [{ "conditions": [{ "type": "...", "depth": 5, "id": "...", "operation": "...", "value": ""}], "run": []}],</small>


<small>      "channel": "0",</small>
<small>    "run": [],</small>


<small>      "answer": "новый ответ"</small>
<small>    "actions": { "default": [{ "action": "...", "voice": "....", "type": "...",  "interruptible": true/false}]},</small>


<small>    }</small>
<small><nowiki>    "type": "report"}}]</nowiki></small>
|-
! style="color:green;width: 15%" |'''POST/ses/robot/endpoint/modify/{robot}/{id}'''
! colspan="2" style="width: 85%" |Изменение конечной точки. <small>Формат '''data''' как на выходе метода '''GET/ses/robot/endpoint/get/{robot}/{id}'''</small>
|-
| colspan="2" style="width: 50%" |
*<small>'''data''' —  json строка с параметрами элемента данных</small>
*<small>'''id''' —  идентификатор элемента данных</small>
*<small>'''robot''' —  идентификатор робота</small>
| style="width: 50%" |<small>{  "error": 0,</small><small>  "message": "success"}</small>
|-
! style="color:blue;width: 15%" |'''GET/ses/robot/export/{id}'''
! colspan="2" style="width: 85%" |Выгрузка робота в архив
|-
| colspan="2" style="width: 50%" |
*<small>'''id''' —  идентификатор робота</small>
| style="width: 50%" |<small>zip файл с именем = идентификатор робота</small>
|-
! style="color:blue;width: 15%" |'''GET/ses/robot/files/download/{robot}/{id}'''
! colspan="2" style="width: 85%" |Получение файла.
|-
| colspan="2" style="width: 50%" |
*<small>'''robot''' - идентификатор робота</small>
*<small>'''id''' - идентификатор файла</small>
| style="width: 50%" |<small>файл</small>
|-
! style="color:green;width: 15%" |'''POST/ses/robot/files/upload/{robot}'''
! colspan="2" style="width: 85%" |Отправка файла.
|-
| colspan="2" style="width: 50%" |
*<small>'''robot''' - идентификатор робота</small>
*<small>'''file''' - файл</small>
| style="width: 50%" |<small>{"error": 0,  "message": "success",  "id": "Id файла"}</small>
|-
! style="color:blue;width: 15%" |'''GET/ses/robot/get/{id}'''
! colspan="2" style="width: 85%" | Выгрузка основных настроек робота
|-
| colspan="2" style="width: 50%" |
*<small>'''id''' —  идентификатор робота</small>
| style="width: 50%" |<small>{  "error": 0,</small><small>  "data": {</small>


<small>  ],</small>
<small>    "id": "9fd7f6f1-2cac-4f0f-a121-75c40f2b5e78",</small>


<small>"question":"новый вопрос",</small>
<small>    "name": "test",</small><small>    "description": "",</small><small>    "voice": "",</small>


<small>"category": "a3801cc0-f8e5-4f3b-bb10-e42148cd772b",</small>
<small>    "session": {      "lifetime": 600    },</small>


<small>  "aliases": [</small>
<small>    "models": {},</small><small>    "servicedata": {},</small>


<small>    "новый вопрос",</small>
<small>    "exceptions": {},</small><small>    "actions": {},</small>


<small>    "синоним",</small>
<small>    "holidays": [],</small><small>    "timeintervals": {</small>


<small>    "еще синоним"</small>
<small>      "name": {</small><small>        "weekdays": [ 1, 2, 3, 4, 5, 6,  7  ],</small>


<small>  ]</small>
<small>        "dates": [  0,  1,  2,   3, 4,  5, 6,  7,  8,  9, 10,  11, 12,13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31],</small>


<small>}</small>
<small>"months": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ],</small>


* <small>'''id''' - идентификатор вопроса</small>
<small><nowiki>"days": "all", "intervals": [ [ 0,  1440 ] ] }}}}</nowiki></small>
|<small>В случае успеха метод вернет статус выполнения операции (например, “success”), в случае неудачи - код ошибки.</small>
|-
<small>{"error": INT, "message": DESCRIPTION}</small>
! style="color:green;width: 15%" |'''POST/ses/robot/import/{id}'''
|
! colspan="2" style="width: 85%" |Загрузка архива робота в черновик существующего робота
|-
| colspan="2" style="width: 50%" |
*<small>'''zip —'''  файл с архивом робота</small>
*<small>'''id''' —  идентификатор робота</small>
| style="width: 50%" |<small>{  "error": 0,</small><small>  "message": "success"}</small>
|-
! style="color:blue;width: 15%" |'''GET/ses/robot/list'''
! colspan="2" style="width: 85%" |Получение списка роботов
|-
|-
|<small>GET</small>
| colspan="2" style="width: 50%" |<small>Входные параметры отсутствуют</small>
| style="width: 50%" |<small>[  {  "id": "9fd7f6f1-2cac-4f0f-a121-75c40f2b5e78",</small><small>    "name": "test",</small>
 
<small>    "hasProd": true,</small>


<small>/qas/questionmaker/start</small>
<small>    "hasBackup": true  } ]</small>
|<small>Запуск генерации вопросов для кэша.</small>
|
* '''category''' - категория для которой выполнится генерация вопросов
|<small>{"error": 0, "message": "success" }</small>
|<small>По каждому документу генерируются по 5 вопросов на фрагмент. Количество фрагментов зависят от размера документа и настройки размера контекста из конфигурационного файла. Если вопрос сильно похож на существующий - новый не создается, а добавляется к существующему в aliases</small>
|-
|-
|<small>GET</small>
! style="color:green;width: 15%" |'''POST/ses/robot/modify/{id}'''
! colspan="2" style="width: 85%" |Изменение основных настроек робота. <small>Формат '''data''' как в ответе метода '''GET/ses/robot/get/{id}'''</small>
|-
| colspan="2" style="width: 50%" |
*<small>'''data''' —  json строка с новыми настройками робота</small>
*<small>'''id''' —  идентификатор робота</small>
| style="width: 50%" |<small>{  "error": 0,</small><small>  "message": "success"}</small>
|-
! style="color:green;width: 15%" |'''POST/ses/robot/restore/{id}'''
! colspan="2" style="width: 85%" |Откат рабочей версии из бэкапа. <small>Резервная копия становится рабочей, и удаляется, а черновик остается без изменений</small>
|-
| colspan="2" style="width: 50%" |
*<small>'''id''' —  идентификатор робота</small>
| style="width: 50%" |<small>{  "error": 0,</small><small>  "message": "success"}</small>
|-
! style="color:green;width: 15%" |'''POST/ses/robot/script/add/{robot}'''
! colspan="2" style="width: 85%" |Добавление нового скрипта. <small>Формат '''data''' как в ответе метода '''GET/ses/robot/script/get/{robot}/{id}'''</small>
|-
| colspan="2" style="width: 50%" |
*<small>'''data''' —  json строка с параметрами скрипта</small>
*<small>'''robot''' —  идентификатор робота</small>
| style="width: 50%" |<small>{  "error": 0,</small><small>  "message": "success"}</small>
|-
! style="color:red;width: 15%" |'''DELETE/ses/robot/script/delete/{robot}/{id}'''
! colspan="2" style="width: 85%" |Удаление скрипта
|-
| colspan="2" style="width: 50%" |
*<small>'''robot''' —  идентификатор робота</small>
*<small>'''id''' —  идентификатор  скрипта</small>
| style="width: 50%" |<small>{  "error": 0,</small><small>  "message": "success"}</small>
|-
! style="color:blue;width: 15%" |'''GET/ses/robot/script/get/{robot}/{id}'''
! colspan="2" style="width: 85%" |Получение текста скрипита
|-
| colspan="2" style="width: 50%" |
*<small>'''robot''' —  идентификатор робота</small>
*<small>'''id''' —  идентификатор  скрипта</small>
| style="width: 50%" |<small>{  "error": 0,</small><small>  "data": {</small>
 
<small>    "id": "6a9f91b6-9634-4079-ac2b-60a944922c61",</small>


<small>/qas/questionmaker/status</small>
<small>"type": "Тип скрипта",</small>
|<small>Проверка состояния генерации</small>
| -
|{
  "error": "",


  "status": "stopped",
<small>    "name": "Наименование скрипта",</small>


  "progress": 0
<small>    "code": "Текст скрипта"  }</small>


}
<small>}</small>
|<small>Статусы''': started''', '''stopped.'''</small>  
|-
<small>Если были ошибки поле ответа '''error''' будет содержать код ошибки</small>
! style="color:blue;width: 15%" |'''GET/ses/robot/script/list/{robot}'''
! colspan="2" style="width: 85%" |Получение списка скриптов
|-
|-
|<small>GET</small>
| colspan="2" style="width: 50%" |
*<small>'''id''' —  идентификатор робота</small>
| style="width: 50%" |<small>[  {    "id": "9b9d83b7-d5c3-49e6-9bd4-a123a9047939",</small><small>    "name": "наименование1",</small>


<small>/qas/questionmaker/stop</small>
<small>   "type": "Тип скрипта"},</small>
|<small>Прервать генерацию.</small>
| -
|<small>{"error": 0, "message": "success"}</small>
|
|-
|<small>GET</small><small>/qas/search</small>
|<small>Предназначен для поиска фрагментов содержащих ответ</small>
|
* <small>'''text'''  - текст запроса</small>


<small>  {    "id": "48b508ba-a32b-4ada-bcc3-66ce26d81c6a",</small>


<small>    "name": "наименование2",</small>


* <small>'''category''' - категория (раздел) знаний</small>
<small>    "type": "Тип скрипта"}]</small>
|<small>{</small>
|-
<small>  "error": 0,</small>
! style="color:green;width: 15%" |'''POST/ses/robot/script/modify/{robot}/{id}'''
! colspan="2" style="width: 85%" |Изменение скрипта.<small>Формат '''data''' как в ответе метода '''GET/ses/robot/script/get/{robot}/{id}'''</small>
|-
| colspan="2" style="width: 50%" |
*<small>'''data''' —  json строка с параметрами элемента данных</small>
*<small>'''id''' —  идентификатор скрипта</small>
*<small>'''robot''' —  идентификатор робота</small>
| style="width: 50%" |<small>{  "error": 0,</small><small>  "message": "success"}</small>
|-
! style="color:green;width: 15%" |'''POST/ses/robot/script/test/{robot}/{id}'''
! colspan="2" style="width: 85%" |Тестирование скрипта. <small>Формат '''data''' как в ответе метода '''GET/ses/session/{robot_id}/{session_id}'''</small>
|-
| colspan="2" style="width: 50%" |
*<small>'''data''' - json строка с параметрами сессии</small>
*<small>'''id''' - идентификатор скрипта</small>
*<small>'''robot''' - идентификатор робота</small>
| style="width: 50%" |<small><nowiki>{"error": 0, "message": "success", "result": {.....}, "variables": {}}</nowiki></small>
|-
! style="color:blue;width: 15%" |'''POST/ses/robot/userdata/data/add/{robot}/{structure}'''
! colspan="2" style="width: 85%" |Добавление записи в пользовательский справочник.
|-
| colspan="2" style="width: 50%" |
*<small>'''data''' - json строка в формате <code>{"колонка 1": "значение 1","колонка n":"значение n"}</code></small>
*<small>'''robot''' - идентификатор робота (id)</small>
*<small>'''structure''' - идентификатор пользовательского справочника</small>
| style="width: 50%" |<small>{"error": 0,  "id": "id записи"}</small>
|-
! style="color:red;width: 15%" |'''DELETE/ses/robot/userdata/data/delete/{robot}/{structure}/{id}'''
! colspan="2" style="width: 85%" |Удаление записи из пользовательского справочника.
|-
| colspan="2" style="width: 50%" |
*<small>'''robot''' - идентификатор робота (id)</small>
*<small>'''structure''' - идентификатор пользовательского справочника</small>
*<small>'''id''' - идентификатор записи (id)</small>
| style="width: 50%" |<small>{"error": 0,  "message": "success"}</small>
|-
! style="color:blue;width: 15%" |'''GET/ses/robot/userdata/data/list/{robot}/{structure}'''
! colspan="2" style="width: 85%" |Получение данных из пользовательского справочника.
|-
| colspan="2" style="width: 50%" |
*<small>'''robot''' - идентификатор робота (id)</small>
*<small>'''structure''' - идентификатор пользовательского справочника</small>
| style="width: 50%" |<small>[{  "колонка 1": "значение 1",</small>  <small> "колонка n": "значение n",</small>  <small> "id": "id записи"}]</small>
|-
! style="color:green;width: 15%" |'''POST/ses/robot/userdata/data/modify/{robot}/{structure}'''
! colspan="2" style="width: 85%" | Массовое изменение данных в пользовательском справочнике.
|-
| colspan="2" style="width: 50%" |
*<small>'''list''' - json строка в формате <code>[{"колонка 1": "значение 1","колонка n": "значение n", "id": "id строки"}]</code></small>
*<small>'''robot''' - идентификатор робота (id)</small>
*<small>'''structure''' - идентификатор пользовательского справочника</small>
| style="width: 50%" |<small>{"error": 0,  "message": "success"}</small>
|-
! style="color:green;width: 15%" |'''POST/ses/robot/userdata/data/modify/{robot}/{structure}/{id}'''
! colspan="2" style="width: 85%" |Изменение одной записи пользовательского справочника.
|-
| colspan="2" style="width: 50%" |
*<small>'''data''' - json строка в формате <code>{"колонка 1": "значение 1","колонка n":"значение n"}</code></small>
*<small>'''robot''' - идентификатор робота (id)</small>
*<small>'''structure''' - идентификатор пользовательского справочника</small>
*<small>'''id''' - идентификатор записи (id)</small>
| style="width: 50%" |<small>{"error": 0,  "message": "success"}</small>
|-
! style="color:green;width: 15%" |'''POST/ses/robot/userdata/data/put/{robot}/{structure}'''
! colspan="2" style="width: 85%" |Добавление данных с заменой в пользовательском справочнике.
|-
| colspan="2" style="width: 50%" |
*<small>'''list''' - json строка в формате <code>[{"колонка 1": "значение 1","колонка n": "значение n", "id": "id строки"}]</code> Поле "id" опционально, при его добавлении данные в строке будут заменены.</small>
*<small>'''replace''' - замена всех данных в справочнике новыми данными. Возможные значения: yes/no. По-умолчанию - yes.</small>
*<small>'''robot''' - идентификатор робота (id)</small>
*<small>'''structure''' - идентификатор пользовательского справочника</small>
| style="width: 50%" |<small>{"error": 0,  "message": "success"}</small>
|-
! style="color:green;width: 15%" |'''POST/ses/robot/userdata/structure/add/{robot}'''
! colspan="2" style="width: 85%" |Добавление пользовательского справочника.
|-
| colspan="2" style="width: 50%" |
*<small>'''data''' - json строка в формате <code><nowiki>{"id": "id справочника", "name": "справочник", "fields": {"колонка 1": "значение по умолчанию","колонка n":"значение по умолчанию"}}.</nowiki></code> Поле "id" опционально.</small>
*<small>'''robot''' - идентификатор робота (id)</small>
| style="width: 50%" |<small>{"error": 0,  "id": "id справочника"}</small>
|-
! style="color:red;width: 15%" |'''DELETE/ses/robot/userdata/structure/delete/{robot}/{id}'''
! colspan="2" style="width: 85%" |Удаление пользовательского справочника.
|-
| colspan="2" style="width: 50%" |
*<small>'''robot''' - идентификатор робота (id)</small>
*<small>'''id''' - идентификатор пользовательского справочника</small>
| style="width: 50%" |<small>{"error": 0,  "message": "success"}</small>
|-
! style="color:blue;width: 15%" |'''GET/ses/robot/userdata/structure/list/{robot}'''
! colspan="2" style="width: 85%" |Получение списка пользовательских справочников.
|-
| colspan="2" style="width: 50%" |
*<small>'''robot''' - идентификатор робота (id)</small>
| style="width: 50%" |<small><nowiki>[{"id": "id справочника", "name": "справочник", "fields": {"колонка1": "значение по умолчанию"}}]</nowiki></small>
|-
! style="color:green;width: 15%" |'''POST/ses/robot/userdata/structure/modify/{robot}/{id}'''
! colspan="2" style="width: 85%" |Модификация структуры пользовательского справочника.
|-
| colspan="2" style="width: 50%" |
*<small>'''data''' -  json строка в формате <code><nowiki>{"name": "справочник", "fields": {"колонка 1": "значение по умолчанию","колонка n":"значение по умолчанию"}}.</nowiki></code></small>
*<small>'''robot''' - идентификатор робота (id)</small>
*<small>'''id''' - идентификатор пользовательского справочника</small>
| style="width: 50%" |<small>{"error": 0,  "message": "success"}</small>
|-
! style="color:blue;width: 15%" |'''GET/ses/session/{robot_id}/{session_id}'''
! colspan="2" style="width: 85%" |Выдает параметры сессии. <small>Для отображения на боковой панели тестирования в UPS. Основные блоки результата:</small>
|-
| colspan="2" style="width: 50%" |
*<small>'''robot_id''' —  id робота</small>


<small>  "text": "</small>
*<small>'''session_id''' —  id незакрытой сессии</small>
| style="width: 50%" |<small>{ "started": "",  "modified": "",</small>


<small>  Фрагмент 1:Здесь будет текст найденного фрагмента</small>
<small>  "robot": "",</small>


<small>  Фрагмент 2:Здесь будет текст найденного фрагмента",</small>
<small>  "session": "",</small>


<small>  "fragments": [</small>
<small>  "channel": "",</small>


<small>    {</small>
<small>  "connector": "",</small>


<small>      "id": "3a386b0a9e0e19efb0870685e1d0b484",</small>
<small>  "unknown": true/false,</small>


<small>      "title": "Заголовок документа",</small>
<small>  "current": {"id": "", "qas": "", "answered": true/false, "category": "",</small>


<small>      "category": "Категория документа",</small>
<small>              "nearest": "",    "entry": [.....],    "missingRunData": [],</small>


<small>      "text": "Здесь будет текст найденного фрагмента"</small>
<small>              "passedRunData": [.....],       "waitingRunData": null,</small>


<small>    },</small>
<small>              "border": int,    "preborder": int,    "lastreply": ""},</small>


<small>    {</small>
<small>  "models": [.....],</small>


<small>      "id": "44fd73ea1ac63f32cf18d79c854dbfe2",</small>
<small>  "scripts": [.....],</small>


<small>      "title": "Заголовок документа",</small>
<small><nowiki>  "data": [{"request": {.....}, "reply": {.....}}],</nowiki></small>


<small>      "category": "Категория документа",</small>
<small>  "timers": [],</small>


<small>      "text": "Здесь будет текст найденного фрагмента"</small>
<small>  "variables": {},</small>


<small>    }</small>
<small>  "error": "",</small>


<small>  ]</small>
<small>  "events": {.....},</small>


<small>}</small>
<small>  "closed": ""  }</small>
| -
|-
! style="color:blue;width: 15%" |'''GET/ses/widget/config'''
! colspan="3" style="width: 85%" |Выдает параметры виджета для web канала по запросу js скрипта
|-
| colspan="2" style="width: 50%" |
*<small>'''token''' —  уникальный код виджета, создается при внедрении</small>
| colspan="2" style="width: 50%" |<small>Состав конфига канала, для передачи виджету. Подробней в [https://wiki.connect2ai.net/index.php/SES._%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B0#%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_%D0%B2%D0%B8%D0%B4%D0%B6%D0%B5%D1%82%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B0%D0%B9%D1%82%D0%B0 Руководстве администратора]</small>
|-
! style="color:blue;width: 15%" |'''GET/ses/widget/js'''
! colspan="3" style="width: 85%" |Выдает код js скрипта виджета для web-канала
|-
| colspan="2" style="width: 50%" |<small>Входные параметры отсутствуют</small>
| colspan="2" style="width: 50%" |<small>Код скрипта</small>
|}
|}


===== '''/transcription: методы работы со стенографией''' =====
====='''/res: методы работы с сервисом отчетов'''=====
{| class="wikitable mw-collapsible"
 
!<small>Метод</small>
 
!<small>Описание</small>
{| class="wikitable" style="width: 110%"
!<small>Входные параметры</small>
|+''Описание методов API''
!<small>Ответ</small>
! style="color:blue;width: 15%" |'''GET/res/dashboards'''
!<small>Пояснения</small>
! colspan="3" style="width: 85%" |Получить список рабочих столов kibana с наборами отчетов
|-
|-
|<small>GET</small>
| colspan="2" style="width: 50%" |<small>Входные параметры отсутствуют</small>
<small>/transcription/audio/{id}</small>
| colspan="2" style="width: 50%" |<small>{  "error": 0,  "message": "success",</small>
|<small>Предназначен для получения аудиофайла по id стенограммы</small>
 
|<small>taskID - идентификатор стенограммы</small>
<small>  "dashboards": {</small>
|<small>wav файл сохраненной стенограммы</small>
|<small>Идентификатор нужной стенограммы можно получить методом</small>
<small>"GET /transcription/list"</small>
|-
|<small>POST</small>
<small>/transcription/create</small>
|<small>Предназначен для создания стенограммы из завершенного задания в очереди распознавания</small>
|<small>taskID - идентификатор задания из очереди</small>
|<small>{</small>


<small>"error": 0,</small>
<small>"Наименование1": "https://........",</small>


<small>"message": "success",</small>
<small><nowiki>"Наименование2": "https://........."  }}</nowiki></small>
|}


<small>"id": "74721a3b-9055-4650-9afb-de4d103cafc7"</small>
====='''/transcription: методы работы со стенографией'''=====


<small>}</small>
{| class="wikitable" style="width: 110%"
|<small>В ответ придет id созданной стенограммы</small>  
|+
! style="color:blue;width: 15%" |'''GET/transcription/audio/{id}'''
! colspan="3" style="width: 85%" | Получить аудиофайл по id стенограммы. <small>Идентификатор нужной стенограммы можно получить методом</small>
<small>"GET /transcription/list"</small>
|-
|-
|<small>DELETE</small>
| colspan="2" style="width: 50%" |
<small>/transcription/delete/{id}</small>
*<small>'''id''' — идентификатор стенограммы</small>
|<small>Предназначен для удаления стенограммы</small>
| colspan="2" style="width: 50%" |<small>wav файл сохраненной стенограммы</small>
|<small>id - идентификатор стенограммы</small>
|<small>{</small><small>"error": 0,</small><small>"message": "success"</small><small>}</small>
|
|-
|-
|<small>GET</small>
! style="color:green;width: 15%" |'''POST/transcription/create'''
<small>/transcription/get/{id}</small>
! colspan="3" style="width: 85%" |Создание стенограммы из завершенного задания в очереди распознавания. <small>В ответ придет id созданной стенограммы</small>
|<small>Предназначен для получения стенограммы</small>
|<small>id - идентификатор стенограммы</small>
|<small>стенограмма в json формате</small>
|<small>Используется для отображения стенограммы в веб интерфейсе</small>
|-
|-
|<small>GET</small>
| colspan="2" style="width: 50%" |
<small>/transcription/list</small>
*<small>'''taskID''' — идентификатор задания из очереди</small>
|<small>Предназначен для получения списка сохраненных стенограмм</small>
| <small>-</small>
|<small>[</small>
<small>{</small>


<small>"id": "926e8d25-4275-4a78-906b-a1109cdacbea",</small>
*<small>'''name''' —  имя создаваемой стенограммы</small>
| colspan="2" style="width: 50%" |<small>{"error": 0,</small>


<small>"name": "название",</small>
<small>"message": "success",</small>
 
<small>"id": "74721a3b-9055-4650-9afb-de4d103cafc7"}</small>
|-
! style="color:red;width: 15%" |'''DELETE/transcription/delete/{id}'''
! colspan="3" style="width: 85%" |Удаление стенограммы
|-
| colspan="2" style="width: 50%" |
*<small>'''id''' — идентификатор стенограммы</small>
| colspan="2" style="width: 50%" |<small>{"error": 0,"message": "success"}</small>
|-
! style="color:blue;width: 15%" |'''GET/transcription/get/{id}'''
! colspan="3" style="width: 85%" |Получение стенограммы. <small>Используется для отображения стенограммы в веб интерфейсе</small>
|-
| colspan="2" style="width: 50%" |
*<small>'''id''' — идентификатор стенограммы</small>
| colspan="2" style="width: 50%" |<small>стенограмма в json формате</small>
|-
! style="color:blue;width: 15%" |'''GET/transcription/list'''
! colspan="3" style="width: 85%" |Получение списка сохраненных стенограмм
|-
| colspan="2" style="width: 50%" |<small>Входные параметры отсутствуют</small>
| colspan="2" style="width: 50%" |[ {  "id": "926e8d25-4275-4a78-906b-a1109cdacbea",


<small>"model": "big",</small>
"name": "название",


<small>"created": "2024-03-29 12:37:42",</small>
"model": "big",


<small>"modified": "2024-04-24 16:09:09",</small>
"created": "2024-03-29 12:37:42",


<small>"user": "0",</small>
"modified": "2024-04-24 16:09:09",


<small>"dataset": "0"</small>
"user": "0",


<small>}</small>
"dataset": "0" }, .... ]
|-
! style="color:green;width: 15%" |'''POST/transcription/save/{id}'''
! colspan="3" style="width: 85%" |Сохранение стенограмы. <small>Используется для сохранения изменений по нажатию кнопки «Сохранить».</small>
|-
| colspan="2" style="width: 50%" |
*<small>'''data''' —  стенограмма в json формате</small>


<small>]</small>
*<small>'''id''' стенограммы</small>
| <small>-</small>
| colspan="2" style="width: 50%" |<small>{"error": 0,"message": "success"}</small>
|-
|-
|<small>POST</small>
! style="color:blue;width: 15%" |'''GET/transcription/waveform/{id}'''
<small>/transcription/save/{id}</small>
! colspan="3" style="width: 85%" |Служебный метод для отображения аудио в графическом виде, <small>ответ содержит пики сигнала</small>
|<small>Предназначен для сохранения  стенограмы</small>
|<small>стенограмма в json формате</small>
<small>id стенограммы</small>
| <small>-</small>
| <small>Используется для сохранения изменений по нажатию кнопки "сохранить"</small>
|-
|-
|<small>GET</small>
| colspan="2" style="width: 50%" |
<small>/transcription/waveform/{id}</small>
*<small>'''id''' стенограммы</small>
|<small>Служебный метод для отображения аудио в графическом виде, содержит пики сигнала</small>
| colspan="2" style="width: 50%" |<small>{ "error": 0,</small>
|<small>id - идентификатор стенограммы</small>
 
|<small>{</small>
<small>"waveform": [</small>
  <<"error": 0,
 
  "waveform": [
<small>   0.016,</small>
    0.016,
 
  ..........
<small>  ..........</small>
  ..........
 
    0.015,
<small>  ..........</small>
    0.01
 
  ]
<small>   0.015,</small>
<small>}</small>
 
|<small>-</small>
<small>   0.01 ] }</small>
|}
|}

Текущая версия от 12:47, 29 октября 2025

Описание часто используемых параметров
Параметр Тип Описание
servicetype запрос Тип сервиса. Возможные значения: spr, smc, see, sbs, tts.
servertype запрос Тип группы серверов. Возможные значения: trainer (серверы обучения), cluster (рабочие серверы).
model запрос Название модели.
modeltype запрос Тип модели. Возможные значения: future — планируемая/черновик, current — текущая/рабочая, previous — архивная.
error ответ Флаг ошибки.
message ответ Информационное сообщение.


"/external modules" методы внешних модулей

В этом разделе будут методы соответствующим образом оформленных внешних модулей

/auth: методы авторизации
POST/auth/access Получение токенов доступа. Токен доступа определяет, какие из методов будут доступны конкретному пользователю. Формируется на основании роли. Дополнительный входной параметр во всех методах, кроме перечисленных в разделе «nopassword» конфигурационного файла. Время действия токена определяется параметром auth.accessLifeTime конфигурационного файла.
  • username — логин
  • password — пароль
{

"x-access-token": "XXXXXXXXXXXXXXXXXXXX",

"x-refresh-token": "XXXXXXXXXXXXXXXXXXXX"

}

POST/auth/dataset/add Добавление dataset (набора данных). Dataset (набор данных) используется для ограничения доступа к данным. В ответе метод вернет id созданного набора данных.
  • data — json строка вида: {    "name": "название нового набора"    }
{

"error": 0

"message": "success",

"dataset_id": "XXXXXXXXXXXXX"

}

DELETE/auth/dataset/delete/{id} Удаление dataset (набора данных).
  • id — идентификатор набора данных
{

"error": 0,

"message": "success"

}

POST/auth/dataset/modify/{id} Переименование dataset (набора данных). Метод меняет все параметры набора данных, но на данный момент времени у набора данных, кроме id, только один параметр — наименование.
  • id — идентификатор набора данных
  • data — JSON c новыми параметрами
{

"error": 0,

"message": "success"

}

GET/auth/datasets Получение списка наборов данных.
Нет входных параметров [

{"id": "XXXXXXXXXXXXXXXXXX",

"name": "XXX"},

{"id": "0",

"name": "По умолчанию"}

]

GET/auth/refresh Обновление токенов доступа. Время, в течение которого можно обновить доступ, регулируется параметром auth.refreshLifeTime конфигурационного файла. Служебный метод, используется в основном в веб-интерфейсе, чтобы не запрашивать лишний раз пароль.
  • x-refresh-token — токен обновления доступа
{

"x-access-token": "XXXXXXXXXXXXXXXXXXXX",

"x-refresh-token": "XXXXXXXXXXXXXXXXXXXX"

}

GET/auth/rights Получение списка прав доступа. Служебный метод — по токену получает название роли и все права доступа этой роли, а также общедоступные методы.
Нет входных параметров <<<{  "РОЛЬ": [

    "GET:/......"  ],

  "nopassword": [    "GET:/.......",

...............

<<<...............

    "POST:/......." ] }

POST/auth/role/add Создание роли. Служебный метод — используется веб-интерфейсом при создании роли.
  • data — JSON с параметрами роли:{

"name": "проверка создания",

"rights": [    "набор прав через запятую" ]

}

{

"error": 0, "message": "success", "role_id": "a7e68bb83169f864c2fc868401b5250c"

}

DELETE/auth/role/delete/{id} Удаление роли.
  • id роли
{"error": 0,"message": "success"}
POST/auth/role/modify/{id} Изменение роли. Параметры как при создании роли. Роль будет переписана.
  • id роли
  • data — JSON с параметрами роли:{

"name": "проверка создания",

"rights": [    "набор прав через запятую" ]

}

{"error": 0,"message": "success"}
GET/auth/roles Получение списка ролей.
Нет входных параметров [{

"id": "XXXXXXXXXXX",

"name": "имя роли",

"rights": [ "набор прав через запятую" ]

},............]

POST/auth/user/add Создание нового пользователя. Метод вернет или id нового пользователя или описание ошибки
  • data — json строка {

"username": "login_name", "fullname": "Отображаемое Имя","password": "XXXXX","role": "role_id",

"dataset": "default dataset id", "datasets": [ "dataset id", ................. ] }

{"error": 0,

"message": "success",

"user_id": "XXXXXXXXXXXXXXXX"}

DELETE/auth/user/delete/{id} Удаление пользователя
  • user_id - идентификатор пользователя
{"error": 0,"message": "success"}
GET/auth/user/get/{id} Получение параметров пользователя
  • user_id — идентификатор пользователя
{"id": "XXXXXXXXXX",

"username": "loginname",

"fullname": "Full Name",

"role": "0",

"dataset": "0",

"datasets": [ "0", "2dc34d3454243522e5407d3a170815a2" ] }

GET/auth/user/info Получение параметров пользователя по его токену доступа. Служебный метод - для предоставления прав текущему пользователю по его токену
  • x-access-token
{"id": "XXXXXXXXXX",

"username": "loginname",

"fullname": "Full Name",

"role": "0",

"dataset": "0",

"datasets": [ "0", "2dc34d3454243522e5407d3a170815a2"] }, "rights": [..........] }

GET/auth/user/list Получение списка пользователей с их параметрами. Тоже самое что и в методе GET /auth/user/info, только для всех пользователей
Нет входных параметров [

{"id": "XXXXXXXXXX",

"username": "loginname",

"fullname": "Full Name",

"role": "0",

"dataset": "0",

"datasets": [ "0", "2dc34d3454243522e5407d3a170815a2"] }, "rights": [..........] },

......

]

POST/auth/user/modify/{id} Изменение параметров пользователя
  • data — параметры пользователя как при создании
  • id — идентификатор пользователя
{ "error": 0,

"message": "success"}

POST/auth/user/password Смена пароля пользователя по его токену доступа.
  • password
{ "error": 0,"message": "success"}
POST/auth/userlog Получение действий пользователя за период времени по его токену
  • from — начало периода в формате "%Y-%m-%d %H:%M"
  • to — конец периода в формате "%Y-%m-%d %H:%M"
{

  "error": 0,

  "message": "success",

  "data": [

    [

      "время",

      "id",

      "метод",

      {измененные данные в формате метода}

    ],

    [

      "время",

      "id",

      "метод",

      {измененные данные в формате метода}

    ],

    .........

}

GET/auth/version Получение версии сервиса ups
Нет входных параметров {

  "version": "4.082 release"

}

/lang: методы мультиязычности
GET/lang/ Выводит информацию о переводе элементов интерфейса на текущий язык
Нет входных параметров { "see":"Сущности",

"smc":"Классификатор",

... }

GET/lang/wallpaper Отдает случайный фон рабочего стола в виде jpeg из каталога «wallpapers» на сервере ups
Нет входных параметров image/jpeg


/server: получение информации о серверах
GET/server/get/addresses/{servicetype} Вывод информации о серверах, обслуживающих данный сервис, а также настроенных параметров обращения к данным серверам.

trainer — сервер обучения, cluster — рабочие серверы, connect — время на подключение, read — время на ответ,

failed — время пребывания в сбойных, install — время на установку модели, info — время на получение информации о модели,

counter — счетчик запросов, current — индекс последнего опрошенного cluster-сервера

fail — массив сбойных серверов со временем постановки в сбой.

  • servicetype — тип сервиса
{  "trainer": "http://127.0.0.1:6181",

  "cluster": [ "http://127.0.0.1:6181"  ],

  "timers": {  "connect": 0.5,

    "read": 1,

    "failed": 600,

    "install": 60,

    "info": 3 },

  "counter": 0,

  "current": 0,

  "fail": {"http://127.0.0.1:6181":1686295678} }

GET/server/get/models/{servicetype}/{servertype} Вывод информации о моделях указанного сервиса на каждом сервере указанного типа. Вывод представляет собой массив URL-серверов, для каждого из которых указан список моделей.
  • servicetype — тип сервиса
  • servertype — тип серверов
{  "http://127.0.0.1:6181": [

    "model1",

    ...

    "modelN"

  ],  ... }

/model: методы работы с моделями
POST/model/add/{servicetype}/{model} Создание пустой модели в указанном сервисе. Доступно для следующих сервисов: smc, see, spr.
  • servicetype — тип сервиса
  • model — название модели
{

"error":0,

"message":"success"

}

POST/model/apply/{servicetype}/{model} Применение установленной на рабочих серверах модели. После применения модель становится доступна для штатного режима работы. Доступно для следующих сервисов: smc, see, spr.
  • servicetype — тип сервиса
  • model — название модели
{

"error":0,

"message":"success"

}

DELETE/model/delete/{servicetype}/{model} Полностью удаляет модель из системы и со всех управляемых серверов. Доступно для следующих сервисов: smc, see, spr.
  • servicetype — тип сервиса
  • model — название модели
{

"error":0,

"message":"success"

}

GET/model/errors/{servicetype}/{model}/{modeltype} Запрос на получение списка ошибок модели после тестирования/обучения. Доступен для сервисов see и smc. Ответ содержит список вложенных списков. В каждом три значения: правильное значение, предсказанное моделью значение и начальные данные (фраза).
  • type — тип ошибок в выводе

- train ошибки обучения

- test ошибки тестирования

- mark ошибки авторазметки

  • servicetype — тип сервиса
  • model — название модели
  • modeltype — тип модели
[ [true, predicted, phrase],

... ]

GET/model/export/{servicetype}/{model}/{modeltype} Экспорт модели, модель скачивается в виде zip-архива.
  • servicetype — тип сервиса
  • model — название модели
  • modeltype — тип модели
Файл model.zip, где model — название модели
DELETE/model/handler/{servicetype}/{model} Удаление постобработчика из модели типа future. Более подробно об обработчике см. руководства пользователя smc и see.
  • servicetype — тип сервиса
  • model — название модели
{"error":0,

"message":"success"

}

POST/model/handler/{servicetype}/{model} Отправка файла-постобработчика в указанную модель типа future. Обработчик становится активным сразу после успешной отправки. Более подробно об обработчике см. руководства пользователя smc и see.
  • servicetype — тип сервиса
  • model — название модели
  • handler — файл, содержащий программный код python постобработчика
{"error":0,

"message":"success"

}

GET/model/handler/{servicetype}/{model} Получение файла-постобработчика из модели типа future.
  • servicetype — тип сервиса
  • model — название модели
Файл handler.py
DELETE/model/handler/{servicetype}/{model}/{modeltype} Удаление постобработчика в указанной модели указанного типа.
  • servicetype — тип сервиса
  • model — название модели
  • modeltype — тип модели
{

"error":0,

"message":"success"

}

POST/model/handler/{servicetype}/{model}/{modeltype} Отправка файла-постобработчика в указанную модель указанного типа. Становится активным сразу после успешной отправки.
  • modeltype — тип модели
  • servicetype — тип сервиса
  • model — название модели
  • handler — файл, содержащий программный код python постобработчика
{

"error":0,

"message":"success"

}

GET/model/handler/{servicetype}/{model}/{modeltype} Получение файла-постобработчика из указанной модели указанного типа.
  • servicetype — тип сервиса
  • model — название модели
  • modeltype — тип модели
Файл handler.py
POST/model/import/{servicetype}/{model} Импортирует модель в черновик (modeltype=future)
  • servicetype — тип сервиса
  • model — название модели
  • zip-model — zip с файлами модели
{

"error":0,

"message":"success"

}

GET/model/info/{servicetype} Получение информации о всех моделях указанного сервиса. Аналогичен методу GET /info/{servicetype}/{model}, но выводит информацию обо всех моделях.
  • servicetype — тип сервиса
{   "model1": {

    "previous": null,

    "current": null,

    "future": {

      "status": "empty",

      ...

    }   },  ... }

GET/model/info/{servicetype}/{model} Получение информации о каждом типе (modeltype) указанной модели. Итоговый массив содержит переменные типа modeltype, в каждой из который содержится информация о модели.
  • servicetype — тип сервиса
  • model — название модели
{   "previous": null,

  "current":  {

    "status": "trained",

    ... },

  "future": {

    "status": "trained",

    ...  } }

POST/model/install/{servicetype}/{model} Установка импортированной или обученной модели на рабочих серверах.

Доступно для следующих сервисов: smc, see, spr.

  • servicetype — тип сервиса
  • model — название модели
{

"error":0,

"message":"success"

}

GET/model/log/{servicetype}/{model}/{modeltype} Выводит лог обучения и тестирования модели. Доступно для следующих сервисов: smc, see.
  • servicetype — тип сервиса
  • model — название модели
  • modeltype — тип модели
[

  "training",

  "preparing data",

  "tokenizing",

  ...

]

POST/model/restore/{servicetype}/{model} Откат модели. Делает текущую рабочую модель черновиком (future), рабочие серверы после выполнения данного метода продолжают уже с возвращенной моделью. Схематично действия над modeltype в результате выполнения данного метода можно представить так:
  • current -> future
  • previous -> current
  • null -> previous
  • servicetype — тип сервиса
  • model — название модели
{"error":0,

"message":"success"

}


/corpus: работа с данными для обучения моделей

Методы данного класса предназначены только для сервисов smc и see

GET/corpus/automark/list Перечень заданий автоматической маркировки корпусов.
Нет входных параметров {  "error": 0,

  "message": "success",

  "tasks": [ {

      "id": "29d9da98-d6c1-4dc1-bbc9-111309816002",

      "taskname": "test_doc",

      "status": "finished"    },

    {  "id": "1a5e9bdc-9f98-49d2-84de-1a9bde8fc37c",

      "taskname": "sssss",

      "status": "finished"    }  ] }

GET/corpus/automark/result/{id} Результат выполнения задания на автомаркировку корпуса. Если задание завершено в ответе придет маркированый корпус и время старта и финиша задания
  • id — идентификатор задания
{
 "error": 0,
 "message": "success",
 "started": "2024-10-09 18:05:51",
 "finished": "2024-10-09 18:05:51",
 "corpus": [[ [], [ ["тэг"],"фраза 1"]],
   [ [], [["тэг"],"фраза 2"]] ]

}

GET/corpus/automark/start Начать автоматическую разметку корпуса.
  • taskname — произвольное имя задания
  • corpus — json строка с размечаемым корпусом[[ [класс1,... классН], текст ],

[ [класс1,... классН], текст ]]

  • marks — json строка с набором меток [    [ метка, [синоним, синоним2 ... синоним Н], порог ],

[ метка, [синоним, синоним2 ... синоним Н], порог ]]

  • appendMarks — "yes" - дополнить разметку, "no" -заменить разметку
{

  "error": 0,

  "message": "success",

  "id": "уникальный id задания"

}

GET/corpus/automark/status/{id} Получить статус задания на автоматическую разметку корпуса.
  • id — уникальный id задания
{

  "error": "",

  "status": "finished",

  "started": "2024-10-09 13:49:46",

  "finished": "2024-10-09 13:49:46",

  "progress": 0

}

GET/corpus/automark/stop/{id} Прервать задание на автоматическую разметку корпуса.
  • id — идентификатор задания
{  "error": 0,

  "message": "success"}

POST/corpus/copy/{servicetype} Копирование корпуса данных
  • servicetype — тип сервиса
  • srcname — текущее имя
  • dstname — новое имя
{

  "error": 0,

  "message": "success"

}

DELETE/corpus/delete/{servicetype} Удаляет корпус с данными
  • servicetype — тип сервиса
  • name — название корпуса
{  "error": 0,

  "message": "success"}

GET/corpus/export/{servicetype} Возвращает текстовый файл с корпусом, содержащий строки вида КЛАСС<TAB>ФРАЗА
  • servicetype — тип сервиса
  • name — название корпуса
Файл name.txt
GET/corpus/get/{servicetype} Возвращает JSON с данными корпуса
  • servicetype — тип сервиса
  • name — название корпуса
[

  [ "тэг",

    "фраза"

  ],

  ...

]

POST/corpus/import/{servicetype} Метод для импорта корпуса данных. Возможен как из текстового файла со строками вида КЛАСС<TAB>ФРАЗА (доступно для smc и see), так и из логов работы системы (только для smc). Если на вход поступил файл csv, происходит импорт из файла, в противном случае — из логов.
  • servicetype — тип сервиса
  • name — название корпуса
  • csv — файл данных
  • startDate — дата начала выборки, YYYY-MM-DD
  • stopDate — дата окончания выборки, YYYY-MM-DD
  • model — имя модели, из логов которой будет произведен импорт
  • limit — числовое ограничение строк импорта
{

  "error": 0,

  "message": "success"

}

GET/corpus/list/{servicetype} Возвращает список всех корпусов данных для указанного типа сервиса
  • servicetype — тип сервиса
[ "корпус1",

"корпус2",

  ...]

POST/corpus/put/{servicetype} Перезаписывает корпус отправленным массивом данных
  • servicetype — тип сервиса
  • name — название корпуса
  • json — строка формата json с данными. Аналогична выводу метода GET /get/{servicetype}
{

  "error": 0,

  "message": "success"

}

POST/corpus/rename/{servicetype} Переименование корпуса
  • servicetype — тип сервиса
  • srcname — текущее имя
  • dstname — новое имя
{

  "error": 0,

  "message": "success"

}


/marks: работа с наборами меток в smc
POST/marks/add Добавление набора менток
  • json —список меток в формате: [ [  "метка1",

      ["синоним1", "синоним2", "синоним3", "синонимN" ], 0.9 # достоверность для метки (0 - 1)

    ],  [ "меткаN",

      ["синоним11", "синоним21","синоним31", "синонимN1"], 0.9 # достоверность для метки (0 - 1)

    ] ]

  • name — имя создаваемого набора
{

  "error": 0,

  "message": "success",

  "id": "132310fa-98c7-4b12-896f-ff113827d077"

}

DELETE/marks/delete/{id} Удаление набора меток
  • id — идентификатор набора меток
{  "error": 0,

  "message": "success" }

GET/marks/export/{id} Получение набора меток в виде строк
  • id — идентификатор набора меток
Пример:

метка1 синоним1,синоним2,синоним3,синонимN 0.9

меткаN синоним11,синоним21,синоним31,синонимN1 0.9

GET/marks/get/{id} Получение набора меток в виде json
  • id — идентификатор набора меток
Пример:

{  "error": 0,

  "message": "success",

  "data": [

    ["метка1", [ "синоним1", "синоним2", "синоним3", "синонимN"  ],

      0.9

    ],

    ["меткаN", ["синоним11","синоним21", "синоним31","синонимN1"],

      0.9

    ]  ] }

POST/marks/import/{id} Импорт в существующий набор меток из файла. Набор будет переписан из файла
  • csv — файл "метка"ТАБ"синонимы через запятую"ТАБ"достоверность(число от 0 до 1)"
  • id — идентификатор набора
{  "error": 0,

  "message": "success" }

GET/marks/list Получение списка наборов меток
Нет входных параметров Пример:

{  "error": 0,

  "message": "success",

  "result": [    { "id": "416fbe08-19e9-453c-b140-37008a08a76c","name": "test" },

    {"id": "16e77fa2-7c4d-47f9-8644-6385876525d6","name": "Рыжик" },

    {"id": "132310fa-98c7-4b12-896f-ff113827d077", "name": "test" }

  ]}

POST/marks/put/{id} Импорт в существующий набор меток из json строки. Набор будет переписан
  • json — список меток в формате: [ [  "метка1",

      ["синоним1", "синоним2", "синоним3", "синонимN" ], 0.9 # достоверность для метки (0 - 1)

    ],  [ "меткаN",

      ["синоним11", "синоним21","синоним31", "синонимN1"], 0.9 # достоверность для метки (0 - 1)

    ] ]

  • id — идентификатор заменяемого набора меток
{  "error": 0,

  "message": "success" }

POST/marks/rename/{id} Присваивает новое наименование существующему набору меток
  • id — идентификатор набора меток
  • name — новое имя набора
{  "error": 0,

  "message": "success" }

/spr: работа с сервисом SPR
GET/spr/audio/{taskID} Получение аудиофайла отложенного задания
  • taskID — идентификатор задания в очереди/small>
Wav файл
GET/spr/queue Получение очереди отложенных заданий. Выводит очередь со статусами выполнения заданий. Статусы: ready — готово, waiting — ожидание, failed — сбой
Нет входных параметров {  "id задания": {

   "created": "ХХХХ-ХХ-ХХ ХХ:ХХ:ХХ",

   "status": "waiting",

   "filename": "wav"}

DELETE/spr/queue/{taskID} Удаление задания из очереди
  • taskID — идентификатор задания в очереди/small>
{"error": 0,

"message": "success"}

GET/spr/result/{taskID} получениеПезультатов распознавания отложенного задания. Статусы: ready — готово, waiting — ожидание, failed — сбой, not found — не найдена
  • taskID — идентификатор задания в очереди/small>
Вывод аналогичен выводу метода stt + добавлено поле status, которое содержит информацию о статусе отложенной задачи
POST/spr/stt/{model} Отправка файла на распознавание речи. Моно-файлы до 30 секунд распознаются без разбивки на фрагменты. Многоканальные файлы и файлы длиннее 30 секунд предварительно разбиваются на фрагменты по отсутствию речи. Настройка данных параметров описана в руководстве администратора spr.
  • model — идентификатор модели
  • wav — файл для распознавания
  • speakers — опция поиска говорящих по базе SBS. Если 1, то дополнительно производится поиск говорящих и получение метаданных по каждому говорящему (используется сервис SBS с предварительно обученными слепками метаданных говорящих)
  • punctuation — опция для расстановки знаков препинания. Если 1, то дополнительно вызывает метод punctuate в SMC и расставляет знаки препинания в распознанном тексте, значение по умолчанию берётся из файла конфигурации (для модели big пунктуация выполняется в любом случае).
  • normalization — опция обратной нормализации текста, если 1, то выполняется обратная нормализация текста текста (для модели big выполняется в любом случае).
  • vad — используемый VAD, по умолчанию webrtc
  • toxicity — анализировать распознанный текст на токсичность через smc (GET/smc/toxicity).Высказывание анализируется по 4 параметрам, по каждому выдается вероятность от 0 до 1:"оскорбление": 0.13, "непристойность": 0, "угроза": 0, "вежливость": 0.53
  • emotion — выявить эмоции из распознанного текста через smc (GET/smc/emotion). Возможные ответы: negative, neutral, positive.
  • voice_analyzer — анализировать аудиофрагменты каждого из говорящих на эмоции, возраст и пол, запрашивается в sbs метод POST/sbs/analyze.Аудио говорящего анализируется на возраст (child, adult, old).Эмоции (ANGER, BORE, DISAPPOINTMENT, DISGUST, EXCITEMENT, FEAR, NEUTRAL, PAIN, PLEASURE, SADNESS, SUPRISE). Пол (male, female).
  • speaker_counter — количество докладчиков, по умолчанию 0, автоматическое определение количества. При отправке значения -1 разделение на докладчиков будет отключено.
  • async — отложенный запуск распознавания
  • classifiers - дополнительно проанализировать все распознанные фразы через модели smc и/или see. отправляется в виде {"smс":"название модели":{ параметры запроса }}. Подробнее о параметрах запроса см. в документации по сервисам smc и see.
В случае async=1 возвращается только taskID, результат по taskID смотреть в методе /spr/result.

Для коротких файлов:

{

  "model": "call",

  "text": "текст фрагмента",

"classifiers": тут ответы от моделей smc и see,

  "words": [

{ "word": "текст",

      "start": 520,

      "stop": 1240 },

    { "word": "фрагмента",

      "start": 1240,

      "stop": 1920  }

]

}

Для транскрибации больших файлов:

{

"speakers": [

    {

"id": null,

      "duration": 18980,

      "fragments": 3,

      "age": "old", # только для voice_analyzer=1

      "gender": "female" # только для voice_analyzer=1

}

],

"splitted": [

    {

"start": "00:00:01.870",

      "text": "текст.",

      "words": [

      {

"word": "текст.",

          "start": 1870,

          "stop": 2710,

          "confidence": 0.95263671875

}

],

      "stop": "00:00:05.510",

      "channel": 0,

      "duration": "00:00:03.640",

      "start_ms": 1870,

      "stop_ms": 5510,

      "duration_ms": 3640,

      "speaker": 4,

      "speakerConfidence": 0.87,

"classifiers": тут ответы от моделей smc и see,

      "toxicity": { # только для toxicity=1

        "insult": 0,

        "obscenity": 0,

        "threat": 0,

        "politeness": 0.99

},

      "emotion": { "neutral": -0.3315 }, # только для emotion=1

      "voice_analysis": { # только для voice_analyzer=1

        "emotion": {

          "class": "NEUTRAL",

          "confidence": 0.7554781436920166  }

}

}

]

}

GET/spr/waveform/{taskID} Служебный метод для отображения аудио в графическом виде, содержит пики сигнала.
  • taskID — идентификатор задания
{"error": 0,

"waveform": [

0.016,

    0.015,

    0.01 ] }

/smc: работа с сервисом SMC
GET/smc/classify/{id} Классификация текстовой фразы. В случает если модель была создана из меток в ответе groups и nearest будут пустыми, а ответ будет построен без учета confidenceThreshold из запроса.

В ответе:

  • classes - список , для каждого класса которого отображается название класса, к которому был отнесен текст, и вероятность его принадлежности к этому классу.
  • groups - название группы и число совпавших классов. Если метки совпадают с несколькими группами, они отображаются в порядке убывания числа совпавших классов (т.е. чем полнее группа, тем выше ее позиция в списке).
  • nearest - отображаются группы, до которых не хватает всего одной метки, с указанием процента заполненности и сортировкой по убыванию этого процента.
  • id - идентификатор модели
  • text - текст, подлежащий классификации
  • correction - проверять правописание слов и исправлять ошибки
  • confidenceThreshold, % - минимальный порог доверия.
{

  "classes": [

    {

      "class": "название класса",

      "confidence": 1

    },

    {

      "class": "название класса 2",

      "confidence": 1

    }

  ],

  "groups": [

    {

      "group": "название группы 1",

      "intersection": 2,

      "classes": [ "название класса", "название класса 2" ]

    }

  ],

  "nearest": [

    {

      "group": "название группы 2",

      "percent": 0.67,

      "need": "название класса которого не хватило 1"

    },

    {

      "group": ""название группы 3",

      "percent": 0.67,

      "need": "название класса которого не хватило 2"

    }

  ]

}

GET/smc/compress Убирает из фразы слова не влияющие на ее смысл.
  • text текст для сжатия
  • threshold уровень компрессии от 1 до 100. Чем меньше число тем меньше слов будет в итоговой фразе
{  "text": "сжатый текст"}
GET/smc/correct Коррекция правописания. Изменяет неправильно написанные слова, меняя их на наиболее близкие правильные (из знакомых модели). Если модель коррекции не смогла предложить правильное написание текста, метод вернёт текст неизменным.
  • text - текст для коррекции
  • correction - уровень коррекции, от 1 до 3. По умолчанию 1.
  • model - если указано, то при коррекции дополнительно используется словарь модели
{  "text": "корректный текст" }
GET/smc/emotion Анализ эмоций. На выходе один из вариантов: positive, negative, neutral.
text фраза для анализа эмоций { "emotion": "positive", "score": 0.9601 }
POST/smc/groups/{model} Добавляет к модели группы из корпуса. Группы в модели будут перезаписаны
  • id — наименование модели
  • corpus — наименование корпуса- источника групп
{  "error": 0,

  "message": "string"}

GET/smc/groups/{model} Поиск групп по ранее полученным меткам. Ищет группы по набору меток. Результат — группы (если найдены) и ближайшие группы с указанием недостающих меток. Позволяет сохранять контекст в виде меток и дозапрашивать группы с учетом контекста.
  • classes — набор меток через запятую
  • model — имя модели
{"groups": [

   {     "group": "Группа 1",

     "intersection": 3,

     "classes": [

       "метка1_о",

       "метка2_о",

       "метка3_о"     ]   },

   {     "group": "Группа 2",

     "intersection": 2,

     "classes": [

       "метка1_о",

       "метка5_о"     ]   }],

"nearest": [

   {     "group": "Группа до которой не хватило 1 метки",

     "percent": 0.75,

     "need": "недостающая метка_о"   } ] }

GET/smc/normalize Обратная нормализация текста. Пример: двадцать пятого апреля в пятом часу — 25 апреля в 5-м часу.
  • text — текст для обработки.
{"text": "<строка после обратной нормализации>"}
GET/smc/punctuate Расстановка знаков препинания
  • text — текст для обработки.
{  "text": "string" }
POST/smc/stop/{model} Остановка обучения модели. Удаляет тестовую версию модели с сервера обучения, тем самым прерывает обучение.
  • model — идентификатор модели
{  "error": 0,

  "message": "string"}

POST/smc/test/{model} Запуск тестирования модели smc. Метод асинхронный, статус тестирования можно запросить методом GET/info/{servicetype}/{model}
  • model — идентификатор модели
  • corpus — название корпуса с тестовыми данными
{  "error": 0,

  "message": "success" }

GET/smc/toxicity Определение токсичности высказывания. Высказывание анализируется по 4 параметрам, по каждому выдается вероятность от 0 до 1:
  • text текстовая строка с высказыванием
{ "insult": 0.13, # оскорбление

  "obscenity": 0, # брань

  "threat": 0, # угрозы

  "politeness": 0.53 вежливость}

POST/smc/train/{model} Добавление модели.
  • model — идентификатор модели
  • corpus — имя текстового корпуса для обучения модели или имя набора меток
  • isMarks — если «1», то вместо корпуса метод ожидает набор меток. Модель, созданная из меток, при этом не обучается, созданный файл модели используется для расчетов векторов «на лету» и выдачи результатов на основании сравнения векторов текста и синонимов из файла с метками.
{ error: INT, message: DESCRIPTION }
/see: работа с сервисом SEE
GET/see/entities/{model} Поиск сущностей. Вернется массив со всеми моделями, в которых были найдены сущности (модели для поиска указываются в поле id). Каждая переменная с названием модели будет содержать список всех найденных сущностей.
  • model — идентификатор[ы] модели. Может быть указано несколько через запятую, тогда запрос будет обработан всеми указанными моделями.
  • text — текст для анализа.
  • similarity — порог похожести найденной сущности на эталонные, %. По умолчанию 70.
{ ID-модели: [

{ position: 0, # позиция слова начала фрагмента, определяющего сущность

confidence: 1, #вероятность правильного определения сущности

text: текст сущности,

calculated: vaktsinatsiya # поле, содержащее значение сущности, использованный при обучении модели }, {...}

] }

POST/see/stop/{model} Остановка обучения модели
  • model — идентификатор модели
{  "error": 0,

  "message": "success"}

POST/see/train/{model} Запуск обучения модели future
  • model — идентификатор модели
  • corpus — название корпуса с данными
  • noise — уровень шума для генерации синтезированных данных для обучения модели, от 1 до 5, по умолчанию 0
{  "error": 0,

  "message": "success"}

/sbs: работа с сервисом SBS
POST/sbs/analyze Получение аналитических метаданных из голосового фрагмента. Вернется массив с метаданными голосового фрагмента.
  • wav файл для анализа
Пример:

{ age: {

   class: 20-29, # {"00-05", "06-12", "13-19", "20-29", "30-39", "40-49",   "50-59", "60+"}

   confidence: 0.99 },

emotion: {

   class: SADNESS, # { "ANGER", "BORE", "DISAPPOINTMENT", "DISGUST", "EXCITEMENT", "FEAR", "NEUTRAL", "PAIN", "PLEASURE", "SADNESS", "SUPRISE"}

   confidence: 0.99 },

gender: {

   class: FEMALE, # { "MALE", "FEMALE" }

   confidence: 0.99 } }

POST/sbs/noiselevel Возвращает процент зашумленности аудио
  • wav — файл для анализа
Пример ответа:

{ error: 0, message: 'success', 'noise': 0.79 }

POST/sbs/search Поиск говорящего по базе слепков.
  • wav — файл для анализа
  • threshold — порог похожести при поиске, от 0 до 1.
  • text — текст для сравнения с распознанным текстом из wav, необязательный параметр. Если указан, то поиск не будет осуществлен, если распознанный текст будет сильно отличаться от text.
  • textSimilarity - порог похожести текста и распознанного аудио
Пример ответа:

{ error: 0, speaker: Ivan, confidence: 0.79 }

POST/sbs/speakers/add Добавление слепка в базу.
  • name — имя говорящего
  • wav — файл для создания оцифрованного представления говорящего
  • text — текст для сравнения с распознанным текстом из wav, необязательный параметр. Если указан, то поиск не будет осуществлен, если распознанный текст будет сильно отличаться от text. Для использования необходим сервис spr.
  • textSimilarity - порог похожести текста и распознанного аудио
{

  "error": 0,

  "id": "251f78d7-ee50-4ba1-a669-ee89fdaf5433"

}

DELETE/sbs/speakers/delete/{id} Удаление слепка из базы.
  • id идентификатор говорящего
{ error: INT, message: DESCRIPTION }
GET/sbs/speakers/list Получение списка всех слепков.
Входные параметры отсутствуют [ {

    "id": "251f78d7-ee50-4ba1-a669-ee89fdaf5433",

    "name": "наименование слепка"

  }]

POST/sbs/speakers/modify/{id} Дообучение слепка.
  • wav — файл для обучения
  • id — идентификатор слепка
  • text — текст для сравнения с распознанным текстом из wav, необязательный параметр. Если указан, то слепок не будет дообучен, если распознанный текст будет сильно отличаться от text. Для использования необходим сервис spr.
  • textSimilarity - порог похожести текста и распознанного аудио
{  "error": 0,

  "message": "Success"}

POST/sbs/verify/{id} Сравнение wav-файла cо слепком в базе. В ответе - вероятность совпадения от 0 до 1.
  • name — имя говорящего
  • wav — файл для создания оцифрованного представления говорящего
  • text — текст для сравнения с распознанным текстом из wav, необязательный параметр. Если указан, но слепок не будет создан, если распознанный текст будет сильно отличаться от text.
  • textSimilarity - порог похожести текста и распознанного аудио
{ "error": 0, "confidence": 0.78 }
/tts: методы работы с сервисом tts
GET/tts/dictionary/export Выгрузка пользовательского словаря ударений.
Входные параметры отсутствуют Простой текст — строки со словом и его интерпретацией с ударением.
GET/tts/dictionary/get Выгрузка пользовательского словаря ударений в виде json.
Входные параметры отсутствуют [ [   "слово",   "замена слова с удар+ением"],

[   "слово2",   "замена слова2 с удар+ением"],

...]

POST/tts/dictionary/import Загрузка пользовательского словаря ударений. Текущий словарь будет переписан.
  • csv file — файл строк со словом и его интерпретацией с ударением.
{  "error": 0,

  "message": "сообщение о статусе результата"}

POST/tts/dictionary/put Загрузка пользовательского словаря ударений в виде json. Текущий словарь будет переписан.
  • json — строка json следующего вида:

[

[   "слово",   "замена слова с удар+ением" ],

[ "слово2",   "замена слова2 с удар+ением" ],

...

]

{

  "error": 0,

  "message": "сообщение о статусе результата"

}

POST/tts/normalize Нормализация текста — перевод цифр в слова и расстановка ударений (ударения только в нормализованной части фразы), например «в понедельник 10.10.2025» -> «в понедельник дес+ятого октябр+я две т+ысячи дв+адцать п+ятого г+ода».
  • text — фраза для нормализации
{  "error": 0,

  "message": "success",

  "text": "нормализованный текст" }

POST/tts/revoice/{revoicer} Модификация или искажение голоса
  • wav — аудиофайл для обработки
  • revoicer — модель модификации голоса
wav-файл с модифицированным (искаженным) голосом
GET/tts/revoicers Перечень моделей модификации или искажения голоса. Модели поставляются только в составе дистрибутива. Модель distortion — искажение голоса, делает голос неузнаваемым и речь неразборчивой.
Входные параметры отсутствуют [  "distortion" ]
POST/tts/synthesize/{model} Синтез звукового файла из текста/
  • ID — имя модели
  • text — текст синтезируемой фразы
  • rate — скорость речи
  • pitch — высота (тон)
  • volume — громкость
  • frequency — частота дискретизации (по умолчанию 22050 Гц)
  • format - формат файла результата (wav, opus, ogg, mp3)
  • link - если 1, то вернуть только ссылку на файл
файл с синтезированой фразой
/qas: методы работы с сервисом qas
GET/qas/ask Метод генерирует ответ на поставленный вопрос на основе информации из документов в базе. Ответ на вопрос генерируется на основе информации, содержащейся в одном или нескольких документах. Документы должны быть в текстовом формате. Ответ возвращается в формате JSON, его можно скачать. Если метод не смог найти ответ, возвращается код ошибки и сообщение.
  • text — текст вопроса, на основе которого будут искаться фрагменты.
  • category — id категории документа. Если не указать категорию, метод вернет ответ на основе всех документов в базе данных. Допускается указание нескольких категорий через разделитель "|".
  • channel — id канала
  • useCache — использовать кешированные ответы

возможные варианты:

- "no" не использовать

- "all" использовать все

- "checked" использовать только проверенные

  • useGPT — использовать генеративную сеть для поиска ответов в документах. возможные варианты "yes" "no"
  • model - имя модели GPT, если кроме default используются другие модели
  • template - ID шаблона запроса к LLM, необязательный параметр
  • addAlias — добавлять похожие вопросы к синонимам, не создавая отдельного вопроса. возможные варианты "yes" "no"
  • maxDocs — максимальное количество документов одной категории для формирования контекста при генерации ответа на вопрос, по умолчанию 1
  • similarityArea - определяет допустимую разницу между максимальной и минимальной релевантностью фрагментов при фильтрации результатов
{

"error": 0,

"text": "Здесь будет текст ответа"

}

GET/qas/cachemaker/start Генерация ответов на вопросы в кэше.
  • category - категория для которой генерируются ответы*mode - режим генерации ответов, возможные значения:- paraphrase - генерирует вариации ответов перефразированием уже проверенных ответов, если таковые имеются на вопросе- generate - генерирует кэш через разные ответы на каждый вопрос по документации
  • mode — режим генерации ответов, возможные значения:- paraphrase - генерирует вариации ответов перефразированием уже проверенных ответов, если таковые имеются на вопросе- generate — генерирует кэш через разные ответы на каждый вопрос по документации
  • option - {all | empty} обработать все вопросы или только не содержащие ответов
  • category - если указан код категории, то генерация только для этой категории
  • variants - количество ответов, от 1 до 9
  • replace - заменить ответы на сгенерированные
  • maxDocs - максимальное количество документов одной категории для формирования контекста при генерации ответа на вопрос, по умолчанию 1
  • model - какую модель использовать для генерации, если кроме default используются другие модели
  • template - ID шаблона запроса к LLM, необязательный параметр
{"error": 0, "message": "success"}
GET/qas/cachemaker/status Состояние генерации ответов на вопросы в кэше. Статусы: started, stopped, если были ошибки, поле ответа error будет содержать код ошибки.
Входные параметры отсутствуют {  "error": "",

  "status": "started",

  "progress": 33.33}

GET/qas/cachemaker/stop Остановить генерацию ответов на вопросы в кэше.
Входные параметры отсутствуют {"error": 0, "message": "success"}
POST/qas/category/add Добавить категорию с указанным именем. В ответе — id созданной категории или сообщение об ошибке:
  • name — наименование категории
{  "error": 0,

  "message": "success",

  "id": "ad895085-2e48-439a-831e-b5f699b6a54a" }

DELETE/qas/category/delete/{id} Удалить категорию. В ответе или сообщении об успехе, или ошибке, если категория используется или не существует.
  • id — идентификатор категории
{   "error": 0,

  "message": "success" }

GET/qas/category/list Получить список категорий
Входные параметры отсутствуют В ответе json с именами и id категорий
POST/qas/category/modify/{id} Изменить категорию. У категории пока есть только наименование, поэтому метод только переименовывает категорию
  • id — идентификатор категории
  • name — наименование категории
{  "error": 0,

  "message": "success" }

POST/qas/channel/add Добавление канала. В ответе id созданного канала или сообщение об ошибке
  • name — наименование канала
{"error": 0,

"message": "success",

"id": "a46fb887-5d98-41e0-8299-bcc94f615e91"}

DELETE/qas/channel/delete/{id} Удаление канала
  • id — идентификатор канала
{ "error": 0, "message": "success" }
GET/qas/channel/list Получить список всех каналов
Входные параметры отсутствуют {  "error": 0,

  "channels": [

    {      "id": "1",      "name": "voice"    },

    {      "id": "56442779-e871-43fd-ae4d-caf4ab6d09b9",      "name": "канал++"    },

    {      "id": "0",      "name": "default"    }

  ] }

POST/qas/channel/modify/{id} Изменить канал. У канала пока есть только наименование, поэтому метод только переименовывает канал
  • name — новое наименование канала
  • id — идентификатор канала
{  "error": 0,

  "message": "success" }

POST/qas/chat Поиск ответа за пределами документов. На стадии разработки, не используется.
  • text - текст вопроса
  • history - история вопросов, будет склеена с text при запросе
  • model - какую модель использовать для ответа, если кроме default используются другие модели
  • useInternalTemplate - использовать ли шаблон запроса. no - не использовать, либо код шаблона запроса к LLM. Необязательный параметр. Если не указан, используется шаблон по умолчанию.
  • params - необязательный параметр. JSON с произвольными параметрами запроса к LLM. Описание параметров см. в руководстве администратора.
Пример ответа на вопрос "как пройти в библиотеку"{"error": 0,

"text": "1. Проверить время работы библиотеки (обычно от 9 до 20)\n2. Проверить местоположение библиотеки на карте или с помощью сервиса Google Maps\n3. Убедиться, что у вас есть необходимые документы для входа (паспорт, карта члена библиотеки и т.д.)\n4. Посетить библиотеку по адресу: [адрес библиотеки]\n5. Проверить правила поведения в библиотеке перед входом" }

POST/qas/cleandoc/start Очистка документа от лишней информации
  • text - текст документа
  • model - какую модель использовать для ответа, если кроме default используются другие модели
  • template - ID шаблона запроса к LLM, необязательный параметр
  • doc_id - необязательный параметр, ID документа
  • user_id - ID пользователя
{"error": 0, "message": "success"}
GET/qas/cleandoc/stop Остановка очистки документа для конкретного пользователя
  • user_id - ID пользователя
{"error": 0, "message": "success"}
GET/qas/cleandoc/status Статус очистки документа для конкретного пользователя
  • user_id - ID пользователя
{

"error": 0,

"status": stopped | started,

"progress": 33.3,

"message": string,

"place": number, #место в очереди

"queue": True | False #состояния - в очереди или в процессе очистки

}

GET/qas/cleandoc/result Результат очистки документа для конкретного пользователя
  • doc_id - необязательный параметр, ID документа
  • user_id - ID пользователя
{"error": 0,"status": "stopped","text": "очищенный текст","doc_id": "ID документа"}
POST/qas/doc/add Загрузить текстовый документ. Добавляет документ в базу. В ответе — id созданного документа или сообщение об ошибке.
  • title — заголовок документа
  • category — категория документа
  • textфайл документа
{"error": 0,

"message": "success",

"id": "ebe2bc57551c2d17f892987d1f62306d"}

DELETE/qas/doc/delete/{id} Удаление документа
  • id — идентификатор документа
{"error": 0,"message": "success"}
GET/qas/doc/get/{id} Выгрузка текста документа
  • id — идентификатор документа
{

  "error": 0,

  "text": "Здесь будет полный текст документа"

}

GET/qas/doc/list Получение списка имеющихся документов
Входные параметры отсутствуют Пример:

{  "error": 0,

  "docs": [

    {id": "d4999cdee5ad1faf2cb3066ea1b5e96b",

      "title": "PVE. Установка сервисного пакета окружения",

      "category": "Техническая поддержка" },

    {"id": "759042575b965745b9d2af869bca1740",

      "title": "UPS. Руководство администратора",

      "category": "Техническая поддержка"}   ]}

POST/qas/doc/modify/{id} Обновление документа. В случае успеха метод вернет статус выполнения операции (например, «success»), в случае неудачи — код ошибки.
  • data — json c изменяемыми параметрами документа

{

  title: string,

  category: string,

  text: string

}

параметр который не меняется может отсутствовать в json

  • id — идентификатор документа.
{"error": INT, "message": DESCRIPTION}
POST/qas/doc/replace Замена подстроки в текстах категории Будут заменены все найденные вхождения
  • search - искомая подстрока, будет заменена
  • replace - текст замены
  • category - в какой категории искать
{"error": INT, "message": DESCRIPTION,"replacements":INT}
POST/qas/doc/modifyphrases Массовая замена текста в указанных фразах.
  • phrases - JSON массив с изменяемым фразами следующего вида:

[

{

'doc_id': 'ad895085-2e48-439a-831e-b5f699b6a54a',

'phrase_id': 5,

'text': 'новый текст'

}

]

{"error": 0,"message": "success"}
GET/qas/gpt/list Получение списка доступных(установленных) GPT моделей
Входные параметры отсутствуют {  "error": 0,  "message": "success",  "models": ["default" ]}
POST/qas/question/add Добавление вопроса. В случае успеха метод вернет id вопроса, в случае неудачи — код ошибки.
  • question — текст вопроса
  • category — id категории к которой относится вопрос
  • answers — ответы в виде Json:

[ { "checked": true, "channel": "0", "answer": "ответ" } ]

  • aliases — вопросы к которым подходят ответы из блока answers в виде json:

["вопрос","еще вопрос"]

{

  "error": 0,

  "id": "527be9f0-f773-4a3e-bd0b-81b40a061d0d"

}

POST/qas/question/append/{id} Добавляет алиасы/кандидаты к другому вопросу
  • aliases — JSON list с синонимами
  • candidates JSON list с кандидатами
  • id — идентификатор вопроса к которому добавить синонимы и(или) кандидаты
{error: 0 | 1, message: string}
POST/qas/question/approve/{destination_id} Перемещает кандидаты в формулировки другого вопроса
  • candidates — json массив c текстами кандидатов
  • destination_id — идентификатор вопроса
{error: 0 | 1, message: string}
POST/qas/question/delete/list Удаление списка вопросов или ответов
  • questions — json строка с перечнем id
  • type — выбор, удалять вопросы или ответы (questions, answers)
{"error": INT, "message": DESCRIPTION}
DELETE/qas/question/delete/{id} Удаление вопроса
  • id — идентификатор вопроса
{"error": INT, "message": DESCRIPTION}
GET/qas/question/get/{id} Получение вопроса вместе с ответами и синонимами вопроса
  • id — идентификатор вопроса
{  "error": 0,

  "answers": [

    {   "checked": true,

      "channel": "0",

      "answer": "ответ"    }  ],

  "aliases": [

    "вопрос",

    "синоним вопроса",

    "еще синоним вопроса"  ] }

GET/qas/question/list Получение списка вопросов.
  • question — фильтр вопросов, ограничение списка по вопросам
  • category — фильтр категорий
  • answer — фильтр ответов, ограничение списка по ответам
  • created — фильтр по дате создания, оставляет вопросы, созданные не ранее указанной даты
  • createdBefore — фильтр по дате создания, оставляет вопросы, созданные не позже указанной даты
  • modified — фильтр по дате изменения, оставляет вопросы, изменённые в точности в указанную дату
  • onlyNew - фильтр, оставляющий только новые (необработанные) вопросы
{  "error": 0,

  "questions": [

{"id": "","question": "","incomplete": "",

  "aliases": [],"candidates": [],"category": "",

  "checked": 0,"unchecked": 0},

{"id": "","question": "","incomplete": "",

  "aliases": [],"candidates": [],"category": "",

  "checked": 0,"unchecked": 0}

  ] }

POST/qas/question/modify/{id} Модификация вопроса. Позволяет заменить как все параметры так и отдельные
  • data — json c измененными параметрами, пример полного:

{   "answers": [

    {

      "checked": true,

      "channel": "0",

      "answer": "новый ответ"

    }

  ],

"question":"новый вопрос",

"category": "a3801cc0-f8e5-4f3b-bb10-e42148cd772b",

  "aliases": [

    "новый вопрос",

    "синоним",

    "еще синоним"

  ]

}

  • id — идентификатор вопроса
В случае успеха метод вернет статус выполнения операции (например, «success»), в случае неудачи — код ошибки.

{"error": INT, "message": DESCRIPTION}

POST/qas/question/replace Поиск и замена подстроки. Будут заменены все найденные вхождения
  • search - искомая подстрока, будет заменена
  • replace - текст замены
  • category - в какой категории искать
{"error": INT, "message": DESCRIPTION,"replacements":INT}
POST/qas/question/modifyanswers Массовая замена текста в указанных ответах.
  • phrases - JSON массив с изменяемым ответами следующего вида:

[

{

'question_id': 'ad895085-2e48-439a-831e-b5f699b6a54a',

'answer_id': 5,

'text': 'новый текст'

}

]

{"error": 0,"message": "success"}
POST/qas/paraphrase Генерация фраз-синонимов для предложения.
  • text - предложение
  • model - какую модель использовать для ответа, если кроме default используются другие модели
  • template - ID шаблона запроса к LLM, необязательный параметр
{"error": 0, "message": "success", "texts": [ "перефразированный текст 1", ... ]}
GET/qas/questionlist/answers Отображает лог массовой обработки вопросов
Входные параметры отсутствуют на выходе :

массив из объектов {

  error: number;

  question: string;

  answer: string;

  confidence: number | null;

}

POST/qas/questionlist/start Старт массовой обработки вопросов из файла
  • questions - файл с вопросами
  • format - в json или в text файл с вопросами
  • category — id категории документа. Если не указать категорию, метод вернет ответ на основе всех документов в базе данных. Допускается указание нескольких категорий через разделитель "|".
  • channel — id канала
  • useCache — использовать кешированные ответы

возможные варианты:

— "no" не использовать

- "all" использовать все

- "checked" использовать только проверенные

  • useGPT — использовать генеративную сеть для поиска ответов в документах. возможные варианты "yes" "no"
  • model - имя модели GPT, если кроме default используются другие модели
  • template - ID шаблона запроса к LLM, необязательный параметр
  • maxDocs - максимальное количество документов одной категории для формирования контекста при генерации ответа на вопрос, по умолчанию 1
  • addAlias — добавлять похожие вопросы к синонимам, не создавая отдельного вопроса. возможные варианты "yes" "no"
  • threshold - порог достоверности при обработке
{error: 0 | 1, message: string}
GET/qas/questionlist/status Статус массовой обработки вопросов
Входные параметры отсутствуют {     error: string;

     status: 'started' | 'stopped';

     progress: number; }

GET/qas/questionlist/stop Остановка массовой обработки вопросов
Входные параметры отсутствуют {error: 0 | 1, message: string}
POST/qas/mismatchsearcher/start Старт поиска несоответствий
  • category — id категории документа. Если не указать категорию, метод вернет ответ на основе всех документов в базе данных. Допускается указание нескольких категорий через разделитель "|".
  • model - имя модели GPT, если кроме default используются другие модели
  • template - ID шаблона запроса к LLM для анализа на несоответствия, необязательный параметр
  • asktemplate - ID шаблона запроса к LLM для генерации ответов по документу, необязательный параметр
  • answers - тип вопросов, по которым осуществляется поиск несоответствий, необязательный параметр, по умолчанию «all»
{error: 0 | 1, message: string}
GET/qas/mismatchsearcher/status Статус поиска несоответствий
Входные параметры отсутствуют {     error: string;     status: 'started' | 'stopped';

     progress: number; }

GET/qas/mismatchsearcher/stop Остановка поиска несоответствий
Входные параметры отсутствуют {error: 0 | 1, message: string}
GET/qas/mismatchsearcher/mismatches Статус получения результатов
Входные параметры отсутствуют {"error": 0,"message": "success","mismatches": [{"question_id": "ID вопроса", "question": "вопрос", "category": "ID категории", "answer_id": "ID ответа", "answer": "ответ на вопрос {question}", "description": "результат поиска", "error" : string, "context": "фрагмент документа", "generatedText" : "Результат генерации" }, ... ] }
GET/qas/questionmaker/start Запуск генерации вопросов
  • category - ID категории, по которой будет происходить генерация вопросов
  • doc - ID документа, по которому будет происходить генерация вопросов
  • generateAnswers - флаг для генерации ответов вместе с вопросами [yse|no], по умолчанию «no»
  • model - имя модели GPT, если кроме default используются другие модели
  • template - ID шаблона запроса к LLM для анализа генерации вопросов, необязательный параметр
{ "error": 0, "message": "success" }
GET/qas/questionmaker/status Статус генерации вопросов
Входные параметры отсутствуют {"error": string, "status": 'started' | 'stopped', "progress": 33.3 }
GET/qas/questionmaker/stop Прервать генерацию.
Входные параметры отсутствуют {"error": 0, "message": "success"}
GET/qas/search Поиск фрагментов содержащих ответ
  • text — текст запроса
  • category — категория (раздел) знаний. Допускается указание нескольких категорий через разделитель "|".
  • maxDocs - максимальное количество документов одной категории для формирования контекста при поиске ответа на вопрос, по умолчанию 1
  • similarityArea - определяет допустимую разницу между максимальной и минимальной релевантностью фрагментов при фильтрации результатов
{  "error": 0,

  "text": "

  Фрагмент 1:Здесь будет текст найденного фрагмента

  Фрагмент 2:Здесь будет текст найденного фрагмента",

  "fragments": [

    {      "id": "3a386b0a9e0e19efb0870685e1d0b484",

      "title": "Заголовок документа",

      "category": "Категория документа",

      "text": "Здесь будет текст найденного фрагмента"    },

    {      "id": "44fd73ea1ac63f32cf18d79c854dbfe2",

      "title": "Заголовок документа",

      "category": "Категория документа",

      "text": "Здесь будет текст найденного фрагмента"    }  ] }

POST/qas/summarization_template/add Добавление шаблона протокола. В случае успеха метод вернет id шаблона, в случае неудачи — код ошибки.
  • name — название шаблона
  • options — json словарь с именами разделов и их описанием
{  "error": 0,  "id": "527be9f0-f773-4a3e-bd0b-81b40a061d0d"}
DELETEqas/summarization_template/delete/{id} Удаление шаблона.
  • id — идентификатор шаблона
{"error": INT, "message": DESCRIPTION}
GET/qas/summarization_template/get/{id} Получение json с шаблоном.
  • id — идентификатор шаблона
На выходе словарь, основные элементы: data — словарь с шаблоном, остальные элементы этого уровня служебные. В data: id, name (идентификатор и наименование).И options — словарь с разделами шаблона.
GET/qas/summarization_template/list Получение всех шаблонов.
Входные параметры отсутствуют На выходе словарь, основной элемент — templates, содержит список шаблонов (каждый шаблон как в выдаче метода GET /qas/summarization_template/get/{id}).
POST/qas/summarization_template/modify/{id} Изменение шаблона.
  • data — словарь как в выдаче метода GET/qas/summarization_template/get/{id}
  • id — идентификатор шаблона
{"error": INT, "message": DESCRIPTION}
POST/qas/summarize Построение протокола или краткого содержания совещания
  • text - текст совещания
  • options — словарь с разделами протокола, где ключ — название раздела, значение - краткая инструкция к формированию раздела.
  • model - какую GPT модель использовать для построения протокола, если кроме default используются другие модели
  • file — файл с текстом (текст, csv, pdf или текстовые офисные документы)
  • template - ID шаблона запроса к LLM, необязательный параметр
{  "error": 0,

  "message": "success",

  "summary": "здесь текст протокола"

}

POST/qas/replace корректировка информации в тексте при помощи LLM
  • text - текст
  • oldinfo — старая информация
  • newinfo — новая информация
  • model - какую модель использовать для генерации, если кроме default используются другие модели
  • template - ID шаблона запроса к LLM, необязательный параметр
{  "error": 0,  "message": "success",

  "text": "итоговый текст"

}

POST/qas/replacementlist список всех фраз в документах и ответов в вопросах, подлежащих правке. Векторно ищет все фрагменты по указанному тексту.
  • text - текст
  • category — категория, в которой производится векторный поиск
  • threshold — порог похожести, необязательный параметр, если не указан, берется из конфигурационного файла (fragments -> threshold)
  • answers - тип вопросов, по которым осуществляется поиск для внесения правок, необязательный параметр, по умолчанию «all»
[ "error": 0,

"message": "success", "docs": [], "answers": [] ]

POST/qas/prompt/add Добавление шаблона запроса к LLM. В случае успеха метод вернет id вопроса, в случае неудачи — код ошибки.
  • type — тип шаблона - chat - произвольный чат, - ask - запрос к документам, - cleandoc - очистка документа, форматирование либо другое преобразование, - similars_generator - генерация синонимичных которотких фраз, - paraphrase - перефразировка текста, - summarize - суммаризация текста (формирование краткой выдержки из текста), - question_generator - генерация вопросов по тексту, - replace - замена информации в тексте, mismatch - поиск несоответствий
  • name — название шаблона
  • prompt — текст шаблона
  • postprompt - текст шаблона постобработки результатов (нужен только для summarize)
  • params - параметры запроса к LLM"max_tokens": 4096, "top_k": 30, "top_p": 0.5, "temperature": 0.5, "repeat_penalty": 1.3
{  "error": 0,

  "id": "527be9f0-f773-4a3e-bd0b-81b40a061d0d"

}

DELETE/qas/prompt/delete/{id} Удаление шаблона.
  • id — идентификатор вопроса
{"error": INT, "message": DESCRIPTION}
GET/qas/prompt/get/{id} Получение шаблона.
  • id — идентификатор вопроса
{  "error": 0,  "prompt": {

    "id": "cleandoc",

    "type": "cleandoc",

    "isDefault": false,

    "name": "Чистка документа",

    "prompt": "Удали сноски, колонтитуры и мусорную информацию из текста ниже. Не удаляй ничего лишнего. Не добавляй ничего, только информация из текста. Выведи только конечный результат без отчета о результате.\n###Текст:\n{context}\n\n###Конечный результат:",

    "postprompt": "",

    "_modified": 1751475766.7460272,

    "_created": 1751475766.7460272,

    "_modified_date": "2025-07-02",

    "_created_date": "2025-07-02"

  }

}

GET/qas/prompt/list Получение списка шаблонов.
{  "error": 0,  "prompts": [

    {

      "id": "chat",

      "type": "chat",

      "isDefault": false,

      "name": "Чат",

      "prompt": "Ты спокойный вежливый консультант.[\n\n###История переписки:\n{history}]\n\n###Вопрос: {question}\n###Ответ:",

      "postprompt": "",

      "_modified": 1751475766.7460272,

      "_created": 1751475766.7460272,

      "_modified_date": "2025-07-02",

      "_created_date": "2025-07-02"

    }

  ]

}

POST/qas/prompt/modify/{id} Модификация шаблона. Позволяет заменить как все параметры, так и отдельные.
  • data — json c измененными параметрами:

{ "name": "новое имя" }

  • id — идентификатор вопроса
В случае успеха метод вернет статус выполнения операции (например, «success»), в случае неудачи — код ошибки.{"error": INT, "message": DESCRIPTION}


/ses: методы работы с роботом
Описание методов API
для некоторых путей, где используется {robot_id} - это обращение к версии черновика, чтобы обращаться к продовой версии - нужен постфикс "_prod", для бэкапа "_backup"

актуально для методов

- получения данных робота  GET/ses/robot/get/{id}

- применение настроек робота GET/ses/robot/commit/{id}

- экспорт робота GET/ses/robot/export/{id}

- список скриптов GET/ses/robot/script/list/{robot}

- получение скрипта GET/ses/robot/script/get/{robot}/{id}

- список ЭД GET/ses/robot/data/list/{robot}

- получение ЭД GET/ses/robot/data/get/{robot}/{id}

- список КТ GET/ses/robot/endpoint/list/{robot}

- получение КТ GET/ses/robot/endpoint/get/{robot}/{id}

- метода ask (отладчика) POST/ses/ask/{robot_id}

- данные сессии (отладчика) GET/ses/session/{robot_id}/{session_id}

GET/ses/archive/audio/{uuid} Получение аудио-файла из архива диалогов
  • uuid - идентификатор диалога
аудио-файл с расширением opus
GET/ses/archive/dialog/{uuid} Получение диалога из архива
  • uuid - идентификатор диалога
{ "error": 0,  "message": "success",

  "dialog": [{"id": "...", "robot": "...", "channel": "...",

    "unknown": true/false, "closed": true/false, "endpoint": "...",

    "answered": true/false, "models": [...], "variables": {}, "current": {

      "id": "...", "qas": "", "category": "...", "entry": [...],

      "nearest": "...", "missingRunData": [...], "waitingRunData": "...",

      "answered": true/false, "lastreply": "..."},

      "request": {"datetime": "...", "message": "", "data": [...]},

      "reply": {"answers": [{"messages": [...], "voice": "...",

          "interruptible": true/false, "file": null}],

        "datetime": "...", "answered": true/false}}]}

GET/ses/archive/list Получение списка диалогов из архива
  • uuid - идентификатор диалога
  • startdate - начало временного интервала в формате date %Y-%m-%d %H:%M
  • enddate - конец временного интервала в формате date %Y-%m-%d %H:%M
  • phone - номер телефона
  • variable - переменная в формате variable=value
  • robot - идентификатор робота (id)
  • text - фрагмент текста в любом сообщении
  • data - id элемента данных
  • channel - название канала (коннектора)
[{"uuid": "...", "datetime": "...","phone": "", "channel": [...], "robot": ["..."]}]
GET/ses/archive/waveform/{uuid} Служебный метод для визуализации полученного из архива диалогов аудио-файла, содержит пики сигнала.
  • uuid - идентификатор диалога
[0.016,

0.015,

0.01]

POST/ses/ask/{robot_id} Получение ответа на запрос пользователя. Метод для отладки робота
  • text - текст запроса
  • channel - id канала
  • connector - имя коннектора
  • session - uuid сессии, если это не первый запрос в сессии
  • tts - вернуть результат синтеза (1- вернуть, 0 - не выполнять синтез)
  • variables - словарик с переменными {"переменная1":"значение","переменнаяN":"значение"}
  • handler - python скрипт для изменения ответов метода под требования внешних систем, подробнее в следующем разделе. в поле имя файла без расширения.
  • restartClosed - перезагрузить сессию при её закрытии с новым id (1 - перезагрузить, 0 - не перезагружать)
  • audio - аудиофайл с запросом, текст запроса будет получен распознаванием audio
  • document - документ для последующей обработки
  • robot_id - id робота
  • endpoint - id точки, в которую передать управление диалогом (необязательный параметр, используется для исходящих оповещений)
{  "error": 0,  "question": "Вопрос",

  "answer": [

    {  "messages": [

        "ответ"      ],

      "voice": "",

    "interruptible": true/false,

"file": "" }  ],

  "session": "",

"uuid": "" }

POST/ses/robot/add Создание нового робота. На выходе id созданного робота или сообщение об ошибке
  • name — имя нового робота
{  "error": 0,  "id": "2fd2f909-2069-4b20-a725-3a598c83f886"}
POST/ses/robot/apply/{id} Применение робота. Переводит черновик робота в статус prod. Если до этого был prod вариант — становится backup.
  • id — идентификатор робота
{  "error": 0,  "message": "success"}
POST/ses/robot/cleardraft/{id} Обнуление черновика рабочей версией робота
  • id — идентификатор робота
{  "error": 0,  "message": "success"}
POST/ses/robot/commit/{id} Применение текущих изменений настроек робота. Применимо ко всем версиям (черновик, рабочая, резервная копия)
  • id — идентификатор робота
{  "error": 0,  "message": "success"}
POST/ses/robot/data/add/{robot} Добавление элемента данных
  • data — json строка с параметрами элемента данных
  • robot — идентификатор робота
{  "error": 0,  "message": "success"}
DELETE/ses/robot/data/delete/{robot}/{id} Удаление элемента данных
  • id — идентификатор элемента данных
  • robot — идентификатор робота
{  "error": 0,  "message": "success"}
GET/ses/robot/data/get/{robot}/{id} Получение настроек элемента данных
  • id — идентификатор элемента данных
  • robot — идентификатор робота
{ "error": 0,                "data": {    "id": "id ЭД",         "name": "Имя ЭД",          "comment": "",

    "type": "...",     "rtype": "report",     "model": "Имя модели",

    "param": "Ответ",        "script": "",              "weight": 3,

    "slaveData": [],                 "getOnlyAsNearest": true/false,

    "injectToMessage": true/false,        "longWaiting": true/false,

    "dataWaiting": [],          "actions": {             "alone": {

        "default": [{"action": "say",   "type": "random",   "text": ["....."]}]}},

    "exceptions": {}}}

GET/ses/robot/data/list/{robot} Получение списка элементов данных
  • robot — идентификатор робота
[  {  "id": "3ebfe38b-95bf-4927-a662-17f6e5da22ea",

    "name": "pve", "type": "smc", "rtype": "report",

    "weight": 3, "hasNearestAction": false } ]

POST/ses/robot/data/modify/{robot}/{id} Изменение элемента данных. Формат data как на выходе метода GET/ses/robot/data/get/{robot}/{id}
  • data — json строка с параметрами элемента данных
  • robot — идентификатор робота
  • id — идентификатор элемента данных
{  "error": 0,  "message": "success"}
DELETE/ses/robot/delete/{id} Удаление всех версий робота
  • id — идентификатор робота
{  "error": 0,  "message": "success"}
POST/ses/robot/endpoint/add/{robot} Создание конечной точки. Формат data как на выходе метода GET/ses/robot/endpoint/get/{robot}/{id}
  • data — json строка с параметрами конечной точки
  • robot — идентификатор робота
{  "error": 0,  "id": "8576593b-b0d8-4b03-a623-74f3132356ea"}
DELETE/ses/robot/endpoint/delete/{robot}/{id} Удаление конечной точки.
  • robot — идентификатор робота
  • id — идентификатор конечной точки
{  "error": 0,  "message": "success"}
GET/ses/robot/endpoint/get/{robot}/{id} Получение настроек конечной точки
  • robot — идентификатор робота
  • id — идентификатор конечной точки
{ "error": 0,  "data": {    "id": "...", "name": "...", "comment": "",

    "entryType": "conditions",

    "entry": [{ "conditions": [{ "type": "...", "depth": 5, "id": "...", "operation": "...", "value": ""}], "run": []}],

    "run": [],

    "actions": { "default": [{ "action": "...", "voice": "", "type": "...",  "interruptible": true/false}]},

    "type": "report"}}

GET/ses/robot/endpoint/list/{robot} Получение списка конечных точек робота
  • robot — идентификатор робота
[{ "error": 0,  "data": {    "id": "...", "name": "точка 1", "comment": "",

    "entryType": "conditions",

    "entry": [{ "conditions": [{ "type": "...", "depth": 5, "id": "...", "operation": "...", "value": ""}], "run": []}],

    "run": [],

    "actions": { "default": [{ "action": "...", "voice": "....", "type": "...",  "interruptible": true/false}]},

    "type": "report"}}]

POST/ses/robot/endpoint/modify/{robot}/{id} Изменение конечной точки. Формат data как на выходе метода GET/ses/robot/endpoint/get/{robot}/{id}
  • data — json строка с параметрами элемента данных
  • id — идентификатор элемента данных
  • robot — идентификатор робота
{  "error": 0,  "message": "success"}
GET/ses/robot/export/{id} Выгрузка робота в архив
  • id — идентификатор робота
zip файл с именем = идентификатор робота
GET/ses/robot/files/download/{robot}/{id} Получение файла.
  • robot - идентификатор робота
  • id - идентификатор файла
файл
POST/ses/robot/files/upload/{robot} Отправка файла.
  • robot - идентификатор робота
  • file - файл
{"error": 0, "message": "success", "id": "Id файла"}
GET/ses/robot/get/{id} Выгрузка основных настроек робота
  • id — идентификатор робота
{  "error": 0,  "data": {

    "id": "9fd7f6f1-2cac-4f0f-a121-75c40f2b5e78",

    "name": "test",    "description": "",    "voice": "",

    "session": {      "lifetime": 600    },

    "models": {},    "servicedata": {},

    "exceptions": {},    "actions": {},

    "holidays": [],    "timeintervals": {

      "name": {        "weekdays": [ 1, 2, 3, 4, 5, 6,  7  ],

        "dates": [  0,  1,  2,   3, 4,  5, 6,  7,  8,  9, 10,  11, 12,13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31],

"months": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ],

"days": "all", "intervals": [ [ 0,  1440 ] ] }}}}

POST/ses/robot/import/{id} Загрузка архива робота в черновик существующего робота
  • zip — файл с архивом робота
  • id — идентификатор робота
{  "error": 0,  "message": "success"}
GET/ses/robot/list Получение списка роботов
Входные параметры отсутствуют [  {  "id": "9fd7f6f1-2cac-4f0f-a121-75c40f2b5e78",    "name": "test",

    "hasProd": true,

    "hasBackup": true  } ]

POST/ses/robot/modify/{id} Изменение основных настроек робота. Формат data как в ответе метода GET/ses/robot/get/{id}
  • data — json строка с новыми настройками робота
  • id — идентификатор робота
{  "error": 0,  "message": "success"}
POST/ses/robot/restore/{id} Откат рабочей версии из бэкапа. Резервная копия становится рабочей, и удаляется, а черновик остается без изменений
  • id — идентификатор робота
{  "error": 0,  "message": "success"}
POST/ses/robot/script/add/{robot} Добавление нового скрипта. Формат data как в ответе метода GET/ses/robot/script/get/{robot}/{id}
  • data — json строка с параметрами скрипта
  • robot — идентификатор робота
{  "error": 0,  "message": "success"}
DELETE/ses/robot/script/delete/{robot}/{id} Удаление скрипта
  • robot — идентификатор робота
  • id — идентификатор скрипта
{  "error": 0,  "message": "success"}
GET/ses/robot/script/get/{robot}/{id} Получение текста скрипита
  • robot — идентификатор робота
  • id — идентификатор скрипта
{  "error": 0,  "data": {

    "id": "6a9f91b6-9634-4079-ac2b-60a944922c61",

"type": "Тип скрипта",

    "name": "Наименование скрипта",

    "code": "Текст скрипта"  }

}

GET/ses/robot/script/list/{robot} Получение списка скриптов
  • id — идентификатор робота
[  {    "id": "9b9d83b7-d5c3-49e6-9bd4-a123a9047939",    "name": "наименование1",

"type": "Тип скрипта"},

  {    "id": "48b508ba-a32b-4ada-bcc3-66ce26d81c6a",

    "name": "наименование2",

"type": "Тип скрипта"}]

POST/ses/robot/script/modify/{robot}/{id} Изменение скрипта.Формат data как в ответе метода GET/ses/robot/script/get/{robot}/{id}
  • data — json строка с параметрами элемента данных
  • id — идентификатор скрипта
  • robot — идентификатор робота
{  "error": 0,  "message": "success"}
POST/ses/robot/script/test/{robot}/{id} Тестирование скрипта. Формат data как в ответе метода GET/ses/session/{robot_id}/{session_id}
  • data - json строка с параметрами сессии
  • id - идентификатор скрипта
  • robot - идентификатор робота
{"error": 0, "message": "success", "result": {.....}, "variables": {}}
POST/ses/robot/userdata/data/add/{robot}/{structure} Добавление записи в пользовательский справочник.
  • data - json строка в формате {"колонка 1": "значение 1","колонка n":"значение n"}
  • robot - идентификатор робота (id)
  • structure - идентификатор пользовательского справочника
{"error": 0,  "id": "id записи"}
DELETE/ses/robot/userdata/data/delete/{robot}/{structure}/{id} Удаление записи из пользовательского справочника.
  • robot - идентификатор робота (id)
  • structure - идентификатор пользовательского справочника
  • id - идентификатор записи (id)
{"error": 0,  "message": "success"}
GET/ses/robot/userdata/data/list/{robot}/{structure} Получение данных из пользовательского справочника.
  • robot - идентификатор робота (id)
  • structure - идентификатор пользовательского справочника
[{ "колонка 1": "значение 1", "колонка n": "значение n", "id": "id записи"}]
POST/ses/robot/userdata/data/modify/{robot}/{structure} Массовое изменение данных в пользовательском справочнике.
  • list - json строка в формате [{"колонка 1": "значение 1","колонка n": "значение n", "id": "id строки"}]
  • robot - идентификатор робота (id)
  • structure - идентификатор пользовательского справочника
{"error": 0,  "message": "success"}
POST/ses/robot/userdata/data/modify/{robot}/{structure}/{id} Изменение одной записи пользовательского справочника.
  • data - json строка в формате {"колонка 1": "значение 1","колонка n":"значение n"}
  • robot - идентификатор робота (id)
  • structure - идентификатор пользовательского справочника
  • id - идентификатор записи (id)
{"error": 0,  "message": "success"}
POST/ses/robot/userdata/data/put/{robot}/{structure} Добавление данных с заменой в пользовательском справочнике.
  • list - json строка в формате [{"колонка 1": "значение 1","колонка n": "значение n", "id": "id строки"}] Поле "id" опционально, при его добавлении данные в строке будут заменены.
  • replace - замена всех данных в справочнике новыми данными. Возможные значения: yes/no. По-умолчанию - yes.
  • robot - идентификатор робота (id)
  • structure - идентификатор пользовательского справочника
{"error": 0,  "message": "success"}
POST/ses/robot/userdata/structure/add/{robot} Добавление пользовательского справочника.
  • data - json строка в формате {"id": "id справочника", "name": "справочник", "fields": {"колонка 1": "значение по умолчанию","колонка n":"значение по умолчанию"}}. Поле "id" опционально.
  • robot - идентификатор робота (id)
{"error": 0,  "id": "id справочника"}
DELETE/ses/robot/userdata/structure/delete/{robot}/{id} Удаление пользовательского справочника.
  • robot - идентификатор робота (id)
  • id - идентификатор пользовательского справочника
{"error": 0,  "message": "success"}
GET/ses/robot/userdata/structure/list/{robot} Получение списка пользовательских справочников.
  • robot - идентификатор робота (id)
[{"id": "id справочника", "name": "справочник", "fields": {"колонка1": "значение по умолчанию"}}]
POST/ses/robot/userdata/structure/modify/{robot}/{id} Модификация структуры пользовательского справочника.
  • data - json строка в формате {"name": "справочник", "fields": {"колонка 1": "значение по умолчанию","колонка n":"значение по умолчанию"}}.
  • robot - идентификатор робота (id)
  • id - идентификатор пользовательского справочника
{"error": 0,  "message": "success"}
GET/ses/session/{robot_id}/{session_id} Выдает параметры сессии. Для отображения на боковой панели тестирования в UPS. Основные блоки результата:
  • robot_id — id робота
  • session_id — id незакрытой сессии
{ "started": "",  "modified": "",

  "robot": "",

  "session": "",

  "channel": "",

  "connector": "",

  "unknown": true/false,

  "current": {"id": "", "qas": "", "answered": true/false, "category": "",

              "nearest": "",    "entry": [.....],    "missingRunData": [],

              "passedRunData": [.....],       "waitingRunData": null,

              "border": int,    "preborder": int,    "lastreply": ""},

  "models": [.....],

  "scripts": [.....],

  "data": [{"request": {.....}, "reply": {.....}}],

  "timers": [],

  "variables": {},

  "error": "",

  "events": {.....},

  "closed": ""  }

GET/ses/widget/config Выдает параметры виджета для web канала по запросу js скрипта
  • token — уникальный код виджета, создается при внедрении
Состав конфига канала, для передачи виджету. Подробней в Руководстве администратора
GET/ses/widget/js Выдает код js скрипта виджета для web-канала
Входные параметры отсутствуют Код скрипта
/res: методы работы с сервисом отчетов
Описание методов API
GET/res/dashboards Получить список рабочих столов kibana с наборами отчетов
Входные параметры отсутствуют {  "error": 0,  "message": "success",

  "dashboards": {

"Наименование1": "https://........",

"Наименование2": "https://........."  }}

/transcription: методы работы со стенографией
GET/transcription/audio/{id} Получить аудиофайл по id стенограммы. Идентификатор нужной стенограммы можно получить методом

"GET /transcription/list"

  • id — идентификатор стенограммы
wav файл сохраненной стенограммы
POST/transcription/create Создание стенограммы из завершенного задания в очереди распознавания. В ответ придет id созданной стенограммы
  • taskID — идентификатор задания из очереди
  • name — имя создаваемой стенограммы
{"error": 0,

"message": "success",

"id": "74721a3b-9055-4650-9afb-de4d103cafc7"}

DELETE/transcription/delete/{id} Удаление стенограммы
  • id — идентификатор стенограммы
{"error": 0,"message": "success"}
GET/transcription/get/{id} Получение стенограммы. Используется для отображения стенограммы в веб интерфейсе
  • id — идентификатор стенограммы
стенограмма в json формате
GET/transcription/list Получение списка сохраненных стенограмм
Входные параметры отсутствуют [ { "id": "926e8d25-4275-4a78-906b-a1109cdacbea",

"name": "название",

"model": "big",

"created": "2024-03-29 12:37:42",

"modified": "2024-04-24 16:09:09",

"user": "0",

"dataset": "0" }, .... ]

POST/transcription/save/{id} Сохранение стенограмы. Используется для сохранения изменений по нажатию кнопки «Сохранить».
  • data — стенограмма в json формате
  • id стенограммы
{"error": 0,"message": "success"}
GET/transcription/waveform/{id} Служебный метод для отображения аудио в графическом виде, ответ содержит пики сигнала
  • id стенограммы
{ "error": 0,

"waveform": [

   0.016,

  ..........

  ..........

   0.015,

   0.01 ] }