API

В API OneBridge используются POST-, GET-, PUT- и DELETE-запросы. Тип запроса указан отдельно для каждого метода.

Структура URI-запросов:

Каждый URI начинается с URL-адреса API http://<IP-address:port>/api/, за ним следует название метода и параметры, при необходимости. Например, полный запрос для получения информации о сервере может быть записан так: http://127.0.0.1:8000/api/info.

Список API-методов ядра системы OneBridge, доступных для вызова:

Resources

get info

ПараметрЗначение
Описаниевозвращает основную информацию о сервере, локальное и мировое время
МетодGET
Пример запроса

http://127.0.0.1:8000/api/info

Пример ответа

"name":"root@mironov1.fvds.ru",
"uptime":16279,
"local_time":"2023-06-13T14:17:42.919911616+00:00",
"utc_time":"2023-06-13T14:17:42.919951526Z"

Параметры запросабез параметров
Ответ возвращает JSON файл со структурой:
name: string,  
uptime: integer,  
local_time: date-time,  
utc_time: date-time.

get performance

ПараметрЗначение
Описаниевозвращает данные по работе сервера для отображения графиков работы памяти и процессора
МетодGET
Пример запроса

http://127.0.0.1:8000/api/performance

Пример ответа

"ram": {
    "system_ram": 
    [
        {
        "datetime": "2023-06-13T06:37:36Z",
        "total": "16777785344",
        "used": "1356226560"
        },
    ...],
    "worker_ram": []  },
"cpu": {
    "system_cpu": 
    [
        {
        "datetime": "2023-06-13T06:37:36Z",
        "usage": "0.21265951"
        },
    ...],
    "worker_cpu": []  }

Параметры запросабез параметров
Ответ возвращает JSON файл со структурой, которая содержит объекты, описывающие состояние памяти и процессора:

ram: массив объектов с информацией о памяти

datetime: date-time,  
total: string, 
used: string

cpu: массив объектов с информацией о процессоре

datetime: date-time,
usage: string

get utilization

ПараметрЗначение
Описаниевозвращает данные по количеству используемой памяти сервера
МетодGET
Пример запроса

http://127.0.0.1:8000/api/utilization

Пример ответа

"name":"System RAM",
"total":16777785344,
"used":1351917568

Параметры запросабез параметров
Ответ возвращает JSON файл со структурой:
name: string,
total: integer,
used: integer

Execution

get job_params

ПараметрЗначение
Описаниевозвращает информацию о параметрах запуска задания
МетодGET
Пример запроса

http://127.0.0.1:8000/api/job_params?path=/JobsForTests/graph/others/concat_pub_prms.grf

Пример ответа
name: "DIR_IN", 
required: true
Параметры запросаpath: string
Ответ возвращает JSON файл со структурой:
name: string,
required: bool

get run_by_id

ПараметрЗначение
Описаниевозвращает задание по идентификатору
МетодGET
Пример запроса

http://127.0.0.1:8000/api/run_by_id?id=14

Пример ответа
"id":"14","parent_id":null,"started":"2023-06-08T12:21:01.923351217Z","finished":"2023-06-08T12:21:29.912137285Z","job_file":"/JobsForTests/data-in/others/concat_in2.txt","status":"Success"
Параметры запросаid: string
Ответ возвращает JSON файл со структурой:
id: string,
parent_id: string,
started: date-time,
finished: date-time, (не обязательный)
job_file: string,
status: Success/Failure/InProgress

get runs

ПараметрЗначение
Описаниевозвращает информацию об отработавшем задании
МетодGET
Пример запроса

http://127.0.0.1:8000/api/runs?offset=0&limit=3

Пример ответа
{
    "id":"161",
    "parent_id":null,
    "started":"2023-06-15T08:25:55.001469354Z",
    "finished":"2023-06-15T08:25:59.366660393Z",
    "job_file":"/JobsForTests/graph/others/concat.grf",
    "status":"Success"
},
{
    "id":"160",
    "parent_id":null,
    "started":"2023-06-15T07:22:21.001189359Z",
    "finished":"2023-06-15T07:22:38.409859493Z",
    "job_file":"/JobsForTests/graph/others/dedup.grf",
    "status":"Success"
},
{
    "id":"159",
    "parent_id":null,
    "started":"2023-06-14T19:04:56.310805953Z",
    "finished":"2023-06-14T19:05:01.355260657Z",
    "job_file":"/JobsForTests/graph/others/map03.grf",
    "status":"Failure"
}
Параметры запроса

