Инструменты WEB API в СЭО 3КL. Возможности и примеры

Сергей Гусев
2024-03-20 15:55
Применение материалов, изложенных в статье, требует наличия специальных знаний.
Статья содержит описание функций API, разработанных ООО «Открытые технологии».
Функционал, описанный в данной статье, в полном объеме доступен в СЭО 3КL начиная с версии 4.1.8a.
Если вы используете более раннюю версию системы — обратитесь с заявкой на проведение обновления в службу технической поддержки ООО «Открытые технологии».

1. Общая информация

Одним из вариантом взаимодействия внешних систем с СЭО 3КL является программный интерфейс приложений (API) - набор определенных способов и правил, позволяющий различным программным продуктам обмениваться данными по стандартизированным протоколам. API СЭО 3КL поддерживает обмен данными по протоколам REST, SOAP и XML-RPC.

Клиент API (непосредственно внешняя система или пользователь API через веб-браузер) обращается с запросом к серверу СЭО 3КL на выполнение функции API (Рис. 1.1). В зависимости от исполняемой функции, результатом запроса будет получение от сервера ответа с информацией из СЭО 3КL или какое-либо действие в системе.

Рис.1.1. Пример схемы работы WEB API.

Перед обработкой запроса выполняется аутентификация клиента API — сервер должен знать, кто делает запросы и имеет ли он на это право. Для этого запрос отправляется вместе с секретным ключом (токеном), который сгененрирован с использованием информации учетной записи пользователя API. Если запрос содержит валидный ключ, то сервер выполнит его обработку.

-Вернуться к содержанию-

2. Возможности

-Вернуться к содержанию-

2.1. Создание

Лучшие документации API представляют самостоятельную справку, которая сжато и точно объясняет, что возможно, а что нет, и с чего начать. Она также служит местом, к которому пользователи могут обращаться с вопросами о синтаксисе и функциональности. Несмотря на то, что от сайта к сайту она может отличаться, структура у всех документаций будет одинакова.

-Вернуться к содержанию-

2.2. Документация API

Полный перечень функций (методов), которые могут быть использованы при интеграции по API доступны в интерфейсе СЭО 3КL на странице «Документация API» (Администрирование->Сервер->Веб-службы->Документация API).

-Вернуться к содержанию-

3. Основные этапы предварительной настройки СЭО 3КLтребуются права администратора

Действия в данной инструкции с пометкой требуются права администратора могут быть выполнены только при наличии доступа «Полный Администратор». Начиная с 2022 года для вновь заключаемых договоров такой набор прав предоставляется роли «Диспетчер-администратор» по умолчанию. Если ваш договор был заключен раньше, вы можете обратиться в техподдержку с соответствующей заявкой на расширение набора прав диспетчера-администратора.
Важно! Неосторожные действия полного администратора могут повредить систему и контент таким образом, что исправление последствий вмешательства выйдет за рамки гарантийной технической поддержки. В случае внесения правок в глобальные настройки рекомендуем вам полностью убедиться в том, что вы понимаете, за что отвечают данные настройки. Если у вас возникают сомнения в назначении глобальных настроек, обратитесь за помощью в техническую поддержку.
Подробная информация в статье «Полный административный доступ».

Для применения описанных ниже методов API, необходимо создать и настроить в СЭО 3КL веб-службу. Последовательность действий и ссылки на соответствующие интерфейсы настроек доступны на странице «Обзор» (Администрирование->Сервер->Веб-службы->Обзор) (Рис. 2.1).

Рис. 2.1. Страница «Веб-службы».

Общий алгоритм действий следующий:

1) В СЭО 3КL включается функционал веб-служб (Рис. 2.2) и необходимые протоколы API (Рис. 2.3) — шаги 1, 2 процедуры настройки (см. Рис. 2.1).

Рис. 2.2. Настройка «Включить веб-службы» на странице администрирования «Расширенные возможности».

