Job Scheduler API
Job
Job представляет список активных действий, которые работают с результатами поиска. Поиск осуществляется по расписанию, указанном при создании задачи. API позволяет получать информацию о задачах, добавлять, обновлять и удалять их.
Структура Job
| Название | Синтаксис | Описание |
|---|---|---|
| name | <string> | Название задачи. |
| title | <string> | Заголовок задачи. |
| description | <string> | Описание задачи. |
| throttle | <object> | Подавление задачи (Подробнее Throttle). |
| actions | <array> | Список активных действий. Каждое активное действие представляет собой object (Подробнее Actions API). |
| global_params | <object> | Глобальные параметры задачи в формате ключ - значение. |
| search | <object> | Параметры поиска, который осуществляется при выполнении задачи (Подробнее Search). |
| run_with_roles | <array> | Список ролей, которые могут выполнять задачу. |
| schedule | <object> | Расписание выполнении задачи (Подробнее Schedule). |
| enabled | <bool> | Состояние задачи (включена, выключена). |
| lock_duration_seconds | <int> | Интервал времени от выполняемого запроса до выполнения следующего. |
| jitter | <float> | Случайное смещение времени. |
| _permission | <object> | Права доступа задачи. |
Throttle
| Название | Синтаксис | Описание |
|---|---|---|
| time | <string> | Время подавления. |
| fields | <array> | Список полей, по которым осуществляется подавление. В списке хранится названия полей в формате string. |
Подавление - отбрасывает аналогичные результаты поиска по полям для подавления за выбранный промежуток времени.
Schedule
| Название | Синтаксис | Описание |
|---|---|---|
| cron | <object> | Задача расписания через Cron. |
| interval | <object> | Задача расписания через интервальные значения. |
Cron и Interval взаимоисключающие, то есть есть поле cron, то поле interval должно отсутствовать.
Cron
| Название | Синтаксис | Описание |
|---|---|---|
| expression | <string> | Cron-выражение. |
| timezone | <string> | Часовой пояс. |
Interval
| Название | Синтаксис | Описание |
|---|---|---|
| start_time | <string> | Время, с которого начинается отсчет интервалов. |
| period | <int> | Длина интервала. |
| unit | <string> | Единица измерения. Например, MINUTES, HOURS, DAYS и т.д. |
Search
| Название | Синтаксис | Описание |
|---|---|---|
| query | <string> | Запрос. |
| timefield | <string> | Имя поля в котором хранится временная метка |
| earliest | <string> | Начальная временная метка поиска. |
| latest | <string> | Конечная временная метка поиска. |
CRUD для Job
Получение списка всех задач
GET _core/job_scheduler/jobs/
Получение задачи по ID
GET _core/job_scheduler/jobs/{job_id}
Добавление новой задачи
POST _core/job_scheduler/jobs/
{
"title": "Тестирование Email c smtpConnection",
"description": "test description",
"throttle": {
"time": "5m",
"fields": []
},
"actions": [
{
"script": {
"context": "/app/opensearch/utils/python/bin/python3 /app/opensearch/utils/scripts/file_write_script.py",
"is_once": false,
"local_params": {}
}
}
],
"global_params": {
"key": "value"
},
"search": {
"sme": {
"query": "source internal_audit-* qsize=5;",
"time_field": "@timestamp",
"earliest": "now-24h",
"latest": "now"
}
},
"run_with_roles": [],
"name": "Testirovanie_Email_c_smtpConnection",
"schedule": {
"cron": {
"expression": "* * * * *",
"timezone": "Europe/Moscow"
}
},
"enabled": false,
"lock_duration_seconds": 30,
"_permissions": {
"owner": "admin",
"read": {
"roles": [],
"users": []
},
"write": {
"roles": [],
"users": []
}
}
}
Обновление задачи
PUT _core/job_scheduler/jobs/{job_id}
{
"title": "Тестирование Email c smtpConnection",
"throttle": {
"time": "5m",
"fields": []
},
"actions": [
{
"script": {
"context": "/app/opensearch/utils/python/bin/python3 /app/opensearch/utils/scripts/file_write_script.py",
"is_once": false,
"local_params": {}
}
}
],
"global_params": {},
"search": {
"sme": {
"query": "source internal_audit-* qsize=5;",
"time_field": "@timestamp",
"earliest": "now-24h",
"latest": "now"
}
},
"run_with_roles": [],
"name": "Testirovanie_Email_c_smtpConnection",
"schedule": {
"cron": {
"expression": "* * * * *",
"timezone": "Europe/Moscow"
}
},
"enabled": false,
"lock_duration_seconds": 30,
"_permissions": {
"owner": "admin",
"read": {
"roles": [],
"users": []
},
"write": {
"roles": [],
"users": []
}
}
}
Удаление задачи
DELETE _core/job_scheduler/jobs/{job_id}
Запись в БД
Настройки "Запись в БД" необходимы для создания соответствующего активного действия. Для создания "Запись в БД" необходимо предварительно иметь список пользователей JDBC и список соединений.
JDBC User
| Название | Синтаксис | Описание |
|---|---|---|
| name | <string> | Именование пользователя. |
| username | <string> | Имя пользователя в базе данных. |
| password_id | <string> | Ключ в keystore c префиксом jobscheduler.jdbc.password., по которому возможно получить пароль пользователя в базе данных. |
Пример:
{
"name": "name",
"username": "username",
"password_id": "passwordId"
}
Connection
| Название | Синтаксис | Описание |
|---|---|---|
| name | <string> | Название базы данных. |
| driver | <object> | Драйвер базы данных (например, postgres, clickhouse). |
| host | <string> | Адрес хоста, на котором находится база данных (например, "localhost" или IP-адрес). |
| port | <string> | Номер порта, используемого для подключения к базе данных. |
| db | <string> | Имя базы данных, к которой осуществляется подключение. |
Пример:
{
"name": "myDatabase",
"driver": "postgres",
"host": "localhost",
"port": "5432",
"db": "myDbName"
}
CRUD для JDBC User
Получение списка всех пользователей
GET _core/job_scheduler/jdbc_user/
Получение пользователя по ID
GET _core/job_scheduler/jdbc_user/{jdbc_user_id}
Добавление нового пользователя
POST _core/job_scheduler/jdbc_user/
{
"name": "name",
"username": "username",
"password_id": "passwordId"
}
Обновление пользователя
PUT _core/job_scheduler/jdbc_user/{jdbc_user_id}
{
"name": "name",
"username": "username",
"password_id": "passwordId"
}
Удаление пользователя
DELETE _core/job_scheduler/jdbc_user/{jdbc_user_id}
CRUD для Connection
Получение списка всех соединений
GET _core/job_scheduler/jdbc_connection/
Получение соединения по ID
GET _core/job_scheduler/jdbc_connection/{connection_id}
Добавление нового соединения
POST _core/job_scheduler/jdbc_connection
{
"name": "myDatabase",
"driver": "postgres",
"host": "localhost",
"port": "5432",
"db": "myDbName"
}
Обновление соединения
PUT _core/job_scheduler/jdbc_connection/{connection_id}
{
"name": "myDatabase",
"driver": "postgres",
"host": "localhost",
"port": "5432",
"db": "myDbName"
}
Удаление соединения
DELETE _core/job_scheduler/jdbc_connection/{connection_id}
Mail
Настройки Mail необходимы для создания соответствующего активного действия и возможностью создавать рассылку сразу группе получателей письма. Для этого необходимо сначала создать необходимое количество получателей, а потом из них создать группу. С помощью API пользователь может настроить получателей, группу получателей и SMTP.
В случае если в Mail Action не указан smtp_id, то настройки отправителя будут браться из индекса .sm_settings.
В случае если Mail Action не указан в параметр recipient_group_id, то получатель будет выступать пользователь,
указанный в параметре
to.
Recipient
| Название | Синтаксис | Описание |
|---|---|---|
| name | <string> | Имя получателя. |
| description | <string> | Описание получателя. |
| type | <string> | Тип адреса. |
| address | <string> | Адрес электронной почты получателя. |
Пример:
{
"name": "name",
"description": "description",
"type": "EMAIL",
"address": "test@test.ru"
}
Recipient Group
| Название | Синтаксис | Описание |
|---|---|---|
| name | <string> | Имя группы получателей. |
| description | <string> | Описание группы получателей. |
| recipient_ids | <array> | id получателей, которые записаны в индекс получателей. |
| recipient_emails | <array> | Список адресов получателей, которые не записаны в индекс получателей. |
Пример:
{
"name": "name",
"description": "description",
"recipient_ids": ["id1", "id2"],
"recipient_emails": ["test@test.ru", "test2@test.ru"]
}
SMTP
SMTP имеет структуру:
| Название | Синтаксис | Описание |
|---|---|---|
| name | <string> | Имя SMTP сервера. |
| description | <string> | Описание SMTP сервера. |
| host | <string> | Адрес хоста SMTP сервера. |
| port | <string> | Порт, на котором работает SMTP сервер (например, 12345). |
| user | <string> | Имя пользователя для аутентификации на SMTP сервере. |
| user_email | <string> | Электронная почта пользователя, связанная с учетной записью SMTP сервера. |
| password_id | <string> | Ключ в keystore с префиксом jobscheduler.email.password., по которому возможно получить пароль пользователя. |
| timeout | <int> | Тайм-аут подключения к SMTP серверу в миллисекундах. |
| proto | <string> | Протокол, используемый для подключения к SMTP серверу (например, ssl). |
Пример:
{
"name": "name",
"description": "description",
"host": "host",
"port": "12345",
"user": "user",
"user_email": "test@test.su",
"password_id": "passwordId",
"timeout": 5000,
"proto": ""
}
CRUD для Recipient
Получение списка всех получателей
GET _core/job_scheduler/recipients
Получение получателя по ID
GET _core/job_scheduler/recipients/{recipient_id}
Добавление нового получателя
POST _core/job_scheduler/recipients
{
"name": "name",
"description": "description",
"type": "EMAIL",
"address": "test@test.ru"
}
Обновление получателя
PUT _core/job_scheduler/recipients/{recipient_id}
{
"name": "name",
"description": "description",
"type": "EMAIL",
"address": "test@test.ru"
}
Удаление получателя
DELETE _core/job_scheduler/recipients/{recipient_id}
CRUD для Recipient Group
Получение списка всех групп получателей
GET _core/job_scheduler/recipient_groups
Получение группы получателей по ID
GET _core/job_scheduler/recipient_groups/{recipient_group_id}
Добавление новой группы получателей
POST _core/job_scheduler/recipient_groups
{
"name": "name",
"description": "description",
"recipient_ids": [
"id1",
"id2"
],
"recipient_emails": [
"test@test.ru",
"test2@test.ru"
]
}
Обновление группы получателей
PUT _core/job_scheduler/recipient_groups
{
"name": "name",
"description": "description",
"recipient_ids": [
"id1",
"id2"
],
"recipient_emails": [
"test@test.ru",
"test2@test.ru"
]
}
Удаление группы получателей
DELETE _core/job_scheduler/recipient_groups/{recipient_group_id}
CRUD для SMTP
Получение списка всех SMTP
GET _core/job_scheduler/smtp
Получение SMTP по ID
GET _core/job_scheduler/smtp/{smtp_id}
Добавление нового SMTP
POST _core/job_scheduler/smtp
{
"name": "name",
"description": "description",
"host": "host",
"port": "12345",
"user": "user",
"user_email": "test@test.su",
"password_id": "passwordId",
"timeout": 5000,
"proto": ""
}
Обновление SMTP
PUT _core/job_scheduler/smtp/{smtp_id}
{
"name": "name",
"description": "description",
"host": "host",
"port": "12345",
"user": "user",
"user_email": "test@test.su",
"password_id": "passwordId",
"timeout": 5000,
"proto": ""
}
Удаление SMTP
DELETE _core/job_scheduler/smtp/{smtp_id}