from: date-time, (не обязательный)
to: date-time, (не обязательный)
job_file: string, (не обязательный)
status: string, (не обязательный)
offset: integer, (не обязательный, начальный индекс в актуальном списке запущенных заданий)
limit: integer, (не обязательный, количество записей, которые нужно прислать)
order: Asc/Desc (по умолчанию order: Desc)

Ответ возвращает JSON файл со структурой:
id: string,  
parent_id: string, (не обязательный)  
started: date-time,  
finished: date-time, (не обязательный)  
job_file: string,  
status: Success/Failure/InProgress

get runs_log

ПараметрЗначение
Описаниезапрашивает журнал выполнения запуска задания
МетодGET
Пример запроса

http://127.0.0.1:8000/api/runs/log?id=151&last_bytes=4096

Пример ответа
[14.06.2023 08:36:29 990 ms][INFO][worker/src/xml_path.rs:174]: [compile] no redis server connection. Cant use memoization.
[14.06.2023 08:36:29 990 ms][INFO][worker/src/xml_path.rs:213]: [xml] start parse
[14.06.2023 08:36:29 990 ms][WARN][codegen/src/xml/table/param_table.rs:325]: [xml][xml position: [line:11 symb:12]:[line:11 symb:57]] param `DIR_IN` is public and not required but there is no `value` attribute!
[14.06.2023 08:36:29 990 ms][INFO][codegen/src/xml/table/edge_table.rs:359]: [xml][xml position: [line:24 symb:8]:[line:24 symb:62]] metadata resolved: <Edge id="B --> x" metadata="ObjectWithPos">
[14.06.2023 08:36:29 990 ms][INFO][codegen/src/xml/table/edge_table.rs:359]: [xml][xml position: [line:25 symb:8]:[line:25 symb:66]] metadata resolved: <Edge id="x --> writer" metadata="ObjectWithPos">
[14.06.2023 08:36:29 990 ms][INFO][codegen/src/xml/table/edge_table.rs:359]: [xml][xml position: [line:26 symb:8]:[line:26 symb:62]] metadata resolved: <Edge id="C --> x" metadata="ObjectWithPos">
[14.06.2023 08:36:29 990 ms][INFO][worker/src/xml_path.rs:215]: [xml] end parse
[14.06.2023 08:36:29 991 ms][INFO][worker/src/xml_path.rs:221]: [cgen] start code generation
[14.06.2023 08:36:29 993 ms][INFO][worker/src/xml_path.rs:223]: [cgen] end code generation
[14.06.2023 08:36:29 993 ms][INFO][worker/src/xml_path.rs:225]: [compile] start
[14.06.2023 08:36:34 691 ms][INFO][worker/src/xml_path.rs:245]: [compile] end(exit status: 0)
[14.06.2023 08:36:34 691 ms][INFO][worker/src/xml_path.rs:251]: [compile|stdout] Output:``
Параметры запроса

id: string,
last_bytes: integer (не обязательный)

Ответвозвращает строку (текст)

get runs_num

ПараметрЗначение
Описаниевозвращает общее количество заданий, можно фильтровать по статусу, дате и имени файла
МетодGET
Пример запроса

http://127.0.0.1:8000/api/runs/num

Пример ответа
{"runs_num":152}
Параметры запроса

from: date-time, (не обязательный)
to: date-time, (не обязательный)
job_file: string, (не обязательный)
status: Option (не обязательный)

Ответ возвращает JSON файл со структурой:
runs_num: integer

get runs_params

ПараметрЗначение
Описаниевозвращает значение параметров для указанного задания
МетодGET
Пример запроса

http://127.0.0.1:8000/api/runs/params?id=150

Пример ответа
"name":"DIR_IN",
"value":"data-in/others"
Параметры запросаid: string
Ответ возвращает JSON файл со структурой:
name: string,
value: string

post runs

ПараметрЗначение
Описаниезапускает задание в работу и возвращает номер запущенного задания
МетодPOST
Пример запроса

http://127.0.0.1:8000/api/runsjob_file: "/JobsForTests/graph/others/concat.grf", params: []