Рис. 2.3. Включенный протокол REST на странице «Управление протоколами».

2) В СЭО 3КL создается специальный пользователь (далее - пользователь интеграции), от имени которого будет происходить взаимодействие со внешней системой (Администрирование->Пользователи->Учетные записи->Добавить пользователя->). Пользователю выдаются необходимые права — шаги 3, 4, 7 процедуры настройки (см. Рис. 2.1).

В целях безопасности, настоятельно рекомендуем создать для такого пользователя в СЭО 3КL отдельную роль и определить в этой роли минимально необходимый для корректной работы интеграции набор прав: право на использование протокола + все те права, которые необходимы для каждой функции создаваемой веб-службы.
Дополнительная информация о создании и настройке ролей в статье «Определение ролей, настройка прав».

3) В CЭО 3КL создается новая веб-служба (Администрирование->Сервер->Веб-службы->Внешние службы->кнопка «Добавить»), в которую включаются все необходимые для планируемой интеграции функции (Рис. 2.4) — шаги 5, 6 процедуры настройки (см. Рис. 2.1).

Рис. 2.4. Добавление функций в ранее созданную веб-службу «Test_api_kbz».

4) Для ранее созданного пользователя интеграции на странице «Создать ключ» (Администрирование->Сервер->Веб-службы->Управление ключами->кнопка «Создать ключ») генерируется ключ безопасности (токен), при помощи которого скрипт интеграции будет получать доступ к веб-службе (Рис. 2.5, Рис. 2.6)— шаги 8 процедуры настройки (см. Рис. 2.1).

Рис. 2.5. Пример генерации токена пользователю интеграции Апиаев Прохор для веб-службы «Test_api_kbz».

Рис. 2.6. Сгенерированный ключ безопасности на странице «Управление ключами».
Если пользователю интеграции может потребоваться доступ к документации используемых в веб-службе функций, необходимо дополнительно включить опцию «Документация веб-служб» (шаг 9 процедуры настройки). Ссылки на документацию станут ему доступны на странице «Ключи безопасности».

-Вернуться к содержанию-

3.1. С

-Вернуться к содержанию-

3.2. С

-Вернуться к содержанию-

4. Решения

3.1. Создание и редактирование настроек критериев завершения курса

Название функции: local_opentechnololgy_edit_completion_criteria

Протокол: REST

Структура и параметры:

list of ( 
object {
id int   //Идентификатор курса, обязательный параметр
overall_aggregation int   //Общее условие завершения курса, 1 - все условия должны быть завершены, 2 - любое условие должно быть завершено, обязательный параметр
settingsunlock int  По умолчанию - «0» //Флаг разблокировки текущих настроек критериев выполнения (0 или 1, при передаче значения 1 будут удалены текущие настройки и очищены текущие данные пользователей по выполнению курса, если передан 0 и настройки заблокированы, никаких изменений не произойдёт, переданные данные будут проигнорированы)
clearcriteria int  По умолчанию - «0» //Флаг удаления текущих настроек критериев выполнения (0 или 1, при передаче значения 1 текущие настройки завершения курса будут полностью заменены на переданные, если передан 0, будут заменены или добавлены только переданные данные)
criteria_activity  Необязательно //Список модулей курса
list of ( 
object {
cmid int   //Идентификатор модуля курса
value int  По умолчанию - «0» //Значение 0 или 1
} 
)activity_aggregation int  Необязательно //Условие для критерия завершения элементов курсов, 1 - все элементы курса должны быть завершены, 2 - любой элемент курса должен быть завершён
criteria_course  Необязательно //Список курсов
list of ( 
object {
courseid int   //Идентификатор курса
} 
)course_aggregation int  Необязательно //Условие для критерия завершения других курсов, 1 - все курсы должны быть завершены, 2 - любой курс должен быть завершён
criteria_date int  Необязательно //Флаг включения критерия завершения курса по дате
criteria_date_value int  По умолчанию - «1704966463» //Значение даты (timestamp) критерия завершения курса по дате
criteria_duration int  Необязательно //Флаг включения критерия завершения курса по продолжительности зачисления
criteria_duration_days int  По умолчанию - «86400» //Значение периода зачисления в секундах
criteria_grade int  Необязательно //Флаг включения критерия завершения курса по оценке за курс
criteria_grade_value double  По умолчанию - «0» //Оценка типа float с учётом локали
criteria_role  Необязательно //Список ролей для завершения курса за другого
list of ( 
object {
roleid int   //Идентификатор роли
} 
)role_aggregation int  Необязательно //Условие для критерия завершения курса за другого, 1 - все роли должны поставить отметку о выполнении, 2 - любая роль должна поставить отметку о выполнении
criteria_self int  Необязательно //Флаг включения критерия завершения курса по самостоятельной отметке
criteria_unenrol int  Необязательно //Флаг включения критерия завершения курса по исключению из курса
} 
)