Пример ответа
"id":"162"
Параметры запроса на вход нужно подать JSON файл со структурой:
job_file: string,  
parent_id: string, (не обязательный)  
params: вектор<name: string,   
value: string> (по умолчанию - пусто)
Ответ возвращает JSON файл со структурой:
id: string

Projects

get directory

ПараметрЗначение
Описаниевозвращает информацию по указанной папке
МетодGET
Пример запроса

http://127.0.0.1:8000/api/directory?path=/JobsForTests/data-in

Пример ответа

"name":"data-in",
"path":"/JobsForTests/data-in"

Параметры запросаpath: string
Ответ возвращает JSON файл со структурой:
name: string,
path: string

get project

ПараметрЗначение
Описаниевозвращает информацию по указанному проекту
МетодGET
Пример запроса

http://127.0.0.1:8000/api/project?path=/JobsForTests

Пример ответа

"name":"JobsForTests",
"path":"/JobsForTests"

Параметры запросаpath: string
Ответ возвращает JSON файл со структурой:
name: string,
path: string

get file

ПараметрЗначение
Описаниевозвращает информацию по выбранному файлу
МетодGET
Пример запроса

http://127.0.0.1:8000/api/file?path=/JobsForTests/graph/others/concat.grf

Пример ответа

"name":"concat.grf",
"path":"/JobsForTests/graph/others/concat.grf",
"size":1278,
"modified":"2023-04-17T12:47:39.073986214Z"

Параметры запроса
path: string,
content: bool (не обязательный, по умолчанию равен false, content=true вернёт содержимое выбранного файла)
Ответ возвращает JSON файл со структурой:
name: string,
path: string

get tree

ПараметрЗначение
Описаниевозвращает информацию о содержимом дерева проектов
МетодGET
Пример запроса

http://127.0.0.1:8000/api/tree

Пример ответа

"name": "JobsForTests",
"path": "/JobsForTests",
"type": "project",
"children": 
[{
    "name": "data-in",
    "path": "/JobsForTests/data-in",
    "type": "directory",
    "children": [{
        "name": "others",
        "path": "/JobsForTests/data-in/others",
        "type": "directory",
        "children": [{
            "name": "x",
            "path": "/JobsForTests/data-in/others/x",
            "type": "directory",
            "children": [{
                "name": "rollup_02.txt",
                "path": "/JobsForTests/data-in/others/x/rollup_02.txt",
                "type": "file",
                "children": []    
            }]
        }]
    }]
}]

Параметры запросабез параметров
Ответ возвращает JSON файл со структурой:
name: string,
path: string,
type: string (project|directory|file),
children: вектор, может содержать подобную структуру name+path+type+children.

post project

ПараметрЗначение
Описаниесоздает проект
МетодPOST
Пример запроса

http://127.0.0.1:8000/api/project?path=/test2

Пример ответа
"name":"test2",
"path":"/test2"
Параметры запроса
path: string (путь к создаваемому проекту)
Ответ возвращает JSON файл со структурой:
name: string,
path: string

post project_rename

ПараметрЗначение
Описаниеменяет имя проекта
МетодPOST
Пример запроса

http://127.0.0.1:8000/api/project/rename?path=/test33&to=test44

Пример ответа
"name":"test44",
"path":"/test44"
Параметры запроса
path: string, (путь к проекту, который переименовываем)
to: string (новое имя проекта)
Ответ возвращает JSON файл со структурой:
name: string,
path: string

post directory

ПараметрЗначение
Описаниесоздает папку
МетодPOST
Пример запроса

http://127.0.0.1:8000/api/directory?path=/test33/tururu/lalala/kuku/oshshshs

Пример ответа
"name":"oshshshs",
"path":"/test33/tururu/lalala/kuku/oshshshs"
Параметры запроса
path: string, (путь к проекту, который переименовываем)
Ответ возвращает JSON файл со структурой:
name: string,
path: string

post directory_rename

ПараметрЗначение
Описаниеменяет название папки
МетодPOST
Пример запроса

http://127.0.0.1:8000/api/directory/rename?path=/test22/folder1&to=folder10

Пример ответа
"name":" folder10",
"path":"/test22/folder10"
Параметры запроса
path: string, (путь к проекту, который переименовываем)
to: string (новое имя папки)
Ответ возвращает JSON файл со структурой:
name: string,
path: string

post file

ПараметрЗначение
Описаниесоздает новый файл
МетодPOST
Пример запроса