Пример: completion_criteria.php

Приведенный в примере код очищает существующие условия завершения в курсе с id=81 и определяет, что курс будет считаться завершенным, когда любое из нижеперечисленных условий будет выполнено:

  • выполнен элемент курса с id=1392 (финальный тест в курсе);
  • курс с id=16 отмечен как завершенный;
  • курс отмечен как завершенный через 10 дней с момента запуска скрипта;
  • слушатель остается зачисленным на курс на протяжении 10 дней;
  • слушатель исключен из курса;
  • оценка слушателя более 50 баллов;
  • слушатель самостоятельно завершил курс (для реализации этой возможности в курсе должен быть настроен блок «Самостоятельное отслеживание завершения»);
  • пользователь с ролью id=3 (в нашем примере — преподаватель) завершил курс за слушателя.

Рис. 3.1.1. Пример загруженных при помощи функции local_opentechnololgy_edit_completion_criteria условий завершений курса «Космонавтика» (id=81).

-Вернуться к содержанию-

3.2. Создание достижений по шаблону типа «Настраиваемый»

Название функции: block_dof_storage_achievementins_create

Протокол: REST

Структура и параметры:

list of ( 
object {
achievementid int   //Идентификатор шаблона достижений, обязательный параметр
personid int   //Идентификатор персоны деканата, для которой создаётся достижение, обязательный параметр
goaldeadline int  Необязательно //Дата дедлайна цели (timestamp) (по умолчанию null)
data   //Значения критериев достижения, обязательный параметр
list of ( 
object {
criterianum int   //Номер критерия достижения (0, 1, 2, ...)
criteriavalue string   //Значение критерия
criteriaoptions  Необязательно //Дополнительные опции критерия
list of ( 
object {
optionnum int   //Номер опции критерия (0, 1, 2, ...)
optionname string   //Значение опции критерия
optionvalue string   //Имя опции критерия
} 
)} 
)options  Необязательно //Дополнительные опции создания достижений
object {
create_goal int  Необязательно //Флаг необходимости создания цели (0 или 1)
} 
} 
)

Пример:

-Вернуться к содержанию-

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

Название функции: block_dof_storage_persons_get_bu

Протокол: REST

Структура и параметры:

 

Пример:

-Вернуться к содержанию-

 

Возможности - с помощью веб апи вы сможете то-то и то-то

Настройка -создание ключей, пользователей - выделить в подразделы, чтобы можно было быстро перейти из оглавления

быстрый старт - объяснение и примеры, как это работает в целом, простые примеры.

Возможно нужен раздел, как читать документацию по апи - там разъяснить, как находить и сейчас мы на примере разберем, что вы там увидите и как этим пользоваться

возможно (если наберется информация) - заметки по отдельным функциям - если есть инфа, сверх того, что есть в документации

примеры и решения - с кодом, которые сделали программисты для наших функций

Теги: API
Рейтинг ответа: 0 (0 оценок)

Комментарии запрещены