http://127.0.0.1:8000/api/file?path=/test44/tururu/lalala/kuku/oshshshs/kudo.grf

Пример ответа
"name": "kudo.grf",
"path": "/test44/tururu/lalala/kuku/oshshshs/kudo.grf",
"size": 0,
"modified": "2023-06-15T08:10:21.261541736Z"
Параметры запроса
path: string, (путь к проекту, который переименовываем)
Ответ возвращает JSON файл со структурой:
name: string,
path: string,
size: integer,
modified: date-time

post file_rename

ПараметрЗначение
Описаниеменяет имя файла
МетодPOST
Пример запроса

http://127.0.0.1:8000/api/file/rename?path=/test44/tururu/lalala/kuku/bip/filefile2&to=fileNEW

Пример ответа
"name": "fileNEW",
"path": "/test44/tururu/lalala/kuku/bip/fileNEW",
"size": 0,
"modified": "2023-06-14T14:04:37.625674537Z"
Параметры запроса
path: string, (путь к проекту, который переименовываем)
to: string (новое имя файла)
Ответ возвращает JSON файл со структурой:
name: string,
path: string,
size: integer,
modified: date-time

put file

ПараметрЗначение
Описаниезаменяет контент существующего файла
МетодPUT
Пример запроса

http://127.0.0.1:8000/api/file?path=/test44/tururu/lalala/kuku/oshshshs/kudo.grfsent_file: "qwa"

Пример ответа
"name": "kudo.grf",
"path": "/test44/tururu/lalala/kuku/oshshshs/kudo.grf",
"size": 3,
"modified": "2023-06-15T08:15:08.343008889Z"
Параметры запроса
path: string (путь к изменяемому файлу)
sent_file: string (текст изменённого файла)
Ответ возвращает JSON файл со структурой:
name: string,
path: string,
size: integer,
modified: date-time

delete directory

ПараметрЗначение
Описаниеудаляет папку
МетодDELETE
Пример запроса

http://127.0.0.1:8000/api/directory?path=/test22

Пример ответа
Параметры запроса
path: string (путь к удаляемой папке)
Ответничего не возвращает

delete file

ПараметрЗначение
Описаниеудаляет файл
МетодDELETE
Пример запроса

http://127.0.0.1:8000/api/file?path=/test/file

Пример ответа
Параметры запроса
path: string (путь к удаляемому файлу)
Ответничего не возвращает

delete project

ПараметрЗначение
Описаниеудаляет проект
МетодDELETE
Пример запроса

http://127.0.0.1:8000/api/project?path=/test

Пример ответа
Параметры запроса
path: string (путь к удаляемому проекту)
Ответничего не возвращает

Schedules

get schedules

ПараметрЗначение
Описаниевозвращает список расписаний
МетодGET
Пример запроса

http://127.0.0.1:8000/api/schedules

Пример ответа
"name":"test1",
"enabled":false,
"once":"2023-06-15T07:22:21Z",
"active_from":null,
"active_to":null,
"job_file":"/JobsForTests/graph/others/dedup.grf",
"params":[],"last_run":"2023-06-15T07:22:21Z",
"next_run":null
Параметры запроса
name_contains: string (не обязательный)
Ответ возвращает JSON файл со структурой:
name: string,
enabled: bool,
trigger:    "Once": date-time или 
            "Interval": integer или 
            "Cron": string,
active_from: date-time, (не обязательный)
active_to: date-time, (не обязательный)
job_file: string,
params: вектор <name: string, value: string>,
last_run: date-time, (не обязательный)
next_run: date-time, (не обязательный)

post schedules

ПараметрЗначение
Описаниесоздаёт расписание
МетодPOST
Пример запроса
http://127.0.0.1:8000/api/schedules

{
    name: "test2", 
    enabled: true, 
    "once":"2023-06-15T11:07:21Z",
    job_file: "/JobsForTests/graph/others/concat.grf", 
    params: [],
}
Пример ответа
"last_run":null,"next_run":"2023-06-15T11:07:21Z"
Параметры запроса
name: string,
enabled: bool,
trigger:    "Once": date-time или 
            "Interval": integer или 
            "Cron": string,
active_from: date-time, (не обязательный)
active_to: date-time, (не обязательный)
job_file: string,
params: вектор <name: string, value: string>,
last_run: date-time, (не обязательный)
next_run: date-time, (не обязательный)
Ответ возвращает JSON файл со структурой:
last_run: date-time, (не обязательный)
next_run: date-time, (не обязательный)

post schedules_toggle

ПараметрЗначение
Описаниеизменяет состояние расписания (вкл/выкл) и возвращает новое состояние
МетодPOST
Пример запроса
http://127.0.0.1:8000/api/schedules/toggle?name=test1
Пример ответа
"enabled":false,
"next_run":null
Параметры запроса
name: string
Ответ возвращает JSON файл со структурой:
enabled: bool,
next_run: date-time, (не обязательный)

post schedules_rename

ПараметрЗначение
ОписаниеМеняет название расписания
МетодPOST
Пример запроса
http://127.0.0.1:8000/api/schedules/rename/old_name?to=new_name
Пример ответа
{
    "name": "new_name",
    "enabled": true,
    "once": "2023-09-05T12:48:05Z",
    "active_from": null,
    "active_to": null,
    "job_file": "/JobsForTests/graph/others/concat.grf",
    "params": [],
    "last_run": "2023-09-05T12:48:05Z"
}
Параметры запроса
name: string
new-name: string
Ответ возвращает JSON файл со структурой:
name: string,
enabled: bool,
trigger:    "Once": date-time или 
            "Interval": integer или 
            "Cron": string,
active_from: date-time,
active_to: date-time,
job_file: string,
params: {
    name: string,
    value: string,
    },
last_run: date-time,

delete schedules

ПараметрЗначение
ОписаниеУдаляет расписание
МетодDELETE
Пример запроса
http://127.0.0.1:8000/api/schedules/schedule_name
Пример ответа
Параметры запроса
path: string (путь к удаляемому файлу)
Ответничего не возвращает

patch schedules

ПараметрЗначение
ОписаниеИзменяет атрибуты расписания
МетодPATCH
Пример запроса
http://127.0.0.1:8000/api/schedules/schedule_name
"enabled": true,
"cron": "*/5 * * * * *",
"active_from": "2023-04-13T11:08:22.381473400Z",
"active_to": "2023-09-07T11:08:22.381473400Z",
"job_file": "/proj1/job1.grf",
"params": [
    {
        "name": "parname",
        "value": "parvalue"
    }
]
Пример ответа
"name": "test6",
"enabled": true,
"cron": "*/5 * * * * *",
"active_from": "2023-04-13T11:08:22.381473400Z",
"active_to": "2023-09-07T11:08:22.381473400Z",
"job_file": "/proj1/job1.grf",
"params": [
{
    "name": "parname",
    "value": "parvalue"
}
],
"last_run": "2023-09-07T10:43:50Z"
Параметры запроса
enabled: bool,  (не обязательно)
trigger:        (не обязательно)
         "Once": date-time или
         "Interval": integer или
         "Cron": string,
active_from: date-time, (не обязательно)
active_to: date-time,   (не обязательно)
job_file: string,       (не обязательно)
params: vec[],          (не обязательно)
Ответ возвращает JSON файл со структурой:
name: string,
enabled: bool,
trigger: "Once": date-time или
         "Interval": integer или 
         "Cron": string,
active_from: date-time, 
active_to: date-time, 
job_file: string,
params: {
    name: string,
    value: string,
},
last_run: date-time,

Event listeners

get event_listeners

ПараметрЗначение
Описаниевозвращает список обработчиков событий
МетодGET
Пример запроса

http://127.0.0.1:8000/api/event_listeners

Пример ответа

"name":"stub abc",
"enabled":true,
"event":{
    "job":{
        "finished":{
            "job_file":"/proj1/alice_bob.xml"}}},
"action":{
    "command":{
        "program":"bash",
        "args":["-c","ls"]}},
"last_run":null

Параметры запроса
name_contains: string (не обязательный)
Ответ возвращает JSON файл со структурой:
name: string,
enabled: bool,
event: {
    Job{
        Finished { 
            job_file: string 
        }
    },
или
    File {
        filesystem: string (Local), 
        path: string, 
        check: string (Added/Removed), 
        interval: integer, 
    }
},
action: {
    Command {
        program: string,
        args: string,
    },
или
    StartJob {
        job_file: string,
        params: {
            name: string,
            value: string
        },
    }
},
last_run: date-time

post event_listeners

ПараметрЗначение
Описаниесоздает обработчик событий
МетодPOST
Пример запроса

http://127.0.0.1:8000/api/event_listeners


"name": "listener_name",
"enabled": false,
"event": {
        "job": {
            "finished": {
                "job_file": "/JobsForTests/graph/others/concat.grf"
            }
        }
},
"action": {
        "start_job": {
            "job_file": "/JobsForTests/graph/others/copy.grf", 
            "params": []  
    }
}

Пример ответабез ответа
Параметры запроса

name: string,   (имя слушателя событий)
enabled: bool,  (переключатель)
event:          (отслеживаемое событие)
{
    Job{
        Finished { 
            job_file: string 
        }
    },
    File {
        filesystem: Local, 
        path: string, 
        check: string (Added/Removed), 
        interval: integer, 
    }
},
action:         (действие, которое необходимо выполнить, когда event завершится)
{
    Command {
        program: string,
        args: string
    },
    StartJob {
        job_file: string,
        params: {
            name: string,
            value: string
        }
    }
} 

Ответбез ответа

post event_listeners_toggle

ПараметрЗначение
Описаниеизменяет состояние обработчика событий (вкл/выкл) и возвращает новое состояние
МетодPOST
Пример запроса

http://127.0.0.1:8000/api/event_listeners/toggle?name=listener1

Пример ответа
"enabled":false
Параметры запроса
name: string
Ответ
enabled: bool

post event_listeners_rename

ПараметрЗначение
ОписаниеМеняет название обработчика событий
МетодPOST
Пример запроса
http://127.0.0.1:8000/api/event_listeners/rename/old_name?to=new_name
Пример ответа
Параметры запроса
to: string (новое название обработчика)
Ответничего не возвращает

delete event_listeners

ПараметрЗначение
ОписаниеУдаляет обработчик событий
МетодDELETE
Пример запроса
http://127.0.0.1:8000/api/event_listeners/listener_name
Пример ответа
Параметры запроса
path: string (путь к удаляемому файлу)
Ответничего не возвращает

patch event_listeners

ПараметрЗначение
ОписаниеИзменяет значения атрибутов обработчика событий
МетодPATCH
Пример запроса
http://127.0.0.1:8000/api/event_listeners/listener_name

изменить jobfile в action с "copy.grf" на "filter.grf"

{
    "name": "listener_name",
    "enabled": false,
    "event": {
            "job": {
                "finished": {
                    "job_file": "/JobsForTests/graph/others/concat.grf"
                }
            }
    },
    "action": {
            "start_job": {
                "job_file": "/JobsForTests/graph/others/filter.grf", 
                "params": []  
        }
    }
}


Пример ответа
{
    "name": "listener_name",
    "enabled": false,
    "event": {
        "job": {
            "finished": {
                "job_file": "/JobsForTests/graph/others/concat.grf"
            }
        }
    },
    "action": {
        "start_job": {
            "job_file": "/JobsForTests/graph/others/filter.grf",
            "params": []
        }
    }
}
Параметры запроса Все поля опциональные. Но при смене типа события event с "job" на "file" и наоборот, а так же при смене действия action с "Command" на "StartJob" и наоборот - нужно заполнить все сопутствующие атрибуты. Например, если обработчик был настроен на event "job", и нужно заменить его на event "file", то нужно будет задать значение и для атрибутов filesystem, check, path, interval.
name: string,
enabled: bool,  (не обязательно)
event:          (не обязательно)
        "job": Finished { 
            job_file: string 
        }
        "file": { 
            filesystem: "Local",
            path: string,
            check: "Added" или "Removed",
            interval: int,
        }
action:         (не обязательно)
        Command {
            program: string,
            args: string
        },
        StartJob {
            job_file: string,
            params: [
                name: String,
                value: String,
            ]
        } 
Ответ возвращает JSON файл со структурой:
name: string,   (имя остаётся прежним при использовании API patch event_listeners, меняется с помощью API post event_listeners_rename)
enabled: bool,  (новое состоние)
event:  Job     (новое задание или файл)
        {       
            Finished { 
                job_file: string 
            }
        }
        или
        File { 
            filesystem: Local,
            path: string,
            check: {
                Added,
                или
                Removed
            },
            interval: int,
        },
action: Command (новая команда или задание)
        {   
            program: string,
            args: string,
        }
        или
        StartJob {
            job_file: string,
            params: { 
                name: string,
                value: string,
            }
        }