REST API: описание запросов

Все запросы имеют необязательный параметр apiVersion (версия API). Пример: GET /rest/tasks/87554?apiVersion=2.0

Названия и типы полей в запросе и ответе могут отличаться в зависимости от значения параметра apiVersion. Возможные значения параметра apiVersion: 1.0, 1.1, 1.2, 1.3, 1.4, 2.0, 2.1 Значение версии API по умолчанию: apiVersion=1.0

Для получения доступа к другим версиям API, достаточно указать нужное значение в параметре apiVersion.

Изменения вводились постепенно, и начиная с версии 1.0 до версии 2.0 было изменено:

В документации указаны названия и типы полей в запросах и ответах для актуальной apiVersion=2.0, если явно не указано иное.

В описании каждого запроса приведён список ролей, под которыми можно его выполнять. Если роли не указаны, запрос разрешён любому авторизованному пользователю.

Если выполняется запрос на получение/изменение сущности, которой не существует, сервер отдаст ответ с кодом 404.

Отсутствие описания ответа означает пустой json с http-кодом 200.

Обязательные поля в запросах помечены символом звездочка (*) в комментариях к ним.

/rest/auth

POST /rest/auth/by-invite

Запрос на авторизацию по ключу приглашения.

Параметры

Запрос отдает 403, если ключ приглашения уже активирован, либо пользователь ключа удален.

http 200

// 2.0+
{                                                       
    "id": 6,                                            // id пользователя
    "login": "login",                                   // логин пользователя
    "fio": "ФИО",                                       // имя пользователя
    "type": {                                           // тип
        "id": 1,                                        // id типа
        "title": "Пользователи"                         // название
    },                                                  
    "authentication_type": 0,                           // тип аутентификации (0 - логин/пароль,
                                                        // 1 - LDAP)
    "last_authentication": 1605793362,                  // дата последней авторизации
    "avatar_update_date": 1605793362,                   // дата обновления аватара
    "gis_editor_access": true,                          // интеграция с ГИС редактором
    "invite": {                                         // последнее приглашение
        "id": 1051,                                     // id
        "key": "a3600ca4-ee35-1004-895f-b6c011bf8f3a",  // ключ
        "url": "https://active...",                     // url
        "creation_date": 1658304773,                    // дата создания
        "expires": 1658305090,                          // дата окончания действия
        "total": 5,                                     // максимальное количество попыток использования
        "attempts_left": 5                              // оставшееся количество попыток использования
    },                                                  
    "system": false,                                    // системный пользователь
    "tags": [                                           // метки пользователя
        {                                               
            "id": 1                                     // id метки
        },                                              
        ...                                             // следующие элементы списка
    ],                                                  
    "organization_id": 14754,                           // id основной организации
    "organization_ids": [                               
        14754                                           
    ],                                                  // массив id организаций, доступных пользователю
    "cluster": {                                        // кластер
        "id": 2184,                                     // id кластера
        "title": "Тестовый кластер"                     // название кластера
    },                                                  
    "role_id": 8,                                       // id роли
    "role": {                                           
        "id": 8,                                        // id роли
        "name": "Главный администратор",                // название роли
        "code": "ADMINISTRATOR",                        // код роли
        "level": "GLOBAL",                              // уровень доступа
        "visibility_level": "GLOBAL",                   // уровень видимости
        "privileges": {                                 // значения привилегий
            "create_task": true                         
        },                                              
        "cluster": null                                 // кластер
    },                                                  
    "email": "t@t.ru",                                  // адрес электронной почты
    "address": "Казань",                                // адрес
    "passport": "9205 999999",                          // паспортные данные
    "phone": "+7 999 888 7766",                         // телефон
    "map_extent": [                                     // координаты положения карты: [min lon, min lat, max lon, max lat]
        46.0927078887718,                               
        53.9919087034184,                               
        55.2997131017069,                               
        56.6837870890742                                
    ],                                                  
    "tracking": false,                                  // включен ли трекинг
    "blocked": false,                                   // заблокирован ли пользователь
    "glonass_id": null,                                 // ГЛОНАСС-id для трекинга
    "message_channel_id": 99,                           // канал входящих сообщений
    "token": "87e3d7ae036b752cc90bd093bbfa1634",        // токен
    "expiration_date": 1682595742                       // дата окончания действия токена
}                                                       

POST /rest/auth/by-login

Неавторизованный пользователь, авторизованный пользователь.

Запрос на авторизацию.

// 2.0+
{                           
    "login": "login",       // логин
    "password": "password"  // пароль
}                           

http 200

// 2.0+
{                                                       
    "id": 6,                                            // id пользователя
    "login": "login",                                   // логин пользователя
    "fio": "ФИО",                                       // имя пользователя
    "type": {                                           // тип
        "id": 1,                                        // id типа
        "title": "Пользователи"                         // название
    },                                                  
    "authentication_type": 0,                           // тип аутентификации (0 - логин/пароль,
                                                        // 1 - LDAP)
    "last_authentication": 1605793362,                  // дата последней авторизации
    "avatar_update_date": 1605793362,                   // дата обновления аватара
    "gis_editor_access": true,                          // интеграция с ГИС редактором
    "invite": {                                         // последнее приглашение
        "id": 1051,                                     // id
        "key": "a3600ca4-ee35-1004-895f-b6c011bf8f3a",  // ключ
        "url": "https://active...",                     // url
        "creation_date": 1658304773,                    // дата создания
        "expires": 1658305090,                          // дата окончания действия
        "total": 5,                                     // максимальное количество попыток использования
        "attempts_left": 5                              // оставшееся количество попыток использования
    },                                                  
    "system": false,                                    // системный пользователь
    "tags": [                                           // метки пользователя
        {                                               
            "id": 1                                     // id метки
        },                                              
        ...                                             // следующие элементы списка
    ],                                                  
    "organization_id": 14754,                           // id основной организации
    "organization_ids": [                               
        14754                                           
    ],                                                  // массив id организаций, доступных пользователю
    "cluster": {                                        // кластер
        "id": 2184,                                     // id кластера
        "title": "Тестовый кластер"                     // название кластера
    },                                                  
    "role_id": 8,                                       // id роли
    "email": "t@t.ru",                                  // адрес электронной почты
    "address": "Казань",                                // адрес
    "passport": "9205 999999",                          // паспортные данные
    "phone": "+7 999 888 7766",                         // телефон
    "map_extent": [                                     // координаты положения карты: [min lon, min lat, max lon, max lat]
        46.0927078887718,                               
        53.9919087034184,                               
        55.2997131017069,                               
        56.6837870890742                                
    ],                                                  
    "tracking": false,                                  // включен ли трекинг
    "blocked": false,                                   // заблокирован ли пользователь
    "glonass_id": null,                                 // ГЛОНАСС-id для трекинга
    "message_channel_id": 99,                           // канал входящих сообщений
    "token": "87e3d7ae036b752cc90bd093bbfa1634",        // токен
    "expiration_date": 1682595742                       // дата окончания действия токена
}                                                       

POST /rest/auth/2fa/confirm/:token

Второй этап двухфакторной аутентификации.

// 2.0+
{                     
    "code": "123456"  
}                     

http 200

// 2.0+
{                                                       
    "id": 6,                                            // id пользователя
    "login": "login",                                   // логин пользователя
    "fio": "ФИО",                                       // имя пользователя
    "type": {                                           // тип
        "id": 1,                                        // id типа
        "title": "Пользователи"                         // название
    },                                                  
    "authentication_type": 0,                           // тип аутентификации (0 - логин/пароль,
                                                        // 1 - LDAP)
    "last_authentication": 1605793362,                  // дата последней авторизации
    "avatar_update_date": 1605793362,                   // дата обновления аватара
    "gis_editor_access": true,                          // интеграция с ГИС редактором
    "invite": {                                         // последнее приглашение
        "id": 1051,                                     // id
        "key": "a3600ca4-ee35-1004-895f-b6c011bf8f3a",  // ключ
        "url": "https://active...",                     // url
        "creation_date": 1658304773,                    // дата создания
        "expires": 1658305090,                          // дата окончания действия
        "total": 5,                                     // максимальное количество попыток использования
        "attempts_left": 5                              // оставшееся количество попыток использования
    },                                                  
    "system": false,                                    // системный пользователь
    "tags": [                                           // метки пользователя
        {                                               
            "id": 1                                     // id метки
        },                                              
        ...                                             // следующие элементы списка
    ],                                                  
    "organization_id": 14754,                           // id основной организации
    "organization_ids": [                               
        14754                                           
    ],                                                  // массив id организаций, доступных пользователю
    "cluster": {                                        // кластер
        "id": 2184,                                     // id кластера
        "title": "Тестовый кластер"                     // название кластера
    },                                                  
    "role_id": 8,                                       // id роли
    "email": "t@t.ru",                                  // адрес электронной почты
    "address": "Казань",                                // адрес
    "passport": "9205 999999",                          // паспортные данные
    "phone": "+7 999 888 7766",                         // телефон
    "map_extent": [                                     // координаты положения карты: [min lon, min lat, max lon, max lat]
        46.0927078887718,                               
        53.9919087034184,                               
        55.2997131017069,                               
        56.6837870890742                                
    ],                                                  
    "tracking": false,                                  // включен ли трекинг
    "blocked": false,                                   // заблокирован ли пользователь
    "glonass_id": null,                                 // ГЛОНАСС-id для трекинга
    "message_channel_id": 99,                           // канал входящих сообщений
    "token": "87e3d7ae036b752cc90bd093bbfa1634",        // токен
    "expiration_date": 1682595742                       // дата окончания действия токена
}                                                       

POST /rest/auth/2fa/new-code/:token

Получить новый код.

http 200

// 2.0+
{                                                 
    "token": "7e588467f9f9da87611b7ea638c1895a",  // токен
    "next_attempt_at": 1773748408,                // время следующей попытки получить код
    "need2fa": true,                              // включена двухфакторная аутентификация
    "email": "abcde***@************.**"           // email, кроме первых 5 символов - все wildcard
}                                                 

POST /rest/auth/password-restore/init

Восстановить пароль.

// 2.0+
{                     
    "login": "login"  // логин
}                     

http 200

// 2.0+
{                                                 
    "token": "fd79c4922ad8d8d72c7c96c6becf2aa6",  // токен
    "next_email_at": 1775127705,                  // дата получения следующего кода
    "expires": 1775127710                         // окончание срока действия токена
}                                                 

POST /rest/auth/password-restore/confirm-login/:token

Подтвердить код.

// 2.0+
{                     
    "code": "123456"  // код
}                     

POST /rest/auth/password-restore/set-new-password/:token

Обновить пароль.

Параметры

// 2.0+
{                           
    "password": "password"  // пароль
}                           

DELETE /rest/auth/tokens/:token

Главный администратор, главный инспектор.

Удаление пользовательской сессии (токена).

POST /rest/auth/pushes/subscribe

Запрос на регистрацию для получения PUSH-сообщений. Запрос поступает с мобильного устройства.

// 2.0+
{                                                                                                                                                             
    "regId": "APA91bGmD0VObEd-KKuJ9J826c4o4VaxKL9VhvBQaecj3bY0RmrSp2aVmpsujTRPvYRDTvZDhVB9kxke4Q0pcivIM61PsPDd_Eh3k-0DUVdSSpXmgFAM4lsvxpuW1Re9dfQ2mSWMLiCr",  // уникальный адрес устройства для получения
                                                                                                                                                              // PUSH-сообщений, генерируется при установке приложения
    "fqn": "android://ru.gs.mapmobile"                                                                                                                        // полное имя приложения
}                                                                                                                                                             

POST /rest/auth/pushes/unsubscribe

Запрос на отмену регистрации для получения PUSH-сообщений. Запрос поступает с мобильного устройства.

// 2.0+
{                                                                                                                                                             
    "regId": "APA91bGmD0VObEd-KKuJ9J826c4o4VaxKL9VhvBQaecj3bY0RmrSp2aVmpsujTRPvYRDTvZDhVB9kxke4Q0pcivIM61PsPDd_Eh3k-0DUVdSSpXmgFAM4lsvxpuW1Re9dfQ2mSWMLiCr",  // уникальный адрес устройства для получения PUSH-сообщений,
                                                                                                                                                              // генерируется при установке приложения
    "fqn": "android://ru.gs.mapmobile"                                                                                                                        // полное имя приложения
}                                                                                                                                                             

/rest/tasks

GET /rest/tasks/cache

Запрос на создание WebSocketChannel для возможности получения оповещений об операциях с заданиями (создание, обновление, удаление, добавление комментариев, ответов на комментарии) в формате JSON.

Можно передать параметр clusterId для фильтрации оповещений по определённому кластеру (можно передать id только одного кластера).

// ws://localhost:9000/tasks/cache

Пример сообщения о создании задания

// 2.0+
{                                                                                      
    "datetime": 1626142349                                                             // timestamp момента создания задания
    "event_caller": 6                                                                  // id создателя
    "issues": {                                                                        
        "insert": [                                                                    
            {                                                                          
                "id": 786847,                                                          // id задания
                "no": 3,                                                               // номер задания в кластере
                "title": "Ямы на дорогах",                                             // заголовок
                "user_id": 363,                                                        // id создателя задания
                "user_fio": "Иванов Иван",                                             // ФИО создателя задания
                "text": "Ямы на дорогах в центре города на ул.Профсоюзная",            // описание
                "organization_id": 1,                                                  // id организации создателя (для создателей без организации это значение указывается явно при создании задания)
                "organization_name": "Население",                                      // название назначенной организации
                "organization_logo": "logo_3.png",                                     // логотип организации
                "contract_id": 442,                                                    // id контракта, по которому создано задание
                "contract_title": "Контракт на выполнение ремонта дорожного полотна",  // название контракта
                "contract_no": 01062022,                                               // номер контракта
                "date": 1543312469,                                                    // дата создания задания
                "deadline": 1541581662,                                                // дедлайн
                "expired_date": 1541581662                                             // момент, когда задание было просрочено
                "stage": 1,                                                            // стадия задания: 1 - в работе, 2 - завершено
                "type_id": 1,                                                          // id вида работ задания
                "type_name": "Аварии",                                                 // название вида работ задания
                "type_icon": "icon_7.jpg",                                             // пиктограмма вида работ задания
                "priority_id": 2,                                                      // id приоритета
                "priority_name": "Дополнительные",                                     // название приоритета
                "status_id": 1,                                                        // id этапа
                "status_no": 1,                                                        // номер этапа
                "status_name": "Рассмотрение",                                         // название этапа
                "num_main_photo": 1,                                                   //порядковый номер фотографии, которая будет в заголовке.
                "archive": false,                                                      // архивное задания
                "system_data": null,                                                   // поле для интеграционных целей
                "update_date": 1547311229,                                             // дата изменения задания
                "date_local": "19.04.2024 01:00",                                      // локальная дата создания задания
                "deadline_local": "22.04.2024 01:00",                                  // локальный дедлайн
                "expired_date_local": "22.04.2024 01:00",                              // локальная дата, когда задание было просрочено
                "update_date_local": "22.04.2024 01:00",                               // локальная дата изменения задания
                "is_template": false,                                                  // шаблонное задание
                "assigned_user_id": 719,                                               // id назначенного пользователя
                "assigned_user_fio": "Петров Иван",                                    // ФИО назначенного пользователя,
                "assigned_organization_id": 312,                                       // id назначенной организации
                "assigned_organization_name": null                                     // название назначенной организации
                "lon": 49.1421403,                                                     // координаты точки - lon
                "lat": 55.774427,                                                      // координаты точки - lat
                "service_object_layer_id": 1493,                                       // id слоя объекта
                "service_object_id": 7,                                                // id объекта
                "service_object_layer_title": "Название слоя",                         // название слоя
                "service_object_title": "Наименование объекта",                        // наименование объекта
                "schedule_id": 107486,                                                 // id расписания
                "added_photo_count": 0,                                                // количество фото, добавленных после создания задания
                "sample_matching": 60,                                                 // минимальный процент совпадения фото с образцом
                "fields": {                                                            // json-объект, хранящий значения настраиваемых полей в формате:
                    "Dop_pole_dlya_testov": {                                          // {"транслит русского названия поля": {
                        "field_id": 19,                                                //     "field_id": <ID>,
                        "value": 12345                                                 //     "value": <значение>
                    }                                                                  // }}
                },                                                                     
                "parent": {                                                            // родительское задание
                    "id": 2,                                                           
                    "title": "Ямы",                                                    
                    "organization_id": 3,                                              
                    "organization_name": "Контроль дорог",                             
                    "organization_logo": null,                                         
                    "stage": 1,                                                        
                    "type_id": 1,                                                      
                    "type_name": "Аварии",                                             
                    "type_icon": "2.png",                                              
                    "priority_id": 1,                                                  
                    "priority_name": "Плановые",                                       
                    "status_id": 2,                                                    
                    "status_no": 2,                                                    // номер этапа
                    "status_name": "назначено",                                        
                    "assigned_user_id": 95,                                            
                    "assigned_user_fio": "Петров Иван",                                
                    "assigned_organization_id": 101,                                   
                    "assigned_organization_name": "Ремонт дорог",                      
                    "date": 1542949580                                                 
                },                                                                     
                "attachments": [                                                       // прикрепленные файлы
                    {                                                                  
                        "id": 54666,                                                   // id файла
                        "num": 1,                                                      // порядковый номер файла
                        "sample_matching": 60,                                         // процент совпадения фото с образцом
                        "name": "Nature.jpg",                                          // исходное название файла
                        "description": "New photo",                                    // описание файла
                        "extension": "jpg",                                            // расширение файла
                        "file_name": "8ce1c640-e2c6-1004-8171-1dcd61b183b4.jpg",       // название файла на сервере
                        "link": null,                                                  // для видеофайлов: ссылка, если видеофайл находится не на сервере; для файлов других типов null
                        "sticker": {                                                   // стикер, прикрепленный к файлу
                            "id": 76,                                                  // id
                            "title": "Тестовый стикер"                                 // название
                        }                                                              
                        "create_date": 1533215550,                                     // дата добавления файла
                        "deleted": false,                                              // удален файл или нет
                        "size": 1288395,                                               // размер файла в байтах
                        "file_source": "device_camera",                                // источник файла ("device_camera"/"app_camera"/app_redactor/"gallery"/"dictaphone")
                        "attachment": {                                                // информация по времени и месту прикрепления файла
                            "time": 1533111159,                                        // время прикрепления файла
                            "time_provider": "system",                                 // источник времени прикрепления файла
                            "location": {                                              // информация по месту прикрепления файла
                                "location": [                                          
                                    55.56,                                             
                                    46.67                                              
                                ],                                                     // координаты места прикрепления файла
                                "provider": "gps",                                     // источник координат места прикрепления файла
                                "accuracy": 12.5,                                      // точность координат места прикрепления файла
                                "distance_to_task": 102.363663636                      // расстояние от точки задания до места прикрепления файла (в метрах)
                            }                                                          
                        },                                                             
                        "origin": {                                                    // информация по времени и месту создания файла
                            "time": 1533113954,                                        // время создания файла
                            "time_provider": "ntp",                                    // источник времени создания файла
                            "location": {                                              // координаты места создания файла
                                "location": [                                          
                                    55.45,                                             
                                    46.89                                              
                                ],                                                     // координаты места создания файла
                                "provider": "gps",                                     // источник координат места создания файла
                                "accuracy": 10,                                        // точность координат места создания файла
                                "distance_to_task": 243.121212121                      // расстояние от точки задания до места создания файла (в метрах)
                            }                                                          
                        },                                                             
                        "author": {                                                    // информация по платформе и приложению
                            "platform": "android",                                     // платформа
                            "platform_version": "4.2",                                 // версия платформы
                            "application": "MapMobile",                                // приложение
                            "application_version": "8.5"                               // версия приложения
                        },                                                             
                        "type": "PHOTO",                                               // тип файла
                        "semantics": "SIGNATURE",                                      // семантика
                        "task_id": 786847                                              // id задания
                    }                                                                  
                ]                                                                      
            }                                                                          
        ]                                                                              
    }                                                                                  
}                                                                                      

Формат сообщения об изменении задания такой же, но вместо ключа insert в JSON используется ключ update.

Пример сообщения о создании комментария

// 2.0+
{                                                                                      
    "datetime": 1626142349                                                             // timestamp момента создания комментария
    "event_caller": 6                                                                  // id создателя
    "issues": {                                                                        
        "commentInsert": [                                                             
            {                                                                          
                "id": 50029,                                                           // id комментария
                "uuid": "1454bd95-3653-4499-ab39-9733af031312",                        
                "date": 1533289354,                                                    // дата создания комментария
                "update_text": "Заданию назначили организацию: \"Отдел разработки\"",  //текст обновления (для комментария об обновлении задания)
                "comment": "",                                                         // текст комментария
                "type": 2,                                                             // тип комментария: 1 - обычный, 2 - системный
                "diff": {                                                              // информация по внесенным в задание изменениям
                    "id": 39983,                                                       // id изменения
                    "old_stage": null,                                                 // значение стадии до изменения (если это значение было изменено, иначе null)
                    "new_stage": null,                                                 // значение стадии после изменения (если это значение было изменено, иначе null)
                    "old_status": {                                                    // значение этапа до изменения (если это значение было изменено, иначе null)
                        "id": 1,                                                       // id этапа
                        "name": "новое"                                                // название этапа
                    },                                                                 
                    "new_status": {                                                    // значение этапа до изменения (если это значение было изменено, иначе null)
                        "id": 2,                                                       // id этапа
                        "name": "назначено"                                            // название этапа
                    },                                                                 
                    "old_assigned_organization": null,                                 // значение assigned_organization до изменения (если это значение было изменено, иначе null)
                    "new_assigned_organization": {                                     // значение assigned_organization после изменения (если это значение было изменено, иначе null)
                        "id": 188,                                                     // id организации
                        "name": "Отдел разработки"                                     // название организации
                    },                                                                 
                    "old_assigned_user": null,                                         // значение assigned_user до изменения (если это значение было изменено, иначе null)
                    "new_assigned_user": {                                             // значение assigned_user после изменения (если это значение было изменено, иначе null)
                        "id": 719,                                                     // id пользователя
                        "fio": "Игорь Зиновьев"                                        // имя пользователя
                    },                                                                 
                    "files_added": [],                                                 // список добавленных после изменения файлов
                    "files_deleted": [],                                               // список удаленных после изменения файлов
                    "user_id": 6,                                                      // id пользователя, который сделал изменение
                    "task_id": 60529                                                   //id задания
                },                                                                     
                "parent": null,                                                        // родительский комментарий
                "fio": "Администратор",                                                //ФИО пользователя, который сделал изменение
                "user_id": 6,                                                          // id пользователя, который сделал изменение
                "task_id": 60529,                                                      // id задания
                "task_no": 60529,                                                      // номер задания
                "chat_message_number": 99,                                             // номер сообщения в чате задания
                "chat_id": 123,                                                        // системный номер канала сообщений
                "system_message_code": null                                            // код системного сообщения
            }                                                                          
        ]                                                                              
    }                                                                                  
}                                                                                      

Пример сообщения о создании пользователя

// 2.0+
{                                                                    
    "datetime": 1626142349                                           // timestamp момента создания пользователя
    "event_caller": 6                                                // id создателя
    "users": {                                                       
        "insert": [                                                  
            {                                                        
                "id": 6,                                             // id пользователя
                "login": "ivanov",                                   // логин
                "fio": "Иванов Иван Иванович",                       // ФИО
                "type": {                                            // тип
                    "id": 1,                                         // id типа
                    "title": "Пользователи"                          // название
                },                                                   
                "authentication_type": 0,                            // тип аутентификации (0 - логин/пароль,
                1-LDAP)"last_authentication": 1605793362,            // дата последней авторизации
                "blocked": false,                                    // признак заблокированного пользователя
                "avatar_update_date": 1605793362,                    // дата обновления аватара
                "gis_editor_access": true,                           // интеграция с ГИС редактором
                "invite": {                                          // последнее приглашение
                    "id": 1051,                                      // id
                    "key": "a3600ca4-ee35-1004-895f-b6c011bf8f3a",   // ключ
                    "url": "https://active...",                      // url
                    "creation_date": 1658304773,                     // дата создания
                    "expires": 1658305090,                           // дата окончания действия
                    "total": 5,                                      // максимальное количество попыток использования
                    "attempts_left": 5                               // оставшееся количество попыток использования
                },                                                   
                "system": false,                                     // системный пользователь
                "tags": [                                            // метки пользователя
                    {                                                
                        "id": 1                                      // id метки
                    },                                               
                    ...                                              // следующие элементы списка
                ],                                                   
                "organization_id": 1,                                // id основной организации
                "organization_ids": [                                // массив id организаций пользователя
                    1,                                               
                    132,                                             
                    232                                              
                ],                                                   
                "role_id": 8,                                        // id роли
                "email": "test@gmail.com",                           // адрес электронной почты
                "address": "г.Казань, ул.Назарбаева, д.25, кв.125",  // адрес
                "passport": "9205 999999",                           // паспортные данные
                "phone": "+7 999 888 7766",                          // телефон
                "tracking": true,                                    // включен ли трекинг
                "glonass_id": null,                                  // ГЛОНАСС-id для трекинга
                "message_channel_id": 99                             // канал входящих сообщений
            }                                                        
        ]                                                            
    }                                                                
}                                                                    

Формат сообщения об изменении пользователя такой же, но вместо ключа insert в JSON используется ключ update.

Пример сообщения о создании организации

// 2.0+
{                                                                                      
    "datetime": 1626142349                                                             // timestamp момента создания организации
    "event_caller": 6                                                                  // id создателя
    "organizations": {                                                                 
        "insert": [                                                                    
            {                                                                          
                "id": 600                                                              // ID
                "name": "Высокие технологии",                                          // название организации
                "logo": "logo_600.jpg",                                                // файл с логотипом организации
                "cluster_id": 2,                                                       // id кластера
                                                                                       //
                "map_extent": {                                                        // положение карты
                    "id": 2,                                                           
                    "name": "Республика Татарстан",                                    
                    "extent": [                                                        
                        47.1643057526207,                                              
                        54.2202822940369,                                              
                        54.3273954713906,                                              
                        56.7105387481253                                               
                    ]                                                                  
                }                                                                      //
                "client": false,                                                       // признак клиентской организации
                "gis_editor_default_access": false,                                    // интеграция с ГИС редактором
                "invite_url": "https://...",                                           // url приглашения
                "info": {                                                              // дополнительные поля
                    "address": "Москва",                                               // адрес организации
                    "email": "test@test.org",                                          // e-mail
                    "phone": "1234567890",                                             // телефон
                    "fax": "123456",                                                   // факс
                    "inn": 123456789012,                                               // ИНН
                    "kpp": 123456789,                                                  // КПП
                    "bank": "234567890",                                               // Банк
                    "bank_account": "",                                                // Расчётный счёт
                    "bank_kpp": 123456789013,                                          // ИНН банка
                    "bank_bik": 345678901,                                             // БИК банка
                    "account": "2012019292109",                                        // Счет организации
                    "about": "Организация Высокие технологии, на рынке более 20 лет",  // Об организации
                    "full_name": "ООО Высокие технологии",                             // Полное юридическое название
                    "head_fio": "Никифоров Александр Петрович",                        // ФИО руководителя
                    "accountant_fio": "Никитина Ольга Ивановна",                       // ФИО бухгалтера
                    "stamp": "Печать.png",                                             // Имя файла с печатью организации, полученное после загрузки файла через метод POST /files/upload
                    "head_signature": "Подпись_руководителя.png",                      // Имя файла с подписью руководителя организации, полученное после загрузки файла через метод POST /files/upload
                    "accountant_signature": "Подпись_бухгалтера.png",                  // Имя файла с подписью бухгалтера организации, полученное после загрузки файла через метод POST /files/upload
                    "max_users_count": 100                                             // Максимально допустимое количество пользователей организации
                },                                                                     //
                                                                                       //
                "default_assigned_organization_id": 500,                               // организация-исполнитель заданий,
                                                                                       // подставляемая по умолчанию
                "chat_id": 65006                                                       // идентификатор канала уведомлений
            }                                                                          
        ]                                                                              
    }                                                                                  
}                                                                                      

Формат сообщения об изменении пользователя такой же, но вместо ключа insert в JSON используется ключ update.

GET /rest/tasks/points

Быстрый запрос для получения списка заданий и точек.

Параметры фильтрации

Знаком + помечены поля, для которых можно указывать список значений, разделённых запятой. Например, organizationId=1,2.

/tasks/points
/tasks/points?limit=10&page=1&withArchive=true&onlyStatus=2,3&priority_id=1,2
/tasks/points?limit=10&page=1&gtUpdateDate=1440835402&ltUpdateDate=1443513802&gtDate=1438157002&ltDate=1443513802&expired=false
/tasks/points?limit=10&page=1&assigned_organization_id=2,292&assigned_user_id=618,625&user_id=6&stage=1
/tasks/points?limit=10&page=1&search=тест&fields=[{"name":"Dop_pole_dlya_testov","op":"EQ","value":"done"},{"name":"Telefon_int_88432000555_","op":"NOT NULL"}]

http 200

// 2.0+
{                                 
    "items": [                    
        {                         
            "id": 789238,         // id задания
            "no": 3,              // номер задания в кластере
            "title": "тест",      // текст задания
            "lon": 49.1425763,    // координаты точки - lat
            "lat": 55.774754,     // координаты точки - lon
            "assigned_status": 1  // этап: 1 - новый, 2 - назначено, 3 - обратная связь, 4 - выполнено
            "favorite": true,     // находится ли задание в избранном у текущего пользователя
        },                        
        ...                       // следующие элементы списка
    ]                             
}                                 

GET /rest/tasks/geometry

Быстрый запрос для получения списка заданий и геометрии - точек и данных настраиваемых полей типа "геометрия".

Параметры фильтрации

Знаком + помечены поля, для которых можно указывать список значений, разделённых запятой. Например, organizationId=1,2.

/tasks/geometry?limit=10&page=1&withArchive=true&onlyStatus=2,3&priority_id=1,2
/tasks/geometry?limit=10&page=1&gtUpdateDate=1440835402&ltUpdateDate=1443513802&gtDate=1438157002&ltDate=1443513802&expired=false
/tasks/geometry?limit=10&page=1&assigned_organization_id=2,292&assigned_user_id=618,625&user_id=6&stage=1
/tasks/geometry?limit=10&page=1&search=тест&fields=[{"name":"Dop_pole_dlya_testov","op":"EQ","value":"done"},{"name":"Telefon_int_88432000555_","op":"NOT NULL"}]

http 200

// 2.0+
{                                                                      
    "items": [                                                         
        {                                                              
            "id": 789238,                                              // id задания
            "no": 3,                                                   // номер задания в кластере
            "title": "тест",                                           // текст задания
            "lon": 49.1425763,                                         // координаты точки - lat
            "lat": 55.774754,                                          // координаты точки - lon
            "assigned_status": 1,                                      // этап: 1 - новый, 2 - назначено, 3 - обратная связь, 4 - выполнено
            "favorite": true,                                          // находится ли задание в избранном у текущего пользователя
            "fields": {                                                // json-объект, хранящий значения настраиваемых полей тпа "геометрия" в формате:
                "Geometrija": {                                        // {"транслит русского названия поля": {
                    "field_id": 8,                                     //      "field_id": <ID>,
                    "value": {                                         //      "value": <значение>
                        "coordinates": [                               // }}
                            [                                          
                                37.54096936955436,                     
                                55.9499035987994                       
                            ],                                         
                            [                                          
                                37.558478490656356,                    
                                55.95202252412895                      
                            ],                                         
                            [                                          
                                37.58148066935899,                     
                                55.95914896382962                      
                            ]                                          
                        ],                                             
                        "distance": 6.484990692549826,                 
                        "type": "LineString",                          
                        "description": "Маршрут до места назначения",  
                        "name": "Маршрут",                             
                        "pointsCount": 3                               
                    }                                                  
                }                                                      
            }                                                          
        },                                                             
        ...                                                            // следующие элементы списка
    ]                                                                  
}                                                                      

GET /rest/tasks/distribution

Статистика по количеству заданий в разрезе видов работ, приоритетов, этапов.

Параметры фильтрации

Знаком + помечены поля, для которых можно указывать список значений, разделённых запятой. Например, organizationId=1,2.

/tasks/distribution?withArchive=true&onlyStatus=2,3&priority_id=1,2
/tasks/distribution?gtUpdateDate=1440835402&ltUpdateDate=1443513802&gtDate=1438157002&ltDate=1443513802&expired=false
/tasks/distribution?assigned_organization_id=2,292&assigned_user_id=618,625&user_id=6&stage=1
/tasks/distribution?search=тест&fields=[{"name":"Dop_pole_dlya_testov","op":"EQ","value":"done"},{"name":"Telefon_int_88432000555_","op":"NOT NULL"}]

http 200

// 2.0+
{                  
    "type": {      // расклад количества заданий по видам работ
        1: 1021,   // id вида работ : количество заданий
        2: 879,    
        3: 699     
    },             
    "priority": {  // расклад количества заданий по приоритетам
        1: 6625,   
        2: 12211,  
        3: 3644    
    },             
    "stage": {     //расклад количества заданий по стадиям: 1 - в работе, 2 - завершено
        0: 5,      
        1: 22457,  
        2: 18      
    },             
    "status": {    // расклад количества заданий по этапам
        1: 22245,  
        2: 197,    
        3: 8,      
        4: 30      
    }              
}                  
}                  

GET /rest/tasks/new-stats

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

Параметры фильтрации

Знаком + помечены поля, для которых можно указывать список значений, разделённых запятой. Например, organizationId=1,2.

http 200

2.0+
{                                       
    "items": [                          
        {                               
            "date": 1518696000,         // дата в формате Unix Timestamp
            "done_expired": 0,          // просроченные задания, находящиеся в стадии 2 - завершено
            "done_not_expired": 0,      // непросроченные задания, находящиеся в стадии 2 - завершено
            "rejected_expired": 0,      // просроченные задания, находящиеся в стадии 0 - отклонено
            "rejected_not_expired": 0,  // непросроченные задания, находящиеся в стадии 0 - отклонено
            "working_expired": 3,       // просроченные задания, находящиеся в стадии 1 - в работе
            "working_not_expired": 2,   // непросроченные задания, находящиеся в стадии 1 - в работе
        }                               
    ]                                   
}                                       

GET /rest/tasks/states

Список всех возможных состояний заданий.

http 200

// 2.0+
{                                         
    "items": [                            
        {                                 
            "id": 11,                     // id состояния
            "name": "assigned_me",        // название состояния
            "field": "assigned_user_id",  // поле, по которому осуществляется проверка
            "value": true,                // значение, которое оно должно принимать
            "sign": null,                 // знак для сравнения
            "field_from_session": null,   // поле в сессии, если нужно сравнивать с ним
            "role": null                  // служебное поле
        },                                
        ...                               // следующие элементы списка состояний
    ]                                     
}                                         

GET /rest/tasks/capabilities

Получение списка возможных действий с заданиями (capability).

http 200

// 2.0+
{                                       
    "items": [                          
        {                               
            "id": 2,                    // id действия
            "label": "Удалить задание"  // название действия
            "name": "delete",           // кодовое название действия
            "default": false            // разрешеное ли действие по умолчанию
        },                              
        ...                             // следующие элементы списка действий
    ]                                   
}                                       

GET /rest/tasks/allowed

Получение списка правил, доступных роли текущего пользователя. Правила описывают состояния (states), в которых должно находиться задание, чтобы определенное действие (capability) было доступно роли (role) пользователя. Если для роли не прописано какое-то действие, оно для нее не доступно. Если в поле состояний (states) стоит null, действие доступно роли при любых состояниях.

http 200

// 2.0+
{                                
    "items": [                   
        {                        
            "id": 38,            // id правила
            "capability_id": 1,  // id действия
            "states": [          
                1,               
                2                
            ]                    // массив id состояний, либо null
        },                       
        {                        
            "id": 14,            
            "capability_id": 7,  
            "states": null       
        },                       
        {                        
            "id": 159,           
            "capability_id": 7,  
            "states": [          
                18               
            ]                    
        },                       
        ...                      // следующие элементы списка
    ]                            
}                                

GET /rest/tasks

Список всех заданий, доступных пользователю.

Параметры фильтрации

Знаком + помечены поля, для которых можно указывать список значений, разделённых запятой. Например, organizationId=1,2.

/tasks?withArchive=true&onlyStatus=2,3&priority_id=1,2
/tasks?gtUpdateDate=1440835402&ltUpdateDate=1443513802&gtDate=1438157002&ltDate=1443513802&expired=false
/tasks?assigned_organization_id=2,292&assigned_user_id=618,625&user_id=6&stage=1
/tasks?search=тест&fields=[{"name":"gorod","op":"EQ","value":"Казань"},{"name":"Telefon","op":"NOT NULL"}]

http 200

// 2.0+
{                                                                                  
    "items": [                                                                     
        {                                                                          
            "id": 786847,                                                          // id задания
            "no": 3,                                                               // номер задания в кластере
            "title": "Ямы на дорогах",                                             // заголовок
            "user_id": 363,                                                        // id создателя задания
            "user_fio": "Иванов Иван",                                             // ФИО создателя задания
            "text": "Ямы на дорогах в центре города на ул.Профсоюзная",            // описание
            "organization_id": 1,                                                  // id организации создателя (для создателей без организации это значение указывается явно при создании задания)
            "organization_name": "Население",                                      // название назначенной организации
            "organization_logo": "logo_3.png",                                     // логотип организации
            "contract_id": 442,                                                    // id контракта, по которому создано задание
            "contract_title": "Контракт на выполнение ремонта дорожного полотна",  // название контракта
            "contract_no": 01062022,                                               // номер контракта
            "date": 1543312469,                                                    // дата создания задания
            "deadline": 1541581662,                                                // дедлайн
            "expired_date": 1541581662                                             // момент, когда задание было просрочено
            "stage": 1,                                                            // стадия задания: 1 - в работе, 2 - завершено
            "type_id": 1,                                                          // id вида работ задания
            "type_name": "Аварии",                                                 // название вида работ задания
            "type_icon": "icon_7.jpg",                                             // пиктограмма вида работ задания
            "priority_id": 2,                                                      // id приоритета
            "priority_name": "Дополнительные",                                     // название приоритета
            "status_id": 1,                                                        // id этапа
            "status_no": 1,                                                        // номер этапа
            "status_name": "Рассмотрение",                                         // название этапа
            "num_main_photo": 1,                                                   //порядковый номер фотографии, которая будет в заголовке.
            "archive": false,                                                      // архивное задания
            "system_data": null,                                                   // поле для интеграционных целей
            "update_date": 1547311229,                                             // дата изменения задания
            "date_local": "19.04.2024 01:00",                                      // локальная дата создания задания
            "deadline_local": "22.04.2024 01:00",                                  // локальный дедлайн
            "expired_date_local": "22.04.2024 01:00",                              // локальная дата, когда задание было просрочено
            "update_date_local": "22.04.2024 01:00",                               // локальная дата изменения задания
            "is_template": false,                                                  // шаблонное задание
            "assigned_user_id": 719,                                               // id назначенного пользователя
            "assigned_user_fio": "Петров Иван",                                    // ФИО назначенного пользователя,
            "assigned_organization_id": 312,                                       // id назначенной организации
            "assigned_organization_name": null                                     // название назначенной организации
            "lon": 49.1421403,                                                     // координаты точки - lon
            "lat": 55.774427,                                                      // координаты точки - lat
            "cluster_id": 1,                                                       // id кластера
            "unread_message_count": 3,                                             // количество непрочитанных комментариев
            "favorite": true,                                                      // находится ли задание в избранном у текущего пользователя
            "service_object_layer_id": 1493,                                       // id слоя объекта
            "service_object_id": 7,                                                // id объекта
            "service_object_layer_title": "Название слоя",                         // название слоя
            "service_object_title": "Наименование объекта",                        // наименование объекта
            "schedule_id": 107486,                                                 // id расписания
            "added_photo_count": 0,                                                // количество фото, добавленных после создания задания
            "sample_matching": 60,                                                 // минимальный процент совпадения фото с образцом
            "fields": {                                                            // json-объект, хранящий значения настраиваемых полей в формате:
                "Dop_pole_dlya_testov": {                                          // {"транслит русского названия поля": {
                    "field_id": 19,                                                //     "field_id": <ID>,
                    "value": 12345                                                 //     "value": <значение>
                }                                                                  // }}
            },                                                                     
            "parent": {                                                            // родительское задание
                "id": 2,                                                           
                "title": "Ямы",                                                    
                "organization_id": 3,                                              
                "organization_name": "Контроль дорог",                             
                "organization_logo": null,                                         
                "stage": 1,                                                        
                "type_id": 1,                                                      
                "type_name": "Аварии",                                             
                "type_icon": "2.png",                                              
                "priority_id": 1,                                                  
                "priority_name": "Плановые",                                       
                "status_id": 2,                                                    
                "status_no": 2,                                                    // номер этапа
                "status_name": "назначено",                                        
                "assigned_user_id": 95,                                            
                "assigned_user_fio": "Петров Иван",                                
                "assigned_organization_id": 101,                                   
                "assigned_organization_name": "Ремонт дорог",                      
                "date": 1542949580                                                 
            },                                                                     
            "attachments": [                                                       // прикрепленные файлы
                {                                                                  
                    "id": 54666,                                                   // id файла
                    "num": 1,                                                      // порядковый номер файла
                    "sample_matching": 60,                                         // процент совпадения фото с образцом
                    "name": "Nature.jpg",                                          // исходное название файла
                    "description": "New photo",                                    // описание файла
                    "extension": "jpg",                                            // расширение файла
                    "file_name": "8ce1c640-e2c6-1004-8171-1dcd61b183b4.jpg",       // название файла на сервере
                    "link": null,                                                  // для видеофайлов: ссылка, если видеофайл находится не на сервере; для файлов других типов null
                    "sticker": {                                                   // стикер, прикрепленный к файлу
                        "id": 76,                                                  // id
                        "title": "Тестовый стикер"                                 // название
                    }                                                              
                    "create_date": 1533215550,                                     // дата добавления файла
                    "deleted": false,                                              // удален файл или нет
                    "size": 1288395,                                               // размер файла в байтах
                    "file_source": "device_camera",                                // источник файла ("device_camera"/"app_camera"/app_redactor/"gallery"/"dictaphone")
                    "attached_to_field": false,                                    // файл прикреплен к файловому настраиваемому полю
                    "attachment": {                                                // информация по времени и месту прикрепления файла
                        "time": 1533111159,                                        // время прикрепления файла
                        "time_provider": "system",                                 // источник времени прикрепления файла
                        "location": {                                              // информация по месту прикрепления файла
                            "location": [                                          
                                55.56,                                             
                                46.67                                              
                            ],                                                     // координаты места прикрепления файла
                            "provider": "gps",                                     // источник координат места прикрепления файла
                            "accuracy": 12.5,                                      // точность координат места прикрепления файла
                            "distance_to_task": 102.363663636                      // расстояние от точки задания до места прикрепления файла (в метрах)
                        }                                                          
                    },                                                             
                    "origin": {                                                    // информация по времени и месту создания файла
                        "time": 1533113954,                                        // время создания файла
                        "time_provider": "ntp",                                    // источник времени создания файла
                        "location": {                                              // координаты места создания файла
                            "location": [                                          
                                55.45,                                             
                                46.89                                              
                            ],                                                     // координаты места создания файла
                            "provider": "gps",                                     // источник координат места создания файла
                            "accuracy": 10,                                        // точность координат места создания файла
                            "distance_to_task": 243.121212121                      // расстояние от точки задания до места создания файла (в метрах)
                        }                                                          
                    },                                                             
                    "author": {                                                    // информация по платформе и приложению
                        "platform": "android",                                     // платформа
                        "platform_version": "4.2",                                 // версия платформы
                        "application": "MapMobile",                                // приложение
                        "application_version": "8.5"                               // версия приложения
                    },                                                             
                    "type": "PHOTO",                                               // тип файла
                    "semantics": "SIGNATURE",                                      // семантика
                    "task_id": 786847                                              // id задания
                }                                                                  
            ],                                                                     
        },                                                                         
        ...                                                                        // следующие элементы списка заданий
    ],                                                                             
    "schedules": [                                                                 
        {                                                                          
            "id": 107486,                                                          // id расписания
            "title": "Расписание",                                                 // название
            "time_zone": "Europe/Moscow"                                           // таймзона расписания, возможный формат - "UTC+3", "UTC+03:00" или "Europe/Moscow"
            "worktime": 7200,                                                      // дедлайн
            "on": true,                                                            // включено расписание или нет
            "deleted": false                                                       // признак удалённого расписания
            "user": {                                                              // информация о пользователе, который создал расписание
                "id": 6,                                                           
                "fio": "Главный администратор"                                     
            },                                                                     
            "cluster": {                                                           // кластер
                "id": 150086,                                                      
                "title": "Тестовый кластер"                                        
            },                                                                     
            "archive": false,                                                      // является ли расписание архивным
            "contract": {                                                          // контракт
                "id": 195270,                                                      
                "no": "1",                                                         
                "title": "организация",                                            
                "start_date_local": "01.01.2025 00:00",                            // локальная дата начала действия контракта
                "finish_date_local": "01.01.2026 00:00",                           // локальная дата окончания действия контракта
                "start_date": 1706798372,                                          
                "finish_date": 1716798372                                          
            },                                                                     
            "organization": {                                                      // организация
                "id": 195270,                                                      
                "name": "организация",                                             
                "cluster": {                                                       
                    "id": 150086,                                                  
                    "title": "Тестовый кластер"                                    
                }                                                                  
            },                                                                     
            "total_template_count": 1                                              // количество шаблонов
        }                                                                          
    ],                                                                             
    "count": 59503                                                                 // количество заданий
}                                                                                  

GET /rest/tasks/bbox

Кластеризация заданий по координатам.

Если в кластере одно задание, то оно вместе с правами пользователя на задание и с одним последним комментарием отдается в ответе.

Параметры фильтрации

Знаком + помечены поля, для которых можно указывать список значений, разделённых запятой. Например, organizationId=1,2.

http 200

// 2.0+
{                                                                                      
    "activeId": 192                                                                    // переданный "активный" id, если он подпадает под фильтры
    "items": [                                                                         
        {                                                                              
            "id": 767,                                                                 // id задания, если в кластере одно задание
            "count": 1,                                                                // количество заданий в кластере
            "extent": [                                                                // ограничивающий прямоугольник
                49.6142578125,                                                         
                55.4040698270061,                                                      
                49.6142578125,                                                         
                55.4040698270061                                                       
            ],                                                                         
            "lon": 49.6142578125,                                                      // координаты точки - lon
            "lat": 55.4040698270061                                                    // координаты точки - lat
        },                                                                             
        {                                                                              
            "id": null,                                                                
            "count": 17,                                                               // количество заданий в кластере
            "extent": [                                                                // ограничивающий прямоугольник
                55.56,                                                                 
                46.67,                                                                 
                55.56,                                                                 
                46.67                                                                  
            ],                                                                         
            "lon": 55.56,                                                              // координаты точки - lon
            "lat": 46.67                                                               // координаты точки - lat
        },                                                                             
        ...                                                                            // следующие элементы списка
    ],                                                                                 
    "tasks": [                                                                         
        {                                                                              
            "task": {                                                                  
                "id": 786847,                                                          // id задания
                "no": 3,                                                               // номер задания в кластере
                "title": "Ямы на дорогах",                                             // заголовок
                "user_id": 363,                                                        // id создателя задания
                "user_fio": "Иванов Иван",                                             // ФИО создателя задания
                "text": "Ямы на дорогах",                                              // описание
                "organization_id": 1,                                                  // id организации создателя (для создателей без организации это значение указывается явно при создании задания)
                "organization_name": "Население",                                      // название назначенной организации
                "organization_logo": "logo_3.png",                                     // логотип организации
                "contract_id": 442,                                                    // id контракта, по которому создано задание
                "contract_title": "Контракт на выполнение ремонта дорожного полотна",  // название контракта
                "contract_no": 01062022,                                               // номер контракта
                "date": 1543312469,                                                    // дата создания задания
                "deadline": 1542969580,                                                // дедлайн
                "stage": 1,                                                            // стадия задания: 1 - в работе, 2 - завершено
                "type_id": 1,                                                          // id вида работ задания
                "type_name": "Аварии",                                                 // название вида работ задания
                "type_icon": "icon_7.jpg",                                             // пиктограмма вида работ задания
                "priority_id": 2,                                                      // id приоритета
                "priority_name": "Дополнительные",                                     // название приоритета
                "status_id": 1,                                                        // id этапа
                "status_no": 1,                                                        // номер этапа
                "status_name": "Рассмотрение",                                         // название этапа
                "num_main_photo": 1,                                                   //порядковый номер фотографии, которая будет в заголовке.
                "archive": false,                                                      // архивное задания
                "system_data": null,                                                   // поле для интеграционных целей
                "update_date": 1547311229,                                             // дата изменения задания
                "date_local": "19.04.2024 01:00",                                      // локальная дата создания задания
                "deadline_local": "22.04.2024 01:00",                                  // локальный дедлайн
                "expired_date_local": "22.04.2024 01:00",                              // локальная дата, когда задание было просрочено
                "update_date_local": "22.04.2024 01:00",                               // локальная дата изменения задания
                "is_template": false,                                                  // шаблонное задание
                "expired_date": 1542969580,                                            // дата, когда задание было просрочено
                "assigned_user_id": 719,                                               // id назначенного пользователя
                "assigned_user_fio": "Петров Иван",                                    // ФИО назначенного пользователя,
                "assigned_organization_id": 312,                                       // id назначенной организации
                "assigned_organization_name": null                                     // название назначенной организации
                "lon": 49.1421403,                                                     // координаты точки - lon
                "lat": 55.774427,                                                      // координаты точки - lat
                "cluster_id": 1,                                                       // id кластера
                "date": 1541581403357,                                                 // дата создания задания
                "unread_message_count": 3,                                             // количество непрочитанных комментариев
                "favorite": true,                                                      // находится ли задание в избранном у текущего пользователя
                "service_object_layer_id": 1493,                                       // id слоя объекта
                "service_object_id": 7,                                                // id объекта
                "service_object_layer_title": "Название слоя",                         // название слоя
                "service_object_title": "Наименование объекта",                        // наименование объекта
                "schedule_id": 107486,                                                 // id расписания
                "added_photo_count": 0,                                                // количество фото, добавленных после создания задания
                "sample_matching": 60,                                                 // минимальный процент совпадения фото с образцом
                "fields": {                                                            // json-объект, хранящий значения настраиваемых полей в формате:
                    "Dop_pole_dlya_testov": {                                          // {"транслит русского названия поля": {
                        "field_id": 19,                                                //     "field_id": <ID>,
                        "value": 12345                                                 //     "value": <значение>
                    }                                                                  // }}
                },                                                                     
                "parent": {                                                            // родительское задание
                    "id": 2,                                                           
                    "title": "Ямы",                                                    
                    "organization_id": 3,                                              
                    "organization_name": "Контроль дорог",                             
                    "organization_logo": null,                                         
                    "stage": 1,                                                        
                    "type_id": 1,                                                      
                    "type_name": "Аварии",                                             
                    "type_icon": "2.png",                                              
                    "priority_id": 1,                                                  
                    "priority_name": "Плановые",                                       
                    "status_id": 2,                                                    
                    "status_no": 2,                                                    // номер этапа
                    "status_name": "назначено",                                        
                    "assigned_user_id": 95,                                            
                    "assigned_user_fio": "Петров Иван",                                
                    "assigned_organization_id": 101,                                   
                    "assigned_organization_name": "Ремонт дорог",                      
                    "date": 1542949580                                                 
                },                                                                     
                "attachments": [                                                       // прикрепленные файлы
                    {                                                                  
                        "id": 54666,                                                   // id файла
                        "num": 1,                                                      // порядковый номер файла
                        "sample_matching": 60,                                         // процент совпадения фото с образцом
                        "name": "Nature.jpg",                                          // исходное название файла
                        "description": "New photo",                                    // описание файла
                        "extension": "jpg",                                            // расширение файла
                        "file_name": "8ce1c640-e2c6-1004-8171-1dcd61b183b4.jpg",       // название файла на сервере
                        "link": null,                                                  // для видеофайлов: ссылка, если видеофайл находится не на сервере; для файлов других типов null
                        "sticker": {                                                   // стикер, прикрепленный к файлу
                            "id": 76,                                                  // id
                            "title": "Тестовый стикер"                                 // название
                        }                                                              
                        "create_date": 1533215550,                                     // дата добавления файла
                        "deleted": false,                                              // удален файл или нет
                        "size": 1288395,                                               // размер файла в байтах
                        "file_source": "device_camera",                                // источник файла ("device_camera"/"app_camera"/app_redactor/"gallery"/"dictaphone")
                        "attached_to_field": false,                                    // файл прикреплен к файловому настраиваемому полю
                        "attachment": {                                                // информация по времени и месту прикрепления файла
                            "time": 1533111159,                                        // время прикрепления файла
                            "time_provider": "system",                                 // источник времени прикрепления файла
                            "location": {                                              // информация по месту прикрепления файла
                                "location": [                                          
                                    55.56,                                             
                                    46.67                                              
                                ],                                                     // координаты места прикрепления файла
                                "provider": "gps",                                     // источник координат места прикрепления файла
                                "accuracy": 12.5,                                      // точность координат места прикрепления файла
                                "distance_to_task": 102.363663636                      // расстояние от точки задания до места прикрепления файла (в метрах)
                            }                                                          
                        },                                                             
                        "origin": {                                                    // информация по времени и месту создания файла
                            "time": 1533113954,                                        // время создания файла
                            "time_provider": "ntp",                                    // источник времени создания файла
                            "location": {                                              // координаты места создания файла
                                "location": [                                          
                                    55.45,                                             
                                    46.89                                              
                                ],                                                     // координаты места создания файла
                                "provider": "gps",                                     // источник координат места создания файла
                                "accuracy": 10,                                        // точность координат места создания файла
                                "distance_to_task": 243.121212121                      // расстояние от точки задания до места создания файла (в метрах)
                            }                                                          
                        },                                                             
                        "author": {                                                    // информация по платформе и приложению
                            "platform": "android",                                     // платформа
                            "platform_version": "4.2",                                 // версия платформы
                            "application": "MapMobile",                                // приложение
                            "application_version": "8.5"                               // версия приложения
                        },                                                             
                        "type": "PHOTO",                                               // тип файла
                        "semantics": "SIGNATURE",                                      // семантика
                        "task_id": 786847                                              // id задания
                    }                                                                  
                ],                                                                     
            },                                                                         
            "capabilities": {                                                          // права пользователя на задание:
                                                                                       // имеет ли пользователь право выполнять
                                                                                       // указанные действия (capabilities) с заданием
                "update_type": false,                                                  
                "update_custom_fields": true,                                          
                "edit": true,                                                          
                "assign_department": true,                                             
                "show": true,                                                          
                "update_title": false,                                                 
                "update": true,                                                        
                "update_priority": false,                                              
                "edit_files": true,                                                    
                "attach_photo_video_from_gallery": true,                               
                "delete": true,                                                        
                "update_point": false,                                                 
                "confirm": true,                                                       
                "update_text": false,                                                  
                "show_owner": true,                                                    
                "attach_photo_video_from_camera": true,                                
                "assign_status": true,                                                 
                "assign_user": true,                                                   
                "update_parent_task": true                                             
            },                                                                         
            "comments": [                                                              // список комментариев
                {                                                                      
                    "id": 214719,                                                      // id комментария
                    "uuid": "78ada22b-6025-40c1-a9f3-f91a9d1e06cc",                    
                    "date": 1619169384,                                                // дата создания комментария
                    "date_local": "20.06.2024 15:40",                                  // локальная дата создания комментария
                    "update_text": null,                                               // текст обновления (для комментария об обновлении задания)
                    "comment": "#5",                                                   // текст комментария
                    "type": 1,                                                         // тип комментария: 1 - обычный, 2 - системный
                    "diff": null,                                                      // информация по внесенным в задание изменениям
                    "chat_message_number": 5,                                          // номер сообщения в чате задания
                    "chat_id": 123,                                                    // системный номер канала сообщений
                    "task_id": 786847,                                                 // id задания
                    "parent": null,                                                    // родительский комментарий
                    "system_message_code": null,                                       // код системного сообщения
                    "fio": "Администратор",                                            // ФИО пользователя
                    "user_id": 6                                                       // id пользователя
                }                                                                      
            ]                                                                          
        }                                                                              
        ...                                                                            // следующие элементы списка заданий
    ],                                                                                 
    "schedules": [                                                                     
        {                                                                              
            "id": 107486,                                                              // id расписания
            "title": "Расписание",                                                     // название
            "time_zone": "Europe/Moscow"                                               // таймзона расписания, возможный формат - "UTC+3", "UTC+03:00" или "Europe/Moscow"
            "worktime": 7200,                                                          // дедлайн
            "on": true,                                                                // включено расписание или нет
            "deleted": false                                                           // признак удалённого расписания
            "user": {                                                                  // информация о пользователе, который создал расписание
                "id": 6,                                                               
                "fio": "Главный администратор"                                         
            },                                                                         
            "cluster": {                                                               // кластер
                "id": 150086,                                                          
                "title": "Тестовый кластер"                                            
            },                                                                         
            "archive": false,                                                          // является ли расписание архивным
            "contract": {                                                              // контракт
                "id": 195270,                                                          
                "no": "1",                                                             
                "title": "организация",                                                
                "start_date_local": "01.01.2025 00:00",                                // локальная дата начала действия контракта
                "finish_date_local": "01.01.2026 00:00",                               // локальная дата окончания действия контракта
                "start_date": 1706798372,                                              
                "finish_date": 1716798372                                              
            },                                                                         
            "organization": {                                                          // организация
                "id": 195270,                                                          
                "name": "организация",                                                 
                "cluster": {                                                           
                    "id": 150086,                                                      
                    "title": "Тестовый кластер"                                        
                }                                                                      
            },                                                                         
            "total_template_count": 1                                                  // количество шаблонов
        }                                                                              
    ],                                                                                 
    "total": 19                                                                        // всего заданий
}                                                                                      

POST /rest/tasks

Добавление задания.

Параметры запроса

Дата и дедлайн могут быть переданы как в формате Unix Timestamp, так и в виде строки. Строка при этом состоит из даты (YYYY, MM, DD в прямом или обратном порядке, разделённые точкой, дефисом или слэшем) и времени (hh:mm или hh:mm:ss), разделённых пробелом.

Timestamp трактуется как абсолютное время в UTC. Строковая дата трактуется как местное время; часовой пояс вычисляется исходя из кластера задания.

В массив attachments закладывается возможность прикрепления ярлыков к файлам сразу при создании задания (поле sticker_id). При прикреплении ярлыков производится проверка их доступности виду работ задания. При проверке учитывается свойство ярлыков is_for_all (доступно всем видам работ). Если хотя бы один из указанных ярлыков не соответствуют виду работ, будет получен код 403 . При передаче sticker_id: null или отсутствии sticker_id считается, что к файлу не прикреплен никакой ярлык.

Каждый из attachments типа PHOTO может содержать массив beacons с данными по радиометкам, снятым в момент фотографирования. Отправлять можно неограниченное количество меток, но в БД будут сложены только метки с максимальным уровне сигнала (rssi). Количество складываемых меток ограничивается настройкой Функции заданий/Метки/Максимальное количество меток на один файл (по умолчанию 5).

// 2.0+
{                                                                     
    "organization_id": 3,                                             // id организации-создателя;
                                                                      // поле должно быть передано, если создатель задания
                                                                      // не принадлежит ни к одной организации
                                                                      //
    "contract_id": 442                                                // контракт, по которому создаётся задание;
                                                                      // переданный контракт должен быть логически
                                                                      // увязан с видом работ задания и объектом,
                                                                      // из которого создаётся задание
    "date": "2024-06-01 12:00",                                       // * дата задания
    "title": "Яма на дороге",                                         // * заголовок
    "text": "Яма на дороге, перекресток ул Пушкина/Университетская",  // * описание
    "type_id": 1,                                                     // * id вида работ
    "priority_id": 1,                                                 // * id приоритета
    "parent_id": 2,                                                   // id родительского задания
    "status_id": 1,                                                   // id этапа
                                                                      //
    "assigned_user_id": 95,                                           // 0.24+ исполнитель
    "assigned_organization_id": 101,                                  // 0.24+ организация исполнителя при её наличии;
                                                                      // также можно указать только организацию
                                                                      // без указания конкретного исполнителя;
                                                                      // организации должен быть доступен вид работ задания
                                                                      //
    "deadline": "2025-01-01 12:00",                                   // дедлайн;
                                                                      // если не передан, то может быть проставлен
                                                                      // на основе поля period_of_review_in_sec вида работ.
                                                                      // Для этого:
                                                                      //   * вид работ должен иметь тип AT_CREATE
                                                                      //   * либо
                                                                      //     * вид работ должен иметь тип AT_UPDATE
                                                                      //     * и должен быть указан исполнитель
                                                                      //       (или только организация исполниеля)
                                                                      //
    "system_data": "версия: 1.1.1",                                   // поле для интеграционных целей
                                                                      //
    "point": [                                                        // координаты точки задания в формате [lon, lat]
        55.56,                                                        
        46.67                                                         
    ],                                                                
    "tracking_on": true,                                              // 0.18+ настройка включения/выключения оповещений
                                                                      // о входе/выходе исполнителя в зону/из зоны задания
                                                                      //
    "zone_radius": 20,                                                // 0.18+ размер зоны задания для оповещений о входе/выходе
                                                                      // исполнителя в/из неё
                                                                      //
    "service_object_id": 7,                                           // 0.24+ id объекта
    "service_object_layer_id": 5                                      // id слоя
                                                                      //
    "fields": {                                                       // JSON-объект, состоящий из списка настраиваемых полей
        "Pole": {                                                     //  с их значениями в формате:
            "field_id": 1                                             // {"транслит русского названия поля": {
            "value": 12                                               //     "field_id": <ID поля>,
        }                                                             //     "value": <значение>
    },                                                                // }}
                                                                      //
    "attachments": [                                                  // 0.16+ файлы
        {                                                             
            "file": "dN2k9B9r42YbfDyz.jpg",                           // имя файла на сервере после закачки
            "sample_matching": 60,                                    // процент совпадения фото с образцом
            "file_name": "моя фотография.jpg",                        // оригинальное имя файла
            "description": "Второстепенное фото",                     // описание файла
            "file_type": "PHOTO",                                     // тип файла, PHOTO/VIDEO/FILE/SOUND
            "semantics": "SIGNATURE",                                 // семантика, SIGNATURE/QRCODE
            "guid": "ee571723-ce92",                                  // идентификатор файла настраиваемого поля
            "main_photo": true,                                       // признак главного фото задания;
                                                                      // можно применяться только к PHOTO;
                                                                      // в attachments допускается не более одного
                                                                      // main_photo = true
                                                                      //
            "sticker_id": 12,                                         // id ярлыка для прикрепления к файлу
            "file_source": "device_camera",                           // 0.21+ источник файла;
                                                                      // device_camera/app_camera/app_redactor/gallery/dictaphone
                                                                      //
            "attachment": {                                           // 0.21+ время и место прикрепления файла
                "time": 1533111159,                                   // время
                "time_provider": "system",                            // источник времени, ntp/gps/system
                "location": {                                         // место
                    "provider": "gps",                                // источник координат
                    "accuracy": 12.5,                                 // точность координат
                    "lonlat": [                                       // координаты
                        55.56,                                        
                        46.67                                         
                    ],                                                
                    "distance_to_task": 102.363663636                 // расстояние от точки задания
                                                                      // до места прикрепления файла, метры
                }                                                     
            },                                                        
            "origin": {                                               // 0.21+ время и место записи файла
                "time": 1533113954,                                   // время
                "time_provider": "ntp",                               // источник времени, ntp/gps/system
                "location": {                                         // место
                    "provider": "gps",                                // источник координат, gps/network
                    "accuracy": 10.5,                                 // точность координат
                    "lonlat": [                                       // координаты
                        55.45,                                        
                        46.89                                         
                    ],                                                
                    "distance_to_task": 102.65656556                  // расстояние от точки задания
                                                                      // до места записи файла, метры
                }                                                     
            },                                                        
            "author": {                                               // 0.21+ информация о приложении и платформе
                "platform": "android",                                // платформа, iOS/android/desktop/web
                "platform_version": "4.2",                            // версия платформы
                "application": "MapMobile",                           // приложение, в котором был записан файл
                "application_version": "8.5"                          // версия приложения
            },                                                        
            "beacons": [                                              // метки маяков, прикреплённые к фото
                {                                                     
                    "uuid": "e2c56db5-dffb-48d2-b060-d0f5a71096e0",   // идентификаторы маяка
                    "major": 0,                                       
                    "minor": 817,                                     
                    "rssi": -52.5,                                    // измеренная мощность сигнала
                    "distance": 7.6                                   // вычисленное расстояние (метры)
                },                                                    
                ...                                                   
            ],                                                        
        },                                                            
        ...                                                           // следующие элементы списка файлов
    ]                                                                 
}                                                                     

http 200

// 2.0
{                                                                          
    "id": 789249,                                                          // id созданного задания
    "no": 3,                                                               // номер задания в кластере
    "user_id": 6,                                                          // id создателя задания
    "user_fio": "Главный Администратор",                                   // ФИО создателя
    "title": "Яма на дороге",                                              // заголовок
    "text": "Яма на дороге, перекресток ул Пушкина/Университетская",       // описание
    "organization_id": 3,                                                  // id организации создателя (для создателей без организации
                                                                           // это значение указывается явно при создании задания)
    "organization_name": "Контроль дорог",                                 // название организации создателя задания
    "organization_logo": null,                                             // логотип организации
    "contract_id": 442,                                                    // id контракта, по которому создано задание
    "contract_title": "Контракт на выполнение ремонта дорожного полотна",  // название контракта
    "contract_no": 01062022,                                               // номер контракта
    "date": 1542969580,                                                    // дата создания задания
    "deadline": 1542969580,                                                // дедлайн
    "expired_date": 1541581662                                             // момент, когда задание было просрочено
    "stage": 1,                                                            // стадия задания: 1 - в работе,
                                                                           // 2 - завершено
    "type_id": 1,                                                          // id вида работ задания
    "type_name": "Аварии",                                                 // название вида работ задания
    "type_icon": "icon_7.jpg",                                             // пиктограмма вида работ задания
    "priority_id": 1,                                                      // id приоритета
    "priority_name": "Плановые",                                           // название приоритета
    "status_id": 1,                                                        // id этапа
    "status_no": 1,                                                        // номер этапа
    "status_name": "рассмотрение",                                         // название этапа
    "num_main_photo": 1,                                                   // порядковый номер фотографии,
                                                                           // которая будет в заголовке.
    "archive": false,                                                      // архивное задание
    "system_data": "версия: 1.1.1",                                        
    "update_date": 1542969580,                                             // дата обновления задания
    "date_local": "19.04.2024 01:00",                                      // локальная дата создания задания
    "deadline_local": "22.04.2024 01:00",                                  // локальный дедлайн
    "expired_date_local": "22.04.2024 01:00",                              // локальная дата, когда задание было просрочено
    "update_date_local": "22.04.2024 01:00",                               // локальная дата изменения задания
    "assigned_organization_id": 101,                                       // id назначенной организации
    "assigned_organization_name": "Ремонт дорог",                          // название назначенной организации
    "assigned_user_id": 95,                                                // id назначенного пользователя
    "assigned_user_fio": "Петров Иван",                                    // ФИО назначенного пользователя
    "is_template": false,                                                  // шаблонное задание
    "lat": 46.67,                                                          // координаты точки - lat
    "lon": 55.56,                                                          // координаты точки - lon
    "cluster_id": 1,                                                       // id кластера
    "unread_message_count": 3,                                             // количество непрочитанных комментариев
    "favorite": false,                                                     // находится ли задание в избранном у текущего пользователя
    "service_object_layer_id": 1493,                                       // id слоя объекта
    "service_object_id": 7,                                                // id объекта
    "service_object_layer_title": "Название слоя",                         // название слоя
    "service_object_title": "Наименование объекта",                        // наименование объекта
    "schedule_id": null,                                                   // id расписания
    "added_photo_count": 0,                                                // количество фото, добавленных после создания задания
    "sample_matching": 60,                                                 // минимальный процент совпадения фото с образцом
    "fields": {                                                            // json-объект, хранящий значения настраиваемых полей в формате:
        "Dop_pole_dlya_testov": {                                          // {"транслит русского названия поля": {
            "field_id": 19,                                                //    "field_id": <ID>,
            "value": 12345                                                 //    "value": <значение>
        }                                                                  // }}
    },                                                                     
    "parent": {                                                            // родительское задание
        "id": 2,                                                           
        "title": "Ямы",                                                    
        "organization_id": 3,                                              
        "organization_name": "Контроль дорог",                             
        "organization_logo": null,                                         
        "stage": 1,                                                        
        "type_id": 1,                                                      
        "type_name": "Аварии",                                             
        "type_icon": "2.png",                                              
        "priority_id": 1,                                                  
        "priority_name": "Плановые",                                       
        "status_id": 2,                                                    
        "status_no": 2,                                                    // номер этапа
        "status_name": "назначено",                                        
        "assigned_user_id": 95,                                            
        "assigned_user_fio": "Петров Иван",                                
        "assigned_organization_id": 101,                                   
        "assigned_organization_name": "Ремонт дорог",                      
        "date": 1542949580                                                 
    },                                                                     
    "attachments": [                                                       // прикрепленные файлы
        {                                                                  
            "id": 54666,                                                   // id файла
            ...                                                            // следующие элементы
        }                                                                  
    ],                                                                     
}                                                                          

GET /rest/tasks/:id

Получение данных по конкретному заданию.

Права пользователей на выполнение данного запроса зависят от capability роли пользователя. Понятие capability обозначает действие, которое можно выполнять с заданием. Для того, чтобы пользователь мог просмотреть задание, его роли должна быть доступна capability = show.

http 200

// 2.0
{                                                                              
    "task": {                                                                  
        "id": 789249,                                                          // id созданного задания
        "no": 3,                                                               // номер задания в кластере
        "user_id": 6,                                                          // id создателя задания
        "user_fio": "Главный Администратор",                                   // ФИО создателя
        "title": "Яма на дороге",                                              // заголовок
        "text": "Яма на дороге, перекресток ул Пушкина/Университетская",       // описание
        "organization_id": 3,                                                  // id организации создателя (для создателей без организации
                                                                               // это значение указывается явно при создании задания)
        "organization_name": "Контроль дорог",                                 // название организации создателя
        "organization_logo": null,                                             // логотип организации
        "contract_id": 442,                                                    // id контракта, по которому создано задание
        "contract_title": "Контракт на выполнение ремонта дорожного полотна",  // название контракта
        "contract_no": 01062022,                                               // номер контракта
        "date": 1542969580,                                                    // дата создания задания
        "deadline": 1542969580,                                                // дедлайн
        "expired_date": 1541581662                                             // момент, когда задание было просрочено
        "stage": 1,                                                            // стадия задания: 1 - в работе,
                                                                               // 2 - завершено
        "type_id": 1,                                                          // id вида работ задания
        "type_name": "Аварии",                                                 // название вида работ задания
        "type_icon": "icon_7.jpg",                                             // пиктограмма вида работ задания
        "priority_id": 1,                                                      // id приоритета
        "priority_name": "Плановые",                                           // название приоритета
        "status_id": 1,                                                        // id этапа
        "status_no": 1,                                                        // номер этапа
        "status_name": "рассмотрение",                                         // название этапа
        "num_main_photo": null,                                                // порядковый номер фотографии,
                                                                               // которая будет в заголовке.
        "archive": false,                                                      // архивное задание
        "system_data": "версия: 1.1.1",                                        
        "update_date": 1542969580,                                             // дата обновления задания
        "date_local": "19.04.2024 01:00",                                      // локальная дата создания задания
        "deadline_local": "22.04.2024 01:00",                                  // локальный дедлайн
        "expired_date_local": "22.04.2024 01:00",                              // локальная дата, когда задание было просрочено
        "update_date_local": "22.04.2024 01:00",                               // локальная дата изменения задания
        "assigned_organization_id": 3,                                         // id назначенной организации
        "assigned_organization_name": "Ремонт дорог",                          // название назначенной организации
        "assigned_user_id": 613,                                               // id назначенного пользователя
        "assigned_user_fio": "Петров Иван",                                    // ФИО назначенного пользователя
        "lat": 46.67,                                                          // координаты точки - lat
        "lon": 55.56,                                                          // координаты точки - lon
        "cluster_id": 1,                                                       // id кластера
        "is_template": false,                                                  // шаблонное задание
        "date": 1542969580,                                                    // дата создания задания
        "unread_message_count": 3,                                             // количество непрочитанных комментариев
        "favorite": true,                                                      // находится ли задание в избранном у текущего пользователя
        "service_object_layer_id": 1493,                                       // id слоя объекта
        "service_object_id": 7,                                                // id объекта
        "service_object_layer_title": "Название слоя",                         // название слоя
        "service_object_title": "Наименование объекта",                        // наименование объекта
        "schedule_id": 107486,                                                 // id расписания
        "added_photo_count": 0,                                                // количество фото, добавленных после создания задания
        "sample_matching": 60,                                                 // минимальный процент совпадения фото с образцом
        "fields": {                                                            // json-объект, хранящий значения настраиваемых полей в формате:
            "Dop_pole_dlya_testov": {                                          // {"транслит русского названия поля": {
                "field_id": 19,                                                //    "field_id": <ID>,
                "value": 12345                                                 //    "value": <значение>
            }                                                                  // }}
        },                                                                     
        "parent": {                                                            // родительское задание
            "id": 2,                                                           
            "title": "Ямы",                                                    
            "organization_id": 3,                                              
            "organization_name": "Контроль дорог",                             
            "organization_logo": null,                                         
            "stage": 1,                                                        
            "type_id": 1,                                                      
            "type_name": "Аварии",                                             
            "type_icon": "2.png",                                              
            "priority_id": 1,                                                  
            "priority_name": "Плановые",                                       
            "status_id": 2,                                                    
            "status_no": 2,                                                    // номер этапа
            "status_name": "назначено",                                        
            "assigned_user_id": 95,                                            
            "assigned_user_fio": "Петров Иван",                                
            "assigned_organization_id": 101,                                   
            "assigned_organization_name": "Ремонт дорог",                      
            "date": 1542949580                                                 
        },                                                                     
        "attachments": [                                                       // прикрепленные файлы
            {                                                                  
                "id": 54666,                                                   // id файла
                "beacons": [                                                   // метки маяков, прикреплённые к фото
                    {                                                          
                        "uuid": "e2c56db5-dffb-48d2-b060-d0f5a71096e0",        // идентификаторы маяка
                        "major": 0,                                            
                        "minor": 817,                                          
                        "rssi": -52.5,                                         // измеренная мощность сигнала
                        "distance": 7.6                                        // вычисленное расстояние (метры)
                    },                                                         
                    ...                                                        
                ],                                                             
                ...                                                            // следующие элементы
            }                                                                  
        ],                                                                     
    },                                                                         
    "schedule": {                                                              
        "id": 107486,                                                          // id расписания
        "title": "Расписание",                                                 // название
        "worktime": 7200,                                                      // дедлайн
        "on": true,                                                            // включено расписание или нет
        "time_zone": "Europe/Moscow",                                          // таймзона расписания
        "user": {                                                              // информация о пользователе, который создал расписание
            "id": 6,                                                           
            "fio": "Главный администратор"                                     
        },                                                                     
        "cluster": {                                                           // кластер
            "id": 150086,                                                      
            "title": "Тестовый кластер"                                        
        },                                                                     
        "archive": false,                                                      // является ли расписание архивным
        "contract": {                                                          // контракт
            "id": 195270,                                                      
            "no": "1",                                                         
            "title": "организация",                                            
            "start_date_local": "01.01.2025 00:00",                            // локальная дата начала действия контракта
            "finish_date_local": "01.01.2026 00:00",                           // локальная дата окончания действия контракта
            "start_date": 1706798372,                                          
            "finish_date": 1716798372                                          
        },                                                                     
        "organization": {                                                      // организация
            "id": 195270,                                                      
            "name": "организация",                                             
            "cluster": {                                                       
                "id": 150086,                                                  
                "title": "Тестовый кластер"                                    
            }                                                                  
        },                                                                     
        "total_template_count": 1                                              // количество шаблонов
    },                                                                         
    "configuration": {}                                                        
}                                                                              

PATCH /rest/tasks/:id

Обновление задания.

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

Параметры запроса

Дедлайн может быть передан как в формате Unix Timestamp, так и в виде строки. Строка при этом состоит из даты (YYYY, MM, DD в прямом или обратном порядке, разделённые точкой, дефисом или слэшем) и времени (hh:mm или hh:mm:ss), разделённых пробелом.

Timestamp трактуется как абсолютное время в UTC. Строковая дата трактуется как местное время; часовой пояс вычисляется исходя из кластера задания.

Новые переданные файлы будут прикреплены к заданию и добавлены к ранее прикрепленным файлам.

Если массив "attachments" содержит файл с "main_photo":true, информацию по номеру главного фото берем из него. Независимо от того, было ли передано поле "photo_main" в основном JSON-объекте, оно будет проигнорировано. Если массив "attachments" не будет передан, или в нем не будет информации по номеру главного фото, информацию по номеру главного фото берем из поля "photo_main" в основном JSON-объекте. Если поле "photo_main" в основном JSON-объекте тоже не было передано, оставляем номер главного фото без изменений.

В массив "attachments" закладывается возможность прикрепления стикеров к файлам при изменении задания (поле "sticker_id"). При прикреплении стикеров производим проверку доступности указанных стикеров виду работ. При проверке учитываем свойство стикеров "is_for_all" (доступно всем видам работ). Если хотя бы один из указанных стикеров не соответствуют виду работ, выдаем 403. При передаче "sticker_id": null полагаем, что к файлу не прикреплен никакой стикер. Если поле "sticker_id" не было передано, полагаем, что к файлу не прикреплен никакой стикер.

Каждый из attachments типа PHOTO может содержать массив beacons с данными по радиометкам, снятым в момент фотографирования. Отправлять можно неограниченное количество меток, но в БД будут сложены только метки с максимальным уровне сигнала (rssi). Количество складываемых меток ограничивается настройкой Функции заданий/Метки/Максимальное количество меток на один файл (по умолчанию 5).

При передаче поля "fields" происходит частичное изменение настраиваемых полей:

Для открепления всех настраиваемых полей необходимо передать null.

// 2.0+
{                                                                         
    "task": {                                                             
        "date": 177335345,                                                // новая дата задания;
                                                                          // может быть как строкой формата "YYYY-MM-DD HH:mm",
                                                                          // так и Unix-Timestamp; строка разрешается относительно
                                                                          // таймзоны кластера задания.
                                                                          // Если вид работ задания с "дедлайном в момент создания задания",
                                                                          // был непустой дедлайн, не менялся в текущем запросе и совпадает
                                                                          // с отсчитанным от предыдущей даты задания, то он будет сдвинут.
        "title": "Яма на дороге",                                         // заголовок
        "text": "Яма на дороге, перекресток ул Пушкина/Университетская",  // описание
        "status_id": 1,                                                   // id этапа
        "assigned_organization_id": 3,                                    // id назначенной организации
        "assigned_user_id": 613,                                          // id назначенного пользователя
        "contract_id": 443,                                               // id контракта, по которому создано задание
        "type_id": 1,                                                     // id вида работ
        "stage": 1,                                                       // стадия задания: 1 - в работе, 2 - завершено
        "priority_id": 1,                                                 // id приоритета
        "parent_id": 2,                                                   // id родительского задания
        "service_object_id": 7,                                           // id объекта;
                                                                          // прикрепить объект можно,
                                                                          // если ни один объект к заданию ещё не был прикреплён
        "service_object_layer_id": 5                                      // id слоя
        "deadline": "2030/06/01 17:15:00",                                // дедлайн
        "system_data": "версия: 1.1.1",                                   
        "archive": false,                                                 // архивное задание
                                                                          //
        "fields": {                                                       // JSON-объект, состоящий из списка настраиваемых полей
            "Pole": {                                                     //  с их значениями в формате:
                "field_id": 1                                             // {"транслит русского названия поля": {
                "value": 12                                               //     "field_id": <ID поля>,
            }                                                             //     "value": <значение>
        },                                                                // }}
                                                                          //
        "point": [                                                        
            55.56,                                                        
            46.67                                                         
        ],                                                                // координаты точки в формате [lon, lat]; отправка null сотрёт точку; если поле отсутствует в JSON, изменений в БД не будет
        "pointZoom": 14,                                                  // зум, на котором будет отображаться точка, можно отправить null, тогда будет взят зум по умолчанию
        "tracking_on": true,                                              // настройка включения/выключения оповещений о входе/выходе исполнителя в зону/из зоны задания; доступно для версий Cerebellum, начиная с 0.18
        "zone_radius": 20,                                                // размер зоны задания для оповещений о входе/выходе исполнителя в зону/из зоны задания; доступно для версий Cerebellum, начиная с 0.18
        "update_comments": "Задание было назначено",                      //комментарии при обновлении
        "photo_main": 1,                                                  // номер главного фото, начиная с 0 (среди ранее загруженных файлов), для версий Cerebellum до 0.16
        "attachments": [                                                  // передача файлов в массиве для версий Cerebellum от 0.16 и старше
            {                                                             
                "file": "dN2k9B9r42YbfDyz.jpg",                           // название файла после загрузки
                "file_name": "1313410929241.jpg",                         // исходное название файла
                "sample_matching": 60,                                    // процент совпадения фото с образцом
                "description": "Второстепенное фото",                     // описание файла
                "file_type": "PHOTO",                                     // тип файла: "PHOTO" - фото, "VIDEO" - видео, "FILE" - файл, "SOUND" - аудио
                "semantics": "SIGNATURE",                                 // семантика, SIGNATURE/QRCODE
                "main_photo": false,                                      // является ли фото главным
                "sticker_id": 12,                                         // id стикера для прикрепления к файлу
                "file_source": "device_camera",                           // источник файла, тип String, возможные значения: "device_camera"/"app_camera"/app_redactor/"gallery"/"dictaphone"
                "guid": "ee571723-ce92",                                  // идентификатор файла настраиваемого поля
                "attachment": {                                           // информация по времени и месту прикрепления файла
                    "time": 1533111159,                                   // время прикрепления файла
                    "time_provider": "system",                            // источник времени прикрепления, тип String, возможные значения: "ntp"/"gps"/"system"
                    "location": {                                         // информация по месту прикрепления
                        "provider": "gps",                                // источник координат места прикрепления, тип String, возможные значения: "gps"/"network"
                        "accuracy": 12.5,                                 // точность координат места прикрепления, тип Double
                        "lonlat": [                                       
                            55.56,                                        
                            46.67                                         
                        ],                                                // координаты места прикрепления в формате [lon, lat]
                        "distance_to_task": 102.363663636                 // расстояние от точки задания до места прикрепления файла, тип Double, измеряется в метрах
                    }                                                     
                },                                                        
                "origin": {                                               // информация по времени и месту записи файла
                    "time": 1533113954,                                   // время записи файла
                    "time_provider": "ntp",                               // источник времени записи, тип String, возможные значения: "ntp"/"gps"/"system"
                    "location": {                                         // информация по месту записи
                        "provider": "gps",                                // источник координат места записи, тип String, возможные значения: "gps"/"network"
                        "accuracy": 10.5,                                 // точность координат места записи, тип Double
                        "lonlat": [                                       
                            55.45,                                        
                            46.89                                         
                        ],                                                // координаты места записи в формате [lon, lat]
                        "distance_to_task": 342.212819281928              // расстояние от точки задания до места записи файла, тип Double, измеряется в метрах
                    }                                                     
                },                                                        
                "author": {                                               // информация о приложении и платформе
                    "platform": "android",                                // платформа, тип String, возможные значения: "iOS"/"android"/"desktop"/"web"
                    "platform_version": "4.2",                            // версия платформы, тип String
                    "application": "MapMobile",                           // приложение, в котором был записан файл, тип String
                    "application_version": "8.5"                          // версия приложения, тип String
                },                                                        
                "beacons": [                                              // метки маяков, прикреплённые к фото
                    {                                                     
                        "uuid": "e2c56db5-dffb-48d2-b060-d0f5a71096e0",   // идентификаторы маяка
                        "major": 0,                                       
                        "minor": 817,                                     
                        "rssi": -52.5,                                    // измеренная мощность сигнала
                        "distance": 7.6                                   // вычисленное расстояние (метры)
                    },                                                    
                    ...                                                   
                ],                                                        
            },                                                            
            {                                                             
                "file": "dN2k9B9r42YbreDyz.3gp",                          // название файла после загрузки
                "file_name": "1313910929241.3gp",                         // исходное название файла
                "description": "Вторая запись",                           // описание файла
                "file_type": "VIDEO",                                     // тип файла: "PHOTO" - фото, "VIDEO" - видео, "FILE" - файл, "SOUND" - аудио
                "main_photo": false,                                      // для видео false или null
                "sticker_id": 11                                          // id стикера для прикрепления к файлу
                "file_source": "gallery",                                 // источник файла, тип String, возможные значения: "device_camera"/"app_camera"/app_redactor/"gallery"/"dictaphone"
                "attachment": {                                           // информация по времени и месту прикрепления файла
                    "time": 1533111159,                                   // время прикрепления файла
                    "time_provider": "gps",                               // источник времени прикрепления, тип String, возможные значения: "ntp"/"gps"/"system"
                    "location": {                                         // информация по месту прикрепления
                        "provider": "gps",                                // источник координат места прикрепления, тип String, возможные значения: "gps"/"network"
                        "accuracy": 120.5,                                // точность координат места прикрепления, тип Double
                        "lonlat": [                                       
                            55.45,                                        
                            46.37                                         
                        ],                                                // координаты места прикрепления в формате [lon, lat]
                        "distance_to_task": 352.23535253                  // расстояние от точки задания до места прикрепления файла, тип Double, измеряется в метрах
                    }                                                     
                },                                                        
                "origin": {                                               // информация по времени и месту записи файла
                    "time": 1533113954,                                   // время записи файла
                    "time_provider": "system",                            // источник времени записи, тип String, возможные значения: "ntp"/"gps"/"system"
                    "location": {                                         // информация по месту записи
                        "provider": "gps",                                // источник координат места записи, тип String, возможные значения: "gps"/"network"
                        "accuracy": 100.5,                                // точность координат места записи, тип Double
                        "lonlat": [                                       
                            55.44,                                        
                            46.88                                         
                        ],                                                // координаты места записи в формате [lon, lat]
                        "distance_to_task": 123.121212                    // расстояние от точки задания до места записи файла, тип Double, измеряется в метрах
                    }                                                     
                },                                                        
                "author": {                                               // информация о приложении и платформе
                    "platform": "android",                                // платформа, тип String, возможные значения: "iOS"/"android"/"desktop"/"web"
                    "platform_version": "4.2",                            // версия платформы, тип String
                    "application": "MapMobile",                           // приложение, в котором был записан файл, тип String
                    "application_version": "8.5"                          // версия приложения, тип String
                }                                                         
            },                                                            
            {                                                             
                "file": "dN2k9B9r42YbtDtz.m4a",                           // название файла после загрузки
                "file_name": "1313410926541.m4a",                         // исходное название файла
                "description": "Аудио запись",                            // описание файла
                "file_type": "SOUND",                                     // тип файла: "PHOTO" - фото, "VIDEO" - видео, "FILE" - файл, "SOUND" - аудио
                "main_photo": null,                                       // для аудио false или null
                "sticker_id": null,                                       // id стикера для прикрепления к файлу
                "file_source": "dictaphone",                              // источник файла, тип String, возможные значения: "device_camera"/"app_camera"/app_redactor/"gallery"/"dictaphone"
                "attachment": {                                           // информация по времени и месту прикрепления файла
                    "time": 1533111159,                                   // время прикрепления файла
                    "time_provider": "gps",                               // источник времени прикрепления, тип String, возможные значения: "ntp"/"gps"/"system"
                    "location": null                                      // информация по месту прикрепления
                },                                                        
                "origin": {                                               // информация по времени и месту записи файла
                    "time": 1533113954,                                   // время записи файла
                    "time_provider": "system",                            // источник времени записи, тип String, возможные значения: "ntp"/"gps"/"system"
                    "location": null                                      // информация по месту записи
                },                                                        
                "author": null                                            // информация о приложении и платформе
            },                                                            
            {                                                             
                "file": "dN2k9B9r42Ybsa.txt",                             // название файла после загрузки
                "file_name": "1288324666.txt",                            // исходное название файла
                "description": "Вторая запись",                           // описание файла
                "file_type": "FILE",                                      // тип файла: "PHOTO" - фото, "VIDEO" - видео, "FILE" - файл, "SOUND" - аудио
                "main_photo": null,                                       // для типа "FILE" false или null
                "sticker_id": null,                                       // id стикера для прикрепления к файлу
                "attachment": {                                           // информация по времени и месту прикрепления файла
                    "time": 1533111159,                                   // время прикрепления файла
                    "time_provider": "gps",                               // источник времени прикрепления, тип String, возможные значения: "ntp"/"gps"/"system"
                    "location": null                                      // информация по месту прикрепления
                },                                                        
                "origin": {                                               // информация по времени и месту записи файла
                    "time": 1533113954,                                   // время записи файла
                    "time_provider": "system",                            // источник времени записи, тип String, возможные значения: "ntp"/"gps"/"system"
                    "location": null                                      // информация по месту записи
                },                                                        
                "author": null                                            // информация о приложении и платформе
            },                                                            
            {                                                             
                "id": 54666,                                              // id файла
                                                                          // обновлять можно только описание, стикер
                                                                          // и процент совпадения фото с образцом
                "sample_matching": 60,                                    // процент совпадения фото с образцом
                "description": "Вторая запись",                           // описание файла
                "sticker_id": 5,                                          // id стикера для прикрепления к файлу
            },                                                            
            ...                                                           // следующие элементы списка файлов
        ]                                                                 
    },                                                                    
}                                                                         

http 200

// 2.0
{                                                                     
    "id": 789249,                                                     // id созданного задания
    "no": 3,                                                          // номер задания в кластере
    "user_id": 6,                                                     // id создателя задания
    "user_fio": "Главный Администратор",                              // ФИО создателя
    "title": "Яма на дороге",                                         // заголовок
    "text": "Яма на дороге, перекресток ул Пушкина/Университетская",  // описание
    "organization_id": 3,                                             // id организации создателя
    "organization_name": "Контроль дорог",                            // название организации создателя
    "organization_logo": null,                                        // логотип организации
    "contract_id": 443,                                               // id контракта, по которому создано задание
    "contract_title": "Контракт на выполнение ремонта дорог",         // название контракта
    "contract_no": 01082022,                                          // номер контракта
    "date": 1542969580,                                               // дата создания задания
    "deadline": 1542969580,                                           // дедлайн
    "expired_date": 1541581662                                        // момент, когда задание было просрочено
    "stage": 1,                                                       // стадия задания: 1 - в работе,
                                                                      // 2 - завершено
    "type_id": 1,                                                     // id вида работ задания
    "type_name": "Аварии",                                            // название вида работ задания
    "type_icon": "icon_7.jpg",                                        // пиктограмма вида работ задания
    "priority_id": 1,                                                 // id приоритета
    "priority_name": "Плановые",                                      // название приоритета
    "status_id": 1,                                                   // id этапа
    "status_no": 1,                                                   // номер этапа
    "status_name": "рассмотрение",                                    // название этапа
    "num_main_photo": null,                                           // порядковый номер фотографии,
                                                                      // которая будет в заголовке.
    "archive": false,                                                 // архивное задание
    "system_data": "версия: 1.1.1",                                   
    "update_date": 1542969580,                                        // дата обновления задания
    "date_local": "19.04.2024 01:00",                                 // локальная дата создания задания
    "deadline_local": "22.04.2024 01:00",                             // локальный дедлайн
    "expired_date_local": "22.04.2024 01:00",                         // локальная дата, когда задание было просрочено
    "update_date_local": "22.04.2024 01:00",                          // локальная дата изменения задания
    "assigned_organization_id": 3,                                    // id назначенной организации
    "assigned_organization_name": "Ремонт дорог",                     // название назначенной организации
    "assigned_user_id": 613,                                          // id назначенного пользователя
    "assigned_user_fio": "Петров Иван",                               // ФИО назначенного пользователя
    "is_template": false,                                             // шаблонное задание
    "lat": 46.67,                                                     // координаты точки - lat
    "lon": 55.56,                                                     // координаты точки - lon
    "cluster_id": 1,                                                  // id кластера
    "unread_message_count": 3,                                        // количество непрочитанных комментариев
    "favorite": true,                                                 // находится ли задание в избранном у текущего пользователя
    "service_object_layer_id": 1493,                                  // id слоя объекта
    "service_object_id": 7,                                           // id объекта
    "service_object_layer_title": "Название слоя",                    // название слоя
    "service_object_title": "Наименование объекта",                   // наименование объекта
    "schedule_id": 107486,                                            // id расписания
    "added_photo_count": 0,                                           // количество фото, добавленных после создания задания
    "sample_matching": 60,                                            // минимальный процент совпадения фото с образцом
    "fields": {                                                       // json-объект, хранящий значения настраиваемых полей в формате:
        "Dop_pole_dlya_testov": {                                     // {"транслит русского названия поля": {
            "field_id": 19,                                           //    "field_id": <ID>,
            "value": 12345                                            //    "value": <значение>
        }                                                             // }}
    },                                                                
    "parent": {                                                       // родительское задание
        "id": 2,                                                      
        "title": "Ямы",                                               
        "organization_id": 3,                                         
        "organization_name": "Контроль дорог",                        
        "organization_logo": null,                                    
        "stage": 1,                                                   
        "type_id": 1,                                                 
        "type_name": "Аварии",                                        
        "type_icon": "2.png",                                         
        "priority_id": 1,                                             
        "priority_name": "Плановые",                                  
        "status_id": 2,                                               
        "status_no": 2,                                               // номер этапа
        "status_name": "назначено",                                   
        "assigned_user_id": 95,                                       
        "assigned_user_fio": "Петров Иван",                           
        "assigned_organization_id": 101,                              
        "assigned_organization_name": "Ремонт дорог",                 
        "date": 1542949580                                            
    },                                                                
    "attachments": [                                                  // прикрепленные файлы
        {                                                             
            "id": 54666,                                              // id файла
            ...                                                       // следующие элементы
        }                                                             
    ],                                                                
}                                                                     

DELETE /rest/tasks/:id

Удаление задания.

Права пользователей на выполнение этого запроса зависят от capability роли пользователя. Понятие capability обозначает действие, которое можно выполнять с заданием. Для того, чтобы пользователь мог удалить задание, его роль должна иметь capability со свойствами: capability_id = 2, capability_name = "delete".

GET /rest/tasks/:id/can/*capabilities

Проверка прав пользователя на задание: имеет ли пользователь право выполнять указанные действия (capabilities) с заданием. Действия (capabilities) перечисляются через запятую в строке запроса.

/tasks/123/can/show,delete

http 200

// 2.0+
{                   
    "show": true,   // действие, доступно или нет
    "delete": true  // действие, доступно или нет
}                   

POST /rest/tasks/:id/rating

Клиент-создатель задания.

Права пользователей на выполнение этого запроса зависят от capability роли пользователя.

Понятие capability обозначает действие, которое можно выполнять с заданием. Для того, чтобы выполнить это действие, его роль должна иметь capability со свойствами: capability_id = 1, capability_name = "show".

Поставить оценку указанному заданию. Оценку можно поставить, только если это ещё не было сделано, либо если она была удалена. Запрос разрешается выполнять только пользователю с ролью Клиент, который создал задание. Оценка является целым числом и обязательно должна быть передана. Комментарий является необязательным. В базу будет записано время проставления оценки и пользователь, который её проставил.

// 2.0+
{                             
    "rating": 5,              // * Оценка, целое число от 1 до 5
    "comment": "Все отлично"  
}                             

http 200

// 2.0+
{                              
    "rating": 5,               // Оценка, Int от 1 до 5
    "comment": "Все отлично",  
    "author": {                // пользователь, который поставил оценку
        "id": 6,               
        "fio": "Иванов Петр"   
    }                          
}                              

http 400

// 2.0+
{                                                      
    "error_description": "rating: Обязательное поле."  
}                                                      

http 403

// 2.0+
{                                            
    "error_description": "Нет прав доступа"  
}                                            

http 403

// 2.0+
{                                                       
    "error_description": "Оценка уже была поставлена."  
}                                                       

GET /rest/tasks/:id/rating

Клиент-создатель задания, главный администратор, главный инспектор, администратор организации, инспектор организации.

Права пользователей на выполнение этого запроса зависят от capability роли пользователя.

Понятие capability обозначает действие, которое можно выполнять с заданием. Для того, чтобы выполнить это действие, его роль должна иметь capability со свойствами: capability_id = 1, capability_name = "show".

Получить оценку, поставленную заданию.

http 200

// 2.0+
{                              
    "rating": 5,               // Оценка, Int от 1 до 5
    "comment": "Все отлично",  
    "author": {                // пользователь, который поставил оценку
        "id": 6,               
        "fio": "Иванов Петр"   
    }                          
}                              

http 403

// 2.0+
{                                            
    "error_description": "Нет прав доступа"  
}                                            

http 404

// 2.0+
{                                                 
    "error_description": "Оценки не существует."  
}                                                 

PATCH /rest/tasks/:id/rating

Клиент-создатель задания.

Права пользователей на выполнение этого запроса зависят от capability роли пользователя.

Понятие capability обозначает действие, которое можно выполнять с заданием. Для того, чтобы выполнить это действие, его роль должна иметь capability со свойствами: capability_id = 1, capability_name = "show".

Проставить оценку указанному заданию. Разрешается выполнять только пользователю с ролью Клиент, который создал задание. К этому моменту оценка уже должна быть поставлена. Поля оценки и комментария в этом запросе необязательные, можно не присылать одно из них. Попытка не прислать оба поля не вызывает изменений в БД, пользователю отдаётся код 200. Попытка прислать null в качестве оценки вызывает 400 BadRequest.

// 2.0+
{                 
    "rating": 4,  // Оценка, целое число от 1 до 5
}                 
// 2.0+
{                                      
    "comment": "Не уложились в срок",  
}                                      
// 2.0+
{                    
    "rating": null,  // 400 Bad Request
}                    
// 2.0+
{  // Не вызывает изменений в БД
}  

http 200

// 2.0+
{                              
    "rating": 5,               // Оценка, Int от 1 до 5
    "comment": "Все отлично",  
    "author": {                // пользователь, который поставил оценку
        "id": 6,               
        "fio": "Иванов Петр"   
    }                          
}                              

http 200

// 2.0+
{                                      
    "rating": 4,                       // Оценка, Int от 1 до 5
    "comment": "Не уложились в срок",  
    "author": {                        // пользователь, который поставил оценку
        "id": 6,                       
        "fio": "Иванов Петр"           
    }                                  
}                                      

http 400

// 2.0+
{                                                      
    "error_description": "rating: Обязательное поле."  
}                                                      

http 403

// 2.0+
{                                            
    "error_description": "Нет прав доступа"  
}                                            

http 404

// 2.0+
{                                                       
    "error_description": "Такой оценки не существует!"  
}                                                       

DELETE /rest/tasks/:id/rating

Клиент-создатель задания.

Права пользователей на выполнение этого запроса зависят от capability роли пользователя.

Понятие capability обозначает действие, которое можно выполнять с заданием. Для того, чтобы выполнить это действие, его роль должна иметь capability со свойствами: capability_id = 1, capability_name = "show".

Удалить оценку, поставленную заданию.

http 403

// 2.0+
{                                            
    "error_description": "Нет прав доступа"  
}                                            

http 404

// 2.0+
{                                                       
    "error_description": "Такой оценки не существует!"  
}                                                       

GET /rest/tasks/:id/comments/list

Получение списка комментариев к заданию.

Параметры фильтрации

http 200

// 2.0+
{                                                                                  
    "items": [                                                                     
        {                                                                          
            "id": 50029,                                                           // id комментария
            "uuid": "1454bd95-3653-4499-ab39-9733af031312",                        
            "date": 1533289354,                                                    // дата создания комментария
            "date_local": "20.06.2024 15:40",                                      // локальная дата создания комментария
            "update_text": "Заданию назначили организацию: \"Отдел разработки\"",  //текст обновления (для комментария об обновлении задания)
            "comment": "",                                                         // текст комментария
            "type": 2,                                                             // тип комментария: 1 - обычный, 2 - системный
            "diff": {                                                              // информация по внесенным в задание изменениям
                "id": 39983,                                                       // id изменения
                "old_stage": null,                                                 // значение стадии до изменения (если это значение было изменено, иначе null)
                "new_stage": null,                                                 // значение стадии после изменения (если это значение было изменено, иначе null)
                "old_status": {                                                    // значение этапа до изменения (если это значение было изменено, иначе null)
                    "id": 1,                                                       // id этапа
                    "name": "новое"                                                // название этапа
                },                                                                 
                "new_status": {                                                    // значение этапа до изменения (если это значение было изменено, иначе null)
                    "id": 2,                                                       // id этапа
                    "name": "назначено"                                            // название этапа
                },                                                                 
                "old_assigned_organization": null,                                 // значение assigned_organization до изменения (если это значение было изменено, иначе null)
                "new_assigned_organization": {                                     // значение assigned_organization после изменения (если это значение было изменено, иначе null)
                    "id": 188,                                                     // id организации
                    "name": "Отдел разработки"                                     // название организации
                },                                                                 
                "old_assigned_user": null,                                         // значение assigned_user до изменения (если это значение было изменено, иначе null)
                "new_assigned_user": {                                             // значение assigned_user после изменения (если это значение было изменено, иначе null)
                    "id": 719,                                                     // id пользователя
                    "fio": "Игорь Зиновьев"                                        // имя пользователя
                },                                                                 
                "files_added": [],                                                 // список добавленных после изменения файлов
                "files_deleted": [],                                               // список удаленных после изменения файлов
                "user_id": 6,                                                      // id пользователя, который сделал изменение
                "task_id": 60529                                                   //id задания
            },                                                                     
            "parent": null,                                                        // родительский комментарий
            "fio": "Администратор",                                                //ФИО пользователя, который сделал изменение
            "user_id": 6,                                                          // id пользователя, который сделал изменение
            "task_id": 60529,                                                      //id задания
            "chat_message_number": 99,                                             // номер сообщения в чате задания
            "chat_id": 123,                                                        // системный номер канала сообщений
            "system_message_code": null                                            // код системного сообщения
        },                                                                         
        {                                                                          
            "id": 50028,                                                           //id комментария
            "uuid": "b95268a0-41d8-4c91-b758-aa822782c181",                        
            "date": 1533289321,                                                    //дата создания комментария
            "date_local": "20.06.2024 15:40",                                      // локальная дата создания комментария
            "update_text": "Вид работы изменен с \"Ямы\" на \"Аварии\"",           //текст обновления (для комментария об обновлении задания)
            "comment": "",                                                         // текст комментария
            "type": 2,                                                             // тип комментария: 1 - обычный, 2 - системный
            "diff": null,                                                          // информация по внесенным в задание изменениям
            "parent": null,                                                        // родительский комментарий
            "fio": "Администратор",                                                // ФИО пользователя, который сделал изменение
            "user_id": 6,                                                          // id пользователя, который сделал изменение
            "task_id": 60529,                                                      // id задания
            "chat_message_number": 100,                                            // номер сообщения в чате задания
            "chat_id": 123,                                                        // системный номер канала сообщений
            "system_message_code": null                                            // код системного сообщения
        },                                                                         
        {                                                                          
            "id": 50026,                                                           // id комментария
            "uuid": "df11d7d7-1e36-4e2a-8343-dbd5b7e94058",                        
            "date": 1533215336,                                                    // дата создания комментария
            "date_local": "20.06.2024 15:40",                                      // локальная дата создания комментария
            "update_text": "Были добавлены новые файлы. Файлы были изменены.",     //текст обновления (для комментария об обновлении задания)
            "comment": "",                                                         // текст комментария
            "type": 2,                                                             // тип комментария: 1 - обычный, 2 - системный
            "diff": {                                                              // информация по внесенным в задание изменениям
                "id": 39981,                                                       // id изменения
                "old_stage": null,                                                 // значение стадии до изменения (если это значение было изменено, иначе null)
                "new_stage": null,                                                 // значение стадии после изменения (если это значение было изменено, иначе null)
                "old_assigned_status": null,                                       // значение этапа до изменения (если это значение было изменено, иначе null)
                "new_assigned_status": null,                                       // значение этапа после изменения (если это значение было изменено, иначе null)
                "old_assigned_organization": null,                                 // значение assigned_organization до изменения (если это значение было изменено, иначе null)
                "new_assigned_organization": null,                                 // значение assigned_organization после изменения (если это значение было изменено, иначе null)
                "old_assigned_user": null,                                         // значение assigned_user до изменения (если это значение было изменено, иначе null)
                "new_assigned_user": null,                                         // значение assigned_user после изменения (если это значение было изменено, иначе null)
                "files_added": [                                                   
                    {                                                              // список добавленных после изменения файлов
                        "id": 54665,                                               // id файла
                        "num": 24,                                                 // порядковый номер файла
                        "sample_matching": 60,                                     // процент совпадения фото с образцом
                        "name": "Fox.jpg",                                         // исходное названи файла
                        "description": "New photo",                                // описание файла
                        "extension": "jpg",                                        // расширение файла
                        "file_name": "8ce1c640-e2c6-1004-8171-1dcd61b183b4.jpg",   //название файла на сервере
                        "link": null,                                              // ссылка, если видео файл, если он находится не на сервере, или null
                        "sticker": null,                                           // информация для стикера, прикрепленного к файлу
                        "create_date": 1533215334,                                 
                        "deleted": false,                                          // был файл удален или нет
                        "file_source": "device_camera",                            // источник файла
                        "attached_to_field": false,                                // файл прикреплен к файловому настраиваемому полю
                        "size": 1288395,                                           // размер файла в байтах
                        "attachment": {                                            // информация по времени и месту прикрепления файла
                            "time": 1533111159,                                    // время прикрепления файла
                            "time_provider": "system",                             // источник времени прикрепления файла
                            "location": {                                          // информация по месту прикрепления файла
                                "location": [                                      
                                    55.56,                                         
                                    46.67                                          
                                ],                                                 // координаты места прикреплени файла
                                "provider": "gps",                                 // источник координат места прикрепления файла
                                "accuracy": 12.5,                                  // точность координат места прикрепления файла
                                "distance_to_task": 25.85713665489607,             // расстояние от точки задания до места прикрепления файла (в метрах)
                            }                                                      
                        },                                                         
                        "origin": {                                                // информация по времени и месту создания файла
                            "time": 1533113954,                                    // время создания файла
                            "time_provider": "ntp",                                // источник времени создания файла
                            "location": {                                          // информация по месту создания файла
                                "location": [                                      
                                    55.45,                                         
                                    46.89                                          
                                ],                                                 // координаты места создания файла
                                "provider": "gps",                                 // источник координат места создания файла
                                "accuracy": 10,                                    // точность координат места создания файла
                                "distance_to_task": 115.121211221212,              // расстояние от точки задания до места создания файла (в метрах)
                            }                                                      
                        },                                                         
                        "author": {                                                // информация о приложении и платформе
                            "platform": "android",                                 // платформа
                            "platform_version": "4.2",                             // версия платформы
                            "application": "MapMobile",                            // приложение
                            "application_version": "8.5"                           // версия приложения
                        },                                                         
                        "type": "PHOTO",                                           // тип файла
                        "semantics": "SIGNATURE",                                  // семантика
                        "task_id": 60529                                           // id задания
                    }                                                              
                ],                                                                 
                "files_deleted": [],                                               // список удаленных после изменения файлов
                "user_id": 6,                                                      // id пользователя, который сделал изменение
                "task_id": 60529                                                   // id задания
            },                                                                     
            "parent": null,                                                        // родительский комментарий
            "fio": "Администратор",                                                // ФИО пользователя, который сделал изменение
            "user_id": 6,                                                          // id пользователя, который сделал изменение
            "task_id": 60529,                                                      // id задания
            "chat_message_number": 101,                                            // номер сообщения в чате задания
            "chat_id": 123,                                                        // системный номер канала сообщений
            "system_message_code": null                                            // код системного сообщения
        }                                                                          
    ]                                                                              
}                                                                                  

POST /rest/tasks/:id/comments

Добавление комментария к заданию.

// 2.0+
{                             
    "uuid": "Работы начаты",  // UUID4, необязательное поле
    "comment": "Комментарий"  // текст комментария
}                             

http 200

// 2.0+
{                                      
    "id": 9145,                        // id комментария
    "uuid": "cdnjskcnkjdancfk",        // UUID4, необязательное поле
    "parent": null,                    // родительский комментарий
    "date": 1542969580,                // дата создания комментария
    "date_local": "20.06.2024 15:40",  // локальная дата создания комментария
    "update_text": null,               // текст обновления (для комментария об обновлении задания)
    "comment": "Работы начаты",        // текст комментария
    "type": 1,                         // тип комментария: 1 - обычный, 2 - системный
    "fio": "Петров Иван",              // ФИО создателя комментария
    "user_id": 45,                     // id создателя комментария
    "task_id": 789237,                 // id задания
    "diff": null,                      // информация по внесенным в задание изменениям (для системных комментариев)
    "chat_message_number": 102,        // номер сообщения в чате задания
    "chat_id": 123,                    // системный номер канала сообщений
    "system_message_code": null        // код системного сообщения
}                                      

POST /rest/tasks/:id/comments/:referenceId

Добавление ответного комментария

Параметры запроса

// 2.0+
{                                                  
    "uuid": "vfjdnvkjlsdnfvkj"                     // UUID4, необязательное поле
    "comment": "Работы начали. Прибыли на объект"  // текст комментария
}                                                  

http 200

// 2.0+
{                                                   
    "id": 9146,                                     // id комментария
    "uuid": "cdnjskcnkjdancfk",                     // UUID4, необязательное поле
    "parent": {...},                                // родительский комментарий в том же формате,
                                                    // но без вложенного родительского
    "date": 1542969580,                             // дата создания комментария
    "date_local": "20.06.2024 15:40",               // локальная дата создания комментария
    "update_text": null,                            // текст обновления (для комментария об обновлении задания)
    "comment": "Работы начали. Прибыли на объект",  // текст комментария
    "type": 1,                                      // тип комментария: 1 - обычный, 2 - системный
    "fio": "Петров Иван",                           // ФИО создателя комментария
    "user_id": 45,                                  // id создателя комментария
    "task_id": 789237,                              // id задания
    "diff": null,                                   // информация по внесенным в задание изменениям (для системных комментариев)
    "chat_message_number": 103,                     // номер сообщения в чате задания
    "chat_id": 123,                                 // системный номер канала сообщений
    "system_message_code": null                     // код системного сообщения
}                                                   

PUT /rest/tasks/:id/stickers

Прикрепление стикеров к файлам задания. При прикреплении производится проверка доступности указанных стикеров виду работ. При проверке учитывается свойство стикеров is_for_all (доступно всем видам работ). Если хотя бы один из указанных стикеров не соответствуют виду работ, будет выдана ошибка 403. Если пара {file_id, sticker_id} не передана, полагаем, что к файлу никакой стикер не прикрепляется.

// 2.0+
{                             
    "files": [                
        {                     
            "file_id": 123,   
            "sticker_id": 12  
        },                    
        {                     
            "file_id": 124,   
            "sticker_id": 14  
        }                     
    ]                         
}                             

GET /rest/tasks/:id/photos/main/fit/w:width/h:height

Получение превью главной фотографии задания.

Фотография будет вписана в прямоугольник WxH так, что её стороны не будут выступать за границы прямоугольника.

Параметры запроса

/tasks/69704/photos/main/fit/w400/h300

GET /rest/tasks/:id/photos/:num/fit/w:width/h:height

Получение превью указанной фотографии задания.

Фотография будет вписана в прямоугольник WxH так, что её стороны не будут выступать за границы прямоугольника.

Параметры запроса

/tasks/69704/photos/3/fit/w400/h300

GET /rest/tasks/:id/photos/main/crop/w:width/h:height

Получение превью главной фотографии задания.

Фотография будет вписана в прямоугольник WxH так, что весь прямоугольник будет заполнен; при этом возможна обрезка фотографии по одной из сторон.

Параметры запроса

/tasks/69704/photos/main/crop/w400/h300

GET /rest/tasks/:id/photos/:num/crop/w:width/h:height

Получение превью указанной фотографии задания.

Фотография будет вписана в прямоугольник WxH так, что весь прямоугольник будет заполнен; при этом возможна обрезка фотографии по одной из сторон.

Параметры запроса

/tasks/69704/photos/3/crop/w400/h300

GET /rest/tasks/:id/photos/main

Получение главной фотографии задания.

GET /rest/tasks/:id/photos/:num

Получение указанной фотографии задания.

Параметры запроса

GET /rest/tasks/:id/sounds/:num

Получение указанной звукозаписи задания.

Параметры запроса

GET /rest/tasks/:id/videos/:num

Получение указанного видеофайла задания.

Параметры запроса

GET /rest/tasks/:id/files/:num

Получение указанного приложенного файла задания.

Параметры запроса

POST /rest/tasks/mapping/layer/:layerId/object/:objectId

Маппинг объекта в задание. В теле запроса можно проставить поля, которые будут использоваться для вычисления, маппинг каких полей доступен с учётом прав. В поле "user" проставится пользователь, выполняющий запрос.

Маппинг не будет производится в поля, которые недоступны:

// 2.0+
{                                   
    "organization_id": 4,           // организация-владелец
    "type_id": 1,                   // вид работ
    "assigned_organization_id": 7,  // организация-исполнитель
    "assigned_user_id": null        // исполнитель
}                                   

http 200

// 2.0+
{                                            
    "task": {                                
        "id": null,                          
        "no": null,                          
        "title": "Киндери-title",            // заголовок
        "text": "Киндери-desc",              // описание
        "fields": {                          // JSON-объект, состоящий из списка настраиваемых полей
            "test": {                        
                "field_id": 3,               
                "value": "1-field"           
            }                                
        },                                   
        "lat": 55.89687634,                  // координаты точки - lat
        "lon": 49.24621582,                  // координаты точки - lon
        "stage": 1,                          // стадия задания
        "archive": false,                    // архивное задание
        "is_template": false,                // шаблонное задание
        "deadline": null,                    
        "num_main_photo": null,              
        "system_data": null,                 
        "update_date": null,                 
        "expired_date": null,                
        "service_object_layer_id": null,     
        "service_object_layer_title": null,  
        "service_object_id": null,           
        "service_object_title": null,        
        "schedule_id": null,                 
        "added_photo_count": 0,              
        "sample_matching": null,             
        "parent": null,                      
        "unread_message_count": null,        
        "organization_logo": null,           
        "date": null,                        
        "attachments": [],                   
        "sys_org_id": 456,                   
        "sys_clr_id": null,                  
        "sys_user_id": null,                 
        "sys_role_id": null,                 
        "sys_org_ids": [                     
            2,                               
            3                                
        ],                                   
        "sys_clr_ids": null,                 
        "sys_user_ids": null,                
        "sys_role_ids": null                 
    }                                        
}                                            

POST /rest/tasks/:id/favorite

Добаление задания в список избранных заданий пользователя.

Права пользователей на выполнение данного запроса зависят от capability роли пользователя. Понятие capability обозначает действие, которое можно выполнять с заданием. Для того, чтобы пользователь мог добавить задание в список избранных, его роли должна быть доступна capability = show.

Если задание уже находится в списке избранных заданий пользователя, ошибку не получаем (INSERT в таблицу повторно не выполняется).

http 200

// 2.0+
{  
}  

DELETE /rest/tasks/:id/favorite

Удаление задания из списка избранных заданий пользователя.

Права пользователей на выполнение данного запроса зависят от capability роли пользователя. Понятие capability обозначает действие, которое можно выполнять с заданием. Для того, чтобы пользователь мог добавить задание в список избранных, его роли должна быть доступна capability = show.

Если задание не находится в списке избранных заданий пользователя, получаем ошибку 403.

http 200

// 2.0+
{  
}  

/rest/configuration

GET /rest/configuration/tree-nodes

Отдаёт метаинформацию обо всем дереве настроек.

Пользователь с привилегией Доступ к настройкам и уровнем доступа GLOBAL.

Настройки хранятся в базе в виде дерева, в котором одни из них вложены в другие. Промежуточные настройки являются "папками", а терминальные настройки (листья) - это, собственно, сами настройки, в которые ещё могут быть вложены их возможные значения, различные для разных пользователей и/или ролей, организаций, состояний заданий. Формат представления этих сущностей в JSON разный.

Каждая из настроек помимо id имеет поля name и label. Первое из них используется как имя настройки при вызове /props. Рекомендуется использовать в нём только латинские буквы, цифры, знаки - и _. Второе поле используется как имя настройки, отображаемое в интерфейсе.

Если в одну промежуточную настройку вложено несколько других с одинаковым именем name, то они собираются в массив. Порядковый номер настройки в массиве задаётся полем array_index.

Также настройки могут быть системными. Они хранят сведения, критически важные для работы приложения, а потому создаются только разработчиками при выпуске новых версий, и не могут быть изменены или удалены (это не касается их возможных значений).

Терминальная настройка имеет тип данных type и четыре поля для значения по умолчанию, из которых заполненным может быть только одно (какое именно - зависит от типа данных): default_bool_value, default_double_value, default_int_value, default_string_value.

Терминальная настройка может иметь любое количество возможных значений, в том числе нулевое. Все возможные значения одной настройки отсортированы по полю order_index и имеют правило доступа access_rule. Последнее определяет, какое именно возможное значение будет взято при вычислении настройки. Внутри access_rule могут находиться

Все эти поля необязательны.

При вычислении значения настройки сначала определяется список допустимых возможных значений в соответствии с описанием полей user, role, organization, state_rule выше (при их отсутствии возможное значение всегда допустимо).

Из допустимых возможных значений выбирается первое из них в порядке возрастания order_index. Из него в зависимости от типа настройки выбирается одно из полей bool_value, double_value, int_value string_value. Если допустимых значений нет, то берётся значение по умолчанию.

Промежуточная настройка

// 2.0+
{                                              
    "id": 1,                                   // * ID настройки
    "name": "intermediate_node",               // * название для выдачи в JSON в /configuration/props
    "label": "Некая промежуточная настройка",  // * имя настройки для отображения в интерфейсе
    "is_terminal": false,                      // * false для промежуточной настройки
    "is_system": true/false,                   // * признак системной настройки
    "array_index": 0,                          // * задаёт индекс в массиве, если настройка входит в массив
                                               //
    "children": [...]                          // Массив дочерних настроек.
                                               // Может содержать оба типа настроек - и промежуточные,
                                               // и терминальные.
}                                              

Терминальная настройка

// 2.0+
{                                             
    "id": 2,                                  // * ID настройки
    "name": "terminal_node",                  // * название для выдачи в JSON в /configuration/props
    "label": "Некая терминальная настройка",  // * имя настройки для отображения в интерфейсе
    "is_terminal": true,                      // * true для терминальной настройки
    "is_system": true/false,                  // * признак системной настройки
                                              //
    "type": "INTEGER",                        // * тип данных терминальной настройки, один из
                                              //   {BOOLEAN, INTEGER, DOUBLE, STRING}
                                              //
    "default_bool_value": null,               // значение по умолчанию будет
    "default_double_value": null,             // находиться в одном из четырёх полей
    "default_int_value": 1,                   //
    "default_string_value": null,             //
                                              //
    "possible_values": [...]                  // Массив возможных значений настройки
}                                             

Возможное значение настройки

// 2.0+
{                                                
    "id": 1,                                     // * ID возможного значения
    "order_index": 0,                            // * задаёт порядок этого возможного значения среди прочих
                                                 //
    "bool_value": null,                          // в зависимости от типа настройки, её значение
    "double_value": null,                        // будет содержаться в одном из этих полей
    "int_value": 2,                              //
    "string_value": null,                        //
                                                 //
    "access_rule": {                             // правило срабатывания
        "role": {                                // роль пользователя
            "id": 7,                             
            "name": "Пользователь ведомства"     
        },                                       
        "organization": {                        // организация пользователя
            "id": 188,                           
            "name": "Информационные технологии"  
        },                                       
        "user": {                                // пользователь
            "id": 1230,                          
            "fio": "Иванов Сергей Петрович"      
        },                                       
        "state_rule": {                          // состояния задания
            "states": [                          
                1,                               
                2,                               
                3                                
            ]                                    
        }                                        
    }                                            
}                                                

http 200

// 2.0+
{                          
    "rootProperty": {...}  // корневой узел - всегда промежуточный
}                          

PUT /rest/configuration/tree-nodes/:id

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

Пользователь с привилегией Доступ к настройкам и уровнем доступа GLOBAL.

Тело запроса должно содержать полное описание изменяемого узла, его потомков, потомков его потомков и так далее, даже если сами эти потомки не меняются.

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

Параметры

Промежуточная настройка

// 2.0+
{                          
    "id",                  // не изменяемо; для новых настроек не передаётся
    "name",                // * название; для системных настроек неизменяемо
    "label",               // * отображаемое имя; для системных настроек неизменяемо
    "is_terminal": false,  // * false для промежуточных настроек; неизменяемо
    "array_index": 0,      // * индекс в массиве
    "children": [...]      // дочерние настройки
}                          

Терминальная настройка

// 2.0+
{                             
    "id",                     // неизменяемо; для новых настроек не передаётся
    "name",                   // * название; для системных настроек неизменяемо
    "label",                  // * отображаемое имя; для системных настроек неизменяемо
    "is_terminal": true,      // * true для терминальных настроек; неизменяемо
    "type": "INTEGER",        // * тип; неизменяемо
    "possible_values": [...]  // возможные значения
}                             

Возможное значение настройки

// 2.0+
{                          
    "id",                  // неизменяемо; для новых настроек не передаётся
    "order_index",         // * порядок в списке возможных значений
    "bool_value",          // поля для хранения значения; должно быть заполнено
    "double_value",        // только одно в зависимости от типа настройки
    "int_value",           
    "string_value",        
    "access_rule": {       // правило доступности возможного значения
        "role": {          // для роли
            "id": 7        
        },                 
        "user": {          // для пользователя
            "id": 1230     
        },                 
        "organization": {  // для организации
            "id": 188      
        },                 
        "state_rule": {    // в состояниях
            "states": [    
                1,         
                2,         
                3          
            ]              
        }                  
    }                      
}                          

http 200

// 2.0+
{                      
    "property": {...}  // изменённый узел
}                      

GET /rest/configuration/props

Отдаёт все настройки и их значения, рассчитанные для текущего пользователя.

http 200

// 2.0+
{  // Содержатся все настройки в виде JSON-объекта
   // с названиями полей, соответствующими "name" настроек.
   // Значения настроек уже рассчитаны в соответствии
   // с заведёнными для них правилами и с учетом
   // переданного токена (или его отсутствия).
}  

GET /rest/configuration/java-options

Получение информации о настройках конфигурации.

http 200

// 2.0+
{                                           
    "-Dfiles.localStorage": "c:/work/tmp",  // локальное хранилище для загружаемых файлов
                                            // (значение параметра берется из "VM Options")
    "filesLocalStorage": "c:/work/tmp",     // локальное хранилище для загружаемых файлов
                                            // (если значение параметра не прописано в "VM Options",
                                            // тогда оно берется из конфигурационного файла application.conf)
    "taskSeparateNumeration": false,        // раздельная нумерация заданий в разных кластерах
    "gisEditorDefaultAccess": false,        // интеграция с ГИС редактором
    "issueZoneTrackingOn": false            // включать отслеживание местоположения исполнителя
                                            // по умолчанию для всех заданий
}                                           

PUT /rest/configuration/locale/*code

Главный администратор.

Изменить локаль сервера.

GET /rest/configuration/system/ldap

Получить значения настроек аутентификаци через LDAP.

http 200

// 2.0+
{                                    
    "host": "ldap.example.com",      // хост
    "port": 389,                     // порт
    "global_port": 3268,             // порт для поиска в глобальном каталоге
    "use_ssl": false,                // использовать SSL
    "admin_login": "login",          // логин администратора
    "admin_password": "password",    // пароль администратора
    "attributes": {                  // основные атрибуты Active Directory
        "phone": "telephoneNumber",  // телефон
        "name": "displayName",       // фио
        "login": "sAMAccountName",   // логин
        "email": "mail"              // email
    },                               
    "automatic_user_creation": {     // автоматическое создание пользователей
        "role_id": 7,                // идентификатор роли пользователя
        "organization_id": 7,        // идентификатор организации пользователя
        "enabled": false             // включено
    }                                
}                                    

PUT /rest/configuration/system/ldap

Изменить значения настроек аутентификаци через LDAP.

Пользователь с привилегией Доступ к настройкам и уровнем доступа GLOBAL. Для создания/редактирования/удаления значения необходимы соответствующие привилегии - Создать значение, Редактировать значение, Удалить значение.

Входные данные

// 2.0+
{                                    
    "host": "ldap.example.com",      // хост
    "port": 389,                     // порт
    "global_port": 3268,             // порт для поиска в глобальном каталоге
    "use_ssl": false,                // использовать SSL
    "admin_login": "login",          // логин администратора
    "admin_password": "password",    // пароль администратора
    "attributes": {                  // основные атрибуты Active Directory
        "phone": "telephoneNumber",  // телефон
        "name": "displayName",       // фио
        "login": "sAMAccountName",   // логин
        "email": "mail"              // email
    },                               
    "automatic_user_creation": {     // автоматическое создание пользователей
        "role_id": 7,                // идентификатор роли пользователя
        "organization_id": 7,        // идентификатор организации пользователя
        "enabled": false             // включено
    }                                
}                                    

http 200

// 2.0+
{                                    
    "host": "ldap.example.com",      // хост
    "port": 389,                     // порт
    "global_port": 3268,             // порт для поиска в глобальном каталоге
    "use_ssl": false,                // использовать SSL
    "admin_login": "login",          // логин администратора
    "admin_password": "password",    // пароль администратора
    "attributes": {                  // основные атрибуты Active Directory
        "phone": "telephoneNumber",  // телефон
        "name": "displayName",       // фио
        "login": "sAMAccountName",   // логин
        "email": "mail"              // email
    },                               
    "automatic_user_creation": {     // автоматическое создание пользователей
        "role_id": 7,                // идентификатор роли пользователя
        "organization_id": 7,        // идентификатор организации пользователя
        "enabled": false             // включено
    }                                
}                                    

GET /rest/configuration/system/smtp

Получить значения настроек SMTP.

http 200

// 2.0+
{                                                   
    "login": "...@yandex.ru",                       // логин
    "from": "ActiveMap Messenger <...@yandex.ru>",  // адрес электронной почты, который видят получатели
    "password": "...",                              // пароль
    "host": "smtp.yandex.ru",                       // SMTP-сервер
    "port": 587,                                    // порт
    "use_tls": true,                                // использовать TLS
    "use_ssl": false                                // использовать SSL
}                                                   

PUT /rest/configuration/system/smtp

Изменить значения настроек SMTP.

Пользователь с привилегией Доступ к настройкам и уровнем доступа GLOBAL. Для создания/редактирования/удаления значения необходимы соответствующие привилегии - Создать значение, Редактировать значение, Удалить значение.

Входные данные

// 2.0+
{                                                   
    "login": "...@yandex.ru",                       // логин
    "from": "ActiveMap Messenger <...@yandex.ru>",  // адрес электронной почты, который видят получатели
    "password": "...",                              // пароль
    "host": "smtp.yandex.ru",                       // SMTP-сервер
    "port": 587,                                    // порт
    "use_tls": true,                                // использовать TLS
    "use_ssl": false                                // использовать SSL
}                                                   

http 200

// 2.0+
{                                                   
    "login": "...@yandex.ru",                       // логин
    "from": "ActiveMap Messenger <...@yandex.ru>",  // адрес электронной почты, который видят получатели
    "password": "...",                              // пароль
    "host": "smtp.yandex.ru",                       // SMTP-сервер
    "port": 587,                                    // порт
    "use_tls": true,                                // использовать TLS
    "use_ssl": false                                // использовать SSL
}                                                   

GET /rest/configuration/permissions-and-visibility/password-restore

Получить значения настроек восстановления пароля.

http 200

// 2.0+
{                                                    
    "on": false,                                     // включено
    "max_attempts": 10,                              // максимальное количество попыток ввода кода
    "interval": 60,                                  // интервал между попытками получения кода
    "code_validity_period": 600,                     // период валидности кода
    "mail_template": "Код: {0}",                     // шаблон письма с кодом
    "mail_subject": "Код для восстановления пароля"  // тема письма с кодом
}                                                    

PUT /rest/configuration/permissions-and-visibility/password-restore

Изменить значения настроек восстановления пароля.

Пользователь с привилегией Доступ к настройкам и уровнем доступа GLOBAL. Для создания/редактирования/удаления значения необходимы соответствующие привилегии - Создать значение, Редактировать значение, Удалить значение.

Входные данные

// 2.0+
{                                                    
    "on": false,                                     // включено
    "max_attempts": 10,                              // максимальное количество попыток ввода кода
    "interval": 60,                                  // интервал между попытками получения кода
    "code_validity_period": 600,                     // период валидности кода
    "mail_template": "Код: {0}",                     // шаблон письма с кодом
    "mail_subject": "Код для восстановления пароля"  // тема письма с кодом
}                                                    

http 200

// 2.0+
{                                                    
    "on": false,                                     // включено
    "max_attempts": 10,                              // максимальное количество попыток ввода кода
    "interval": 60,                                  // интервал между попытками получения кода
    "code_validity_period": 600,                     // период валидности кода
    "mail_template": "Код: {0}",                     // шаблон письма с кодом
    "mail_subject": "Код для восстановления пароля"  // тема письма с кодом
}                                                    

GET /rest/configuration/permissions-and-visibility/2fa

Получить значения настроек двухфакторной аутентификации.

http 200

// 2.0+
{                                             
    "interval": 60,                           // интервал между попытками получения кода
    "code_validity_period": 600,              // период валидности кода
    "max_attempts": 10,                       // максимальное количество попыток ввода кода
    "template": "Код: {0}",                   // шаблон письма с кодом
    "title": "Код для восстановления пароля"  // тема письма с кодом
}                                             

PUT /rest/configuration/permissions-and-visibility/2fa

Изменить значения настроек двухфакторной аутентификации.

Пользователь с привилегией Доступ к настройкам и уровнем доступа GLOBAL. Для создания/редактирования/удаления значения необходимы соответствующие привилегии - Создать значение, Редактировать значение, Удалить значение.

Входные данные

// 2.0+
{                                             
    "interval": 60,                           // интервал между попытками получения кода
    "code_validity_period": 600,              // период валидности кода
    "max_attempts": 10,                       // максимальное количество попыток ввода кода
    "template": "Код: {0}",                   // шаблон письма с кодом
    "title": "Код для восстановления пароля"  // тема письма с кодом
}                                             

http 200

// 2.0+
{                                             
    "interval": 60,                           // интервал между попытками получения кода
    "code_validity_period": 600,              // период валидности кода
    "max_attempts": 10,                       // максимальное количество попыток ввода кода
    "template": "Код: {0}",                   // шаблон письма с кодом
    "title": "Код для восстановления пароля"  // тема письма с кодом
}                                             

/rest/clusters

GET /rest/clusters/list

Список кластеров, доступных текущему пользователю.

Пользователю с уровнем доступа GLOBAL доступны все неудаленные кластеры. Остальным пользователям доступны только свои кластеры.

Сортировка осуществляется по полю title.

Параметры

http 200

// 2.0+
{                                                        
    "items": [                                           // список доступных кластеров
        {                                                
            "id": 2,                                     // id кластера
            "title": "Организации Вахитовского района",  // название кластера
            "defaults": false,                           // отметка: является ли данный кластер кластером по умолчанию
            "isolated": false,                           // отметка: является ли кластер изолированным
            "disk_usage": 1430494,                       // суммарный размер файлов в байтах
            "time_zone": "Europe/Moscow",                // таймзона кластера
            "creation_date": 1585045830,                 // дата создания кластера
            "created_by": {                              // информация о пользователе, который создал кластер
                "id": 6,                                 // id пользователя
                "fio": "Администратор"                   // ФИО пользователя
            }                                            
        },                                               
        ...                                              // следующие элементы списка
    ],                                                   
}                                                        

GET /rest/clusters/:id

Получение информации по кластеру (если данный кластер доступен текущему пользователю).

Пользователь с уровнем доступа GLOBAL видит любой кластер. Пользователь с уровнем доступа ниже GLOBAL видит только свои кластеры.

http 200

// 2.0+
  {                                            
    "id": 10,                                  // id кластера
    "title": "Организации Кировского района",  // название кластера
    "defaults": false,                         // отметка: является ли данный кластер кластером по умолчанию
    "isolated": false,                         // отметка: является ли кластер изолированным
    "disk_usage": 1430494,                     // суммарный размер файлов в байтах
    "time_zone": "Europe/Moscow",              // таймзона кластера
    "creation_date": 1585045830,               // дата создания кластера
    "created_by": {                            // информация о пользователе, который создал кластер
        "id": 6,                               // id пользователя
        "fio": "Администратор"                 // ФИО пользователя
    }                                          
}                                              

POST /rest/clusters

Пользователь с привилегией Создать кластер и уровнем доступа GLOBAL.

Добавление нового кластера.

Параметры

// 2.0+
{                                             
    "title": "Организации Кировского района"  // * название кластера
    "isolated": false,                        // отметка: является ли кластер изолированным
                                              // по умолчанию - false
    "time_zone": "Europe/Moscow"              // таймзона кластера, возможный формат - "UTC+3", "UTC+03:00" или "Europe/Moscow"
}                                             

http 200

// 2.0+
  {                                            
    "id": 10,                                  // id кластера
    "title": "Организации Кировского района",  // название кластера
    "defaults": false,                         // отметка: является ли данный кластер кластером по умолчанию
    "isolated": false,                         // отметка: является ли кластер изолированным
    "disk_usage": 0,                           // суммарный размер файлов в байтах
    "time_zone": "Europe/Moscow",              // таймзона кластера
    "creation_date": 1585045830,               // дата создания кластера
    "created_by": {                            // информация о пользователе, который создал кластер
        "id": 6,                               // id пользователя
        "fio": "Администратор"                 // ФИО пользователя
    }                                          
}                                              

PATCH /rest/clusters/:id

Пользователь с привилегией Редактировать кластер и уровнем доступа не ниже CLUSTER.

Пользователь с уровнем доступа CLUSTER может редактировать только свои кластеры.

Изменение информации о кластере.

Параметры

// 2.0+
{                                               
    "title": "Организации Приволжского района"  // * название кластера
}                                               

http 200

// 2.0+
  {                                              
    "id": 10,                                    // id кластера
    "title": "Организации Приволжского района",  // название кластера
    "defaults": false,                           // отметка: является ли данный кластер кластером по умолчанию
    "isolated": false,                           // отметка: является ли кластер изолированным
    "disk_usage": 1430494,                       // суммарный размер файлов в байтах
    "time_zone": "Europe/Moscow",                // таймзона кластера
    "creation_date": 1585045830,                 // дата создания кластера
    "created_by": {                              // информация о пользователе, который создал кластер
        "id": 6,                                 // id пользователя
        "fio": "Администратор"                   // ФИО пользователя
    }                                            
}                                                

DELETE /rest/clusters/:id

Пользователь с привилегией Удалить кластер и уровнем доступа GLOBAL.

Удаление кластера.

При попытке удаления кластера "По умолчанию" или кластера, в котором есть организации, получим ошибку (400 BadRequest).

Параметры

GET /rest/clusters/:id/tariffs/statistics

Главный администратор.

Запрос возвращает информацию о количестве пользователей и заданий, созданных за расчетный период тарифа

http 200

// 2.0+
{                                 
    "task_count": 43,             // количество заданий, созданных в кластере за расчетный период
    "user_count": 68,             // количество пользователей в кластере
    "used_memory": null,          // израсходованная память
    "tariff": {                   
        "id": 1,                  // id тарифа
        "limits": {               
            "task_count": 500,    // ограничение по количеству заданий
            "user_count": 600,    // ограничение по количеству пользователей
            "storage_space": 100  // ограничение на общее количество используемого дискового места, ГБ
        }                         
        "is_free": true           // метка: является ли тариф бесплатным
    },                            
    "begin": "08.12.2023",        // дата начала расчетного периода
    "end": "08.01.2024"           // дата, до которой действует тариф
}                                 

POST /rest/clusters/:id/upload/photos

Главный администратор, главный инспектор, пользователь кластера.

Загрузка фотографии в каталог фотографий.

http 200

// 2.0+
{             
    "id": 43  // id физического файла
}             

POST /rest/clusters/:id/upload/videos

Главный администратор, главный инспектор, пользователь кластера.

Загрузка видеофайла в каталог видеофайлов.

http 200

// 2.0+
{             
    "id": 43  // id физического файла
}             

POST /rest/clusters/:id/upload/sounds

Главный администратор, главный инспектор, пользователь кластера.

Загрузка аудиофайла в каталог аудиофайлов.

http 200

// 2.0+
{             
    "id": 43  // id физического файла
}             

POST /rest/clusters/:id/upload/files

Главный администратор, главный инспектор, пользователь кластера.

Загрузка файла в каталог прочих файлов.

http 200

// 2.0+
{             
    "id": 43  // id физического файла
}             

/rest/organizations

GET /rest/organizations/list/:limit/:offset

Получение списка организаций, где offset - номер первой выводимой в ответе организации, limit - количество выводимых в ответе организаций.

Будут отдаваться те организации, которые входят в зону видимости текущего пользователя.

Параметры limit, offset не обязательны.

Параметры

http 200

// 2.0+
{                                                             
    "items": [                                                
        {                                                     
            "id": 2,                                          // id организации
            "name": "Отдел Тестирования T",                   // название организации
            "logo": "logo_291.jpg",                           // название файла логотипа
                                                              //
            "map_extent": {                                   // положение карты
                "id": 2,                                      
                "name": "Республика Татарстан",               
                "extent": [                                   
                    47.1643057526207,                         
                    54.2202822940369,                         
                    54.3273954713906,                         
                    56.7105387481253                          
                ]                                             
            }                                                 //
            "client": false,                                  // признак клиентской организации
                                                              //
            "users_count": 37,                                // количество пользователей
            "gis_editor_default_access": false,               // интеграция с ГИС редактором
            "invite_url": "https://...",                      // url приглашения
            "info": {                                         // дополнительные поля
                "address": "Москва",                          // адрес организации
                "email": "test@test.org",                     // e-mail
                "phone": "1234567890",                        // телефон
                "fax": "123456",                              // факс
                "inn": 123456789012,                          // ИНН
                "kpp": 123456789,                             // КПП
                "bank": "234567890",                          // Банк
                "bank_account": "",                           // Расчётный счёт
                "bank_kpp": 123456789013,                     // ИНН банка
                "bank_bik": 345678901                         // БИК банка
                "account": 2012019292109,                     // Счет организации
                "full_name": "ООО Высокие технологии",        // Полное юридическое название
                "head_fio": "Никифоров Александр Петрович",   // ФИО руководителя
                "accountant_fio": "Никитина Ольга Ивановна",  // ФИО бухгалтера
                "max_users_count": 50                         // Максимально допустимое количество пользователей организации
            },                                                //
                                                              //
            "default_assigned_organization_id": 500           // организация-исполнитель по умолчанию
        },                                                    
        ...                                                   // следующие элементы списка организаций
    ]                                                         
}                                                             

GET /rest/organizations/public

Получение списка публичных (клиентских) организаций.

http 200

// 2.0+
{                                                
    "items": [                                   
        {                                        
            "id": 3,                             // id организации
            "name": "Власть народу",             // название организации
            "logo": "logo_162.jpg",              //
            "map_extent": {                      // положение карты
                "id": 2,                         
                "name": "Республика Татарстан",  
                "extent": [                      
                    47.1643057526207,            
                    54.2202822940369,            
                    54.3273954713906,            
                    56.7105387481253             
                ]                                
            }                                    
        },                                       
        ...                                      // следующие элементы списка организаций
    ]                                            
}                                                

POST /rest/organizations/icons

Загрузка файлов пиктограмм для организаций.

Для версий Cerbellum до 0.16 в запросе на загрузку пиктограмм необходимо:

Для версий Cerbellum от 0.16 и старше в запросе достаточно передать файл пиктограммы, дополнительно ничего указывать не нужно.

Пример загрузки пиктограммы через REST-клиент Advanced REST client

http 200

// 2.0+
{                                                       
    "name": "ebb453e8-db16-1004-8f9e-3e07628b8015.jpg"  // имя файла, преобразованное с помощью
                                                        // UUID-стандарта идентификации
}                                                       

GET /rest/organizations/:id

Получение данных по конкретной организации.

Для пользователей с уровнем видимости GLOBAL доступные все организации.

Для остальных пользователей доступ к организациям ограничивается их кластером.

http 200

// 2.0+
{                                                                          
    "id": 600,                                                             // ID
    "name": "Высокие технологии",                                          // название
    "logo": "logo_600.jpg",                                                // файл с логотип организации
                                                                           //
    "map_extent": {                                                        // положение карты
        "id": 2,                                                           
        "name": "Республика Татарстан",                                    
        "extent": [                                                        
            47.1643057526207,                                              
            54.2202822940369,                                              
            54.3273954713906,                                              
            56.7105387481253                                               
        ]                                                                  
    }                                                                      //
    "client": false,                                                       // признак клиентской организации
    "gis_editor_default_access": false,                                    // интеграция с ГИС редактором
    "invite_url": "https://...",                                           // url приглашения
    "info": {                                                              // дополнительные поля
        "address": "Москва",                                               // адрес организации
        "email": "test@test.org",                                          // e-mail
        "phone": "1234567890",                                             // телефон
        "fax": "123456",                                                   // факс
        "inn": 123456789012,                                               // ИНН
        "kpp": 123456789,                                                  // КПП
        "bank": "234567890",                                               // Банк
        "bank_account": "",                                                // Расчётный счёт
        "bank_kpp": 123456789013,                                          // ИНН банка
        "bank_bik": 345678901,                                             // БИК банка
        "account": "2012019292109",                                        // Банковский счет организации
        "about": "Организация Высокие технологии, на рынке более 20 лет",  // Об организации
        "full_name": "ООО Высокие технологии",                             // Полное юридическое название
        "head_fio": "Никифоров Александр Петрович",                        // ФИО руководителя
        "accountant_fio": "Никитина Ольга Ивановна",                       // ФИО бухгалтера
        "max_users_count": 50                                              // Максимально допустимое количество пользователей организации
    },                                                                     //
                                                                           //
    "default_assigned_organization_id": 500,                               // организация-исполнитель по умолчанию
    "message_channel_id": 65006                                            // идентификатор канала уведомлений
}                                                                          

POST /rest/organizations

Добавление новой организации.

Пользователь с привилегией Создать организацию и уровнем доступа не ниже CLUSTER.

Пользователь с уровнем доступа CLUSTER может создать организацию только внутри своего кластера.

Параметры

Входные данные

// 2.0+
{                                                                          
    "name": "Высокие технологии",                                          // * название организации
    "logo": "high_tech.jpg",                                               // файл с логотипом организации
    "map_extent_id": 268,                                                  // id положения карты
    "client": false,                                                       // признак клиентской организации; по умолчанию false
    "gis_editor_default_access": false,                                    // интеграция с ГИС редактором,
                                                                           // доступно только главному администратору
    "cluster_id": 2,                                                       // id кластера
                                                                           //
    "info": {                                                              // * дополнительные поля
        "address": "Москва",                                               // адрес организации
        "email": "test@test.org",                                          // e-mail
        "phone": "1234567890",                                             // телефон
        "fax": "123456",                                                   // факс
        "inn": 123456789012,                                               // ИНН
        "kpp": 123456789,                                                  // КПП
        "bank": "234567890",                                               // Банк
        "bank_account": "",                                                // Расчётный счёт
        "bank_kpp": 123456789013,                                          // ИНН банка
        "bank_bik": 345678901,                                             // БИК банка
        "account": "2012019292109",                                        // Счет организации
        "about": "Организация Высокие технологии, на рынке более 20 лет",  // Об организации
        "full_name": "ООО Высокие технологии",                             // Полное юридическое название
        "head_fio": "Никифоров Александр Петрович",                        // ФИО руководителя
        "accountant_fio": "Никитина Ольга Ивановна",                       // ФИО бухгалтера
        "stamp": "Печать.png",                                             // Имя файла с печатью организации, полученное после загрузки файла через метод POST /files/upload
        "head_signature": "Подпись_руководителя.png",                      // Имя файла с подписью руководителя организации, полученное после загрузки файла через метод POST /files/upload
        "accountant_signature": "Подпись_бухгалтера.png",                  // Имя файла с подписью бухгалтера организации, полученное после загрузки файла через метод POST /files/upload
        "max_users_count": 100                                             // Максимально допустимое количество пользователей организации
    },                                                                     //
                                                                           //
    "id": 600,                                                             // id при создании; не должно совпадать с существующими
                                                                           //
    "default_assigned_organization_id": 99                                 // организация-исполнитель по умолчанию
}                                                                          

http 200

// 2.0+
{                                                                          
    "id": 600,                                                             // ID
    "name": "Высокие технологии",                                          // название
    "logo": "logo_600.jpg",                                                // файл с логотип организации
    "cluster_id": 2,                                                       // id кластера
                                                                           //
    "map_extent": {                                                        // положение карты
        "id": 2,                                                           
        "name": "Республика Татарстан",                                    
        "extent": [                                                        
            47.1643057526207,                                              
            54.2202822940369,                                              
            54.3273954713906,                                              
            56.7105387481253                                               
        ]                                                                  
    }                                                                      //
    "client": false,                                                       // признак клиентской организации
    "gis_editor_default_access": false,                                    // интеграция с ГИС редактором
    "invite_url": null,                                                    // url приглашения
    "info": {                                                              // дополнительные поля
        "address": "Москва",                                               // адрес организации
        "email": "test@test.org",                                          // e-mail
        "phone": "1234567890",                                             // телефон
        "fax": "123456",                                                   // факс
        "inn": 123456789012,                                               // ИНН
        "kpp": 123456789,                                                  // КПП
        "bank": "234567890",                                               // Банк
        "bank_account": "",                                                // Расчётный счёт
        "bank_kpp": 123456789013,                                          // ИНН банка
        "bank_bik": 345678901,                                             // БИК банка
        "account": "2012019292109",                                        // Счет организации
        "about": "Организация Высокие технологии, на рынке более 20 лет",  // Об организации
        "full_name": "ООО Высокие технологии",                             // Полное юридическое название
        "head_fio": "Никифоров Александр Петрович",                        // ФИО руководителя
        "accountant_fio": "Никитина Ольга Ивановна",                       // ФИО бухгалтера
        "max_users_count": 100                                             // Максимально допустимое количество пользователей организации
    },                                                                     //
                                                                           //
    "default_assigned_organization_id": 99,                                // организация-исполнитель по умолчанию
    "message_channel_id": 65006                                            // идентификатор канала уведомлений
}                                                                          

PATCH /rest/organizations/:id

Изменение информации об организации.

Пользователь с привилегией Редактировать организацию и уровнем доступа не ниже ORGANIZATION.

Пользователь с уровнем доступа CLUSTER может редактировать организации внутри своих кластеров.

Пользователь с уровнем доступа ORGANIZATION может редактировать только свои организации.

Файл с логотипом к моменту запроса должен находиться в папке {FILES_ROOT}/department_logo

Параметры

Входные данные

// 2.0+
{                                                                          
    "name": "Высокие технологии",                                          // название организации
    "logo": "high_tech.jpg",                                               // файл с логотипом организации
    "map_extent_id": 268,                                                  // id положения карты
    "client": false,                                                       // признак клиентской организации
    "gis_editor_default_access": false,                                    // интеграция с ГИС редактором,
                                                                           // доступно только главному администратору
    "info": {                                                              // дополнительные поля
        "address": "Москва",                                               // адрес организации
        "email": "test@test.org",                                          // e-mail
        "phone": "1234567890",                                             // телефон
        "fax": "123456",                                                   // факс
        "inn": 123456789012,                                               // ИНН
        "kpp": 123456789,                                                  // КПП
        "bank": "234567890",                                               // Банк
        "bank_account": "",                                                // Расчётный счёт
        "bank_kpp": 123456789013,                                          // ИНН банка
        "bank_bik": 345678901,                                             // БИК банка
        "account": "2012019292109",                                        // Счет организации
        "about": "Организация Высокие технологии, на рынке более 20 лет",  // Об организации
        "full_name": "ООО Высокие технологии",                             // Полное юридическое название
        "head_fio": "Никифоров Александр Петрович",                        // ФИО руководителя
        "accountant_fio": "Никитина Ольга Ивановна",                       // ФИО бухгалтера
        "stamp": "Печать.png",                                             // Имя файла с печатью организации, полученное после
                                                                           // загрузки файла через метод POST /files/upload
        "head_signature": "Подпись_руководителя.png",                      // Имя файла с подписью руководителя организации, полученное после
                                                                           // загрузки файла через метод POST /files/upload
        "accountant_signature": "Подпись_бухгалтера.png",                  // Имя файла с подписью бухгалтера организации, полученное
                                                                           // после загрузки файла через метод POST /files/upload
        "max_users_count": 100                                             // Максимально допустимое количество пользователей организации
                                                                           // (не должно быть меньше текущего количества пользователей организации)
    },                                                                     
    "default_assigned_organization_id": 99                                 // организация-исполнитель по умолчанию
}                                                                          

http 200

// 2.0+
{                                                                          
    "id": 600                                                              // ID
    "name": "Высокие технологии",                                          // название организации
    "logo": "logo_600.jpg",                                                // файл с логотипом организации
                                                                           //
    "map_extent": {                                                        // положение карты
        "id": 2,                                                           
        "name": "Республика Татарстан",                                    
        "extent": [                                                        
            47.1643057526207,                                              
            54.2202822940369,                                              
            54.3273954713906,                                              
            56.7105387481253                                               
        ]                                                                  
    }                                                                      //
    "client": false,                                                       // признак клиентской организации
    "gis_editor_default_access": false,                                    // интеграция с ГИС редактором
    "invite_url": "https://...",                                           // url приглашения
    "info": {                                                              // дополнительные поля
        "address": "Москва",                                               // адрес организации
        "email": "test@test.org",                                          // e-mail
        "phone": "1234567890",                                             // телефон
        "fax": "123456",                                                   // факс
        "inn": 123456789012,                                               // ИНН
        "kpp": 123456789,                                                  // КПП
        "bank": "234567890",                                               // Банк
        "bank_account": "",                                                // Расчётный счёт
        "bank_kpp": 123456789013,                                          // ИНН банка
        "bank_bik": 345678901,                                             // БИК банка
        "account": "2012019292109",                                        // Счет организации
        "about": "Организация Высокие технологии, на рынке более 20 лет",  // Об организации
        "full_name": "ООО Высокие технологии",                             // Полное юридическое название
        "head_fio": "Никифоров Александр Петрович",                        // ФИО руководителя
        "accountant_fio": "Никитина Ольга Ивановна",                       // ФИО бухгалтера
        "stamp": "Печать.png",                                             // Имя файла с печатью организации, полученное после загрузки файла через метод POST /files/upload
        "head_signature": "Подпись_руководителя.png",                      // Имя файла с подписью руководителя организации, полученное после загрузки файла через метод POST /files/upload
        "accountant_signature": "Подпись_бухгалтера.png",                  // Имя файла с подписью бухгалтера организации, полученное после загрузки файла через метод POST /files/upload
        "max_users_count": 100                                             // Максимально допустимое количество пользователей организации
    },                                                                     //
                                                                           //
    "default_assigned_organization_id": 99,                                // организация-исполнитель по умолчанию
    "message_channel_id": 65006                                            // идентификатор канала уведомлений
}                                                                          

DELETE /rest/organizations/:id

Удаление организации.

Пользователь с привилегией Удалить организацию и уровнем доступа не ниже CLUSTER.

Пользователь с уровнем доступа CLUSTER может удалять организации внутри своего кластера.

При удалении организации происходит удаление пользователей, для которых эта организация - главная.

Параметры

POST /rest/organizations/:id/invite-url

Создать invite-URL.

Пользователь с привилегией Редактировать организацию и уровнем доступа не ниже ORGANIZATION.

Пользователь с уровнем доступа CLUSTER может создать invite-URL для организации своего кластера.

Пользователь с уровнем доступа ORGANIZATION может создать invite-URL для своей организации.

Параметры

http 200

// 2.0+
{                                                                          
    "id": 600                                                              // ID
    "name": "Высокие технологии",                                          // название организации
    "logo": "logo_600.jpg",                                                // файл с логотипом организации
                                                                           //
    "map_extent": {                                                        // положение карты
        "id": 2,                                                           
        "name": "Республика Татарстан",                                    
        "extent": [                                                        
            47.1643057526207,                                              
            54.2202822940369,                                              
            54.3273954713906,                                              
            56.7105387481253                                               
        ]                                                                  
    }                                                                      //
    "client": false,                                                       // признак клиентской организации
    "gis_editor_default_access": false,                                    // интеграция с ГИС редактором
    "invite_url": "https://...",                                           // url приглашения
    "info": {                                                              // дополнительные поля
        "address": "Москва",                                               // адрес организации
        "email": "test@test.org",                                          // e-mail
        "phone": "1234567890",                                             // телефон
        "fax": "123456",                                                   // факс
        "inn": 123456789012,                                               // ИНН
        "kpp": 123456789,                                                  // КПП
        "bank": "234567890",                                               // Банк
        "bank_account": "",                                                // Расчётный счёт
        "bank_kpp": 123456789013,                                          // ИНН банка
        "bank_bik": 345678901,                                             // БИК банка
        "account": "2012019292109",                                        // Счет организации
        "about": "Организация Высокие технологии, на рынке более 20 лет",  // Об организации
        "full_name": "ООО Высокие технологии",                             // Полное юридическое название
        "head_fio": "Никифоров Александр Петрович",                        // ФИО руководителя
        "accountant_fio": "Никитина Ольга Ивановна",                       // ФИО бухгалтера
        "max_users_count": 100                                             // Максимально допустимое количество пользователей организации
    },                                                                     //
                                                                           //
    "default_assigned_organization_id": 500,                               // организация-исполнитель по умолчанию
    "message_channel_id": 65006                                            // идентификатор канала уведомлений
}                                                                          

DELETE /rest/organizations/:id/invite-url

Удалить invite-URL.

Пользователь с привилегией Редактировать организацию и уровнем доступа не ниже ORGANIZATION.

Пользователь с уровнем доступа CLUSTER может удалить invite-URL из организации своего кластера.

Пользователь с уровнем доступа ORGANIZATION может удалить invite-URL из своей организации.

Параметры

http 200

// 2.0+
{                                                                          
    "id": 600                                                              // ID
    "name": "Высокие технологии",                                          // название организации
    "logo": "logo_600.jpg",                                                // файл с логотипом организации
                                                                           //
    "map_extent": {                                                        // положение карты
        "id": 2,                                                           
        "name": "Республика Татарстан",                                    
        "extent": [                                                        
            47.1643057526207,                                              
            54.2202822940369,                                              
            54.3273954713906,                                              
            56.7105387481253                                               
        ]                                                                  
    }                                                                      //
    "client": false,                                                       // признак клиентской организации
    "gis_editor_default_access": false,                                    // интеграция с ГИС редактором
    "invite_url": "https://...",                                           // url приглашения
    "info": {                                                              // дополнительные поля
        "address": "Москва",                                               // адрес организации
        "email": "test@test.org",                                          // e-mail
        "phone": "1234567890",                                             // телефон
        "fax": "123456",                                                   // факс
        "inn": 123456789012,                                               // ИНН
        "kpp": 123456789,                                                  // КПП
        "bank": "234567890",                                               // Банк
        "bank_account": "",                                                // Расчётный счёт
        "bank_kpp": 123456789013,                                          // ИНН банка
        "bank_bik": 345678901,                                             // БИК банка
        "account": "2012019292109",                                        // Счет организации
        "about": "Организация Высокие технологии, на рынке более 20 лет",  // Об организации
        "full_name": "ООО Высокие технологии",                             // Полное юридическое название
        "head_fio": "Никифоров Александр Петрович",                        // ФИО руководителя
        "accountant_fio": "Никитина Ольга Ивановна",                       // ФИО бухгалтера
        "max_users_count": 100                                             // Максимально допустимое количество пользователей организации
    },                                                                     //
                                                                           //
    "default_assigned_organization_id": 500,                               // организация-исполнитель по умолчанию
    "message_channel_id": 65006                                            // идентификатор канала уведомлений
}                                                                          

GET /rest/organizations/:id/users

Получение списка пользователей организации, где id - id организации.

Организация должна входить в зону видимости текущего пользователя, чтобы этот роут выполнился успешно без 403.

Будут отданы те пользователи внутри организации, которые входят в зону видимости.

Параметры запроса

http 200

// 2.0+
{                                                               
    "items": [                                                  
        {                                                       
            "id": 3011,                                         // id пользователя
            "login": "admin1439218241106",                      // логин пользователя
            "fio": "Иванов И.И.",                               // ФИО пользователя
            "type": {                                           // тип
                "id": 1,                                        // id типа
                "title": "Пользователи"                         // название
            },                                                  
            "authentication_type": 0,                           // тип аутентификации (0 - логин/пароль,
                                                                // 1 - LDAP)
            "active_till": 1712984116                           // срок действия учётной записи
            "last_authentication": 1605793362,                  // дата последней авторизации
            "blocked": false,                                   // признак заблокированного пользователя
            "avatar_update_date": 1605793362,                   // дата обновления аватара
            "gis_editor_access": true,                          // интеграция с ГИС редактором
            "invite": {                                         // последнее приглашение
                "id": 1051,                                     // id
                "key": "a3600ca4-ee35-1004-895f-b6c011bf8f3a",  // ключ
                "url": "https://active...",                     // url
                "creation_date": 1658304773,                    // дата создания
                "expires": 1658305090,                          // дата окончания действия
                "total": 5,                                     // максимальное количество попыток использования
                "attempts_left": 5                              // оставшееся количество попыток использования
            },                                                  
            "system": false,                                    // системный пользователь
            "tags": [                                           // метки пользователя
                {                                               
                    "id": 1                                     // id метки
                },                                              
                ...                                             // следующие элементы списка
            ],                                                  
            "organization_id": 2,                               // id основной организации, либо null, если пользователь
                                                                // не относится ни к какой организации
            "cluster": {                                        // кластер
                "id": 2184,                                     // id кластера
                "title": "Тестовый кластер"                     // название кластера
            },                                                  
            "organization_ids": [                               // массив id организаций пользователя
                2,                                              
                132,                                            
                232                                             
            ],                                                  
            "role_id": 10,                                      // id роли пользователя: 6, 7 - обычный пользователь,
                                                                // 10 - админ организации, 8 - администратор всех организаций
            "task_count": 17,                                   // начиная с 0.16.0: количество назначенных на
                                                                // пользователя заданий в статии "В работе"
            "message_channel_id": 99                            // канал входящих сообщений
        },                                                      
        ...                                                     // следующие элементы списка
                                                                // пользователей организации
    ]                                                           
}                                                               

GET /rest/organizations/:id/workgroups

Список проектов организации, доступных текущему пользователю.

Главному администратору и Главному инспектору доступны все проекты. Другим пользователям доступны:

Сортировка осуществляется по полю title.

Параметры

http 200

// 2.0+
{                                                                              
    "items": [                                                                 // список доступных проектов
        {                                                                      
            "id": 2,                                                           // id проекта
            "title": "Настольная система по работе с обращениями граждан",     // название проекта
            "open": true,                                                      // отметка: является ли данный проект открытым
            "defaults": false,                                                 // отметка: является ли данный проект проектом по умолчанию для организации
            "creation_date": 1590578653,                                       // дата создания проекта
            "created_by": {                                                    // информация о пользователе, который создал проект
                "id": 6,                                                       // id пользователя
                "fio": "Администратор"                                         // ФИО пользователя
            },                                                                 
            "organization": {                                                  // информация об организации, к которой относится проект
                "id": 189,                                                     // id организации
                "name": "Отдел разработки ПО"                                  // название организации
            },                                                                 
        },                                                                     
        {                                                                      
            "id": 3,                                                           
            "title": "Мобильное приложение для работы с обращениями граждан",  
            "open": false,                                                     
            "defaults": false,                                                 
            "creation_date": 1590578653,                                       
            "created_by": {                                                    
                "id": 6,                                                       
                "fio": "Администратор"                                         
            },                                                                 
            "organization": {                                                  
                "id": 189,                                                     
                "name": "Отдел разработки ПО"                                  
            }                                                                  
        },                                                                     
        {                                                                      
            "id": 1,                                                           
            "title": "По умолчанию",                                           
            "open": true,                                                      
            "defaults": true,                                                  
            "creation_date": 1590578653,                                       
            "created_by": {                                                    
                "id": 6,                                                       
                "fio": "Администратор"                                         
            },                                                                 
            "organization": {                                                  
                "id": 189,                                                     
                "name": "Отдел разработки ПО"                                  
            }                                                                  
        }                                                                      
    ],                                                                         
}                                                                              

POST /rest/organizations/:id/types/:typeId

Привязка вида работ к организации.

Пользователь с привилегией Редактировать организацию и уровнем доступа не ниже ORGANIZATION.

Пользователь с уровнем доступа CLUSTER может привязать вид работ только к организации своего кластера.

Пользователь с уровнем доступа ORGANIZATION может привязать вид работ только к своей организации.

Если связь уже существует, ошибку не получаем (INSERT в таблицу повторно не выполняется).

DELETE /rest/organizations/:id/types/:typeId

Удаление связи между видом работ и организацией.

Пользователь с привилегией Редактировать организацию и уровнем доступа не ниже ORGANIZATION.

Пользователь с уровнем доступа CLUSTER может удалить связь между видом работ и организацией своего кластера.

Пользователь с уровнем доступа ORGANIZATION может удалить связь между видом работ и своей организацией.

Если связи не существует, получаем ошибку 400.

GET /rest/organizations/:id/stamp

Получить изображение печати организации.

Для пользователей с уровнем видимости GLOBAL доступные все организации.

Для остальных пользователей доступ к организациям ограничивается их кластером.

GET /rest/organizations/:id/head-signature

Получить изображение подписи руководителя организации.

Для пользователей с уровнем видимости GLOBAL доступные все организации.

Для остальных пользователей доступ к организациям ограничивается их кластером.

GET /rest/organizations/:id/accountant-signature

Получить изображение подписи бухгалтера организации.

Для пользователей с уровнем видимости GLOBAL доступные все организации.

Для остальных пользователей доступ к организациям ограничивается их кластером.

/rest/workgroups

GET /rest/workgroups/list

Список проектов, видимых текущему пользователю.

Проект видим, если видима организация проекта.

Сортировка осуществляется по полю title.

Параметры

http 200

// 2.0+
{                                                                              
    "items": [                                                                 // список доступных проектов
        {                                                                      
            "id": 2,                                                           // id проекта
            "title": "Настольная система по работе с обращениями граждан",     // название проекта
            "open": true,                                                      // отметка: является ли данный проект открытым
            "defaults": false,                                                 // отметка: является ли данный проект проектом по умолчанию для организации
            "creation_date": 1590577589,                                       // дата создания проекта
            "created_by": {                                                    // информация о пользователе, который создал проект
                "id": 6,                                                       // id пользователя
                "fio": "Администратор"                                         // ФИО пользователя
            },                                                                 
            "organization": {                                                  // информация об организации, к которой относится проект
                "id": 189,                                                     // id организации
                "name": "Отдел разработки ПО"                                  // название организации
            },                                                                 
        },                                                                     
        {                                                                      
            "id": 3,                                                           
            "title": "Мобильное приложение для работы с обращениями граждан",  
            "open": false,                                                     
            "defaults": false,                                                 
            "creation_date": 1590577589,                                       
            "created_by": {                                                    
                "id": 6,                                                       
                "fio": "Администратор"                                         
            },                                                                 
            "organization": {                                                  
                "id": 188,                                                     
                "name": "Отдел технической поддержки"                          
            },                                                                 
        },                                                                     
        {                                                                      
            "id": 1,                                                           
            "title": "По умолчанию",                                           
            "open": true,                                                      
            "defaults": true,                                                  
            "creation_date": 1590577589,                                       
            "created_by": {                                                    
                "id": 6,                                                       
                "fio": "Администратор"                                         
            },                                                                 
            "organization": {                                                  
                "id": 188,                                                     
                "name": "Отдел системного администрирования"                   
            }                                                                  
        }                                                                      
    ]                                                                          
}                                                                              

GET /rest/workgroups/:id

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

Проект видим, если видима организация проекта.

http 200

// 2.0+
  {                                                                 
    "id": 10,                                                       // id проекта
    "title": "Настольная система по работе с обращениями граждан",  // название проекта
    "open": false,                                                  // отметка: является ли данный проект открытым
    "defaults": false,                                              // отметка: является ли данный проект проектом по умолчанию для организации
    "creation_date": 1590577589,                                    // дата создания проекта
    "created_by": {                                                 // информация о пользователе, который создал проект
        "id": 6,                                                    // id пользователя
        "fio": "Администратор"                                      // ФИО пользователя
    },                                                              
    "organization": {                                               // информация об организации, к которой относится проект
        "id": 189,                                                  // id организации
        "name": "Отдел разработки ПО"                               // название организации
    }                                                               
}                                                                   

POST /rest/workgroups

Добавление нового проекта.

Пользователь с уровнем доступа не ниже ORGANIZATION.

Пользователь с уровнем доступа CLUSTER может создать проект только внутри своего кластера.

Пользователь с уровнем доступа ORGANIZATION может создать проект только в своих организациях.

// 2.0+
{                                                                   
    "title": "Настольная система по работе с обращениями граждан",  // * название проекта
    "organization": {                                               
        "id": 189                                                   
    },                                                              // * id организации проекта
    "open": false                                                   // отметка: является ли данный проект открытым; значение по умолчанию - true
}                                                                   

http 200

// 2.0+
  {                                                                 
    "id": 10,                                                       // id проекта
    "title": "Настольная система по работе с обращениями граждан",  // название проекта
    "open": false,                                                  // отметка: является ли данный проект открытым
    "defaults": false,                                              // отметка: является ли данный проект проектом по умолчанию для организации
    "creation_date": 1590577589,                                    // дата создания проекта
    "created_by": {                                                 // информация о пользователе, который создал проект
        "id": 6,                                                    // id пользователя
        "fio": "Администратор"                                      // ФИО пользователя
    },                                                              
    "organization": {                                               // информация об организации, к которой относится проект
        "id": 189,                                                  // id организации
        "name": "Отдел разработки ПО"                               // название организации
    }                                                               
}                                                                   

PATCH /rest/workgroups/:id

Изменение информации о проекте.

Пользователь с уровнем доступа не ниже ORGANIZATION.

Пользователь с уровнем доступа CLUSTER может редактировать проект только внутри своего кластера.

Пользователь с уровнем доступа ORGANIZATION может редактировать проект только в своих организациях.

При попытке изменения проекта "По умолчанию" получим ошибку (400 BadRequest).

// 2.0+
{                                                               
    "title": "Настольная система по работе с жалобами граждан"  // * название проекта
}                                                               

http 200

// 2.0+
  {                                                              
    "id": 10,                                                    // id проекта
    "title": "Настольная система по работе с жалобами граждан",  // название проекта
    "open": false,                                               // отметка: является ли данный проект открытым
    "defaults": false,                                           // отметка: является ли данный проект проектом по умолчанию для организации
    "creation_date": 1590577589,                                 // дата создания проекта
    "created_by": {                                              // информация о пользователе, который создал проект
        "id": 6,                                                 // id пользователя
        "fio": "Администратор"                                   // ФИО пользователя
    },                                                           
    "organization": {                                            // информация об организации, к которой относится проект
        "id": 189,                                               // id организации
        "name": "Отдел разработки ПО"                            // название организации
    }                                                            
}                                                                

DELETE /rest/workgroups/:id

Удаление проекта.

Пользователь с уровнем доступа не ниже ORGANIZATION.

Пользователь с уровнем доступа CLUSTER может удалить проект только внутри своего кластера.

Пользователь с уровнем доступа ORGANIZATION может удалить проект только в своих организациях.

При попытке удаления проекта "По умолчанию" получим ошибку (400 BadRequest).

POST /rest/workgroups/:id/users/:userId

Добавление пользователя в проект

Пользователь с уровнем доступа не ниже ORGANIZATION.

Пользователь с уровнем доступа CLUSTER может добавить пользователя в проект только внутри своего кластера.

Пользователь с уровнем доступа ORGANIZATION может добавить пользователя в проект только в своих организациях.

Если пользователь уже состоит в проекте (открытом или закрытом), ничего не происходит; при этом неважно, каким образом он был включен туда ранее.

DELETE /rest/workgroups/:id/users/:userId

Удаление пользователя из проекта

Пользователь с уровнем доступа не ниже ORGANIZATION.

Пользователь с уровнем доступа CLUSTER может удалить пользователя из проекта только внутри своего кластера.

Пользователь с уровнем доступа ORGANIZATION может удалить пользователя из проекта только в своих организациях.

Если проект открытый, и пользователь состоит в его организации, то ничего не происходит, а запрос возвращает 403 Forbidden.

Если пользователь не участвует в проекте, то ничего не происходит.

/rest/users

GET /rest/users/current

Получение информации о текущем пользователе.

http 200

// 2.0+
{                                                        
    "id": 6,                                             // id пользователя
    "login": "ivanov",                                   // логин
    "fio": "Иванов Иван Иванович",                       // ФИО
    "type": {                                            // тип
        "id": 1,                                         // id типа
        "title": "Пользователи"                          // название
    },                                                   
    "authentication_type": 0,                            // тип аутентификации (0 - логин/пароль,
                                                         // 1 - LDAP)
    "two_factor_auth": false,                            // включена двухфакторная аутентификация
    "active_till": 1712984116                            // срок действия учётной записи
    "last_authentication": 1605793362,                   // дата последней авторизации
    "active_till_local": "02.09.2024 12:00",             // локальная дата окончания срока действия учётной записи
    "last_authentication_local": "25.03.2024 16:02",     // локальная дата последней авторизации
    "blocked": false,                                    // признак заблокированного пользователя
    "gis_editor_access": true,                           // интеграция с ГИС редактором
    "invite": {                                          // последнее приглашение
        "id": 1051,                                      // id
        "key": "a3600ca4-ee35-1004-895f-b6c011bf8f3a",   // ключ
        "url": "https://active...",                      // url
        "creation_date": 1658304773,                     // дата создания
        "expires": 1658305090,                           // дата окончания действия
        "expires_local": "01.01.2025 12:00",             // локальная дата окончания срока действия
        "total": 5,                                      // максимальное количество попыток использования
        "attempts_left": 5                               // оставшееся количество попыток использования
    },                                                   
    "system": false,                                     // системный пользователь
    "avatar_update_date": 1605793362,                    // дата обновления аватара
    "tags": [                                            // метки пользователя
        {                                                
            "id": 1                                      // id метки
        },                                               
        ...                                              // следующие элементы списка
    ],                                                   
    "organization_id": 1,                                // id основной организации
    "clusters": [                                        // кластеры
        {                                                
            "id": 3,                                     // id кластера
            "title": "Тестовый кластер"                  // название кластера
        }                                                
    ],                                                   
    "organization_ids": [                                // массив id организаций пользователя
        1,                                               
        132,                                             
        232                                              
    ],                                                   
    "role_id": 8,                                        // id роли
    "role_deleted": false,                               // удалена роль или нет
    "role": {                                            
        "id": 8,                                         // id роли
        "name": "Главный администратор",                 // название роли
        "code": "ADMINISTRATOR",                         // код роли
        "level": "GLOBAL",                               // уровень доступа
        "visibility_level": "GLOBAL",                    // уровень видимости
        "privileges": {                                  // значения привилегий
            "create_task": true                          
        },                                               
        "cluster": null                                  // кластер
    },                                                   
    "email": "test@gmail.com",                           // адрес электронной почты
    "address": "г.Казань, ул.Назарбаева, д.25, кв.125",  // адрес
    "passport": "9205 999999",                           // паспортные данные
    "phone": "+7 999 888 7766",                          // телефон
    "tracking": true,                                    // включен ли трекинг
    "glonass_id": null,                                  // ГЛОНАСС-id для трекинга
    "message_channel_id": 99,                            // канал входящих сообщений
    "default_assigned_organization_id": 500              // организация-исполнитель заданий,
                                                         // подставляемая по умолчанию
}                                                        

POST /rest/users/check-login

Неавторизованный пользователь.

Проверка логина на существование в системе.

// 2.0+
{                         
    "login": "user_test"  // логин пользователя
}                         

http 200

// 2.0+
{                   
    "check": false  // true - логин не существует в системе,
                    // и он доступен для использования;
                    // false - логин существует в системе,
                    // и он не доступен для использования;
}                   

GET /rest/users

Получение списка всех пользователей, которых может увидеть текущий пользователь:

Пользователям с ролью Клиент недоступны данные других пользователей с ролью Клиент.

Параметры запроса

Знаком + помечены поля, для которых можно указывать список значений, разделённых запятой. Например, typeId=1,2.

http 200

// 2.0+
{                                                                
    "items": [                                                   
        {                                                        
            "id": 3011,                                          // id пользователя
            "login": "admin1439218241106",                       // логин пользователя
            "fio": "Иванов И.И.",                                // ФИО
            "organization_id": 2,                                // id основной организации
            "clusters": [                                        // кластеры
                {                                                
                    "id": 3,                                     // id кластера
                    "title": "Тестовый кластер"                  // название кластера
                }                                                
            ],                                                   
            "type": {                                            // тип
                "id": 1,                                         // id типа
                "title": "Пользователи"                          // название
            },                                                   
            "authentication_type": 0,                            // тип аутентификации (0 - логин/пароль,
                                                                 // 1 - LDAP)
            "two_factor_auth": false,                            // включена двухфакторная аутентификация
            "active_till": 1712984116                            // срок действия учётной записи
            "last_authentication": 1605793362,                   // дата последней авторизации
            "active_till_local": "02.09.2024 12:00",             // локальная дата окончания срока действия учётной записи
            "last_authentication_local": "25.03.2024 16:02",     // локальная дата последней авторизации
            "blocked": false,                                    // признак заблокированного пользователя
            "avatar_update_date": 1605793362,                    // дата обновления аватара
            "gis_editor_access": true,                           // интеграция с ГИС редактором
            "invite": {                                          // последнее приглашение
                "id": 1051,                                      // id
                "key": "a3600ca4-ee35-1004-895f-b6c011bf8f3a",   // ключ
                "url": "https://active...",                      // url
                "creation_date": 1658304773,                     // дата создания
                "expires": 1658305090,                           // дата окончания действия
                "expires_local": "01.01.2025 12:00",             // локальная дата окончания срока действия
                "total": 5,                                      // максимальное количество попыток использования
                "attempts_left": 5                               // оставшееся количество попыток использования
            },                                                   
            "system": false,                                     // системный пользователь
            "tags": [                                            // метки пользователя
                {                                                
                    "id": 1                                      // id метки
                },                                               
                ...                                              // следующие элементы списка
            ],                                                   
            "organization_ids": [                                // массив id организаций пользователя
                2,                                               
                132,                                             
                232                                              
            ],                                                   
            "role_id": 10,                                       // id роли
            "role_deleted": false,                               // удалена роль или нет
            "email": "test@gmail.com",                           // адрес электронной почты
            "address": "г.Казань, ул.Назарбаева, д.25, кв.125",  // адрес
            "passport": "9205 999999",                           // паспортные данные
            "phone": "+7 999 888 7766",                          // телефон
            "task_count": 17,                                    // начиная с 0.16.0: количество назначенных на
                                                                 // пользователя заданий в стадии "В работе"
            "tracking": false,                                   // включен ли трекинг
            "glonass_id": null,                                  // ГЛОНАСС-id для трекинга
            "message_channel_id": 99                             // канал входящих сообщений
        },                                                       
        ...                                                      // следующие элементы списка пользователей
    ]                                                            
}                                                                

GET /rest/users/by-distance

Запрос выдает список видимых пользователей с информацией об их местоположении:

Пользователям с ролью Клиент недоступны данные других пользователей с ролью Клиент.

todo Если трекинг для пользователя не включен, то информация о местоположении пользователя отсутствует.

Параметры запроса

http 200

// 2.0+
{                                                                 
    "items": [                                                    
        {                                                         
            "user": {                                             
                "id": 614,                                        // id пользователя
                "fio": "Иванов Иван Иванович",                    // ФИО пользователя
                "role": {                                         // роль
                    "id": 10,                                     
                    "name": "Администратор организации"           
                },                                                
                "type": {                                         // тип
                    "id": 1,                                      // id типа
                    "title": "Пользователи"                       // название
                },                                                
                "authentication_type": 0,                         // тип аутентификации (0 - логин/пароль,
                                                                  // 1 - LDAP)
                "two_factor_auth": false,                         // включена двухфакторная аутентификация
                "last_authentication": 1605793362,                // дата последней авторизации
                "active_till_local": "02.09.2024 12:00",          // локальная дата окончания срока действия учётной записи
                "last_authentication_local": "25.03.2024 16:02",  // локальная дата последней авторизации
                "blocked": false,                                 // признак заблокированного пользователя
                "avatar_update_date": 1605793362,                 // дата обновления аватара
                "tags": [                                         // метки пользователя
                    {                                             
                        "id": 1                                   // id метки
                    },                                            
                    ...                                           // следующие элементы списка
                ],                                                
                "clusters": [                                     // кластеры
                    {                                             
                        "id": 3,                                  // id кластера
                        "title": "Тестовый кластер"               // название кластера
                    }                                             
                ],                                                
                "organization_id": 3                              // id организации пользователя
            },                                                    
            "glonass_id": 225,                                    // ГЛОНАСС-id
            "lon": 49.1416784,                                    // координата долготы местоположения пользователя
            "lat": 55.7745002,                                    // координата широты местоположения пользователя
            "date": 1501844904,                                   // дата последней активности пользователя
            "active": true                                        // активность пользователя за последние сутки от
                                                                  // текущего времени: активность рассчитывается
                                                                  // исходя из даты последнего обновления точки
                                                                  // пользователя; null, если нет даты
                                                                  // обновления, или мы не имеем данных о
                                                                  // местоположении пользователя;
            "distance": 34.7971366515358                          // расстояние от пользователя до указанной
                                                                  // в параметрах запроса точки (в км.),
                                                                  // либо null, в случаях, если точка не была
                                                                  // указана в параметрах запроса, или мы не
                                                                  // имеем данных о местоположении пользователя;
        },                                                        
        ...                                                       // следующие элементы списка
    ]                                                             
}                                                                 

GET /rest/users/locations

Получить точки всех пользователей, видимых текущему пользователю.

Пользователь с привилегией Читать местоположение. Свои точки можно получить всегда.

http 200

// 2.0+
{                                    
    "items": [                       
        {                            
            "id": 999,               // id пользователя
            "point": {               // координаты местоположения пользователя
                "user_id": 225,      // ГЛОНАСС-id
                "lon": 50.0001,      // координата longitude (долгота)
                "lat": 50.0002,      // координата latitude (широта),
                "date": 1526314368,  // время последней активности пользователя
                "direction": 96,     // направление
                "speed": 1.0,        // скорость
                "active": false      // активность пользователя в заданный временной интервал
                                     // (интервал задается в переменной geo4me.user.activity.interval
                                     // в файле app.conf, по умолчанию, 30 минут)
            }                        
        }                            
    ]                                
}                                    

GET /rest/users/monitoring

Соединение по web-socket для получения координат и значений датчиков пользователей, видимых текущему пользователю.

Для получения координат пользователю необходима привилегия Читать местоположение. Для получения значений датчиков пользователя необходима привилегия Читать датчики. Свои точки и значения датчиков можно получить всегда.

Пример сообщения по WS

// 2.0+
{                                     
    "gauges": [                       
        {                             
            "user_id": 131,           // id пользователя
            "port": 54,               // порт, по которому приходят данные
            "analog_value": 2.0,      // текущее значение аналогового датчика
            "date": 1605100717        // дата обновления
        },                            
        ...                           // следующие элементы списка
    ]                                 
}                                     
{                                     
    "points": [                       
        {                             
            "user": {                 
                "id": 609,            // id пользователя
                "department_id": 609  // id организации
            },                        
            "location": {             
                "user_id": 1510,      // ГЛОНАСС-id
                "lon": 49.4513218,    // координата долготы
                "lat": 56.2500685,    // координата широты
                "date": 1490987230,   // дата последней активности пользователя
                "direction": 96,      // направление
                "speed": 1.0,         // скорость
                "active": false       // активность пользователя (временной интервал
                                      // для проверки активности пользователя задается
                                      // в настройках, по умолчанию это 30 минут);
                                      // null, если нет данных о местоположении пользователя
            }                         
        }                             
    ]                                 
}                                     

GET /rest/users/locations/live

Соединение по web-socket для получения актуальной информации о местоположении пользователей, видимых текущему пользователю.

Пользователь с привилегией Читать местоположение. Свои точки можно получить всегда.

// 2.0+
{                                       
    "points": [                         
        {                               
            "user": {                   
                "id": 609,              // id пользователя
                "department_id": 609    // id организации
            },                          
            "location": {               
                "user_id": 1510,        // ГЛОНАСС-id
                "lon": 49.4513218,      // координата долготы
                "lat": 56.2500685,      // координата широты
                "date": 1490987230,     // дата последней активности пользователя
                "direction": 96,        // направление
                "speed": 1.0,           // скорость
                "active": false         // активность пользователя (временной интервал
                                        // для проверки активности пользователя задается
                                        // в настройках, по умолчанию это 30 минут);
                                        // null, если нет данных о местоположении пользователя
            }                           
        },                              
        {                               
            "user": {                   
                "id": 622,              
                "organization_id": 622  
            },                          
            "location": {               
                "user_id": 1511,        
                "lon": 0.0,             
                "lat": 0.0,             
                "date": null,           
                "active": false         
            }                           
        }                               
    ]                                   
}                                       

PATCH /rest/users/tags-batch

Главный администратор.

Массовый запрос на редактирование меток пользователей: всем пользователям, id которых указаны в users, будут добавлены метки из added и удалены метки из remove.

Входные данные

// 2.0+
{                        
    "users": [           // пользователи, метки которых необходимо отредактировать
        {                
            "id": 121    // id пользователя
        },               
        ...              // следующие элементы списка пользователей
    ],                   
    "tags": {            // метки пользователей
        "add": [         // метки, которые необходимо добавить
            {            
                "id": 1  // id метки
            },           
            ...          // следующие элементы списка меток
        ],               
        "remove": [      // метки, которые необходимо удалить
            {            
                "id": 2  // id метки
            },           
            ...          // следующие элементы списка меток
        ]                
    }                    
}                        

POST /rest/users

Добавление нового пользователя.

Пользователь с привилегией Создать пользователя и уровнем доступа не ниже ORGANIZATION.

Пользователь с уровнем доступа CLUSTER может добавить пользователя только в организацию своего кластера.

Пользователь с уровнем доступа ORGANIZATION может добавить пользователя только в свою организацию.

При добавлении аватара к началу выполнения запроса файл должен быть загружен на сервер запросом POST /files/upload. Полученный name нужно подставить в поле avatar_file_name при выполнении основного запроса.

Дата окончания срока действия может быть передана как в формате Unix Timestamp, так и в виде строки. Строка при этом состоит из даты (YYYY, MM, DD в прямом или обратном порядке, разделённые точкой, дефисом или слэшем) и времени (hh:mm или hh:mm:ss), разделённых пробелом.

Timestamp трактуется как абсолютное время в UTC. Строковая дата трактуется как местное время.

В качестве часового пояса берётся пояс кластера главной организации; если главной организации нет, но пользователь состоит только в одном кластере, берётся пояс этого кластера. Иначе берётся часовой пояс системы.

Параметры

Входные данные

// 2.0+
{                                                                   
    "id": 123,                                                      // id пользователя
    "login": "ivanov_ivan",                                         // логин
    "paswd": "qwerty123",                                           // пароль
    "fio": "Иванов И.И.",                                           // * ФИО пользователя
    "organization_id": 1,                                           // id основной организации
    "gis_editor_access": true,                                      // интеграция с ГИС редактором,
                                                                    // доступно только главному администратору
    "organization_ids": [                                           // массив id организаций пользователя
        1,                                                          
        132,                                                        
        232                                                         
    ],                                                              
    "role_id": 7,                                                   // id роли, по умолчанию 7 - Пользователь организации
    "type": {                                                       // тип
        "id": 1                                                     // id типа
    },                                                              
    "blocked": false,                                               // признак заблокированного пользователя
    "authentication_type": 0,                                       // тип аутентификации (0 - логин/пароль,
                                                                    // 1 - LDAP)
    "two_factor_auth": false,                                       // * включена двухфакторная аутентификация, значение по умолчанию: false
    "active_till": "2030/01/01 00:00",                              // срок действия учётной записи
    "avatar_file_name": "f71adbab-724f-47a1-996d-0e62062b006b.jpg"  // имя файла после загрузки на сервер
                                                                    // (jpg | jpeg)
    "tags": [                                                       // метки пользователя
        {                                                           
            "id": 1                                                 // id метки
        },                                                          
        {                                                           
            "id": 22                                                
        },                                                          
        ...                                                         // следующие элементы списка
    ],                                                              
    "clusters": [                                                   // кластеры
        {                                                           
            "id": 3                                                 
        }                                                           
    ],                                                              
    "email": "test@gmail.com",                                      // email
    "phone": "+7 999 888 7766",                                     // телефон
    "address": "г.Казань, ул.Назарбаева, д.25, кв.125",             // адрес
    "passport": "9205 999999",                                      // паспортные данные
    "tracking": true                                                // включить трекинг
}                                                                   

http 200

// 2.0+
{                                                        
    "id": 123,                                           
    "login": "ivanov_ivan",                              
    "fio": "Иванов И.И.",                                
    "type": {                                            // тип
        "id": 1,                                         // id типа
        "title": "Пользователи"                          // название
    },                                                   
    "authentication_type": 0,                            // тип аутентификации (0 - логин/пароль,
                                                         // 1 - LDAP)
    "two_factor_auth": false,                            // включена двухфакторная аутентификация
    "active_till": 1712984116                            // срок действия учётной записи
    "last_authentication": 1605793362,                   // дата последней авторизации
    "active_till_local": "02.09.2024 12:00",             // локальная дата окончания срока действия учётной записи
    "last_authentication_local": "25.03.2024 16:02",     // локальная дата последней авторизации
    "blocked": false,                                    // признак заблокированного пользователя
    "avatar_update_date": 1605793362,                    // дата обновления аватара
    "gis_editor_access": true,                           // интеграция с ГИС редактором
    "invite": {                                          // последнее приглашение
        "id": 1051,                                      // id
        "key": "a3600ca4-ee35-1004-895f-b6c011bf8f3a",   // ключ
        "url": "https://active...",                      // url
        "creation_date": 1658304773,                     // дата создания
        "expires": 1658305090,                           // дата окончания действия
        "expires_local": "01.01.2025 12:00",             // локальная дата окончания срока действия
        "total": 5,                                      // максимальное количество попыток использования
        "attempts_left": 5                               // оставшееся количество попыток использования
    },                                                   
    "system": false,                                     // системный пользователь
    "tags": [                                            // метки пользователя
        {                                                
            "id": 1                                      // id метки
        },                                               
        {                                                
            "id": 22                                     
        },                                               
        ...                                              // следующие элементы списка
    ],                                                   
    "organization_id": 1,                                // id основной организации
    "clusters": [                                        // кластеры
        {                                                
            "id": 3,                                     // id кластера
            "title": "Тестовый кластер"                  // название кластера
        }                                                
    ],                                                   
    "organization_ids": [                                // массив id организаций пользователя
        1,                                               
        132,                                             
        232                                              
    ],                                                   
    "role_id": 7,                                        // id роли
    "role": {                                            
        "id": 7,                                         // id роли
        "name": "Пользователь",                          // название роли
        "code": "ORG_USER",                              // код роли
        "level": "SELF",                                 // уровень доступа
        "visibility_level": "EXTENDED",                  // уровень видимости
        "privileges": {                                  // значения привилегий
            "create_task": true                          
        },                                               
        "cluster": {                                     // кластер
            "id": 1,                                     
            "title": "По умолчанию"                      
        }                                                
    },                                                   
    "role_deleted": false,                               // удалена роль или нет
    "email": "test@gmail.com",                           // адрес электронной почты
    "address": "г.Казань, ул.Назарбаева, д.25, кв.125",  // адрес
    "passport": "9205 999999",                           // паспортные данные
    "phone": "+7 999 888 7766",                          // телефон
    "tracking": true,                                    // включен ли трекинг
    "glonass_id": 1450,                                  // ГЛОНАСС-id для трекинга
    "message_channel_id": 99                             // канал входящих сообщений
}                                                        

PATCH /rest/users/:id

Редактирование учетной записи пользователя по id.

Пользователь с привилегией Редактировать пользователя и уровнем доступа не ниже ORGANIZATION, текущий пользователь с привилегией Редактировать себя.

Текущий пользователь может редактировать свою учетную запись.

Пользователь с уровнем доступа CLUSTER может редактировать учетные записи пользователей из организаций своего кластера.

Пользователь с уровнем доступа ORGANIZATION может редактировать учетные записи пользователей только своей организации.

При organizationIds = [] и не-передаче organizationId ("оставить главную организацию как есть") будет осуществлена попытка стереть как organizationId, так и organizationIds. Такая попытка пройдёт только если одновременно меняется роль на главного администратора/инспектора.

При передаче organizationIds = [] и передаче organizationId = X ("установить главную организацию") будет сделана замена organizationIds = [X], чтобы привести передаваемые данные к согласованности.

Имеем два случая и разное поведение в каждом из них. Так сделано потому, что оба приведённых выше запроса — некорректные, и мы "исправляем" каждый из них наиболее удобным для нас способом, чтобы минимизировать изменения в клиентах, которые на данный момент отправляют (или могут отправлять) неверные данные.

Дата окончания срока действия может быть передана как в формате Unix Timestamp, так и в виде строки. Строка при этом состоит из даты (YYYY, MM, DD в прямом или обратном порядке, разделённые точкой, дефисом или слэшем) и времени (hh:mm или hh:mm:ss), разделённых пробелом.

Timestamp трактуется как абсолютное время в UTC. Строковая дата трактуется как местное время.

В качестве часового пояса берётся пояс кластера главной организации; если главной организации нет, но пользователь состоит только в одном кластере, берётся пояс этого кластера. Иначе берётся часовой пояс системы.

Параметры

Входные данные

// 2.0+
{                                                                   
    "login": "ivanov_ivan",                                         // логин
    "fio": "Иванов Иван Иванович",                                  // ФИО
    "paswd": "123123",                                              // новый пароль
    "role_id": 10,                                                  // id роли; пользователь не может сам поменять свою роль
    "organization_id": 517,                                         // id основной организации, права на изменения
                                                                    // есть только у главного администратора
    "organization_ids": [                                           // массив id организаций пользователя
        517,                                                        
        132,                                                        
        232                                                         
    ],                                                              
    "type": {                                                       // тип
        "id": 1                                                     // id типа
    },                                                              
    "authentication_type": 0,                                       // тип аутентификации (0 - логин/пароль,
                                                                    // 1 - LDAP)
    "two_factor_auth": false,                                       // включена двухфакторная аутентификация
    "active_till": "2030/01/01 00:00",                              // срок действия учётной записи
    "gis_editor_access": true,                                      // интеграция с ГИС редактором,
                                                                    // доступно только главному администратору
    "blocked": false,                                               // признак заблокированного пользователя
    "avatar_file_name": "f71adbab-724f-47a1-996d-0e62062b006b.jpg"  // имя файла после загрузки на сервер
                                                                    // (jpg | jpeg)
    "tags": {                                                       // метки пользователя
        "add": [                                                    // метки, которые необходимо добавить
            {                                                       
                "id": 21                                            // id метки
            }                                                       
        ],                                                          
        "remove": [                                                 // метки, которые необходимо удалить
            {                                                       
                "id": 22                                            // id метки
            }                                                       
        ]                                                           
    },                                                              
    "clusters": {                                                   // кластеры
        "add": [                                                    
            {                                                       
                "id": 3                                             
            }                                                       
        ],                                                          
        "remove": [                                                 
            {                                                       
                "id": 4                                             
            }                                                       
        ]                                                           
    },                                                              
    "email": "test@gmail.com",                                      // адрес электронной почты
    "address": "г.Казань, ул.Назарбаева, д.25, кв.125",             // адрес
    "phone": "+7 999 888 7766",                                     // телефон
    "passport": "9205 999999",                                      // паспортные данные
    "tracking": true                                                // включить трекинг
}                                                                   

http 200

// 2.0+
{                                                        
    "id": 6935,                                          // id пользователя
    "login": "ivanov_ivan",                              // логин пользователя
    "fio": "Иванов Иван Иванович",                       // ФИО
    "type": {                                            // тип
        "id": 1,                                         // id типа
        "title": "Пользователи"                          // название
    },                                                   
    "authentication_type": 0,                            // тип аутентификации (0 - логин/пароль,
                                                         // 1 - LDAP)
    "two_factor_auth": false,                            // включена двухфакторная аутентификация
    "active_till": 1712984116                            // срок действия учётной записи
    "last_authentication": 1605793362,                   // дата последней авторизации
    "active_till_local": "02.09.2024 12:00",             // локальная дата окончания срока действия учётной записи
    "last_authentication_local": "25.03.2024 16:02",     // локальная дата последней авторизации
    "blocked": false,                                    // признак заблокированного пользователя
    "avatar_update_date": 1605793362,                    // дата обновления аватара
    "gis_editor_access": true,                           // интеграция с ГИС редактором
    "invite": {                                          // последнее приглашение
        "id": 1051,                                      // id
        "key": "a3600ca4-ee35-1004-895f-b6c011bf8f3a",   // ключ
        "url": "https://active...",                      // url
        "creation_date": 1658304773,                     // дата создания
        "expires": 1658305090,                           // дата окончания действия
        "expires_local": "01.01.2025 12:00",             // локальная дата окончания срока действия
        "total": 5,                                      // максимальное количество попыток использования
        "attempts_left": 5                               // оставшееся количество попыток использования
    },                                                   
    "system": false,                                     // системный пользователь
    "tags": [                                            // метки пользователя
        {                                                
            "id": 1                                      // id метки
        },                                               
        {                                                
            "id": 21                                     
        },                                               
        ...                                              // следующие элементы списка
    ],                                                   
    "organization_id": 517,                              // id основной организации
    "clusters": [                                        // кластеры
        {                                                
            "id": 3,                                     // id кластера
            "title": "Тестовый кластер"                  // название кластера
        }                                                
    ],                                                   
    "organization_ids": [                                // массив id организаций пользователя
        517,                                             
        132,                                             
        232                                              
    ],                                                   
    "role_id": 10,                                       // id роли
    "role_deleted": false,                               // удалена роль или нет
    "role": {                                            
        "id": 10,                                        // id роли
        "name": "Администратор организации",             // название роли
        "code": "ORG_ADMINISTRATOR",                     // код роли
        "level": "ORGANIZATION",                         // уровень доступа
        "visibility_level": "EXTENDED",                  // уровень видимости
        "privileges": {                                  // значения привилегий
            "create_task": true                          
        },                                               
        "cluster": {                                     // кластер
            "id": 1,                                     
            "title": "По умолчанию"                      
        }                                                
    },                                                   
    "email": "test@gmail.com",                           // адрес электронной почты
    "address": "г.Казань, ул.Назарбаева, д.25, кв.125",  // адрес
    "passport": "9205 999999",                           // паспортные данные
    "phone": "+7 999 888 7766",                          // телефон
    "tracking": true,                                    // включен ли трекинг
    "glonass_id": 1450                                   // ГЛОНАСС-id для трекинга
    "message_channel_id": 99,                            // канал входящих сообщений
}                                                        

DELETE /rest/users/current

Удаление текущего пользователя.

Пользователь с привилегией Удалить себя.

Параметры

DELETE /rest/users/:id

Удаление учетной записи пользователя.

Пользователь с привилегией Удалить другого пользователя и уровнем доступа не ниже ORGANIZATION.

Пользователь с уровнем доступа CLUSTER может удалять учетные записи пользователей из организаций своего кластера.

Пользователь с уровнем доступа ORGANIZATION может удалять учетные записи пользователей только своей организации.

Запрос не позволит удалить себя.

Параметры

GET /rest/users/:id/geo4me/track

Получение трека пользователя за указанный временной интервал (dateFrom, dateTo), если запрашиваемый пользователь виден текущему пользователю.

Пользователь с привилегией Читать местоположение. Своё местоположение можно получить всегда.

Параметры запроса

// 2.0+
{                                                                                                   
    "items": [                                                                                      
        {                                                                                           
            "data": 1516709271,                                                                     // дата
            "lat": 55.01,                                                                           // координаты точки, широта
            "lon": 50.02,                                                                           // координаты точки, долгота
            "control": true,                                                                        // является ли точка контрольной
            "address": "Российская Федерация, Татарстан, Казань, улица Нурсултана Назарбаева, 27",  // адрес точки
            "distance": 18644                                                                       // пройденная дистанция от начала пути
        },                                                                                          // ... другие точки
    ]                                                                                               
}                                                                                                   

Примечания:

GET /rest/users/:id/avatar

Получение аватара пользователя, если запрашиваемый пользователь виден текущему пользователю.

GET /rest/users/:id/avatar/crop/w:width/h:height

Получение аватара пользователя, если запрашиваемый пользователь виден текущему пользователю.

Аватар отдается указанных размеров (возможна обрезка изображения вдоль одной из сторон).

GET /rest/users/:id/avatar/fit/w:width/h:height

Получение аватара пользователя, если запрашиваемый пользователь виден текущему пользователю.

Аватар отдается указанных размеров (возможно появление пустого поля вдоль одной из сторон).

DELETE /rest/users/:id/avatar

Удалить аватар пользователя.

Пользователь с привилегией Редактировать пользователя и уровнем доступа не ниже ORGANIZATION, текущий пользователь с привилегией Редактировать себя.

Текущий пользователь может удалить свой аватар.

Пользователь с уровнем доступа CLUSTER может удалить аватар пользователя из организации своего кластера.

Пользователь с уровнем доступа ORGANIZATION может удалить аватар пользователя только своей организации.

Параметры

GET /rest/users/gauges/values

Получить текущий срез значений всех датчиков пользователей, видимых текущему пользователю.

Пользователь с привилегией Читать датчики. Свою историю значений датчиков можно получить всегда.

http 200

// 2.0+
{                                         
    "items": [                            
        {                                 
            "user_id": 131,               // id пользователя
            "port": 54,                   // порт, по которому приходят данные
            "name": "Наличие интернета",  // название типа датчика
            "analog_value": 2.0,          // текущее значение аналогового датчика
            "date": 1605100717            // дата обновления
        },                                
        ...                               // следующие элементы списка
    ]                                     
}                                         

GET /rest/users/:id/gauges/history

Получить историю значений датчиков за указанный период, если запрашиваемый пользователь виден текущему пользователю.

Пользователь с привилегией Читать датчики. Свою историю значений датчиков можно получить всегда.

Параметры запроса

http 200

// 2.0+
{                                         
    "items": [                            
        {                                 
            "user_id": 131,               // id пользователя
            "port": 54,                   // порт, по которому приходят данные
            "name": "Наличие интернета",  // название типа датчика
            "analog_value": 2.0,          // текущее значение аналогового датчика
            "date": 1605100717            // дата обновления
        },                                
        ...                               // следующие элементы списка
    ]                                     
}                                         

GET /rest/users/gauges/live

Соединение по web-socket для получения значений датчиков пользователей, видимых текущему пользователю.

Пользователь с привилегией Читать датчики. Свою историю значений датчиков можно получить всегда.

Пример сообщения по WS

// 2.0+
{                                 
    "gauges": [                   
        {                         
            "user_id": 131,       // id пользователя
            "port": 54,           // порт, по которому приходят данные
            "analog_value": 2.0,  // текущее значение аналогового датчика
            "date": 1605100717    // дата обновления
        },                        
        ...                       // следующие элементы списка
    ]                             
}                                 

POST /rest/users/types

Главный администратор.

Добавление нового типа пользователей.

Пиктограмма является обязательным полем, поэтому к началу выполнения запроса файл пиктограммы уже должен быть загружен на сервер запросом POST /files/upload. Полученный name нужно подставить в поле icon_file_name при выполнении основного запроса.

Входные данные

// 2.0+
{                                                                  
    "title": "Название типа",                                      // * название
    "icon_file_name": "f71adbab-724f-47a1-996d-0e62062b006b.PNG",  // * имя файла после загрузки на сервер
                                                                   //   (png)
    "use_initials": true,                                          // признак того, что нужно использовать инициалы
                                                                   // пользователя в маркере на карте (вместо пиктограммы)
    "use_avatar": true                                             // признак того, что нужно использовать аватар пользователя
                                                                   // (при наличии) в маркере на карте (вместо пиктограммы и инициалов)
}                                                                  

http 200

// 2.0+
{                                    
    "id": 184,                       // id типа
    "title": "Название типа",        // название
    "icon_update_date": 1605699953,  // дата последнего изменения пиктограммы
    "use_initials": false,           // признак того, что нужно использовать инициалы пользователя
                                     // в маркере на карте (вместо пиктограммы)
    "use_avatar": false,             // признак того, что нужно использовать аватар пользователя
                                     // (при наличии) в маркере на карте (вместо пиктограммы и инициалов)
    "is_default": false              // признак типа по умолчанию
}                                    

PATCH /rest/users/types/:id

Главный администратор.

Изменение информации о типе пользователей.

Входные данные

// 2.0+
{                                                                  
    "title": "Название типа",                                      // название
    "icon_file_name": "f71adbab-724f-47a1-996d-0e62062b006b.PNG",  // имя файла после загрузки на сервер
                                                                   // (png)
    "use_initials": true,                                          // признак того, что нужно использовать инициалы
                                                                   // пользователя в маркере на карте (вместо пиктограммы)
    "use_avatar": true                                             // признак того, что нужно использовать аватар пользователя
                                                                   // (при наличии) в маркере на карте (вместо пиктограммы и инициалов)
}                                                                  

http 200

// 2.0+
{                                    
    "id": 184,                       // id типа
    "title": "Название типа",        // название
    "icon_update_date": 1605699953,  // дата последнего изменения пиктограммы
    "use_initials": false,           // признак того, что нужно использовать инициалы пользователя
                                     // в маркере на карте (вместо пиктограммы)
    "use_avatar": false,             // признак того, что нужно использовать аватар пользователя
                                     // (при наличии) в маркере на карте (вместо пиктограммы и инициалов)
    "is_default": false              // признак типа по умолчанию
}                                    

DELETE /rest/users/types/:id

Главный администратор.

Удаление типа пользователей.

Нельзя удалить тип пользователей по умолчанию - будет получена 403.

Нельзя удалить тип пользователей, если существуют (неудалённые) пользователи с этим типом - будет получена 403.

GET /rest/users/types/list

Список типов пользователей.

Сортировка осуществляется по полю title.

Параметры

http 200

// 2.0+
{                                            
    "items": [                               
        {                                    
            "id": 184,                       // id типа
            "title": "Название типа",        // название
            "icon_update_date": 1605699953,  // дата последнего изменения пиктограммы
            "use_initials": false,           // признак того, что нужно использовать инициалы пользователя
                                             // в маркере на карте (вместо пиктограммы)
            "use_avatar": false,             // признак того, что нужно использовать аватар пользователя
                                             // (при наличии) в маркере на карте (вместо пиктограммы и инициалов)
            "is_default": false              // признак типа по умолчанию
        },                                   
        ...                                  // следующие элементы списка
    ],                                       
    "total": 3,                              // общее количество элементов
    "limit": 25,                             // максимальное количество элементов на странице
    "page": 1                                // текущая страница
}                                            

GET /rest/users/types/:id

Получение информации о типе пользователей.

http 200

// 2.0+
{                                    
    "id": 184,                       // id типа
    "title": "Название типа",        // название
    "icon_update_date": 1605699953,  // дата последнего изменения пиктограммы
    "use_initials": false,           // признак того, что нужно использовать инициалы пользователя
                                     // в маркере на карте (вместо пиктограммы)
    "use_avatar": false,             // признак того, что нужно использовать аватар пользователя
                                     // (при наличии) в маркере на карте (вместо пиктограммы и инициалов)
    "is_default": false              // признак типа по умолчанию
}                                    

GET /rest/users/types/:id/icon

Любой пользователь.

Получение пиктограммы (файла) типа пользователей.

POST /rest/users/tags

Главный администратор.

Добавление новой метки пользователей.

Входные данные

// 2.0+
{                       
    "title": "Курьер",  // * название метки
    "color": "ff0000"   // цвет метки для отображения на карте (HEX код)
}                       

http 200

// 2.0+
{                       
    "id": 11,           // id метки
    "title": "Курьер",  // название метки
    "color": "ff0000"   // цвет метки
}                       

PATCH /rest/users/tags/:id

Главный администратор.

Изменение информации о метке пользователей.

Входные данные

// 2.0+
{                                   
    "title": "Курьер Подмосковье",  // название метки
    "color": "008000"               // цвет метки для отображения на карте (HEX код)
}                                   

http 200

// 2.0+
{                                   
    "id": 11,                       // id метки
    "title": "Курьер Подмосковье",  // название метки
    "color": "008000"               // цвет метки
}                                   

GET /rest/users/tags/list

Список меток пользователей.

Сортировка осуществляется по полю title.

Параметры

http 200

// 2.0+
{                               
    "items": [                  
        {                       
            "id": 11,           // id метки
            "title": "Курьер",  // название метки
            "color": "ff0000"   // цвет метки
        },                      
        ...                     // следующие элементы списка
    ],                          
    "total": 3,                 // общее количество элементов
    "limit": 25,                // максимальное количество элементов на странице
    "page": 1                   // текущая страница
}                               

GET /rest/users/tags/:id

Получение информации о метке пользователей.

http 200

// 2.0+
{                       
    "id": 11,           // id метки
    "title": "Курьер",  // название метки
    "color": "ff0000"   // цвет метки
}                       

DELETE /rest/users/tags/:id

Главный администратор.

Удаление метки пользователей.

GET /rest/users/roles/privileges

Получить список привилегий.

http 200

// 2.0+
{                                       
    "items": [                          
        {                               
            "id": 1,                    // id
            "code": "create_task",      // код
            "name": "Создать задание",  // название
            "min_level": "SELF"         // минимальный уровень
        },                              
        ...                             
    ]                                   
}                                       

GET /rest/users/roles

Список ролей пользователей.

Параметры

http 200

{                                            
    "items": [                               
        {                                    
            "id": 6,                         // id роли
            "name": "Клиент",                // название роли
            "code": "CUSTOMER",              // код роли
            "level": "ORGANIZATION",         // уровень доступа
            "visibility_level": "EXTENDED",  // уровень видимости
            "privileges": {                  // значения привилегий
                "create_task": true          
            },                               
            "cluster": {                     // кластер
                "id": 1,                     
                "title": "По умолчанию"      
            }                                
        },                                   
        ...                                  // следующие элементы списка
    ]                                        
}                                            

GET /rest/users/roles/:id

Получение информации по роли пользователей.

http 200

{                                    
    "id": 6,                         // id роли
    "name": "Клиент",                // название роли
    "code": "CUSTOMER",              // код роли
    "level": "ORGANIZATION",         // уровень доступа
    "visibility_level": "EXTENDED",  // уровень видимости
    "privileges": {                  // значения привилегий
        "create_task": true          
    },                               
    "cluster": {                     // кластер
        "id": 1,                     
        "title": "По умолчанию"      
    }                                
}                                    

POST /rest/users/roles

Создать роль пользователя.

Пользователь с привилегией Создать роль и уровнем доступа не ниже CLUSTER.

Пользователь с уровнем доступа CLUSTER может создать только локальную роль внутри своего кластера.

Параметры

{                                    
    "name": "Клиент",                // * название роли
    "code": "ORG_ADMINISTRATOR",     // * код роли;
                                     // возможные значения: ORG_ADMINISTRATOR, ORG_USER;
                                     // значение по умолчанию ORG_USER
    "level": "ORGANIZATION",         // * уровень доступа, возможные значения: SELF, ORGANIZATION, CLUSTER, GLOBAL
    "visibility_level": "EXTENDED",  // * уровень видимости, возможные значения: TRUNCATED, BASIC, NORMAL, EXTENDED, GLOBAL
    "privileges": {                  // значения привилегий
        "create_task": true          
    },                               
    "cluster": {                     // кластер
        "id": 1                      
    }                                
}                                    

http 200

{                                    
    "id": 6,                         // id роли
    "name": "Клиент",                // название роли
    "code": "CUSTOMER",              // код роли
    "level": "ORGANIZATION",         // уровень доступа
    "visibility_level": "EXTENDED",  // уровень видимости
    "privileges": {                  // значения привилегий
        "create_task": true          
    },                               
    "cluster": {                     // кластер
        "id": 1,                     
        "title": "По умолчанию"      
    }                                
}                                    

PATCH /rest/users/roles/:id

Изменить роль пользователя.

Пользователь с привилегией Редактировать роль и уровнем доступа не ниже CLUSTER.

Пользователь с уровнем доступа CLUSTER может редактировать локальную роль своего кластера.

Параметры

{                                    
    "name": "Клиент",                // название роли
    "level": "ORGANIZATION",         // уровень доступа, возможные значения: SELF, ORGANIZATION, CLUSTER, GLOBAL
    "visibility_level": "EXTENDED",  // уровень видимости, возможные значения: TRUNCATED, BASIC, NORMAL, EXTENDED, GLOBAL
    "privileges": {                  // значения привилегий
        "create_task": true          
    }                                
}                                    

http 200

{                                    
    "id": 6,                         // id роли
    "name": "Клиент",                // название роли
    "code": "CUSTOMER",              // код роли
    "level": "ORGANIZATION",         // уровень доступа
    "visibility_level": "EXTENDED",  // уровень видимости
    "privileges": {                  // значения привилегий
        "create_task": true          
    },                               
    "cluster": {                     // кластер
        "id": 1,                     
        "title": "По умолчанию"      
    }                                
}                                    

DELETE /rest/users/roles/:id

Удалить роль пользователя.

Пользователь с привилегией Удалить роль и уровнем доступа не ниже CLUSTER.

Пользователь с уровнем доступа CLUSTER может удалять только локальные роли своего кластера.

Свою роль удалить нельзя.

Параметры

POST /rest/users/roles/sort

Сортировка ролей в порядке, заданном в теле запроса.

Пользователь с привилегией Сортировать роли и уровнем доступа не ниже CLUSTER.

Пользователь с уровнем доступа CLUSTER может сортировать только локальные роли своего кластера.

Роли рассматриваются вместе в группе. Есть группа глобальных ролей, есть группы кластерных ролей. Сортировать роли можно только в рамках группы. При этом нужно передать id всех ролей в группе, не включая невидимые. Если переданы не все роли, одна роль передана несколько раз - это 400 bad request. Если переданы роли из нескольких групп - это 403 forbidden.

{             
    "ids": [  // id ролей в нужном порядке
        6,    
        1,    
        3,    
        2,    
        5,    
        4     
    ]         
}             

http 200

{                                            
    "items": [                               
        {                                    
            "id": 6,                         // id роли
            "name": "Клиент",                // название роли
            "code": "CUSTOMER",              // код роли
            "level": "ORGANIZATION",         // уровень доступа
            "visibility_level": "EXTENDED",  // уровень видимости
            "privileges": {                  // значения привилегий
                "create_task": true          
            },                               
            "cluster": {                     // кластер
                "id": 1,                     
                "title": "По умолчанию"      
            }                                
        },                                   
        ...                                  // следующие элементы списка ролей
                                             // в заданном порядке сортировки
    ]                                        
}                                            

POST /rest/users/:id/invites

Создать приглашение.

Пользователь с привилегией Управлять приглашениями.

Пользователь с уровнем доступа CLUSTER может создать приглашение пользователю из организации своего кластера.

Пользователь с уровнем доступа ORGANIZATION может создать приглашение пользователю из своей организации.

Текущий пользователь может создать себе приглашение.

Дата окончания срока действия может быть передана как в формате Unix Timestamp, так и в виде строки. Строка при этом состоит из даты (YYYY, MM, DD в прямом или обратном порядке, разделённые точкой, дефисом или слэшем) и времени (hh:mm или hh:mm:ss), разделённых пробелом.

Timestamp трактуется как абсолютное время в UTC. Строковая дата трактуется как местное время.

В качестве часового пояса берётся пояс кластера главной организации пользователя; если главной организации нет, но пользователь состоит только в одном кластере, берётся пояс этого кластера. Иначе берётся часовой пояс системы.

Параметры

Входные данные

// 2.0+
{                                      
    "expires": "20-12-2029 01:00:00",  // дата окончания действия,
                                       // по умолчанию - +36524 дней (~100 лет) к текущему времени
    "total": 5                         // максимальное количество попыток использования, по умолчанию - 10000
}                                      

http 200

// 2.0+
{                                                   
    "id": 1051,                                     // id
    "user": {                                       // пользователь
        "id": 997,                                  // id пользователя
        "fio": "Александр Филиппович"               // ФИО пользователя
    },                                              
    "key": "a3600ca4-ee35-1004-895f-b6c011bf8f3a",  // ключ
    "url": "https://active...",                     // url
    "created_by": {                                 // создатель
        "id": 234,                                  // id создателя
        "fio": "Георгий Константинович"             // ФИО создателя
    },                                              
    "creation_date": 1658304773,                    // дата создания
    "expires": 1658305090,                          // дата окончания действия
    "expires_local": "01.01.2025 12:00",            // локальная дата окончания срока действия
    "total": 5,                                     // максимальное количество попыток использования
    "attempts_left": 5                              // оставшееся количество попыток использования
}                                                   

DELETE /rest/users/invites/:id

Удалить приглашение.

Пользователь с привилегией Управлять приглашениями.

Пользователь с уровнем доступа CLUSTER может удалить приглашение пользователя организации своего кластера.

Пользователь с уровнем доступа ORGANIZATION может удалить приглашение пользователя своей организации.

Текущий пользователь может удалить свое приглашение.

POST /rest/users/invites/:id/url

Создать invite-URL.

Пользователь с привилегией Управлять приглашениями.

Пользователь с уровнем доступа CLUSTER может создать invite-URL для приглашения пользователя организации своего кластера.

Пользователь с уровнем доступа ORGANIZATION может создать invite-URL для приглашения пользователя своей организации.

Текущий пользователь может создать invite-URL для своего приглашения.

http 200

// 2.0+
{                                                   
    "id": 1051,                                     // id
    "user": {                                       // пользователь
        "id": 997,                                  // id пользователя
        "fio": "Александр Филиппович"               // ФИО пользователя
    },                                              
    "key": "a3600ca4-ee35-1004-895f-b6c011bf8f3a",  // ключ
    "url": "https://active...",                     // url
    "created_by": {                                 // создатель
        "id": 234,                                  // id создателя
        "fio": "Георгий Константинович"             // ФИО создателя
    },                                              
    "creation_date": 1658304773,                    // дата создания
    "expires": 1658305090,                          // дата окончания действия
    "expires_local": "01.01.2025 12:00",            // локальная дата окончания срока действия
    "total": 5,                                     // максимальное количество попыток использования
    "attempts_left": 5                              // оставшееся количество попыток использования
}                                                   

DELETE /rest/users/invites/:id/url

Удалить invite-URL.

Пользователь с привилегией Управлять приглашениями.

Пользователь с уровнем доступа CLUSTER может удалить invite-URL из приглашения пользователя организации своего кластера.

Пользователь с уровнем доступа ORGANIZATION может удалить invite-URL из приглашения пользователя своей организации.

Текущий пользователь может удалить invite-URL из своего приглашения.

http 200

// 2.0+
{                                                   
    "id": 1051,                                     // id
    "user": {                                       // пользователь
        "id": 997,                                  // id пользователя
        "fio": "Александр Филиппович"               // ФИО пользователя
    },                                              
    "key": "a3600ca4-ee35-1004-895f-b6c011bf8f3a",  // ключ
    "url": null,                                    // url
    "created_by": {                                 // создатель
        "id": 234,                                  // id создателя
        "fio": "Георгий Константинович"             // ФИО создателя
    },                                              
    "creation_date": 1658304773,                    // дата создания
    "expires": 1658305090,                          // дата окончания действия
    "expires_local": "01.01.2025 12:00",            // локальная дата окончания срока действия
    "total": 5,                                     // максимальное количество попыток использования
    "attempts_left": 5                              // оставшееся количество попыток использования
}                                                   

GET /rest/users/invites/list

Получить список приглашений.

Сортировка осуществляется по полю id.

Параметры

http 200

// 2.0+
{                                                           
    "items": [                                              
        {                                                   
            "id": 1051,                                     // id
            "user": {                                       // пользователь
                "id": 997,                                  // id пользователя
                "fio": "Александр Филиппович"               // ФИО пользователя
            },                                              
            "key": "a3600ca4-ee35-1004-895f-b6c011bf8f3a",  // ключ
            "url": "https://active...",                     // url
            "created_by": {                                 // создатель
                "id": 234,                                  // id создателя
                "fio": "Георгий Константинович"             // ФИО создателя
            },                                              
            "creation_date": 1658304773,                    // дата создания
            "expires": 1658305090,                          // дата окончания действия
            "expires_local": "01.01.2025 12:00",            // локальная дата окончания срока действия
            "total": 5,                                     // максимальное количество попыток использования
            "attempts_left": 5                              // оставшееся количество попыток использования
        }                                                   
    ],                                                      
    "total": 1,                                             // общее количество элементов
    "limit": 25,                                            // максимальное количество элементов на странице
    "page": 1                                               // текущая страница
}                                                           

POST /rest/users/import

Массовое создание пользователей.

Пользователь с привилегией Создать пользователя и уровнем доступа не ниже ORGANIZATION.

Может быть передано только одно из двух полей - lines или users - но не оба одновременно.

lines должны содержать ФИО пользователей, по одному на строке.

users должны содержать полноценные формы создания пользователей, аналогичные POST /users.

Значения атрибутов organization, role, type, tags, tracking, переданные на "верхнем уровне" формы будут служить как значения по умолчанию для полей пользователей из lines и users.

Если у создаваемого пользователя нет организации, и поле organization на "верхнем уровне" не проставлено, то будет использована главная организация пользователя, выполняющего запрос. Главный администратор не состоит ни в одной организации, поэтому для него обязательна передача organization либо на "верхнем уровне" формы, либо в пользователях.

Пользователь с уровнем доступа CLUSTER может добавить пользователя только в организацию своего кластера.

Пользователь с уровнем доступа ORGANIZATION может добавить пользователя только в свою организацию.

В ответ пользователю возвращается номер тикета, по которому с помощью запроса /users/import/:ticket можно узнать статус импортирования.

Параметры

Входные данные

// 2.0+
{                                                                           
    "organization": {                                                       // организация
        "id": 99                                                            
    },                                                                      
    "role": {                                                               // роль необязательна, по умолчанию Пользователь организации;
                                                                            // возможные значения - Клиент, Пользователь,
                                                                            // Администратор организации, Инспектор организации
        "id": 7                                                             
    },                                                                      
    "type": {                                                               // тип пользователя
        "id": 1                                                             
    },                                                                      
    "tags": [                                                               // тэги
        {                                                                   
            "id": 5                                                         
        }                                                                   
    ],                                                                      
    "tracking": true,                                                       // включить трекинг (по умолчанию false)
                                                                            //
    "lines": "..."                                                          // список ФИО пользователей, разделённых переводом строки;
                                                                            // пустые строки, а также пробелы в начале и конце игнорируются
                                                                            //
    "users": [                                                              
        {                                                                   
            "id": 123,                                                      // id пользователя
            "login": "ivanov_ivan",                                         // логин
            "paswd": "qwerty123",                                           // пароль
            "fio": "Иванов И.И.",                                           // * ФИО пользователя
            "organization_id": 1,                                           // id основной организации
            "gis_editor_access": true,                                      // интеграция с ГИС редактором,
                                                                            // доступно только главному администратору
            "organization_ids": [                                           // массив id организаций пользователя
                1,                                                          
                132,                                                        
                232                                                         
            ],                                                              
            "role_id": 7,                                                   // id роли, по умолчанию 7 - Пользователь организации
            "type": {                                                       
                "id": 1                                                     // тип
            },                                                              
            "blocked": false,                                               // признак заблокированного пользователя
            "authentication_type": 0,                                       // тип аутентификации (0 - логин/пароль,
                                                                            // 1 - LDAP)
            "two_factor_auth": false,                                       // включена двухфакторная аутентификация
            "active_till": 1712984116                                       // срок действия учётной записи
            "avatar_file_name": "f71adbab-724f-47a1-996d-0e62062b006b.jpg"  // имя файла после загрузки на сервер
                                                                            // (jpg | jpeg)
            "tags": [                                                       // метки пользователя
                {                                                           
                    "id": 1                                                 
                },                                                          
                {                                                           
                    "id": 22                                                
                },                                                          
                ...                                                         // следующие элементы списка
            ],                                                              
            "email": "test@gmail.com",                                      // email
            "phone": "+7 999 888 7766",                                     // телефон
            "address": "г.Казань, ул.Назарбаева, д.25, кв.125",             // адрес
            "passport": "9205 999999",                                      // паспортные данные
            "tracking": true                                                // включить трекинг
        }                                                                   
    ]                                                                       
}                                                                           

http 200

// 2.0+
{                                                     
    "ticket": "3e875e7f-1788-42fd-b6a7-6e891909297b"  // идентификатор очереди
}                                                     

GET /rest/users/import/:ticket

Проверить статус создания пользователей.

Пользователь с уровнем доступа не ниже ORGANIZATION.

Параметры

http 200

// 2.0+
{                                                                      
    "total": 60,                                                       // общее количество ФИО, полученных от клиента
    "processed": 60,                                                   // количество обработанных пользователей (успешно или неуспешно)
    "failures": [                                                      // массив сообщений об ошибках
                                                                       // для пользователей, создание которых не удалось
        {                                                              
            "name": "Саша",                                            
            "message": "Пользователь с указанным фио уже существует."  
        }                                                              
    ],                                                                 
    "users": [                                                         // созданные пользователи
                                                                       // (только если showUsersWhenDone=true
                                                                       // и обработка импорта завершена)
        {                                                              
            "id": 123,                                                 
            "login": "ivanov_ivan",                                    
            "fio": "Иванов И.И.",                                      
            "type": {                                                  // тип
                "id": 1,                                               // id типа
                "title": "Пользователи"                                // название
            },                                                         
            "authentication_type": 0,                                  // тип аутентификации (0 - логин/пароль,
                                                                       // 1 - LDAP)
            "two_factor_auth": false,                                  // включена двухфакторная аутентификация
            "active_till": 1712984116                                  // срок действия учётной записи
            "last_authentication": 1605793362,                         // дата последней авторизации
            "active_till_local": "02.09.2024 12:00",                   // локальная дата окончания срока действия учётной записи
            "last_authentication_local": "25.03.2024 16:02",           // локальная дата последней авторизации
            "blocked": false,                                          // признак заблокированного пользователя
            "avatar_update_date": 1605793362,                          // дата обновления аватара
            "gis_editor_access": true,                                 // интеграция с ГИС редактором
            "invite": {                                                // последнее приглашение
                "id": 1051,                                            // id
                "key": "a3600ca4-ee35-1004-895f-b6c011bf8f3a",         // ключ
                "url": "https://active...",                            // url
                "creation_date": 1658304773,                           // дата создания
                "expires": 1658305090,                                 // дата окончания действия
                "expires_local": "01.01.2025 12:00",                   // локальная дата окончания срока действия
                "total": 5,                                            // максимальное количество попыток использования
                "attempts_left": 5                                     // оставшееся количество попыток использования
            },                                                         
            "system": false,                                           // системный пользователь
            "tags": [                                                  // метки пользователя
                {                                                      
                    "id": 1                                            // id метки
                },                                                     
                {                                                      
                    "id": 22                                           
                },                                                     
                ...                                                    // следующие элементы списка
            ],                                                         
            "organization_id": 1,                                      // id основной организации
            "clusters": [                                              // кластеры
                {                                                      
                    "id": 3,                                           // id кластера
                    "title": "Тестовый кластер"                        // название кластера
                }                                                      
            ],                                                         
            "organization_ids": [                                      // массив id организаций пользователя
                1,                                                     
                132,                                                   
                232                                                    
            ],                                                         
            "role_id": 7,                                              // id роли
            "role": {                                                  
                "id": 7,                                               // id роли
                "name": "Пользователь",                                // название роли
                "code": "ORG_USER",                                    // код роли
                "level": "SELF",                                       // уровень доступа
                "visibility_level": "EXTENDED",                        // уровень видимости
                "privileges": {                                        // значения привилегий
                    "create_task": true                                
                },                                                     
                "cluster": {                                           // кластер
                    "id": 1,                                           
                    "title": "По умолчанию"                            
                }                                                      
            },                                                         
            "role_deleted": false,                                     // удалена роль или нет
            "email": "test@gmail.com",                                 // адрес электронной почты
            "address": "г.Казань, ул.Назарбаева, д.25, кв.125",        // адрес
            "passport": "9205 999999",                                 // паспортные данные
            "phone": "+7 999 888 7766",                                // телефон
            "tracking": true,                                          // включен ли трекинг
            "glonass_id": 1450,                                        // ГЛОНАСС-id для трекинга
            "message_channel_id": 99                                   // канал входящих сообщений
        }                                                              
    ]                                                                  
}                                                                      

/rest/types

GET /rest/types

Получение списка доступных текущему пользователю видов работ.

Параметры

Знаком + помечены поля, для которых можно указывать список значений, разделённых запятой. Например, groupId=1,2.

/types
/types?search=доставка&defaultType=true&ltPeriodOfReviewInSec=172800
/types?search=доставка&defaultType=false&gtPeriodOfReviewInSec=86400&deadlineType=1&groupId=1,2
/types?defaultType=false&deadlineType=1&groupId=1,2&sortBy=order_key&sortDirecton=DESC
/types?defaultType=false&deadlineType=1&gtPeriodOfReviewInSec=86400&ltPeriodOfReviewInSec=172800&groupId=1,2

http 200

// 2.0+
{                                             
    "count": 20,                              // количество видов работ, удовлетворяющих
                                              // условиям поиска и фильтрации
    "items": [                                
        {                                     
            "id": 12,                         // id вида работ
            "name": "Обрушение конструкции",  // название вида работ
            "icon": "icon_12.png",            // файл пиктограммы
            "default": true,                  // является ли данный вид
                                              // видом по умолчанию
            "period_of_review_in_sec": null,  // величина срока исполнения работ данного
                                              // вида работ по умолчанию (в секундах)
            "deadline_type": "AT_CREATE",     // поле для расчета срока исполнения
                                              // работ данного вида:
                                              // null,
                                              // от даты создания "AT_CREATE",
                                              // от даты назначения на исполнителя
                                              // "AT_UPDATE".
            "role_ids": [                     // массив ролей
                5                             
            ],                                
            "organizations": [                // массив id организаций,
                                              // которым доступен вид работ
                1,                            
                2,                            
                3                             
            ],                                
            "order_key": 3,                   // порядковый номер вида работ
                                              // в отсортированном списке
            "cluster": {                      // кластер
                "id": 2184,                   // id кластера
                "title": "Тестовый кластер"   // название кластера
            },                                
            "group_id": null                  // id группы, которой принадлежит
                                              // вид работ, и null,
                                              // если он не принадлежит никакой группе
        },                                    
        ...                                   // следующие элементы списка видов работ
    ]                                         
}                                             

Более подробно о времени истечения срока исполнения видов работ можно прочитать здесь: Время истечения срока в часах

Более подробно о сортировке видов работ можно прочитать здесь: Сортировка видов работ

Более подробно о группировке видов работ можно прочитать здесь: Группировка видов работ

GET /rest/types/compressed

Получение списка доступных текущему пользователю видов работ с учетом доступности вида работ организациям:

Пользователи с уровнем доступа GLOBAL видят все виды работ.

Пользователи с уровнем доступа CLUSTER:

Прочие пользователи видят:

Параметры

Знаком + помечены поля, для которых можно указывать список значений, разделённых запятой. Например, groupId=1,2.

Примечания:

В независимости от значения настройки behavior.use.custom.work.types.sort=true/false в application.conf, если параметры сортировки sortBy, sortDirection переданы, то сортировка ведется по ним. Если параметры sortBy, sortDirection не переданы и behavior.use.custom.work.types.sort=true, то сортировка будет вестись по полю order_key с направлением ASC. Если параметры sortBy, sortDirection не переданы и behavior.use.custom.work.types.sort=false, то сортировка будет вестись по полю id с направлением ASC.

/types/compressed
/types/compressed?search=доставка&defaultType=true&ltPeriodOfReviewInSec=172800
/types/compressed?search=доставка&defaultType=false&gtPeriodOfReviewInSec=86400&deadlineType=1&groupId=1,2
/types/compressed?defaultType=false&deadlineType=1&groupId=1,2&sortBy=order_key&sortDirecton=DESC

/types/compressed?defaultType=false&deadlineType=1&gtPeriodOfReviewInSec=86400&ltPeriodOfReviewInSec=172800&groupId=1,2

http 200

// 2.0+
{                                             
    "count": 20,                              // количество видов работ, удовлетворяющих
                                              // условиям поиска и фильтрации
    "items": [                                
        {                                     
            "id": 12,                         // id вида работ
            "name": "Обрушение конструкции",  // название вида работ
            "icon": "icon_12.png",            // файл пиктограммы
            "default": true,                  // является ли данный вид
                                              // видом по умолчанию
            "period_of_review_in_sec": null,  // величина срока исполнения работ данного
                                              // вида работ по умолчанию (в секундах)
            "deadline_type": "AT_CREATE",     // поле для расчета срока исполнения
                                              // работ данного вида:
                                              // null,
                                              // от даты создания "AT_CREATE",
                                              // от даты назначения на исполнителя
                                              // "AT_UPDATE".
            "role_ids": [                     // массив ролей
                5                             
            ],                                
            "organizations": [                
            ],                                // массив id организаций, которым доступен вид работ, в данном запросе будет пустым
            "included_organizations": [       // массив id организаций,
                                              // которым доступен вид работ
                1,                            
                2,                            
                3                             
            ],                                
            "excluded_organizations": [       
            ],                                // массив id организаций, которым не доступен вид работ
            "order_key": 3,                   // порядковый номер вида работ
                                              // в отсортированном списке
            "cluster": {                      // кластер
                "id": 2184,                   // id кластера
                "title": "Тестовый кластер"   // название кластера
            },                                
            "group_id": null                  // id группы, которой принадлежит
                                              // вид работ, и null,
                                              // если он не принадлежит никакой группе
        },                                    
        ...                                   // следующие элементы списка видов работ
    ]                                         
}                                             

Более подробно о времени истечения срока исполнения видов работ можно прочитать здесь: Время истечения срока в часах

Более подробно о сортировке видов работ можно прочитать здесь: Сортировка видов работ

Более подробно о группировке видов работ можно прочитать здесь: Группировка видов работ

POST /rest/types/sort

Ручная сортировка видов работ в порядке, заданном в теле запроса.

Пользователь с привилегией Сортировать виды работ и уровнем доступа GLOBAL.

Входные данные

// 2.0+
{             
    "ids": [  // id видов работ в отсортированном порядке
        12,   
        1,    
        3,    
        6,    
        2,    
        5     
    ]         
}             

http 200

// 2.0+
{                                                    
    "items": [                                       
        {                                            
            "id": 12,                                // id вида
            "name": "Обрушение конструкции",         // название вида
            "map_icon_done": "map_icon_done_1.png",  // название иконки для этапа "выполнено" на карте
            "default": true,                         // является ли данный вид видом
                                                     // по умолчанию
            "period_of_review_in_sec": null,         // величина срока исполнения работ
                                                     // данного вида по умолчанию (в секундах)
            "deadline_type": "AT_CREATE",            // поле для расчета срока исполнения работ
                                                     // данного вида: null, от даты создания
                                                     // "AT_CREATE", от даты назначения
                                                     // на исполнителя "AT_UPDATE".
            "role_ids": [                            // массив ролей
                5                                    
            ],                                       
            "organizations": [                       // массив id организаций,
                                                     // которым доступен вид
                1,                                   
                2,                                   
                3                                    
            ],                                       
            "order_key": 3,                          // порядковый номер видов работ
                                                     // в отсортированном списке
            "cluster": {                             // кластер
                "id": 2184,                          // id кластера
                "title": "Тестовый кластер"          // название кластера
            },                                       
            "group_id": null                         // id группы, которой принадлежит вид,
                                                     // и null, если вид не принадлежит
                                                     // никакой группе
        },                                           
        ...                                          // следующие элементы списка видов работ
                                                     // в заданном порядке сортировки
    ]                                                
}                                                    

GET /rest/types/groups/list

Получить список всех групп видов работ.

Параметры

http 200

// 2.0+
{                                            
    "items": [                               
        {                                    
            "id": 41,                        // id группы
            "name": "название группы"        // название группы
            "cluster": {                     // кластер
                "id": 2184,                  // id кластера
                "title": "Тестовый кластер"  // название кластера
            },                               
        },                                   
        ...                                  // следующие элементы списка групп
    ]                                        
}                                            

POST /rest/types/groups

Создание новой группы видов работ.

Пользователь с привилегией Создать вид работ и уровнем доступа не ниже CLUSTER.

Пользователь с уровнем доступа CLUSTER может создать только локальную группу видов работ внутри своего кластера.

Входные данные

// 2.0+
{                               
    "name": "название группы",  // * название группы
    "cluster": {                // кластер
        "id": 64                
    }                           
}                               

http 200

// 2.0+
{                                    
    "id": 208,                       // id группы
    "name": "название группы",       // название группы
    "cluster": {                     // кластер
        "id": 2184,                  // id кластера
        "title": "Тестовый кластер"  // название кластера
    },                               
}                                    

GET /rest/types/groups/:id

Получение группы видов работ.

http 200

// 2.0+
{                                    
    "id": 208,                       // id группы
    "name": "название группы",       // название группы
    "cluster": {                     // кластер
        "id": 2184,                  // id кластера
        "title": "Тестовый кластер"  // название кластера
    },                               
}                                    

PATCH /rest/types/groups/:id

Изменение группы видов работ.

Пользователь с привилегией Редактировать вид работ и уровнем доступа не ниже CLUSTER.

Пользователь с уровнем доступа CLUSTER может редактировать локальную группу видов работ своего кластера.

Входные данные

// 2.0+
{                                         
    "name": "измененное название группы"  // название группы
}                                         

http 200

// 2.0+
{                                          
    "id": 208,                             // id группы
    "name": "измененное название группы",  // название группы
    "cluster": {                           // кластер
        "id": 2184,                        // id кластера
        "title": "Тестовый кластер"        // название кластера
    },                                     
}                                          

DELETE /rest/types/groups/:id

Удаление группы видов работ.

Пользователь с привилегией Удалить вид работ и уровнем доступа не ниже CLUSTER.

Пользователь с уровнем доступа CLUSTER может удалять только локальные группы видов работ своего кластера.

POST /rest/types

Создание вида работ.

Пользователь с привилегией Создать вид работ и уровнем доступа не ниже CLUSTER.

Пользователь с уровнем доступа CLUSTER может создать только локальный вид работ внутри своего кластера.

Входные данные

// 2.0+
{                                                           
    "name": "Доставка техники",                             // * название вида работ
    "icon": "icon_158.png",                                 // * название двумерной иконки, иконка
                                                            // по умолчанию - "default_icon.png"
    "map_icon": "default_iconmap.png",                      // * название иконки для карты, иконка
                                                            // по умолчанию - "default_iconmap.png"
    "map_icon_highlight": "default_iconmap_highlight.png",  // * название увеличенной иконки для карты,
                                                            // иконка по умолчанию -
                                                            // "default_iconmap_highlight.png"
    "type_default": false,                                  // * является ли данный вид видом
                                                            // по умолчанию
    "period_of_review_in_sec": 172800,                      // величина срока исполнения работ
                                                            // данного вида по умолчанию (в секундах)
    "deadline_type": "AT_CREATE",                           // * поле для расчета срока исполнения
                                                            // работ данного вида: от даты
                                                            // создания "AT_CREATE", от даты
                                                            // назначения на исполнителя "AT_UPDATE".
    "organizations": [                                      // массив id организаций,
                                                            // которым доступен вид
        2,                                                  
        3                                                   
    ],                                                      
    "group_id": 22,                                         // id группы, которой принадлежит вид,
                                                            // и null, если вид не принадлежит
                                                            // никакой группе
    "stickers": {                                           // стикеры
        "add": [                                            // стикеры, которые необходимо добавить
            {                                               
                "id": 1                                     // id
            },                                              
            ...                                             // следующие элементы списка
        ]                                                   
    },                                                      
    "bindings": {                                           // связь поля с видом работ
        "add": [                                            
            {                                               
                "on": true,                                 // включена связь с видом работ или нет, по умолчанию true
                "field": {                                  // настраиваемое поле
                    "id": 1,                                
                    ...                                     // атрибуты, которые нужно модифицировать в поле
                },                                          
                "master_field": {                           // связанное поле
                    "id": 181343,                           // id связанного поля
                    "blocking": false                       // требуется ли сначала заполнение связанного поля
                },                                          
                "rules": [                                  // правила видимости
                    {                                       
                        "visible_by_default": true,         // видимо поле или нет по умолчанию
                        "visible_inverted_for_roles": [     // id ролей, для которых видимость инвертирована
                            6                               
                        ]                                   
                    }                                       
                ]                                           
            }                                               
        ]                                                   
    },                                                      
    "role_ids": [                                           // массив ролей
        5                                                   
    ],                                                      
    "cluster": {                                            // кластер
        "id": 64                                            
    }                                                       
}                                                           

http 200

// 2.0+
{                                                                   
    "id": 1325,                                                     // id вида
    "name": "Доставка оборудования",                                // название вида
    "order_key": null,                                              // порядок сортировки
    "icon": "icon_158.png",                                         // файл пиктограммы
    "default": false,                                               // является ли данный вид
                                                                    // видом по умолчанию
    "period_of_review_in_sec": 172800,                              // величина срока исполнения работ
                                                                    // данного вида по умолчанию
                                                                    // (в секундах)
    "deadline_type": "AT_CREATE",                                   // поле для расчета срока исполнения
                                                                    // работ данного вида: от даты
                                                                    // создания "AT_CREATE", от даты
                                                                    // назначения на исполнителя
                                                                    // "AT_UPDATE".
    "role_ids": [                                                   // массив ролей
        5                                                           
    ],                                                              
    "organizations": [                                              // массив id организаций,
                                                                    // которым доступен вид
        2,                                                          
        3                                                           
    ],                                                              
    "cluster": {                                                    // кластер
        "id": 2184,                                                 // id кластера
        "title": "Тестовый кластер"                                 // название кластера
    },                                                              
    "fields": [                                                     // список измененных полей
        {                                                           
            "id": 12364,                                            
            "name": "t1",                                           
            "translit": "t1_2a640f9c-f78d-1004-89ea-342585ab9390",  
            "format": "composite",                                  
            "group_name": "",                                       
            "possible_values": "",                                  
            "regexp": "",                                           
            "min_length": 0,                                        
            "max_length": 0,                                        
            "is_required": false,                                   
            "default_value": null,                                  
            "visible": true,                                        
            "system": false,                                        
            "is_for_all": false,                                    
            "order": 82,                                            
            "cluster": null,                                        
            "table_id": null,                                       
            "multiselect": null,                                    
            "allow_add_num": null,                                  
            "min_count": 1,                                         
            "max_count": 1,                                         
            "min_size": null,                                       
            "max_size": null,                                       
            "auto_apply_sticker": false,                            
            "device_gallery_enabled_by_default": true,              
            "device_gallery_enabled_inverted_for_roles": [          
                6                                                   
            ],                                                      
            "file_semantics": null,                                 
            "file_types": null,                                     
            "bindings": [                                           
                {                                                   
                    "id": 2084,                                     
                    "on": true,                                     
                    "master_field": {                               // связанное поле
                        "id": 181343,                               // id связанного поля
                        "blocking": false                           // требуется ли сначала заполнение связанного поля
                    },                                              
                    "type": {                                       
                        "id": 5445                                  
                    },                                              
                    "rules": [                                      
                        {                                           
                            "id": 742,                              
                            "visible_by_default": true,             
                            "visible_inverted_for_roles": [         
                                5                                   
                            ]                                       
                        }                                           
                    ]                                               
                }                                                   
            ],                                                      
            "sticker_ids": null,                                    
            "type_ids": [                                           
                5445                                                
            ],                                                      
            "subfields": []                                         
        }                                                           
    ],                                                              
    "group_id": 22                                                  // id группы, которой принадлежит
                                                                    // вид, или null, если вид не
                                                                    // принадлежит никакой группе
}                                                                   

GET /rest/types/:id

Получение вида работ по указанному id.

http 200

// 2.0+
{                                       
    "id": 1325,                         // id вида
    "name": "Доставка оборудования",    // название вида работ
    "order_key": null,                  // порядок сортировки
    "icon": "icon_158.png",             // файл пиктограммы
    "default": false,                   // является ли данный вид видом
                                        // по умолчанию
    "period_of_review_in_sec": 172800,  // величина срока исполнения работ
                                        // данного вида по умолчанию
                                        // (в секундах)
    "deadline_type": "AT_CREATE",       // поле для расчета срока исполнения
                                        // работ данного вида: от даты
                                        // создания "AT_CREATE", от даты
                                        // назначения на исполнителя
                                        // "AT_UPDATE".
    "role_ids": [                       // массив ролей
        5                               
    ],                                  
    "organizations": [                  // массив id организаций,
                                        // которым доступен вид
        2,                              
        3                               
    ],                                  
    "cluster": {                        // кластер
        "id": 2184,                     // id кластера
        "title": "Тестовый кластер"     // название кластера
    },                                  
    "group_id": 22                      // id группы, которой принадлежит
                                        // вид, или null, если вид не
                                        // принадлежит никакой группе
}                                       

PATCH /rest/types/:id

Изменение вида работ.

Пользователь с привилегией Редактировать вид работ и уровнем доступа не ниже CLUSTER.

Пользователь с уровнем доступа CLUSTER может редактировать локальный вид работ своего кластера и глобальный вид работ, если при этом он только привязывает или отвязывает организации/стикеры/настраиваемые поля своего кластера.

Входные данные

// 2.0+
{                                                            
    "name": "Доставка оборудования",                         // название вида
    "icon": "icon_158.png",                                  // название двумерной иконки
    "map_icon": "default_iconmap.png",                       // название иконки для карты
    "map_icon_highlight": "default_iconmap_highlight.png",   // название увеличенной иконки для карты
    "type_default": false,                                   // является ли данный вид работ видом
                                                             // по умолчанию
    "period_of_review_in_sec": 172800,                       // величина срока исполнения работ
                                                             // данного вида по умолчанию (в секундах)
    "deadline_type": "AT_CREATE",                            // поле для расчета срока исполнения
                                                             // работ данного вида: от даты
                                                             // создания "AT_CREATE", от даты
                                                             // назначения на исполнителя
                                                             // "AT_UPDATE".
    "organizations": [                                       // массив id организаций,
                                                             // которым доступен вид
        2,                                                   
        3                                                    
    ],                                                       
    "stickers": {                                            // стикеры
        "add": [                                             // стикеры, которые необходимо добавить
            {                                                
                "id": 1                                      // id
            },                                               
            ...                                              // следующие элементы списка
        ],                                                   
        "remove": [                                          // стикеры, которые необходимо удалить
            {                                                
                "id": 2                                      // id
            },                                               
            ...                                              // следующие элементы списка
        ]                                                    
    },                                                       
    "bindings": {                                            // связь поля с видом работ
        "add": [                                             
            {                                                
                "field": {                                   // настраиваемое поле
                    "id": 1,                                 
                    ...                                      // атрибуты, которые нужно модифицировать в поле
                },                                           
                "on": true,                                  // включена связь с видом работ или нет
                "master_field": {                            // связанное поле
                    "id": 181343,                            // id связанного поля
                    "blocking": false                        // требуется ли сначала заполнение связанного поля
                },                                           
                "rules": [                                   // правила видимости
                    {                                        
                        "visible_by_default": true,          // видимо поле или нет по умолчанию
                        "visible_inverted_for_roles": [      // id ролей, для которых видимость инвертирована
                            6                                
                        ]                                    
                    }                                        
                ]                                            
            }                                                
        ],                                                   
        "update": [                                          
            {                                                
                "field": {                                   // настраиваемое поле
                    "id": 1,                                 
                    ...                                      // атрибуты, которые нужно модифицировать в поле
                },                                           
                "on": true,                                  // включена связь с видом работ или нет
                "master_field": {                            // связанное поле
                    "id": 181343,                            // id связанного поля
                    "blocking": false                        // требуется ли сначала заполнение связанного поля
                },                                           
                "rules": {                                   // правила видимости
                    "add": [                                 
                        {                                    
                            "visible_by_default": true,      // видимо поле или нет по умолчанию
                            "visible_inverted_for_roles": [  // id ролей, для которых видимость инвертирована
                                6                            
                            ]                                
                        }                                    
                    ],                                       
                    "update": [                              
                        {                                    
                            "id": 6,                         // id правила видимости
                            "visible_by_default": true,      // видимо поле или нет по умолчанию
                            "visible_inverted_for_roles": [  // id ролей, для которых видимость инвертирована
                                6                            
                            ]                                
                        }                                    
                    ],                                       
                    "remove": [                              // id правила видимости
                        {                                    
                            "id": 6                          
                        }                                    
                    ]                                        
                }                                            
            }                                                
        ],                                                   
        "remove": [                                          
            {                                                
                "field": {                                   // настраиваемое поле
                    "id": 1                                  
                }                                            
            }                                                
        ]                                                    
    },                                                       
    "role_ids": [                                            // массив ролей
        5                                                    
    ],                                                       
    "group_id": 22                                           // id группы, которой принадлежит
                                                             // вид, или null (либо 0), если вид не
                                                             // принадлежит никакой группе
}                                                            

http 200

// 2.0+
{                                                                   
    "id": 1325,                                                     // id вида
    "name": "Доставка оборудования",                                // название вида
    "order_key": null,                                              // порядок сортировки
    "icon": "icon_158.png",                                         // название двумерной иконки
    "map_icon": "default_iconmap.png",                              // название иконки для карты
    "map_icon_highlight": "default_iconmap_highlight.png",          // название увеличенной иконки
                                                                    // для карты
    "default": false,                                               // является ли данный вид
                                                                    // видом по умолчанию
    "period_of_review_in_sec": 172800,                              // величина срока исполнения работ
                                                                    // данного вида по умолчанию
                                                                    // (в секундах)
    "deadline_type": "AT_CREATE",                                   // поле для расчета срока исполнения
                                                                    // работ данного вида:
                                                                    // от даты создания "AT_CREATE",
                                                                    // от даты назначения на исполнителя
                                                                    // "AT_UPDATE".
    "role_ids": [                                                   // массив ролей
        5                                                           
    ],                                                              
    "organizations": [                                              // массив id организаций,
                                                                    // которым доступен вид
        2,                                                          
        3                                                           
    ],                                                              
    "cluster": {                                                    // кластер
        "id": 2184,                                                 // id кластера
        "title": "Тестовый кластер"                                 // название кластера
    },                                                              
    "fields": [                                                     // список измененных полей
        {                                                           
            "id": 12364,                                            
            "name": "t1",                                           
            "translit": "t1_2a640f9c-f78d-1004-89ea-342585ab9390",  
            "format": "composite",                                  
            "group_name": "",                                       
            "possible_values": "",                                  
            "regexp": "",                                           
            "min_length": 0,                                        
            "max_length": 0,                                        
            "is_required": false,                                   
            "default_value": null,                                  
            "visible": true,                                        
            "system": false,                                        
            "is_for_all": false,                                    
            "order": 82,                                            
            "cluster": null,                                        
            "table_id": null,                                       
            "multiselect": null,                                    
            "allow_add_num": null,                                  
            "min_count": 1,                                         
            "max_count": 1,                                         
            "min_size": null,                                       
            "max_size": null,                                       
            "auto_apply_sticker": false,                            
            "device_gallery_enabled_by_default": true,              
            "device_gallery_enabled_inverted_for_roles": [          
                6                                                   
            ],                                                      
            "file_semantics": null,                                 
            "file_types": null,                                     
            "bindings": [                                           
                {                                                   
                    "id": 2084,                                     
                    "on": true,                                     
                    "master_field": {                               // связанное поле
                        "id": 181343,                               // id связанного поля
                        "blocking": false                           // требуется ли сначала заполнение связанного поля
                    },                                              
                    "type": {                                       
                        "id": 5445                                  
                    },                                              
                    "rules": [                                      
                        {                                           
                            "id": 742,                              
                            "visible_by_default": true,             
                            "visible_inverted_for_roles": [         
                                5                                   
                            ]                                       
                        }                                           
                    ]                                               
                }                                                   
            ],                                                      
            "sticker_ids": null,                                    
            "type_ids": [                                           
                5445                                                
            ],                                                      
            "subfields": []                                         
        }                                                           
    ],                                                              
    "group_id": 22                                                  // id группы, которой принадлежит
                                                                    // вид, или null, если вид не
                                                                    // принадлежит никакой группе
}                                                                   

DELETE /rest/types/:id

Удаление вида работ.

Пользователь с привилегией Удалить вид работ и уровнем доступа не ниже CLUSTER.

Пользователь с уровнем доступа CLUSTER может удалять только локальные виды работ своего кластера.

/rest/statuses

POST /rest/statuses

Создать этап.

Пользователь с привилегией Создать этап и уровнем доступа не ниже CLUSTER.

Пользователь с уровнем доступа CLUSTER может создать только локальный этап внутри своего кластера.

Создать локальный этап внутри кластера можно только если этот кластер изолирован.

// 2.0+
{                            
    "name": "рассмотрение",  // * название этапа
    "visible": true,         // * видимость этапа пользователям в списке этапов
    "default": false,        // * является ли данный этап этапом по умолчанию
    "closed": false,         // * является ли данный этап этапом выполнено
    "cluster": {             // кластер
        "id": 62286          // id кластера
    },                       
    "color": "000000"        // цвет этапа
}                            

http 200

// 2.0+
{                                    
    "id": 1,                         // id этапа
    "no": 1,                         // номер этапа
    "name": "рассмотрение",          // название этапа
    "visible": true,                 // видимость этапа пользователям в списке этапов
    "default": false,                // является ли данный этап этапом по умолчанию
    "closed": false,                 // является ли данный этап этапом выполнено
    "cluster": {                     // кластер
        "id": 62286,                 // id кластера
        "title": "Тестовый кластер"  // название кластера
    },                               
    "color": "000000",               // цвет этапа
    "order": 5                       // порядковый номер,
                                     // назначается автоматически
}                                    

GET /rest/statuses

Получение списка видимых этапов заданий.

Параметры

http 200

// 2.0+
{                                            
    "count": 10,                             // количество этапов, удовлетворяющих заданным
                                             // условиям поиска и фильтрации
    "items": [                               
        {                                    
            "id": 1,                         // id этапа
            "no": 1,                         // номер этапа
            "name": "рассмотрение",          // название этапа
            "visible": true,                 // видимость этапа пользователям в списке этапов
            "default": true,                 // является ли данный этап этапом по умолчанию
            "closed": false,                 // является ли данный этап этапом выполнено
            "cluster": {                     // кластер
                "id": 62286,                 // id кластера
                "title": "Тестовый кластер"  // название кластера
            },                               
            "color": "000000",               // цвет этапа
            "order": 5                       // порядковый номер,
                                             // назначается автоматически
        },                                   
        ...                                  // следующие элементы списка этапов
    ]                                        
}                                            

GET /rest/statuses/list/all

Любой авторизованный пользователь.

Получение списка этапов заданий.

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

http 200

// 2.0+
{                                            
    "count": 10,                             // количество этапов, удовлетворяющих заданным
                                             // условиям поиска и фильтрации
    "items": [                               
        {                                    
            "id": 1,                         // id этапа
            "no": 1,                         // номер этапа
            "name": "рассмотрение",          // название этапа
            "visible": true,                 // видимость этапа пользователям в списке этапов
            "default": true,                 // является ли данный этап этапом по умолчанию
            "closed": false,                 // является ли данный этап этапом выполнено
            "cluster": {                     // кластер
                "id": 62286,                 // id кластера
                "title": "Тестовый кластер"  // название кластера
            },                               
            "color": "000000",               // цвет этапа
            "order": 5                       // порядковый номер,
                                             // назначается автоматически
        },                                   
        ...                                  // следующие элементы списка этапов
    ]                                        
}                                            

POST /rest/statuses/sort

Ручная сортировка этапов.

Пользователь с привилегией Сортировать этапы и уровнем доступа не ниже CLUSTER.

Пользователь с уровнем доступа CLUSTER может сортировать только локальные этапы в своём кластере.

Этапы рассматриваются вместе в группе. Есть группа глобальных этапов, есть группы кластерных этапов. Сортировать этапы можно только в рамках группы. При этом нужно передать id всех этапов в группе, включая невидимые (visible = false). Если переданы не все этапы, один этап передан несколько раз - это 400 bad request. Если переданы этапы из нескольких групп - это 403 forbidden.

// 2.0+
{             
    "ids": [  // id этапов в отсортированном порядке
        12,   
        1,    
        3,    
        6,    
        2,    
        5     
    ]         
}             

http 200

// 2.0+
{                                            
    "items": [                               
        {                                    
            "id": 12,                        // id этапа
            "no": 1,                         // номер этапа
            "name": "рассмотрение",          // название этапа
            "visible": true,                 // видимость этапа пользователям в списке этапов
            "default": true,                 // является ли данный этап этапом по умолчанию
            "closed": false,                 // является ли данный этап этапом выполнено
            "cluster": {                     // кластер
                "id": 62286,                 // id кластера
                "title": "Тестовый кластер"  // название кластера
            },                               
            "color": "000000",               // цвет этапа
            "order": 5                       // порядковый номер
        },                                   
        ...                                  // следующие элементы списка этапов
                                             // в заданном порядке сортировки
    ]                                        
}                                            

PATCH /rest/statuses/:id

Изменить этап.

Пользователь с привилегией Редактировать этап и уровнем доступа не ниже CLUSTER.

Пользователь с уровнем доступа CLUSTER может редактировать только локальный этап своего кластера.

// 2.0+
{                                      
    "name": "подробное рассмотрение",  // название этапа
    "visible": false,                  // видимость этапа пользователям в списке этапов
    "default": false,                  // является ли данный этап этапом по умолчанию
    "closed": true,                    // является ли данный этап этапом выполнено
    "color": "000000"                  // цвет этапа
}                                      

http 200

// 2.0+
{                                      
    "id": 1,                           // id этапа
    "no": 1,                           // номер этапа
    "name": "подробное рассмотрение",  // название этапа
    "visible": false,                  // видимость этапа пользователям в списке этапов
    "default": false,                  // является ли данный этап этапом по умолчанию
    "closed": true,                    // является ли данный этап этапом выполнено
    "cluster": {                       // кластер
        "id": 62286,                   // id кластера
        "title": "Тестовый кластер"    // название кластера
    },                                 
    "color": "000000",                 // цвет этапа
    "order": 5                         // порядковый номер,
                                       // назначается автоматически
}                                      

DELETE /rest/statuses/:id

Удалить этап.

Пользователь с привилегией Удалить этап и уровнем доступа не ниже CLUSTER.

Пользователь с уровнем доступа CLUSTER может удалять только локальные этапы своего кластера.

/rest/priorities

GET /rest/priorities/groups/list

Получить список групп приоритетов.

Параметры запроса

http 200

// 2.0+
{                                   
    "count": 10,                    // количество групп приоритетов
    "items": [                      
        {                           
            "id": 1,                // id
            "name": "test",         // название
            "cluster": {            // кластер
                "id": 3,            // id кластера
                "title": "Кластер"  // название кластера
            }                       
        },                          
        ...                         // следующие элементы списка
    ]                               
}                                   

GET /rest/priorities/groups/:id

Получить группу приоритетов.

http 200

// 2.0+
{                           
    "id": 1,                // id
    "name": "test",         // название
    "cluster": {            // кластер
        "id": 3,            // id кластера
        "title": "Кластер"  // название кластера
    }                       
}                           

POST /rest/priorities/groups

Создать группу приоритетов.

Пользователь с привилегией Создать приоритет и уровнем доступа не ниже CLUSTER.

Пользователь с уровнем доступа CLUSTER может создать только локальную группу приоритетов внутри своего кластера.

// 2.0+
{                    
    "name": "test",  // название
    "cluster": {     // кластер
        "id": 3      // id кластера
    }                
}                    

http 200

// 2.0+
{                           
    "id": 1,                // id
    "name": "test",         // название
    "cluster": {            // кластер
        "id": 3,            // id кластера
        "title": "Кластер"  // название кластера
    }                       
}                           

PATCH /rest/priorities/groups/:id

Изменить группу приоритетов.

Пользователь с привилегией Редактировать приоритет и уровнем доступа не ниже CLUSTER.

Пользователь с уровнем доступа CLUSTER может редактировать локальную группу приоритетов своего кластера.

// 2.0+
{                   
    "name": "test"  // название
}                   

http 200

// 2.0+
{                           
    "id": 1,                // id
    "name": "test",         // название
    "cluster": {            // кластер
        "id": 3,            // id кластера
        "title": "Кластер"  // название кластера
    }                       
}                           

DELETE /rest/priorities/groups/:id

Удалить группу приоритетов.

Пользователь с привилегией Удалить приоритет и уровнем доступа не ниже CLUSTER.

Пользователь с уровнем доступа CLUSTER может удалять только локальные группы приоритетов своего кластера.

GET /rest/priorities

Получение списка приоритетов заданий.

Параметры запроса

/priorities
/priorities?search=test

http 200

// 2.0+
{                                            
    "count": 10,                             // количество приоритетов заданий,
                                             // удовлетворяющих заданным условиям поиска и сортировки
    "items": [                               
        {                                    
            "id": 1,                         // id приоритета
            "name": "Плановые",              // название
            "icon": "priority_1.png",        // имя файла пиктограммы
            "cluster": {                     // кластер
                "id": 2184,                  // id кластера
                "title": "Тестовый кластер"  // название кластера
            },                               
            "group": {                       // группа
                "id": 21,                    // id группы
                "name": "test"               // название группы
            },                               
            "order_important": 1             // порядковый номер для сортировки
        },                                   
        ...                                  // следующие элементы списка приоритетов
    ]                                        
}                                            

POST /rest/priorities/sort

Ручная сортировка приоритетов.

Пользователь с привилегией Сортировать приоритеты и уровнем доступа не ниже CLUSTER.

Пользователь с уровнем доступа CLUSTER может сортировать только локальные приоритеты своего кластера.

Приоритеты рассматриваются вместе в группе. Есть группа глобальных приоритетов, есть группы кластерных приоритетов. Сортировать приоритеты можно только в рамках группы. При этом нужно передать id всех приоритетов в группе, включая невидимые (visible = false). Если переданы не все приоритеты, один приоритет передан несколько раз - это 400 bad request. Если переданы приоритеты из нескольких групп - это 403 forbidden.

Входные данные

// 2.0+
{             
    "ids": [  
        39,   
        1,    
        2,    
        3     
    ]         
}             

http 200

// 2.0+
{                                                                
    "items": [                                                   
        {                                                        // отсортированный список приоритетов
            "id": 39,                                            
            "name": "test",                                      
            "icon": "f2761b20-db3a-1004-86b0-68c8f55ace7c.png",  
            "cluster": {                                         // кластер
                "id": 2184,                                      // id кластера
                "title": "Тестовый кластер"                      // название кластера
            },                                                   
            "group": {                                           // группа
                "id": 21,                                        // id группы
                "name": "test"                                   // название группы
            },                                                   
            "order_important": 1                                 
        },                                                       
        {                                                        
            "id": 1,                                             
            "name": "Плановые",                                  
            "icon": "priority_9_20140327111133.png",             
            "cluster": {                                         // кластер
                "id": 2184,                                      // id кластера
                "title": "Тестовый кластер"                      // название кластера
            },                                                   
            "group": {                                           // группа
                "id": 21,                                        // id группы
                "name": "test"                                   // название группы
            },                                                   
            "order_important": 2                                 
        },                                                       
        ...                                                      // следующие элементы списка
    ]                                                            
}                                                                

POST /rest/priorities

Создать приоритет.

Пользователь с привилегией Создать приоритет и уровнем доступа не ниже CLUSTER.

Пользователь с уровнем доступа CLUSTER может создать только локальный приоритет внутри своего кластера.

Поле icon имеет значение по умолчанию default_category.png.

Поле order_important будет заполнено автоматически, путем вычисления следующего, наибольшего числового значения.

// 2.0+
{                                                   
    "name": "Плановые",                             // * название приоритета
    "cluster": {                                    // кластер
        "id": 64                                    
    },                                              
    "group": {                                      // группа
        "id": 21                                    // id группы
    },                                              
    "icon": "csnkjnvkd-vjskdnf-vdfnk-vndkjnkl.png"  // имя файла пиктограммы
                                                    // после загрузки на сервер
                                                    // через POST /files
}                                                   

http 200

// 2.0+
{                                                    
    "id": 1,                                         // id приоритета
    "name": "Плановые",                              // название
    "icon": "csnkjnvkd-vjskdnf-vdfnk-vndkjnkl.png",  // имя файла пиктограммы
    "cluster": {                                     // кластер
        "id": 2184,                                  // id кластера
        "title": "Тестовый кластер"                  // название кластера
    },                                               
    "group": {                                       // группа
        "id": 21,                                    // id группы
        "name": "test"                               // название группы
    },                                               
    "order_important": 7                             // порядковый номер для сортировки
}                                                    

PATCH /rest/priorities/:id

Изменить приоритет.

Пользователь с привилегией Редактировать приоритет и уровнем доступа не ниже CLUSTER.

Пользователь с уровнем доступа CLUSTER может редактировать локальный приоритет своего кластера.

// 2.0+
{                                                   
    "name": "Внеплановые",                          // название приоритета
    "group": {                                      // группа
        "id": 21                                    // id группы
    },                                              
    "icon": "csnkjnvkd-vjskdnf-vdfnk-vndkjnkl.png"  // имя файла пиктограммы
                                                    // после загрузки на сервер
                                                    // через POST /files
}                                                   

http 200

// 2.0+
{                                                    
    "id": 1,                                         // id приоритета
    "name": "Внеплановые",                           // название
    "icon": "csnkjnvkd-vjskdnf-vdfnk-vndkjnkl.png",  // имя файла пиктограммы
    "cluster": {                                     // кластер
        "id": 2184,                                  // id кластера
        "title": "Тестовый кластер"                  // название кластера
    },                                               
    "group": {                                       // группа
        "id": 21,                                    // id группы
        "name": "test"                               // название группы
    },                                               
    "order_important": 8                             // порядковый номер для сортировки
}                                                    

DELETE /rest/priorities/:id

Удалить приоритет.

Пользователь с привилегией Удалить приоритет и уровнем доступа не ниже CLUSTER.

Пользователь с уровнем доступа CLUSTER может удалять только локальные приоритеты своего кластера.

/rest/fields

GET /rest/fields

Список несистемных настраиваемых полей и их возможных типов.

Параметры

Знаком + помечены поля, для которых можно указывать список значений, разделённых запятой. Например, minLength=1,2.

/fields
/fields?search=test
/fields?search=test&isRequired=false&deleted=false
/fields?isForAll=true&minLength=1&maxLength=10

http 200

// 2.0+
{                                                             
    "fields_types": [                                         // список возможных типов настраиваемых полей
        {                                                     
            "name": "string",                                 // английское название типа
            "rusname": "строка"                               // русское название типа
        },                                                    
        {                                                     
            "name": "int",                                    
            "rusname": "целое число"                          
        },                                                    
        ...                                                   // следующие элементы списка возможных
                                                              // типов настраиваемых полей
    ],                                                        
    "items": [                                                
        {                                                     
            "id": 18,                                         // id поля
            "name": "Знак зодиака (string, len<=8)",          // русское название
            "translit": "Znak_zodiaka__string__len<=8_",      // транслит русского названия
            "format": "string",                               // формат: английское название типа поля
            "group_name": "",                                 // название группы полей, если
                                                              // оно нужно. По одинаковым названиям
                                                              // поля группируются при отображении
            "possible_values": null,                          // возможные значения. Для типа list.
                                                              // Список значений, разделенных \n
            "regexp": "",                                     // регулярное выражение для типов string и text,
                                                              // если оно необходимо для проверки значений
            "min_length": 0,                                  // минимальная длина строки/текста типов
                                                              // string и text, если необходимо такое
                                                              // ограничение
            "max_length": 8,                                  // максимальная длина строки/текста типов
                                                              // string и text, если необходимо такое
                                                              // ограничение
            "table_id": 1,                                    // id таблицы данных для формата "dataTableObjects"
            "multiselect": true,                              // разрешение на прикрепление нескольких объектов
                                                              // для формата "dataTableObjects"
            "allow_add_num": true,                            // разрешение на изменение числа, прикреплённого к объекту
                                                              // для формата "dataTableObjects"
            "is_required": false,                             // является ли поле обязательным
            "default_value": "",                              // значение по умолчанию
            "visible": true,                                  // является ли поле видимым. Отображать
                                                              // ли его, когда показывается полная
                                                              // информация по заданию
            "editable_by_default": true,                      // редактируемо поле или нет по умолчанию
            "editable_inverted_for_roles": [                  // id ролей, для которых значение инвертировано
                6                                             
            ],                                                
            "is_for_all": true,                               // доступно ли поле всем типам заданий
            "editable_label": false,                          // разрешение на редактирование label поля
            "order": 1,                                       // порядковый номер поля в общем списке
            "bindings": [                                     
                {                                             
                    "id": 704,                                // id
                    "type": {                                 // вид работ
                        "id": 1,                              // id вида работ
                        "name": "Задание",                    // название вида работ
                        "icon": "default_icon.png"            // файл пиктограммы
                    },                                        
                    "on": true,                               // включена связь с видом работ или нет
                    "master_field": {                         // связанное поле
                        "id": 181343,                         // id связанного поля
                        "blocking": false                     // требуется ли сначала заполнение связанного поля
                    },                                        
                    "rules": [                                // правила видимости
                        {                                     
                            "id": 122,                        // id
                            "visible_by_default": true,       // видимо поле или нет по умолчанию
                            "visible_inverted_for_roles": [   // id ролей, для которых видимость инвертирована
                                6                             
                            ],                                
                            "editable_by_default": true,      // редактируемо поле или нет по умолчанию
                            "editable_inverted_for_roles": [  // id ролей, для которых значение инвертировано
                                6                             
                            ]                                 
                        }                                     
                    ]                                         
                }                                             
            ],                                                
            "type_ids": [                                     
                14                                            
            ],                                                // массив id типов заданий, для которых
                                                              // поле доступно, если оно не
                                                              // доступно всем типам заданий
            "system": false,                                  // является ли поле системным
            "min_size": 100,                                  // минимальный размер файла в байтах,
                                                              // для полей формата "file"
            "max_size": 10000,                                // максимальный размер файла в байтах,
                                                              // для полей формата "file"
            "auto_apply_sticker": true,                       // автоматическое прикрепление единственного ярлыка,
                                                              // для полей формата "file"
            "sticker_ids": [                                  // поддерживаемые ярлыки,
                                                              // для полей формата "file"
                104                                           
            ],                                                
            "device_gallery_enabled_by_default": true,        // разрешено добавлять файлы из Галереи устройства,
                                                              // для полей формата "file"
            "device_gallery_enabled_inverted_for_roles": [    // id ролей, для которых значение инвертировано,
                                                              // для полей формата "file"
                6                                             
            ],                                                
            "file_semantics": [                               // поддерживаемые семантики,
                                                              // для полей формата "file"
                "PHOTO"                                       
            ],                                                
            "min_count": 1,                                   // минимальное количество экземпляров в задании
                                                              // для полей формата "composite" и "file"
            "max_count": 1,                                   // максимальное количество экземпляров в задании
                                                              // для полей формата "composite" и "file"
            "subfields": [                                    // массив вложенных полей
                                                              // для полей формата "composite"
            ],                                                
            "cluster": {                                      // кластер
                "id": 2184,                                   // id кластера
                "title": "Тестовый кластер"                   // название кластера
            }                                                 
        },                                                    
        ...                                                   // следующие элементы списка
                                                              // настраиваемых полей
    ],                                                        
    "count": 35                                               // количество настраиваемых полей, удовлетворяющих
                                                              // заданным условиям фильтрации и поиска
}                                                             

GET /rest/fields/list

Список настраиваемых полей и их возможных типов.

Параметры

Знаком + помечены поля, для которых можно указывать список значений, разделённых запятой. Например, minLength=1,2.

/fields
/fields?search=test
/fields?search=test&isRequired=false&deleted=false
/fields?isForAll=true&minLength=1&maxLength=10

http 200

// 2.0+
{                                                             
    "fields_types": [                                         // список возможных типов настраиваемых полей
        {                                                     
            "name": "string",                                 // английское название типа
            "rusname": "строка"                               // русское название типа
        },                                                    
        {                                                     
            "name": "int",                                    
            "rusname": "целое число"                          
        },                                                    
        ...                                                   // следующие элементы списка возможных
                                                              // типов настраиваемых полей
    ],                                                        
    "items": [                                                
        {                                                     
            "id": 18,                                         // id поля
            "name": "Знак зодиака (string, len<=8)",          // русское название
            "translit": "Znak_zodiaka__string__len<=8_",      // транслит русского названия
            "format": "string",                               // формат: английское название типа поля
            "group_name": "",                                 // название группы полей, если
                                                              // оно нужно. По одинаковым названиям
                                                              // поля группируются при отображении
            "possible_values": null,                          // возможные значения. Для типа list.
                                                              // Список значений, разделенных \n
            "regexp": "",                                     // регулярное выражение для типов string и text,
                                                              // если оно необходимо для проверки значений
            "min_length": 0,                                  // минимальная длина строки/текста типов
                                                              // string и text, если необходимо такое
                                                              // ограничение
            "max_length": 8,                                  // максимальная длина строки/текста типов
                                                              // string и text, если необходимо такое
                                                              // ограничение
            "table_id": 1,                                    // id таблицы данных для формата "dataTableObjects"
            "multiselect": true,                              // разрешение на прикрепление нескольких объектов
                                                              // для формата "dataTableObjects"
            "allow_add_num": true,                            // разрешение на изменение числа, прикреплённого к объекту
                                                              // для формата "dataTableObjects"
            "is_required": false,                             // является ли поле обязательным
            "default_value": "",                              // значение по умолчанию
            "visible": true,                                  // является ли поле видимым. Отображать
                                                              // ли его, когда показывается полная
                                                              // информация по заданию
            "editable_by_default": true,                      // редактируемо поле или нет по умолчанию
            "editable_inverted_for_roles": [                  // id ролей, для которых значение инвертировано
                6                                             
            ],                                                
            "is_for_all": true,                               // доступно ли поле всем типам заданий
            "editable_label": false,                          // разрешение на редактирование label поля
            "order": 1,                                       // порядковый номер поля в общем списке
            "bindings": [                                     
                {                                             
                    "id": 704,                                // id
                    "type": {                                 // вид работ
                        "id": 1,                              // id вида работ
                    },                                        
                    "on": true,                               // включена связь с видом работ или нет
                    "master_field": {                         // связанное поле
                        "id": 181343,                         // id связанного поля
                        "blocking": false                     // требуется ли сначала заполнение связанного поля
                    },                                        
                    "rules": [                                // правила видимости
                        {                                     
                            "id": 122,                        // id
                            "visible_by_default": true,       // видимо поле или нет по умолчанию
                            "visible_inverted_for_roles": [   // id ролей, для которых видимость инвертирована
                                6                             
                            ],                                
                            "editable_by_default": true,      // редактируемо поле или нет по умолчанию
                            "editable_inverted_for_roles": [  // id ролей, для которых значение инвертировано
                                6                             
                            ]                                 
                        }                                     
                    ]                                         
                }                                             
            ],                                                
            "type_ids": [                                     
                14                                            
            ],                                                // массив id типов заданий, для которых
                                                              // поле доступно, если оно не
                                                              // доступно всем типам заданий
            "system": false,                                  // является ли поле системным
            "min_size": 100,                                  // минимальный размер файла в байтах,
                                                              // для полей формата "file"
            "max_size": 10000,                                // максимальный размер файла в байтах,
                                                              // для полей формата "file"
            "auto_apply_sticker": true,                       // автоматическое прикрепление единственного ярлыка,
                                                              // для полей формата "file"
            "sticker_ids": [                                  // поддерживаемые ярлыки,
                                                              // для полей формата "file"
                104                                           
            ],                                                
            "device_gallery_enabled_by_default": true,        // разрешено добавлять файлы из Галереи устройства,
                                                              // для полей формата "file"
            "device_gallery_enabled_inverted_for_roles": [    // id ролей, для которых значение инвертировано,
                                                              // для полей формата "file"
                6                                             
            ],                                                
            "file_semantics": [                               // поддерживаемые семантики,
                                                              // для полей формата "file"
                "PHOTO"                                       
            ],                                                
            "min_count": 1,                                   // минимальное количество экземпляров в задании
                                                              // для полей формата "composite" и "file"
            "max_count": 1,                                   // максимальное количество экземпляров в задании
                                                              // для полей формата "composite" и "file"
            "subfields": [                                    // массив вложенных полей
                                                              // для полей формата "composite"
            ],                                                
            "cluster": {                                      // кластер
                "id": 2184,                                   // id кластера
                "title": "Тестовый кластер"                   // название кластера
            }                                                 
        },                                                    
        ...                                                   // следующие элементы списка
                                                              // настраиваемых полей
    ],                                                        
    "count": 35                                               // количество настраиваемых полей, удовлетворяющих
                                                              // заданным условиям фильтрации и поиска
}                                                             

POST /rest/fields/sort

Ручная сортировка настраиваемых полей.

Пользователь с привилегией Сортировать поля и уровнем доступа не ниже CLUSTER.

Пользователь с уровнем доступа CLUSTER может сортировать только локальные настраиваемые поля своего кластера.

Настраиваемые поля рассматриваются в группе. На группы поля делятся по двум критериям: кластер (глобальные и кластерные) и родительское настраиваемое поле (внешние и вложенные). Сортировать настраиваемые поля можно только в рамках группы. При этом нужно передать id всех полей в группе, включая невидимые (visible = false). Если переданы не все поля, одно поле передано несколько раз - это 400 bad request. Если переданы поля из нескольких групп - это 403 forbidden.

Входные данные

// 2.0+
{             
    "ids": [  
        4,    
        1,    
        3,    
        6,    
        2,    
        5     
    ]         
}             

http 200

// 2.0+
{                                                             
    "items": [                                                
        {                                                     
            "id": 19,                                         
            "name": "Знак зодиака (string, len<=8)",          
            "translit": "Znak_zodiaka__string__len<=8_",      
            "format": "string",                               
            "group_name": "",                                 
            "possible_values": null,                          
            "regexp": "",                                     
            "min_length": 0,                                  
            "max_length": 8,                                  
            "table_id": 1,                                    // id таблицы данных для формата "dataTableObjects"
            "multiselect": true,                              // разрешение на прикрепление нескольких объектов
                                                              // для формата "dataTableObjects"
            "allow_add_num": true,                            // разрешение на изменение числа, прикреплённого к объекту
                                                              // для формата "dataTableObjects"
            "is_required": false,                             
            "default_value": "",                              
            "visible": true,                                  
            "editable_by_default": true,                      // редактируемо поле или нет по умолчанию
            "editable_inverted_for_roles": [                  // id ролей, для которых значение инвертировано
                6                                             
            ],                                                
            "is_for_all": true,                               
            "editable_label": false,                          // разрешение на редактирование label поля
            "order": 1,                                       
            "bindings": [                                     
                {                                             
                    "id": 704,                                // id
                    "type": {                                 // вид работ
                        "id": 1,                              // id вида работ
                    },                                        
                    "on": true,                               // включена связь с видом работ или нет
                    "master_field": {                         // связанное поле
                        "id": 181343,                         // id связанного поля
                        "blocking": false                     // требуется ли сначала заполнение связанного поля
                    },                                        
                    "rules": [                                // правила видимости
                        {                                     
                            "id": 122,                        // id
                            "visible_by_default": true,       // видимо поле или нет по умолчанию
                            "visible_inverted_for_roles": [   // id ролей, для которых видимость инвертирована
                                6                             
                            ],                                
                            "editable_by_default": true,      // редактируемо поле или нет по умолчанию
                            "editable_inverted_for_roles": [  // id ролей, для которых значение инвертировано
                                6                             
                            ]                                 
                        }                                     
                    ]                                         
                }                                             
            ],                                                
            "type_ids": [                                     
                14                                            
            ],                                                
            "system": false,                                  // является ли поле системным
            "min_size": 100,                                  // минимальный размер файла в байтах,
                                                              // для полей формата "file"
            "max_size": 10000,                                // максимальный размер файла в байтах,
                                                              // для полей формата "file"
            "auto_apply_sticker": true,                       // автоматическое прикрепление единственного ярлыка,
                                                              // для полей формата "file"
            "sticker_ids": [                                  // поддерживаемые ярлыки,
                                                              // для полей формата "file"
                104                                           
            ],                                                
            "device_gallery_enabled_by_default": true,        // разрешено добавлять файлы из Галереи устройства,
                                                              // для полей формата "file"
            "device_gallery_enabled_inverted_for_roles": [    // id ролей, для которых значение инвертировано,
                                                              // для полей формата "file"
                6                                             
            ],                                                
            "file_semantics": [                               // поддерживаемые семантики,
                                                              // для полей формата "file"
                "PHOTO"                                       
            ],                                                
            "min_count": 1,                                   // минимальное количество экземпляров в задании
                                                              // для полей формата "composite" и "file"
            "max_count": 1,                                   // максимальное количество экземпляров в задании
                                                              // для полей формата "composite" и "file"
            "subfields": [                                    // массив вложенных полей
                                                              // для полей формата "composite"
            ],                                                
            "cluster": {                                      // кластер
                "id": 2184,                                   // id кластера
                "title": "Тестовый кластер"                   // название кластера
            }                                                 
        },                                                    
        {                                                     
            "id": 9,                                          
            "name": "Доп.поле для тестов (5-10)",             
            "translit": "Dop_pole_dlya_testov",               
            "format": "text",                                 
            "group_name": "",                                 
            "possible_values": null,                          
            "regexp": "",                                     
            "min_length": 5,                                  
            "max_length": 10,                                 
            "table_id": 1,                                    // id таблицы данных для формата "dataTableObjects"
            "multiselect": true,                              // разрешение на прикрепление нескольких объектов
                                                              // для формата "dataTableObjects"
            "allow_add_num": true,                            // разрешение на изменение числа, прикреплённого к объекту
                                                              // для формата "dataTableObjects"
            "is_required": false,                             
            "default_value": 12345,                           
            "visible": true,                                  
            "editable_by_default": true,                      // редактируемо поле или нет по умолчанию
            "editable_inverted_for_roles": [                  // id ролей, для которых значение инвертировано
                6                                             
            ],                                                
            "is_for_all": true,                               
            "editable_label": false,                          // разрешение на редактирование label поля
            "order": 2,                                       
            "bindings": [],                                   
            "type_ids": [],                                   
            "system": false,                                  // является ли поле системным
            "min_size": 100,                                  // минимальный размер файла в байтах,
                                                              // для полей формата "file"
            "max_size": 10000,                                // максимальный размер файла в байтах,
                                                              // для полей формата "file"
            "auto_apply_sticker": true,                       // автоматическое прикрепление единственного ярлыка,
                                                              // для полей формата "file"
            "sticker_ids": [                                  // поддерживаемые ярлыки,
                                                              // для полей формата "file"
                104                                           
            ],                                                
            "device_gallery_enabled_by_default": true,        // разрешено добавлять файлы из Галереи устройства,
                                                              // для полей формата "file"
            "device_gallery_enabled_inverted_for_roles": [    // id ролей, для которых значение инвертировано,
                                                              // для полей формата "file"
                6                                             
            ],                                                
            "file_semantics": [                               // поддерживаемые семантики,
                                                              // для полей формата "file"
                "PHOTO"                                       
            ],                                                
            "min_count": 1,                                   // минимальное количество экземпляров в задании
                                                              // для полей формата "composite" и "file"
            "max_count": 1,                                   // максимальное количество экземпляров в задании
                                                              // для полей формата "composite" и "file"
            "subfields": [                                    // массив вложенных полей
                                                              // для полей формата "composite"
            ],                                                
            "cluster": {                                      // кластер
                "id": 2184,                                   // id кластера
                "title": "Тестовый кластер"                   // название кластера
            }                                                 
        },                                                    
        ...                                                   
    ]                                                         
}                                                             

POST /rest/fields

Создание нового настраиваемого поля.

Пользователь с привилегией Создать поле и уровнем доступа не ниже CLUSTER.

Пользователь с уровнем доступа CLUSTER может создать только локальное настраиваемое поле внутри своего кластера.

Входные данные

// 2.0+
{                                                     
    "name": "Фактический адрес организации",          // * название нового поля
    "format": "text",                                 // * формат данных поля, возможные значения:
                                                      // "int", "float", "bool", "geometry", "dataTableObjects",
                                                      // "string", "text", "list", "date", "composite", "file", "integration"
    "group_name": "Информация об организации",        // название группы полей,
                                                      // при указании несуществующей
                                                      // группы полей в таблицу
                                                      // будет добавлена запись.
    "possible_values": [                              // список возможных значений, доступно
                                                      // только для поля формата "list", и является
                                                      // обязательным параметром для поля формата "list"
        "первое значение",                            
        "второе значение"                             
    ],                                                
    "regexp": "[0-9]{1,3}",                           // регулярное выражение, доступно
                                                      // только для полей форматов "string",
                                                      // "text", "int", "float"
    "min_length": 2,                                  // минимальная длина, доступно только
                                                      // для полей форматов "string", "text"
    "max_length": 25,                                 // максимальная длина, доступно только
                                                      // для полей форматов "string", "text"
    "table_id": 1,                                    // id таблицы данных,
                                                      // обязательное поле для полей формата "dataTableObjects",
                                                      // доступно только для полей формата "dataTableObjects"
    "multiselect": true,                              // разрешение на прикрепление нескольких объектов,
                                                      // обязательное поле для полей формата "dataTableObjects",
                                                      // доступно только для полей формата "dataTableObjects"
    "allow_add_num": true,                            // разрешение на изменение числа, прикреплённого к объекту,
                                                      // обязательное поле для полей формата "dataTableObjects",
                                                      // доступно только для полей формата "dataTableObjects"
    "is_required": true,                              // обязательное ли поле, по умолчанию false
    "default_value": "г.Москва",                      // значение по умолчанию, доступно
                                                      // для всех форматов полей, за
                                                      // исключением форматов "geometry" и "dataTableObjects",
                                                      // значение задается с соответствии
                                                      // с форматом поля (текст, число,
                                                      // дата, булево значение)
    "visible": true,                                  // видимость данного поля при отображении
                                                      // полной информации по заданию, по умолчанию true
    "editable_by_default": true,                      // редактируемо поле или нет по умолчанию
    "editable_inverted_for_roles": [                  // id ролей, для которых значение инвертировано
        6                                             
    ],                                                
    "editable_label": false,                          // разрешение на редактирование label поля, по умолчанию false
    "bindings": [                                     
        {                                             
            "on": true,                               // включена связь с видом работ или нет, по умолчанию true
            "type": {                                 // * вид работ
                "id": 1                               
            },                                        
            "rules": [                                // правила видимости
                {                                     
                    "visible_by_default": true,       // видимо поле или нет по умолчанию
                    "visible_inverted_for_roles": [   // id ролей, для которых видимость инвертирована
                        6                             
                    ],                                
                    "editable_by_default": true,      // редактируемо поле или нет по умолчанию
                    "editable_inverted_for_roles": [  // id ролей, для которых значение инвертировано
                        6                             
                    ]                                 
                }                                     
            ]                                         
        }                                             
    ],                                                
    "cluster": {                                      // кластер
        "id": 64                                      
    },                                                
    "min_size": 100,                                  // минимальный размер файла в байтах,
                                                      // доступно только для полей формата "file"
    "max_size": 10000,                                // максимальный размер файла в байтах,
                                                      // доступно только для полей формата "file"
    "auto_apply_sticker": true,                       // автоматическое прикрепление единственного ярлыка,
                                                      // по умолчанию false,
                                                      // доступно только для полей формата "file"
    "sticker_ids": [                                  // поддерживаемые ярлыки,
                                                      // доступно только для полей формата "file"
        104                                           
    ],                                                
    "device_gallery_enabled_by_default": true,        // разрешено добавлять файлы из Галереи устройства,
                                                      // доступно только для полей формата "file"
    "device_gallery_enabled_inverted_for_roles": [    // id ролей, для которых значение инвертировано,
                                                      // доступно только для полей формата "file"
        6                                             
    ],                                                
    "file_semantics": [                               // * поддерживаемые семантики,
                                                      // возможные значения - PHOTO/VIDEO/FILE/SOUND/SIGNATURE/QRCODE,
                                                      // доступно только для полей формата "file"
        "PHOTO"                                       
    ],                                                
    "min_count": 1,                                   // минимальное количество экземпляров в задании
                                                      // доступно только для полей формата "composite" и "file"
    "max_count": 1,                                   // максимальное количество экземпляров в задании
                                                      // доступно только для полей формата "composite" и "file"
    "subfields": [                                    // массив вложенных полей
                                                      // доступно только для полей формата "composite"
        {                                             
            "name": "Вложенное  поле",                
            ...                                       
        }                                             
    ]                                                 
}                                                     

При возникновении одной из следующих ситуаций клиенту возвращается статус 400:

http 200

// 2.0+
{                                                     
    "id": 123,                                        // id нового поля
    "name": "Фактический адрес организации",          // название нового поля
    "translit": "Fakticheskiy_adres_organizatsi",     // транслитерация названия поля
    "format": "text",                                 // формат данных поля, возможные значения:
                                                      // "int", "float", "bool", "geometry", "string",
                                                      // "text", "list", "date", "composite", "file", "integration"
    "group_name": "Информация об организации",        // название группы полей, при указании
                                                      // несуществующей группы полей в таблицу
                                                      // будет добавлена запись.
    "possible_values": [                              // список возможных значений, доступно только
                                                      // для поля формата "list"
        "первое значение",                            
        "второе значение"                             
    ],                                                
    "regexp": "[0-9]{1,3}",                           // регулярное выражение, доступно только
                                                      // для полей форматов "string", "text",
                                                      // "int", "float"
    "min_length": 2,                                  // минимальная длина, доступно только для
                                                      // полей форматов "string", "text"
    "max_length": 25,                                 // максимальная длина, доступно только
                                                      // для полей форматов "string", "text"
    "table_id": 1,                                    // id таблицы данных для формата "dataTableObjects"
    "multiselect": true,                              // разрешение на прикрепление нескольких объектов
                                                      // для формата "dataTableObjects"
    "allow_add_num": true,                            // разрешение на изменение числа, прикреплённого к объекту
                                                      // для формата "dataTableObjects"
    "is_required": true,                              // обязательное ли поле
    "default_value": "РТ, г.Москва",                  // значение по умолчанию, доступно для всех
                                                      // форматов полей, за исключением
                                                      // форматов "geometry" и "dataTableObjects",
                                                      // значение задается с соответствии с форматом
                                                      // поля (текст, число, дата, булево значение)
    "visible": true,                                  // видимость данного поля при отображении
                                                      // полной информации по заданию
    "editable_by_default": true,                      // редактируемо поле или нет по умолчанию
    "editable_inverted_for_roles": [                  // id ролей, для которых значение инвертировано
        6                                             
    ],                                                
    "is_for_all": false,                              // доступно ли данное поле для
                                                      // всех типов заданий (видов работ)
    "editable_label": false,                          // разрешение на редактирование label поля
    "bindings": [                                     
        {                                             
            "id": 704,                                // id
            "type": {                                 // вид работ
                "id": 1,                              // id вида работ
            },                                        
            "master_field": {                         // связанное поле
                "id": 181343,                         // id связанного поля
                "blocking": false                     // требуется ли сначала заполнение связанного поля
            },                                        
            "on": true,                               // включена связь с видом работ или нет
            "rules": [                                // правила видимости
                {                                     
                    "id": 122,                        // id
                    "visible_by_default": true,       // видимо поле или нет по умолчанию
                    "visible_inverted_for_roles": [   // id ролей, для которых видимость инвертирована
                        6                             
                    ],                                
                    "editable_by_default": true,      // редактируемо поле или нет по умолчанию
                    "editable_inverted_for_roles": [  // id ролей, для которых значение инвертировано
                        6                             
                    ]                                 
                }                                     
            ]                                         
        }                                             
    ],                                                
    "type_ids": [                                     // массив id типов заданий, для которых
                                                      // поле доступно, если оно не доступно
                                                      // всем типам заданий
        12,                                           
        14                                            
    ],                                                
    "system": false,                                  // является ли поле системным
    "min_size": 100,                                  // минимальный размер файла в байтах,
                                                      // для полей формата "file"
    "max_size": 10000,                                // максимальный размер файла в байтах,
                                                      // для полей формата "file"
    "auto_apply_sticker": true,                       // автоматическое прикрепление единственного ярлыка,
                                                      // для полей формата "file"
    "sticker_ids": [                                  // поддерживаемые ярлыки,
                                                      // для полей формата "file"
        104                                           
    ],                                                
    "device_gallery_enabled_by_default": true,        // разрешено добавлять файлы из Галереи устройства,
                                                      // для полей формата "file"
    "device_gallery_enabled_inverted_for_roles": [    // id ролей, для которых значение инвертировано,
                                                      // для полей формата "file"
        6                                             
    ],                                                
    "file_semantics": [                               // поддерживаемые семантики,
                                                      // для полей формата "file"
        "PHOTO"                                       
    ],                                                
    "min_count": 1,                                   // минимальное количество экземпляров в задании
                                                      // для полей формата "composite" и "file"
    "max_count": 1,                                   // максимальное количество экземпляров в задании
                                                      // для полей формата "composite" и "file"
    "subfields": [                                    // массив вложенных полей
                                                      // для полей формата "composite"
    ],                                                
    "cluster": {                                      // кластер
        "id": 2184,                                   // id кластера
        "title": "Тестовый кластер"                   // название кластера
    },                                                
    "order": 10                                       // номер данного поля для отображения
                                                      // в списке настраиваемых полей
}                                                     

GET /rest/fields/:id

Получение информации по настраиваемому полю.

http 200

// 2.0+
{                                                       
    "id": 123,                                          // id нового поля
    "name": "Адрес филиала организации",                // название поля
    "translit": "string",                               // транслитерация названия поля
    "format": "text",                                   // формат данных поля, возможные значения:
                                                        // "int", "float", "bool", "geometry",
                                                        // "string", "text", "list", "date", "composite"
    "group_name": "Информация о филиалах организации",  // название группы полей
    "possible_values": [                                // список возможных значений, доступно
                                                        // только для поля формата "list"
        "первое значение",                              
        "второе значение",                              
        "третье значение"                               
    ],                                                  
    "regexp": "[0-9]{1,3}",                             // регулярное выражение, доступно
                                                        // только для полей форматов
                                                        // "string", "text", "int", "float"
    "min_length": 5,                                    // минимальная длина, доступно только для
                                                        // полей форматов "string", "text"
    "max_length": 50,                                   // максимальная длина, доступно только
                                                        // для полей форматов "string", "text"
    "table_id": 1,                                      // id таблицы данных для формата "dataTableObjects"
    "multiselect": true,                                // разрешение на прикрепление нескольких объектов
                                                        // для формата "dataTableObjects"
    "allow_add_num": true,                              // разрешение на изменение числа, прикреплённого к объекту
                                                        // для формата "dataTableObjects"
    "is_required": false,                               // обязательное ли поле
    "default_value": "РТ, г.Казань",                    // значение по умолчанию, доступно для
                                                        // всех форматов полей, за исключением
                                                        // форматов "geometry" и "dataTableObjects", значение
                                                        // задается с соответствии с форматом поля
                                                        // (текст, число, дата, булево значение)
    "visible": false,                                   // видимость данного поля при отображении
                                                        // полной информации по заданию
    "editable_by_default": true,                        // редактируемо поле или нет по умолчанию
    "editable_inverted_for_roles": [                    // id ролей, для которых значение инвертировано
        6                                               
    ],                                                  
    "is_for_all": false,                                // доступно ли данное поле для
                                                        // всех типов заданий (видов работ)
    "editable_label": false,                            // разрешение на редактирование label поля
    "bindings": [                                       
        {                                               
            "id": 704,                                  // id
            "type": {                                   // вид работ
                "id": 1,                                // id вида работ
            },                                          
            "master_field": {                           // связанное поле
                "id": 181343,                           // id связанного поля
                "blocking": false                       // требуется ли сначала заполнение связанного поля
            },                                          
            "on": true,                                 // включена связь с видом работ или нет
            "rules": [                                  // правила видимости
                {                                       
                    "id": 122,                          // id
                    "visible_by_default": true,         // видимо поле или нет по умолчанию
                    "visible_inverted_for_roles": [     // id ролей, для которых видимость инвертирована
                        6                               
                    ],                                  
                    "editable_by_default": true,        // редактируемо поле или нет по умолчанию
                    "editable_inverted_for_roles": [    // id ролей, для которых значение инвертировано
                        6                               
                    ]                                   
                }                                       
            ]                                           
        }                                               
    ],                                                  
    "type_ids": [                                       // массив id типов заданий, для которых
                                                        // поле доступно, если оно не доступно
                                                        // всем типам заданий
        12,                                             
        14                                              
    ],                                                  
    "system": false,                                    // является ли поле системным
    "min_size": 100,                                    // минимальный размер файла в байтах,
                                                        // для полей формата "file"
    "max_size": 10000,                                  // максимальный размер файла в байтах,
                                                        // для полей формата "file"
    "auto_apply_sticker": true,                         // автоматическое прикрепление единственного ярлыка,
                                                        // для полей формата "file"
    "sticker_ids": [                                    // поддерживаемые ярлыки,
                                                        // для полей формата "file"
        104                                             
    ],                                                  
    "device_gallery_enabled_by_default": true,          // разрешено добавлять файлы из Галереи устройства,
                                                        // для полей формата "file"
    "device_gallery_enabled_inverted_for_roles": [      // id ролей, для которых значение инвертировано,
                                                        // для полей формата "file"
        6                                               
    ],                                                  
    "file_semantics": [                                 // поддерживаемые семантики,
                                                        // для полей формата "file"
        "PHOTO"                                         
    ],                                                  
    "min_count": 1,                                     // минимальное количество экземпляров в задании
                                                        // для полей формата "composite" и "file"
    "max_count": 1,                                     // максимальное количество экземпляров в задании
                                                        // для полей формата "composite" и "file"
    "subfields": [                                      // массив вложенных полей
                                                        // для полей формата "composite"
    ],                                                  
    "cluster": {                                        // кластер
        "id": 2184,                                     // id кластера
        "title": "Тестовый кластер"                     // название кластера
    },                                                  
    "order": 10                                         // номер данного поля для отображения
                                                        // в списке настраиваемых полей
}                                                       

PUT /rest/fields/:id

Редактирование настраиваемого поля.

Пользователь с привилегией Редактировать поле и уровнем доступа не ниже CLUSTER.

Пользователь с уровнем доступа CLUSTER может редактировать локальное настраиваемое поле своего кластера и глобальное настраиваемое поле, если при этом он только привязывает или отвязывает локальные виды работ своего кластера.

Формат поля изменить нельзя, т.к. это может вызвать массовую некорректность данных настраиваемых полей в заданиях.

Входные данные

// 2.0+
{                                                             
    "name": "Адрес филиала организации",                      // измененное название поля
    "group_name": "Информация о филиалах организации",        // измененное название группы полей
    "possible_values": [                                      // список возможных значений,
                                                              // доступно только для поля
                                                              // формата "list"
        "первое значение",                                    
        "второе значение",                                    
        "третье значение"                                     
    ],                                                        
    "regexp": "[0-9]{1,3}",                                   // регулярное выражение, доступно
                                                              // только для полей форматов
                                                              // "string", "text", "int", "float"
    "min_length": 5,                                          // минимальная длина, доступно только
                                                              // для полей форматов "string", "text"
    "max_length": 50,                                         // максимальная длина, доступно только
                                                              // для полей форматов "string", "text"
    "is_required": false,                                     // обязательное ли поле
    "editable_label": false,                                  // разрешение на редактирование label поля
    "table_id": 1,                                            // id таблицы данных,
                                                              // доступно только для полей формата "dataTableObjects"
    "multiselect": true,                                      // разрешение на прикрепление нескольких объектов,
                                                              // доступно только для полей формата "dataTableObjects"
    "allow_add_num": true,                                    // разрешение на изменение числа, прикреплённого к объекту
                                                              // доступно только для полей формата "dataTableObjects"
    "default_value": "РТ, г.Казань",                          // значение по умолчанию, доступно для
                                                              // всех форматов полей, за исключением
                                                              // форматов "geometry" и "dataTableObjects",
                                                              // значение задается с соответствии с форматом поля
                                                              // (текст, число, дата, булево значение)
    "visible": false,                                         // видимость данного поля при отображении
                                                              // полной информации по заданию
    "editable_by_default": true,                              // редактируемо поле или нет по умолчанию
    "editable_inverted_for_roles": [                          // id ролей, для которых значение инвертировано
        6                                                     
    ],                                                        
    "bindings": {                                             
        "add": [                                              
            {                                                 
                "on": true,                                   // включена связь с видом работ или нет
                "type": {                                     // * вид работ
                    "id": 1                                   
                },                                            
                "rules": [                                    // правила видимости
                    {                                         
                        "visible_by_default": true,           // видимо поле или нет по умолчанию
                        "visible_inverted_for_roles": [       // id ролей, для которых видимость инвертирована
                            6                                 
                        ],                                    
                        "editable_by_default": true,          // редактируемо поле или нет по умолчанию
                        "editable_inverted_for_roles": [      // id ролей, для которых значение инвертировано
                            6                                 
                        ]                                     
                    }                                         
                ]                                             
            }                                                 
        ],                                                    
        "update": [                                           
            {                                                 
                "type": {                                     // * вид работ
                    "id": 1                                   
                },                                            
                "on": true,                                   // включена связь с видом работ или нет
                "rules": {                                    // правила видимости
                    "add": [                                  
                        {                                     
                            "visible_by_default": true,       // видимо поле или нет по умолчанию
                            "visible_inverted_for_roles": [   // id ролей, для которых видимость инвертирована
                                6                             
                            ],                                
                            "editable_by_default": true,      // редактируемо поле или нет по умолчанию
                            "editable_inverted_for_roles": [  // id ролей, для которых значение инвертировано
                                6                             
                            ]                                 
                        }                                     
                    ],                                        
                    "update": [                               
                        {                                     
                            "id": 6,                          // id правила видимости
                            "visible_by_default": true,       // видимо поле или нет по умолчанию
                            "visible_inverted_for_roles": [   // id ролей, для которых видимость инвертирована
                                6                             
                            ],                                
                            "editable_by_default": true,      // редактируемо поле или нет по умолчанию
                            "editable_inverted_for_roles": [  // id ролей, для которых значение инвертировано
                                6                             
                            ]                                 
                        }                                     
                    ],                                        
                    "remove": [                               // id правила видимости
                        {                                     
                            "id": 6,                          
                        }                                     
                    ]                                         
                }                                             
            }                                                 
        ],                                                    
        "remove": [                                           
            {                                                 
                "type": {                                     // * вид работ
                    "id": 1                                   
                }                                             
            }                                                 
        ]                                                     
    },                                                        
    "min_size": 100,                                          // минимальный размер файла в байтах,
                                                              // доступно только для полей формата "file"
    "max_size": 10000,                                        // максимальный размер файла в байтах,
                                                              // доступно только для полей формата "file"
    "auto_apply_sticker": true,                               // автоматическое прикрепление единственного ярлыка,
                                                              // по умолчанию false,
                                                              // доступно только для полей формата "file"
    "sticker_ids": [                                          // поддерживаемые ярлыки,
                                                              // доступно только для полей формата "file"
        104                                                   
    ],                                                        
    "device_gallery_enabled_by_default": true,                // разрешено добавлять файлы из Галереи устройства,
                                                              // доступно только для полей формата "file"
    "device_gallery_enabled_inverted_for_roles": [            // id ролей, для которых значение инвертировано,
                                                              // доступно только для полей формата "file"
        6                                                     
    ],                                                        
    "file_semantics": [                                       // поддерживаемые семантики,
                                                              // возможные значения - PHOTO/VIDEO/FILE/SOUND/QRCODE/SIGNATURE,
                                                              // доступно только для полей формата "file"
        "PHOTO"                                               
    ],                                                        
    "min_count": 1,                                           // минимальное количество экземпляров в задании
                                                              // доступно только для полей формата "composite" и "file"
    "max_count": 1,                                           // максимальное количество экземпляров в задании
                                                              // доступно только для полей формата "composite" и "file"
    "subfields": {                                            // вложенные поля
                                                              // доступно только для полей формата "composite"
        "add": [                                              // новые подполя, которые нужно создать и добавить в родительское
            {                                                 
                "format": "string",                           // id нет
                ...                                           
            }                                                 
        ],                                                    
        "remove": [                                           // существующие подполя, которые нужно удалить
            {                                                 
                "id": 5                                       // для удаления достаточно только id
            }                                                 
        ],                                                    
        "update": [                                           // существующие подполя, которые нужно изменить
            {                                                 
                "id": 2,                                      // нужно передать id и те атрибуты поля, которые нужно изменить
                "name": "Changed name"                        // изменить имя поля #2
            }                                                 
        ]                                                     
    }                                                         
}                                                             

При возникновении одной из следующих ситуаций клиенту возвращается статус 400:

Если массив possible_values не будет передан, то элементы списка не изменятся. При передаче массива possible_values все предыдущие значения списка будут удалены.

http 200

// 2.0+
{                                                       
    "id": 123,                                          // id нового поля
    "name": "Адрес филиала организации",                // название поля
    "translit": "string",                               // транслитерация названия поля
    "format": "text",                                   // формат данных поля, возможные
                                                        // значения: "int", "float", "bool",
                                                        // "geometry", "string", "text", "list", "date", "composite"
    "group_name": "Информация о филиалах организации",  // название группы полей
    "possible_values": [                                // список возможных значений, доступно
                                                        // только для поля формата "list"
        "первое значение",                              
        "второе значение",                              
        "третье значение"                               
    ],                                                  
    "regexp": "[0-9]{1,3}",                             // регулярное выражение, доступно только
                                                        // для полей форматов "string", "text",
                                                        // "int", "float"
    "min_length": 5,                                    // минимальная длина, доступно только
                                                        // для полей форматов "string", "text"
    "max_length": 50,                                   // максимальная длина, доступно только
                                                        // для полей форматов "string", "text"
    "table_id": 1,                                      // id таблицы данных для формата "dataTableObjects"
    "multiselect": true,                                // разрешение на прикрепление нескольких объектов
                                                        // для формата "dataTableObjects"
    "allow_add_num": true,                              // разрешение на изменение числа, прикреплённого к объекту
                                                        // для формата "dataTableObjects"
    "is_required": false,                               // обязательное ли поле
    "default_value": "РТ, г.Казань",                    // значение по умолчанию, доступно для
                                                        // всех форматов полей, за исключением
                                                        // форматов "geometry" и "dataTableObjects", значение
                                                        // задается с соответствии с форматом
                                                        // поля (текст, число, дата, булево значение)
    "visible": false,                                   // видимость данного поля при отображении
                                                        // полной информации по заданию
    "editable_by_default": true,                        // редактируемо поле или нет по умолчанию
    "editable_inverted_for_roles": [                    // id ролей, для которых значение инвертировано
        6                                               
    ],                                                  
    "is_for_all": false,                                // доступно ли данное поле для
                                                        // всех типов заданий (видов работ)
    "editable_label": false,                            // разрешение на редактирование label поля
    "bindings": [                                       
        {                                               
            "id": 704,                                  // id
            "type": {                                   // вид работ
                "id": 1,                                // id вида работ
            },                                          
            "master_field": {                           // связанное поле
                "id": 181343,                           // id связанного поля
                "blocking": false                       // требуется ли сначала заполнение связанного поля
            },                                          
            "on": true,                                 // включена связь с видом работ или нет
            "rules": [                                  // правила видимости
                {                                       
                    "id": 122,                          // id
                    "visible_by_default": true,         // видимо поле или нет по умолчанию
                    "visible_inverted_for_roles": [     // id ролей, для которых видимость инвертирована
                        6                               
                    ],                                  
                    "editable_by_default": true,        // редактируемо поле или нет по умолчанию
                    "editable_inverted_for_roles": [    // id ролей, для которых значение инвертировано
                        6                               
                    ]                                   
                }                                       
            ]                                           
        }                                               
    ],                                                  
    "type_ids": [                                       // массив id типов заданий, для которых
                                                        // поле доступно, если оно не доступно
                                                        // всем типам заданий
        12,                                             
        14                                              
    ],                                                  
    "system": false,                                    // является ли поле системным
    "min_size": 100,                                    // минимальный размер файла в байтах,
                                                        // для полей формата "file"
    "max_size": 10000,                                  // максимальный размер файла в байтах,
                                                        // для полей формата "file"
    "auto_apply_sticker": true,                         // автоматическое прикрепление единственного ярлыка,
                                                        // для полей формата "file"
    "sticker_ids": [                                    // поддерживаемые ярлыки,
                                                        // для полей формата "file"
        104                                             
    ],                                                  
    "device_gallery_enabled_by_default": true,          // разрешено добавлять файлы из Галереи устройства,
                                                        // для полей формата "file"
    "device_gallery_enabled_inverted_for_roles": [      // id ролей, для которых значение инвертировано,
                                                        // для полей формата "file"
        6                                               
    ],                                                  
    "file_semantics": [                                 // поддерживаемые семантики,
                                                        // для полей формата "file"
        "PHOTO"                                         
    ],                                                  
    "min_count": 1,                                     // минимальное количество экземпляров в задании
                                                        // для полей формата "composite" и "file"
    "max_count": 1,                                     // максимальное количество экземпляров в задании
                                                        // для полей формата "composite" и "file"
    "subfields": [                                      // массив вложенных полей
                                                        // для полей формата "composite"
    ],                                                  
    "cluster": {                                        // кластер
        "id": 2184,                                     // id кластера
        "title": "Тестовый кластер"                     // название кластера
    },                                                  
    "order": 10                                         // номер данного поля для отображения
                                                        // в списке настраиваемых полей
}                                                       

DELETE /rest/fields/:id

Удаление настраиваемого поля.

Пользователь с привилегией Удалить поле и уровнем доступа не ниже CLUSTER.

Пользователь с уровнем доступа CLUSTER может удалять только локальные настраиваемые поля своего кластера.

/rest/files

POST /rest/files

Загрузка файла во временный каталог хранения. Полученное в ответе имя необходимо передать в запрос, в котором файл будет прикрепляться к сущности (например, пиктограмма вида работ - к виду работ, пиктограмма приоритета - к приоритету и т.п.) При этом файл будет перемещён из временного каталога хранения в постоянный (каталог пиктограмм видов работ, каталог пиктограмм приоритетов и т.п.)

Для загрузки файла необходимо указать http-заголовок Body Content Type: multipart/form-data и в теле запроса в поле file указать расположение.

Запрос POST /files можно использовать в паре со всеми запросами на изменение сущности (вида работ, приоритета и т.п.) Но можно загружать файлы сразу в нужный каталог хранения, минуя временный. Для этого следует использовать один из роутов, перечисленных ниже (POST /files/type-icons для пиктограмм видов работ и т.п.)

Исключение составляют файлы, которые нужно будет прикреплять к заданиям (фото, видео, аудио и прочие файлы заданий), потому, что для них помимо помещения в каталог следует выполнить специализированные действия. Здесь следует использовать один из специализированных запросов (POST /files/photos, POST /files/videos, POST /files/sounds, POST /files/files).

http 200

// 2.0+
{                                                       
    "name": "c360f08c-e79f-1004-8be5-8b2398b49a74.jpg"  // имя файла во временном каталоге хранения
}                                                       

POST /rest/files/type-icons

Загрузка файла в каталог пиктограмм видов работ.

POST /rest/files/priority-icons

Загрузка файла в каталог пиктограмм приоритетов.

POST /rest/files/photos

Загрузка фотографии в каталог фотографий задания.

POST /rest/files/videos

Загрузка видеофайла в каталог видеофайлов задания.

POST /rest/files/files

Загрузка файла в каталог прочих файлов задания.

POST /rest/files/sounds

Загрузка аудиофайла в каталог аудиофайлов задания.

DELETE /rest/files/:id

Права пользователей на выполнение данного запроса зависят от capability роли пользователя. Понятие capability в обозначает действие, которое можно выполнять с заданием (к которому прикреплен файл). Для того, чтобы пользователь мог выполнить данный запрос, его роль должна иметь capability со свойствами: capability_id = 1, capability_name = "show" и capability_id = 5, capability_name = "edit_files"

Удаление файла, прикрепленного к заданию; fileId - id файла.

/rest/stickers

GET /rest/stickers

Список стикеров.

Сортировка осуществляется по полю title.

Параметры

http 200

// 2.0+
{                                                                                   
    "items": [                                                                      
        {                                                                           
            "id": 3,                                                                // название стикера
            "title": "Показания приборов",                                          // описание стикера
            "description": "Показания приборов после выполнения работ на объекте",  
            "is_for_all": false,                                                    // доступность стикера для
                                                                                    // всех видов работ
            "type_ids": [                                                           // список id-шников
                                                                                    // видов работ,
                                                                                    // к которым прикреплен
                                                                                    // текущий стикер
                2,                                                                  
                14,                                                                 
                3,                                                                  
                7,                                                                  
                4                                                                   
            ],                                                                      
            "cluster": {                                                            // кластер
                "id": 2184,                                                         // id кластера
                "title": "Тестовый кластер"                                         // название кластера
            }                                                                       
        },                                                                          
        ...                                                                         // следующие элементы списка
    ]                                                                               
}                                                                                   

POST /rest/stickers

Создание стикера.

Пользователь с привилегией Создать стикер и уровнем доступа не ниже CLUSTER.

Пользователь с уровнем доступа CLUSTER может создать только локальный стикер внутри своего кластера.

Входные данные

// 2.0+
{                                                                           
    "title": "Показания приборов",                                          // * название стикера
    "description": "Показания приборов после выполнения работ на объекте",  // описание стикера
    "is_for_all": false,                                                    // доступность стикера для
                                                                            // всех видов работ; по
                                                                            // умолчанию true
    "types": [                                                              // массив id видов работ,
                                                                            // к которым прикреплен
                                                                            // текущий стикер
        12,                                                                 
        14                                                                  
    ],                                                                      
    "cluster": {                                                            // кластер
        "id": 64                                                            
    }                                                                       
}                                                                           

В ответе выдается type_ids - список id-шников видов работ, к которым прикреплен текущий стикер. Если is_for_all=true, то стикер доступен всем видам работ, следовательно, type_ids будет содержать список id-шников всех видов работ. Если is_for_all=false, то type_ids будет содержать список id-шников видов работ, которые были явно прикреплены к стикеру.

http 200

// 2.0+
{                                                                           
    "id": 6,                                                                
    "title": "Показания приборов",                                          // название стикера
    "description": "Показания приборов после выполнения работ на объекте",  // описание стикера
    "is_for_all": false,                                                    // доступность стикера для
                                                                            // всех видов работ
    "type_ids": [                                                           // список id-шников видов работ,
                                                                            // к которым прикреплен текущий стикер
        12,                                                                 
        14                                                                  
    ],                                                                      
    "cluster": {                                                            // кластер
        "id": 4,                                                            // id кластера
        "title": "Тестовый кластер"                                         // название кластера
    }                                                                       
}                                                                           

PUT /rest/stickers/:id

Изменение стикера.

Пользователь с привилегией Редактировать стикер и уровнем доступа не ниже CLUSTER.

Пользователь с уровнем доступа CLUSTER может редактировать локальный стикер своего кластера и глобальный стикер, если при этом он только привязывает или отвязывает локальные виды работ своего кластера.

Входные данные

// 2.0+
{                                                                        
    "title": "Показания приборов",                                       // название стикера
    "description": "Показания приборов до выполнения работ на объекте",  // описание стикера
    "is_for_all": true,                                                  // доступность стикера для
                                                                         // всех видов работ
    "types": [                                                           // массив id видов работ,
                                                                         // к которым прикреплен
                                                                         // текущий стикер
        12,                                                              
        14                                                               
    ]                                                                    
}                                                                        

http 200

// 2.0+
{                                                                        
    "id": 6,                                                             
    "title": "Показания приборов",                                       // название стикера
    "description": "Показания приборов до выполнения работ на объекте",  // описание стикера
    "is_for_all": true,                                                  // доступность стикера для
                                                                         // всех видов работ
    "type_ids": [                                                        // список id-шников видов работ,
                                                                         // к которым прикреплен текущий стикер
        12,                                                              
        14                                                               
    ],                                                                   
    "cluster": {                                                         // кластер
        "id": 4,                                                         // id кластера
        "title": "Тестовый кластер"                                      // название кластера
    }                                                                    
}                                                                        

DELETE /rest/stickers/:id

Удаление стикера.

Пользователь с привилегией Удалить стикер и уровнем доступа не ниже CLUSTER.

Пользователь с уровнем доступа CLUSTER может удалять только локальные стикеры своего кластера.

Стикер будет откреплен ото всех файлов, к которым он был прикреплен.

/rest/timetables

GET /rest/timetables/:id/tasks/:yyyymmdd/@/:hhmi

Получение списка заданий по расписанию (созданных, запланированных и пропущенных) за указанное время.

Параметры

Знаком + помечены поля, для которых можно указывать список значений, разделённых запятой. Например, typeId=1,2.

http 200

2.0+
 {                                                               
    "schedule": {                                                // расписание
        "id": 263,                                               // id расписания
        "on": false,                                             // включено расписание или нет
        "title": "Расписание",                                   // название расписания
        "worktime": 7200,                                        // срок выполнения заданий, сек
        "archive": false,                                        // архивное расписание
        "total_template_count": 1,                               // количество шаблонов в расписании
        "time_zone": "Europe/Moscow",                            // таймзона расписания
        "contract": {                                            // контракт расписания
            "id": 97,                                            // id контракта
            "no": "N1",                                          // номер контракта
            "title": "Контракт расписания",                      
            "start_date_local": "01.01.2025 00:00",              // локальная дата начала действия контракта
            "finish_date_local": "01.01.2026 00:00",             // локальная дата окончания действия контракта
            "start_date": 1706798372,                            
            "finish_date": 1716798372,                           
            "cluster": {                                         
                "id": 97,                                        
                "title": "Мой кластер"                           
            }                                                    
        },                                                       
        "organization": {                                        // организация
            "id": 134,                                           // id организации
            "name": "Отдел разработки",                          // название организации
            "cluster": {                                         // кластер организации
                "id": 1,                                         
                "title": "По умолчанию"                          
            }                                                    
        }                                                        
        "cluster": {                                             // кластер
            "id": 62286,                                         // id кластера
            "title": "Тестовый кластер"                          // название кластера
        },                                                       
        "user": {                                                // информация о пользователе, который создал расписание
            "id": 360393,                                        // id пользователя
            "fio": "Админ кластера"                              // фио пользователя
        },                                                       
    },                                                           
    "items": [                                                   
        {                                                        // успешно созданное задание по расписанию
            "task": {                                            // созданное задание
                "id": 298,                                       
                "title": "Задание по расписанию",                
                "date": 1514829600,                              // дата задания
                "deadline": 1514833200,                          // срок выполнения
                "expired_date": 1514833200,                      // когда задание было просрочено
                "stage": 1,                                      // стадия
                "num_main_photo": 1,                             // номер главного фото
                "type": {                                        // вид работ
                    "id": 139,                                   
                    "name": "Разукомплектованный автомобиль",    
                    "icon": "icon_139.png",                      
                    "deleted": false                             
                },                                               
                "priority": {                                    // приоритет
                    "id": 1,                                     
                    "name": "Плановые",                          
                    "deleted": true                              
                },                                               
                "organization": {                                // организация-владелец
                    "id": 98,                                    
                    "name": "Тестовая организация",              
                    "cluster": {                                 // кластер организации
                        "id": 1,                                 
                        "title": "По умолчанию"                  
                    },                                           
                    "deleted": false                             
                },                                               
                "assigned_organization": {                       // назначенная организация
                    "id": 99,                                    
                    "name": "Название назначенной организации",  
                    "cluster": {                                 // кластер организации
                        "id": 1,                                 
                        "title": "По умолчанию"                  
                    },                                           
                    "deleted": false                             
                },                                               
                "assigned_user": {                               // исполнитель
                    "id": 599,                                   
                    "fio": "Сникерсов Марс Твиксович",           
                    "deleted": false                             
                },                                               
                "status": {                                      // этап
                    "name": "новое",                             
                    "color": "0000ff"                            
                },                                               
                "update_date": 1514829600,                       // дата последнего изменения
                "contract": {                                    // контракт расписания
                    "id": 97,                                    // id контракта
                    "no": "N1",                                  // номер контракта
                    "title": "Контракт расписания",              
                    "start_date_local": "01.01.2025 00:00",      // локальная дата начала действия контракта
                    "finish_date_local": "01.01.2026 00:00",     // локальная дата окончания действия контракта
                    "start_date": 1706798372,                    
                    "finish_date": 1716798372,                   
                    "cluster": {                                 
                        "id": 97,                                
                        "title": "Мой кластер"                   
                    }                                            
                },                                               
                "no": 300435,                                    // номер задния
                "deleted": null                                  // признак удалённого задания = deleted != null
            },                                                   
            "template": {                                        // шаблон-основа для задания
                "id": 198,                                       
                "title": "Задание по расписанию",                
                "date": 1514829600,                              // дата задания
                "deadline": 1514833200,                          // срок выполнения
                "expired_date": 1514833200,                      // когда задание было просрочено
                "stage": 1,                                      // стадия
                "num_main_photo": 1,                             // номер главного фото
                "type": {                                        // вид работ
                    "id": 139,                                   
                    "name": "Разукомплектованный автомобиль",    
                    "icon": "icon_139.png",                      
                    "deleted": false                             
                },                                               
                "priority": {                                    // приоритет
                    "id": 1,                                     
                    "name": "Плановые",                          
                    "deleted": true                              
                },                                               
                "organization": {                                // организация-владелец
                    "id": 98,                                    
                    "name": "Тестовая организация",              
                    "cluster": {                                 // кластер организации
                        "id": 1,                                 
                        "title": "По умолчанию"                  
                    },                                           
                    "deleted": false                             
                },                                               
                "assigned_organization": {                       // назначенная организация
                    "id": 99,                                    
                    "name": "Название назначенной организации",  
                    "cluster": {                                 // кластер организации
                        "id": 1,                                 
                        "title": "По умолчанию"                  
                    },                                           
                    "deleted": false                             
                },                                               
                "assigned_user": {                               // исполнитель
                    "id": 599,                                   
                    "fio": "Сникерсов Марс Твиксович",           
                    "deleted": false                             
                },                                               
                "status": {                                      // этап
                    "name": "новое",                             
                    "color": "0000ff"                            
                },                                               
                "update_date": 1514829600,                       // дата последнего изменения
                "contract": {                                    // контракт расписания
                    "id": 97,                                    // id контракта
                    "no": "N1",                                  // номер контракта
                    "title": "Контракт расписания",              
                    "start_date_local": "01.01.2025 00:00",      // локальная дата начала действия контракта
                    "finish_date_local": "01.01.2026 00:00",     // локальная дата окончания действия контракта
                    "start_date": 1706798372,                    
                    "finish_date": 1716798372,                   
                    "cluster": {                                 
                        "id": 97,                                
                        "title": "Мой кластер"                   
                    }                                            
                },                                               
                "no": 300435,                                    // номер задния
                "deleted": null                                  // признак удалённого задания = deleted != null
            },                                                   
            "run": {                                             // информация о запуске расписания
                "time": "18:40"                                  // время
                "date": "21.10.2023"                             // дата в формате DD.MM.YYYY
            },                                                   
            "fail": null,                                        // поле сообщения об ошибке пусто
            "skipped": false,                                    // true, если создание задания было пропущено
            "missed": false                                      // true, если создание задания
                                                                 // просрочено более 15 минут назад
        },                                                       
        {                                                        // запланированное или просроченное задание
            "task": null,                                        
            "template": {...},                                   // задание-шаблон
            "fail": null,                                        // поле сообщения об ошибке пусто
            "skipped": false,                                    
            "run": {...},                                        
            "missed": false                                      // задание не создано, но с момента
                                                                 // запуска ещё не прошло 15 минут
        },                                                       
        {                                                        // запланированное или просроченное задание
            "task": null,                                        
            "template": {...},                                   // задание-шаблон
            "fail": null,                                        // поле сообщения об ошибке пусто
            "skipped": false,                                    
            "run": {...},                                        
            "missed": true                                       // создание задания просрочено
        },                                                       
        {                                                        // при создании задания произошла ошибка
            "task": null,                                        
            "template": {...},                                   // задание-шаблон
            "fail": "Текст ошибки",                              
            "skipped": true,                                     
            "run": {...},                                        
            "missed": false                                      
        },                                                       
        ...                                                      
    ],                                                           
    "total": 5,                                                  
    "limit": 25,                                                 
    "page": 1                                                    
}                                                                

GET /rest/timetables/:ids/stats/:yyyymm/@/:hhmm

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

Параметры

Знаком + помечены поля, для которых можно указывать список значений, разделённых запятой. Например, typeId=1,2.

http 200

2.0+
{                                                     
    "stats": [                                        
        {                                             
            "fail": 0,                                // не создано из-за ошибок
            "skipped": 0,                             // создание пропущено
            "missed": 2,                              // создание просрочено (более 15 мин назад)
            "creating": 0,                            // создание просрочено (менее 15 мин назад)
            "planned": 0,                             // запланированные задания
            "done_expired": 0,                        // просроченные задания, находящиеся в стадии 2 - завершено
            "done_not_expired": 0,                    // непросроченные задания, находящиеся в стадии 2 - завершено
            "rejected_expired": 0,                    // просроченные задания, находящиеся в стадии 0 - отклонено
            "rejected_not_expired": 0,                // непросроченные задания, находящиеся в стадии 0 - отклонено
            "working_expired": 0,                     // просроченные задания, находящиеся в стадии 1 - в работе
            "working_not_expired": 0,                 // непросроченные задания, находящиеся в стадии 1 - в работе
            "created": 0,                             // созданные задания
            "date": "21.10.2023"                      // дата в формате DD.MM.YYYY
        },                                            
        ...                                           
    ],                                                
    "schedule": {                                     // расписание
                                                      // (если присутствует часть /:id)
        "id": 263,                                    // id расписания
        "on": false,                                  // включено расписание или нет
        "title": "Расписание",                        // название расписания
        "worktime": 7200,                             // срок выполнения заданий, сек
        "archive": false,                             // архивное расписание
        "total_template_count": 1,                    // количество шаблонов в расписании
        "time_zone": "Europe/Moscow",                 // таймзона расписания
        "contract": {                                 // контракт расписания
            "id": 97,                                 // id контракта
            "no": "N1",                               // номер контракта
            "title": "Контракт расписания",           
            "start_date_local": "01.01.2025 00:00",   // локальная дата начала действия контракта
            "finish_date_local": "01.01.2026 00:00",  // локальная дата окончания действия контракта
            "start_date": 1706798372,                 
            "finish_date": 1716798372,                
            "cluster": {                              
                "id": 97,                             
                "title": "Мой кластер"                
            }                                         
        },                                            
        "organization": {                             // организация
            "id": 134,                                // id организации
            "name": "Отдел разработки",               // название организации
            "cluster": {                              // кластер организации
                "id": 1,                              
                "title": "По умолчанию"               
            }                                         
        }                                             
        "cluster": {                                  // кластер
            "id": 62286,                              // id кластера
            "title": "Тестовый кластер"               // название кластера
        },                                            
        "user": {                                     // информация о пользователе, который создал расписание
            "id": 360393,                             // id пользователя
            "fio": "Админ кластера"                   // фио пользователя
        },                                            
    },                                                
}                                                     

GET /rest/timetables/runs/:yyyymmdd

Получение списка запусков расписаний в разрезе дней со статистикой по каждому запуску.

Запуски группируются по расписаниям: page и limit накладываются на расписания, а в ответе отдаются все запуски отобранных расписаний.

Параметры

Знаком + помечены поля, для которых можно указывать список значений, разделённых запятой. Например, typeId=1,2.

http 200

2.0+
{                                                             
    "items": [                                                
        {                                                     
            "schedule": {                                     // расписание
                "id": 263,                                    // id расписания
                "on": false,                                  // включено расписание или нет
                "title": "Расписание",                        // название расписания
                "worktime": 7200,                             // срок выполнения заданий, сек
                "archive": false,                             // архивное расписание
                "total_template_count": 1,                    // количество шаблонов в расписании
                "time_zone": "Europe/Moscow",                 // таймзона расписания
                "contract": {                                 // контракт расписания
                    "id": 97,                                 // id контракта
                    "no": "N1",                               // номер контракта
                    "title": "Контракт расписания",           
                    "start_date_local": "01.01.2025 00:00",   // локальная дата начала действия контракта
                    "finish_date_local": "01.01.2026 00:00",  // локальная дата окончания действия контракта
                    "start_date": 1706798372,                 
                    "finish_date": 1716798372,                
                    "cluster": {                              
                        "id": 97,                             
                        "title": "Мой кластер"                
                    }                                         
                },                                            
                "organization": {                             // организация
                    "id": 134,                                // id организации
                    "name": "Отдел разработки",               // название организации
                    "cluster": {                              // кластер организации
                        "id": 1,                              
                        "title": "По умолчанию"               
                    }                                         
                }                                             
                "cluster": {                                  // кластер
                    "id": 62286,                              // id кластера
                    "title": "Тестовый кластер"               // название кластера
                },                                            
                "user": {                                     // информация о пользователе, который создал расписание
                    "id": 360393,                             // id пользователя
                    "fio": "Админ кластера"                   // фио пользователя
                },                                            
            },                                                
            "runs": [                                         // запуски расписания
                {                                             
                    "time": "18:40"                           // время
                    "date": "21.10.2023"                      // дата в формате DD.MM.YYYY
                    "stats": {                                // статистика запуска
                        "fail": 0,                            // не создано из-за ошибок
                        "skipped": 0,                         // создание пропущено
                        "missed": 2,                          // создание просрочено (более 15 мин назад)
                        "creating": 0,                        // создание просрочено (менее 15 мин назад)
                        "planned": 0,                         // запланированные задания
                        "done_expired": 0,                    // просроченные задания, находящиеся в стадии 2 - завершено
                        "done_not_expired": 0,                // непросроченные задания, находящиеся в стадии 2 - завершено
                        "rejected_expired": 0,                // просроченные задания, находящиеся в стадии 0 - отклонено
                        "rejected_not_expired": 0,            // непросроченные задания, находящиеся в стадии 0 - отклонено
                        "working_expired": 0,                 // просроченные задания, находящиеся в стадии 1 - в работе
                        "working_not_expired": 0,             // непросроченные задания, находящиеся в стадии 1 - в работе
                        "created": 0,                         // созданные задания
                    }                                         
                },                                            
                ...                                           
            ]                                                 
        }                                                     
    ],                                                        
    "total": 2747,                                            
    "limit": 12,                                              
    "page": 1                                                 
}                                                             

GET /rest/timetables/list

Запрос за списком расписаний

Пользователь с привилегией Доступ к контрактам.

Параметры

Знаком + помечены поля, для которых можно указывать список значений, разделённых запятой. Например, typeId=1,2.

http 200

// 2.0+
{                                                          
    "items": [                                             
        {                                                  
            "id": 263,                                     // id расписания
            "on": false,                                   // включено расписание или нет
            "title": "Расписание",                         // название расписания
            "start_date_time": 1673955726,                 // начало действия расписания
            "finish_date_time": 1705480730,                // окончание действия расписания
            "start_date_time_local": "01.01.2025 00:00",   // локальное начало действия расписания
            "finish_date_time_local": "01.01.2026 00:00",  // локальное окончание действия расписания
            "worktime": 7200,                              // срок выполнения заданий, сек
            "archive": false,                              // архивное расписание
            "total_template_count": 1,                     // количество шаблонов в расписании
            "time_zone": "Europe/Moscow",                  // таймзона расписания
            "contract": {                                  // контракт расписания
                "id": 97,                                  // id контракта
                "no": "N1",                                // номер контракта
                "title": "Контракт расписания",            
                "start_date_local": "01.01.2025 00:00",    // локальная дата начала действия контракта
                "finish_date_local": "01.01.2026 00:00",   // локальная дата окончания действия контракта
                "start_date": 1706798372,                  
                "finish_date": 1716798372,                 
                "cluster": {                               
                    "id": 97,                              
                    "title": "Мой кластер"                 
                }                                          
            },                                             
            "organization": {                              // организация
                "id": 134,                                 // id организации
                "name": "Отдел разработки",                // название организации
                "cluster": {                               // кластер организации
                    "id": 1,                               
                    "title": "По умолчанию"                
                }                                          
            }                                              
            "cluster": {                                   // кластер
                "id": 62286,                               // id кластера
                "title": "Тестовый кластер"                // название кластера
            },                                             
            "user": {                                      // информация о пользователе, который создал расписание
                "id": 360393,                              // id пользователя
                "fio": "Админ кластера"                    // фио пользователя
            },                                             
            "weekdays": [                                  // рабочие группы
                {                                          
                    "id": 645,                             // id группы
                    "on": true,                            // включена группа или нет
                    "times": [                             // массив моментов времени
                        {                                  
                            "id": 83,                      // id момента времени
                            "on": true,                    // включен момент времени или нет
                            "time": "12:01"                // время
                        }                                  
                    ],                                     
                    "periods_months": [                    // периоды
                        {                                  
                            "id": 64,                      // id периода
                            "value": [                     // массив значений
                                "OCTOBER"                  
                            ],                             
                            "on": true                     // включен период или нет
                        }                                  
                    ],                                     
                    "weekly_patterns": [                   // еженедельные шаблоны
                        {                                  
                            "id": 489,                     // id шаблона
                            "value": [                     // массив значений
                                "FRIDAY"                   
                            ],                             
                            "on": false                    // включен шаблон или нет
                        }                                  
                    ],                                     
                    "random_patterns": [                   // произвольные шаблоны
                        {                                  
                            "id": 488,                     // id шаблона
                            "value": [                     // массив значений
                                "20.12.2024"               
                            ],                             
                            "on": true                     // включен шаблон или нет
                        }                                  
                    ],                                     
                    "yearly_patterns": [                   // ежегодные шаблоны
                        {                                  
                            "id": 495,                     // id шаблона
                            "value": [                     // массив значений
                                "01.01"                    
                            ],                             
                            "on": true                     // включен шаблон или нет
                        }                                  
                    ],                                     
                    "monthly_patterns": [                  // ежемесячные шаблоны
                        {                                  
                            "id": 490,                     // id шаблона
                            "value": [                     // массив значений
                                10                         
                            ],                             
                            "on": true                     // включен шаблон или нет
                        }                                  
                    ]                                      
                }                                          
            ],                                             
            "holidays": [                                  // выходные группы
                {                                          
                    "id": 646,                             // id группы
                    "on": false,                           // включена группа или нет
                    "weekly_patterns": [                   // еженедельные шаблоны
                        {                                  
                            "id": 492,                     // id шаблона
                            "value": [                     // массив значений
                                "WEDNESDAY"                
                            ],                             
                            "on": true                     // включен шаблон или нет
                        }                                  
                    ],                                     
                    "random_patterns": [                   // произвольные шаблоны
                        {                                  
                            "id": 491,                     // id шаблона
                            "value": [                     // массив значений
                                "02.01.2024"               
                            ],                             
                            "on": true                     // включен шаблон или нет
                        }                                  
                    ],                                     
                    "yearly_patterns": [                   // ежегодные шаблоны
                        {                                  
                            "id": 495,                     // id шаблона
                            "value": [                     // массив значений
                                "01.01"                    
                            ],                             
                            "on": true                     // включен шаблон или нет
                        }                                  
                    ],                                     
                    "monthly_patterns": [                  // ежемесячные шаблоны
                        {                                  
                            "id": 493,                     // id шаблона
                            "value": [                     // массив значений
                                7,                         
                                14                         
                            ],                             
                            "on": true                     // включен шаблон или нет
                        }                                  
                    ]                                      
                }                                          
            ]                                              
        }                                                  
    ],                                                     
    "total": 92,                                           
    "limit": 1,                                            
    "page": 1                                              
}                                                          

POST /rest/timetables

Создать расписание.

Пользователь с привилегиями Создать расписание и Доступ к расписаниям и уровнем доступа не ниже ORGANIZATION.

Пользователь с уровнем доступа CLUSTER может создать расписание внутри своего кластера.

Пользователь с уровнем доступа ORGANIZATION может создать расписание внутри своей организации.

Расписание можно создать на уровне системы, кластера или организации. Для создания расписания на уровне кластера необходимо передать поле cluster, а на уровне организации - organization. При передаче обоих полей (cluster и organization) в ответе будет выдан BadRequest. По умолчанию для администратора кластера/организации расписание создается на уровне его организации.

Даты начала и окончания срока действия могут быть переданы как в формате Unix Timestamp, так и в виде строки. Строка при этом состоит из даты (YYYY, MM, DD в прямом или обратном порядке, разделённые точкой, дефисом или слэшем) и времени (hh:mm или hh:mm:ss), разделённых пробелом.

Timestamp трактуется как абсолютное время в UTC. Строковая дата трактуется как местное время; часовой пояс передаётся в самом расписании. Если его нет, то он будет вычислен из кластера расписания. Если расписание принадлежит организации

Входные данные

// 2.0+
{                                              
    "on": false,                               // * включено расписание или нет
    "title": "Расписание",                     // * название расписания
    "start_date_time": "2025-01-01 00:00:00",  // начало действия расписания
    "finish_date_time": "01.01.2026 00:00",    // окончание действия расписания
    "worktime": 7200,                          // срок выполнения заданий, сек
    "time_zone": "Europe/Moscow"               // таймзона расписания, возможный формат - "UTC+3", "UTC+03:00" или "Europe/Moscow"
    "contract": {                              // контракт расписания
        "id": 97                               
    },                                         
    "organization": {                          // организация расписания
        "id": 134                              
    },                                         
    "cluster": {                               // кластер расписания
        "id": 135                              
    },                                         
    "weekdays": [                              // рабочие группы
        {                                      
            "on": true,                        // * включена группа или нет
            "times": [                         // массив моментов времени
                {                              
                    "on": true,                // * включен момент времени или нет
                    "time": "12:01"            // * время
                }                              
            ],                                 
            "periods_months": [                // периоды
                {                              
                    "value": [                 // * массив значений
                        "OCTOBER"              
                    ],                         
                    "on": true                 // * включен период или нет
                }                              
            ],                                 
            "weekly_patterns": [               // еженедельные шаблоны
                {                              
                    "value": [                 // * массив значений
                        "FRIDAY"               
                    ],                         
                    "on": false                // * включен шаблон или нет
                }                              
            ],                                 
            "random_patterns": [               // произвольные шаблоны
                {                              
                    "value": [                 // * массив значений
                        "20.12.2024"           
                    ],                         
                    "on": true                 // * включен шаблон или нет
                }                              
            ],                                 
            "yearly_patterns": [               // ежегодные шаблоны
                {                              
                    "value": [                 // * массив значений
                        "01.01"                
                    ],                         
                    "on": true                 // * включен шаблон или нет
                }                              
            ],                                 
            "monthly_patterns": [              // ежемесячные шаблоны
                {                              
                    "value": [                 // * массив значений
                        10                     
                    ],                         
                    "on": true                 // * включен шаблон или нет
                }                              
            ]                                  
        }                                      
    ],                                         
    "holidays": [                              // выходные группы
        {                                      
            "on": false,                       // * включена группа или нет
            "weekly_patterns": [               // еженедельные шаблоны
                {                              
                    "value": [                 // * массив значений
                        "WEDNESDAY"            
                    ],                         
                    "on": true                 // * включен шаблон или нет
                }                              
            ],                                 
            "random_patterns": [               // произвольные шаблоны
                {                              
                    "value": [                 // * массив значений
                        "02.01.2024"           
                    ],                         
                    "on": true                 // * включен шаблон или нет
                }                              
            ],                                 
            "yearly_patterns": [               // ежегодные шаблоны
                {                              
                    "value": [                 // * массив значений
                        "01.01"                
                    ],                         
                    "on": true                 // * включен шаблон или нет
                }                              
            ],                                 
            "monthly_patterns": [              // ежемесячные шаблоны
                {                              
                    "value": [                 // * массив значений
                        7,                     
                        14                     
                    ],                         
                    "on": true                 // * включен шаблон или нет
                }                              
            ]                                  
        }                                      
    ],                                         
    "templates": [                             // шаблоны
        {                                      
            "id": 133122,                      // id шаблона
        }                                      
    ]                                          
}                                              

http 200

// 2.0+
{                                                  
    "id": 263,                                     // id расписания
    "on": false,                                   // включено расписание или нет
    "title": "Расписание",                         // название расписания
    "start_date_time": 1673955726,                 // начало действия расписания
    "finish_date_time": 1705480730,                // окончание действия расписания
    "start_date_time_local": "01.01.2025 00:00",   // локальное начало действия расписания
    "finish_date_time_local": "01.01.2026 00:00",  // локальное окончание действия расписания
    "worktime": 7200,                              // срок выполнения заданий, сек
    "archive": false,                              // архивное расписание
    "total_template_count": 1,                     // количество шаблонов в расписании
    "time_zone": "Europe/Moscow",                  // таймзона расписания
    "contract": {                                  // контракт расписания
        "id": 97,                                  // id контракта
        "no": "N1",                                // номер контракта
        "title": "Контракт расписания",            
        "start_date_local": "01.01.2025 00:00",    // локальная дата начала действия контракта
        "finish_date_local": "01.01.2026 00:00",   // локальная дата окончания действия контракта
        "start_date": 1706798372,                  
        "finish_date": 1716798372,                 
        "cluster": {                               
            "id": 97,                              
            "title": "Мой кластер"                 
        }                                          
    },                                             
    "organization": {                              // организация
        "id": 134,                                 // id организации
        "name": "Отдел разработки",                // название организации
        "cluster": {                               // кластер организации
            "id": 1,                               
            "title": "По умолчанию"                
        }                                          
    }                                              
    "cluster": {                                   // кластер
        "id": 62286,                               // id кластера
        "title": "Тестовый кластер"                // название кластера
    },                                             
    "user": {                                      // информация о пользователе, который создал расписание
        "id": 360393,                              // id пользователя
        "fio": "Админ кластера"                    // фио пользователя
    },                                             
    "weekdays": [                                  // рабочие группы
        {                                          
            "id": 645,                             // id группы
            "on": true,                            // включена группа или нет
            "times": [                             // массив моментов времени
                {                                  
                    "id": 83,                      // id момента времени
                    "on": true,                    // включен момент времени или нет
                    "time": "12:01"                // время
                }                                  
            ],                                     
            "periods_months": [                    // периоды
                {                                  
                    "id": 64,                      // id периода
                    "value": [                     // массив значений
                        "OCTOBER"                  
                    ],                             
                    "on": true                     // включен период или нет
                }                                  
            ],                                     
            "weekly_patterns": [                   // еженедельные шаблоны
                {                                  
                    "id": 489,                     // id шаблона
                    "value": [                     // массив значений
                        "FRIDAY"                   
                    ],                             
                    "on": false                    // включен шаблон или нет
                }                                  
            ],                                     
            "random_patterns": [                   // произвольные шаблоны
                {                                  
                    "id": 488,                     // id шаблона
                    "value": [                     // массив значений
                        "20.12.2024"               
                    ],                             
                    "on": true                     // включен шаблон или нет
                }                                  
            ],                                     
            "yearly_patterns": [                   // ежегодные шаблоны
                {                                  
                    "id": 495,                     // id шаблона
                    "value": [                     // массив значений
                        "01.01"                    
                    ],                             
                    "on": true                     // включен шаблон или нет
                }                                  
            ],                                     
            "monthly_patterns": [                  // ежемесячные шаблоны
                {                                  
                    "id": 490,                     // id шаблона
                    "value": [                     // массив значений
                        10                         
                    ],                             
                    "on": true                     // включен шаблон или нет
                }                                  
            ]                                      
        }                                          
    ],                                             
    "holidays": [                                  // выходные группы
        {                                          
            "id": 646,                             // id группы
            "on": false,                           // включена группа или нет
            "weekly_patterns": [                   // еженедельные шаблоны
                {                                  
                    "id": 492,                     // id шаблона
                    "value": [                     // массив значений
                        "WEDNESDAY"                
                    ],                             
                    "on": true                     // включен шаблон или нет
                }                                  
            ],                                     
            "random_patterns": [                   // произвольные шаблоны
                {                                  
                    "id": 491,                     // id шаблона
                    "value": [                     // массив значений
                        "02.01.2024"               
                    ],                             
                    "on": true                     // включен шаблон или нет
                }                                  
            ],                                     
            "yearly_patterns": [                   // ежегодные шаблоны
                {                                  
                    "id": 495,                     // id шаблона
                    "value": [                     // массив значений
                        "01.01"                    
                    ],                             
                    "on": true                     // включен шаблон или нет
                }                                  
            ],                                     
            "monthly_patterns": [                  // ежемесячные шаблоны
                {                                  
                    "id": 493,                     // id шаблона
                    "value": [                     // массив значений
                        7,                         
                        14                         
                    ],                             
                    "on": true                     // включен шаблон или нет
                }                                  
            ]                                      
        }                                          
    ]                                              
}                                                  

PATCH /rest/timetables/:id

Изменить расписание.

Пользователь с привилегиями Редактировать расписание и Доступ к контрактам и уровнем доступа не ниже ORGANIZATION.

Пользователь с уровнем доступа CLUSTER может изменить расписание внутри своего кластера.

Пользователь с уровнем доступа ORGANIZATION может изменить расписание внутри своей организации.

Даты начала и окончания срока действия могут быть переданы как в формате Unix Timestamp, так и в виде строки. Строка при этом состоит из даты (YYYY, MM, DD в прямом или обратном порядке, разделённые точкой, дефисом или слэшем) и времени (hh:mm или hh:mm:ss), разделённых пробелом.

Timestamp трактуется как абсолютное время в UTC. Строковая дата трактуется как местное время; часовой пояс будет взят из самого расписания.

Входные данные

// 2.0+
{                                              
    "on": false,                               // включено расписание или нет
    "title": "Расписание",                     // название расписания
    "archive": false,                          // архивное расписание
    "start_date_time": "2025-01-01 00:00:00",  // начало действия расписания
    "finish_date_time": "01.01.2026 00:00",    // окончание действия расписания
    "worktime": 7200,                          // срок выполнения заданий, сек
    "weekdays": [                              // рабочие группы
        {                                      
            "id": 645,                         // id группы
            "on": true,                        // включена группа или нет
            "times": [                         // массив моментов времени
                {                              
                    "id": 83,                  // id момента времени
                    "on": true,                // включен момент времени или нет
                    "time": "12:01"            // время
                }                              
            ],                                 
            "periods_months": [                // периоды
                {                              
                    "id": 64,                  // id периода
                    "value": [                 // массив значений
                        "OCTOBER"              
                    ],                         
                    "on": true                 // включен период или нет
                }                              
            ],                                 
            "weekly_patterns": [               // еженедельные шаблоны
                {                              
                    "id": 489,                 // id шаблона
                    "value": [                 // массив значений
                        "FRIDAY"               
                    ],                         
                    "on": false                // включен шаблон или нет
                }                              
            ],                                 
            "random_patterns": [               // произвольные шаблоны
                {                              
                    "id": 488,                 // id шаблона
                    "value": [                 // массив значений
                        "20.12.2024"           
                    ],                         
                    "on": true                 // включен шаблон или нет
                }                              
            ],                                 
            "yearly_patterns": [               // ежегодные шаблоны
                {                              
                    "id": 495,                 // id шаблона
                    "value": [                 // массив значений
                        "01.01"                
                    ],                         
                    "on": true                 // включен шаблон или нет
                }                              
            ],                                 
            "monthly_patterns": [              // ежемесячные шаблоны
                {                              
                    "id": 490,                 // id шаблона
                    "value": [                 // массив значений
                        10                     
                    ],                         
                    "on": true                 // включен шаблон или нет
                }                              
            ]                                  
        }                                      
    ],                                         
    "holidays": [                              // выходные группы
        {                                      
            "id": 646,                         // id группы
            "on": false,                       // включена группа или нет
            "weekly_patterns": [               // еженедельные шаблоны
                {                              
                    "id": 492,                 // id шаблона
                    "value": [                 // массив значений
                        "WEDNESDAY"            
                    ],                         
                    "on": true                 // включен шаблон или нет
                }                              
            ],                                 
            "random_patterns": [               // произвольные шаблоны
                {                              
                    "id": 491,                 // id шаблона
                    "value": [                 // массив значений
                        "02.01.2024"           
                    ],                         
                    "on": true                 // включен шаблон или нет
                }                              
            ],                                 
            "yearly_patterns": [               // ежегодные шаблоны
                {                              
                    "id": 495,                 // id шаблона
                    "value": [                 // массив значений
                        "01.01"                
                    ],                         
                    "on": true                 // включен шаблон или нет
                }                              
            ],                                 
            "monthly_patterns": [              // ежемесячные шаблоны
                {                              
                    "id": 493,                 // id шаблона
                    "value": [                 // массив значений
                        7,                     
                        14                     
                    ],                         
                    "on": true                 // включен шаблон или нет
                }                              
            ]                                  
        }                                      
    ],                                         
    "templates": {                             // шаблоны
        "add": [                               // добавить
            {                                  
                "id": 133122                   // id шаблона
            }                                  
        ],                                     
        "remove": [                            // удалить
            {                                  
                "id": 133119                   // id шаблона
            }                                  
        ]                                      
    }                                          
}                                              

http 200

// 2.0+
{                                                  
    "id": 263,                                     // id расписания
    "on": false,                                   // включено расписание или нет
    "title": "Расписание",                         // название расписания
    "start_date_time": 1673955726,                 // начало действия расписания
    "finish_date_time": 1705480730,                // окончание действия расписания
    "start_date_time_local": "01.01.2025 00:00",   // локальное начало действия расписания
    "finish_date_time_local": "01.01.2026 00:00",  // локальное окончание действия расписания
    "worktime": 7200,                              // срок выполнения заданий, сек
    "archive": false,                              // архивное расписание
    "total_template_count": 1,                     // количество шаблонов в расписании
    "time_zone": "Europe/Moscow",                  // таймзона расписания
    "contract": {                                  // контракт расписания
        "id": 97,                                  // id контракта
        "no": "N1",                                // номер контракта
        "title": "Контракт расписания",            
        "start_date_local": "01.01.2025 00:00",    // локальная дата начала действия контракта
        "finish_date_local": "01.01.2026 00:00",   // локальная дата окончания действия контракта
        "start_date": 1706798372,                  
        "finish_date": 1716798372,                 
        "cluster": {                               
            "id": 97,                              
            "title": "Мой кластер"                 
        }                                          
    },                                             
    "organization": {                              // организация
        "id": 134,                                 // id организации
        "name": "Отдел разработки",                // название организации
        "cluster": {                               // кластер организации
            "id": 1,                               
            "title": "По умолчанию"                
        }                                          
    }                                              
    "cluster": {                                   // кластер
        "id": 62286,                               // id кластера
        "title": "Тестовый кластер"                // название кластера
    },                                             
    "user": {                                      // информация о пользователе, который создал расписание
        "id": 360393,                              // id пользователя
        "fio": "Админ кластера"                    // фио пользователя
    },                                             
    "weekdays": [                                  // рабочие группы
        {                                          
            "id": 645,                             // id группы
            "on": true,                            // включена группа или нет
            "times": [                             // массив моментов времени
                {                                  
                    "id": 83,                      // id момента времени
                    "on": true,                    // включен момент времени или нет
                    "time": "12:01"                // время
                }                                  
            ],                                     
            "periods_months": [                    // периоды
                {                                  
                    "id": 64,                      // id периода
                    "value": [                     // массив значений
                        "OCTOBER"                  
                    ],                             
                    "on": true                     // включен период или нет
                }                                  
            ],                                     
            "weekly_patterns": [                   // еженедельные шаблоны
                {                                  
                    "id": 489,                     // id шаблона
                    "value": [                     // массив значений
                        "FRIDAY"                   
                    ],                             
                    "on": false                    // включен шаблон или нет
                }                                  
            ],                                     
            "random_patterns": [                   // произвольные шаблоны
                {                                  
                    "id": 488,                     // id шаблона
                    "value": [                     // массив значений
                        "20.12.2024"               
                    ],                             
                    "on": true                     // включен шаблон или нет
                }                                  
            ],                                     
            "yearly_patterns": [                   // ежегодные шаблоны
                {                                  
                    "id": 495,                     // id шаблона
                    "value": [                     // массив значений
                        "01.01"                    
                    ],                             
                    "on": true                     // включен шаблон или нет
                }                                  
            ],                                     
            "monthly_patterns": [                  // ежемесячные шаблоны
                {                                  
                    "id": 490,                     // id шаблона
                    "value": [                     // массив значений
                        10                         
                    ],                             
                    "on": true                     // включен шаблон или нет
                }                                  
            ]                                      
        }                                          
    ],                                             
    "holidays": [                                  // выходные группы
        {                                          
            "id": 646,                             // id группы
            "on": false,                           // включена группа или нет
            "weekly_patterns": [                   // еженедельные шаблоны
                {                                  
                    "id": 492,                     // id шаблона
                    "value": [                     // массив значений
                        "WEDNESDAY"                
                    ],                             
                    "on": true                     // включен шаблон или нет
                }                                  
            ],                                     
            "random_patterns": [                   // произвольные шаблоны
                {                                  
                    "id": 491,                     // id шаблона
                    "value": [                     // массив значений
                        "02.01.2024"               
                    ],                             
                    "on": true                     // включен шаблон или нет
                }                                  
            ],                                     
            "yearly_patterns": [                   // ежегодные шаблоны
                {                                  
                    "id": 495,                     // id шаблона
                    "value": [                     // массив значений
                        "01.01"                    
                    ],                             
                    "on": true                     // включен шаблон или нет
                }                                  
            ],                                     
            "monthly_patterns": [                  // ежемесячные шаблоны
                {                                  
                    "id": 493,                     // id шаблона
                    "value": [                     // массив значений
                        7,                         
                        14                         
                    ],                             
                    "on": true                     // включен шаблон или нет
                }                                  
            ]                                      
        }                                          
    ]                                              
}                                                  

DELETE /rest/timetables/:id

Удаление расписания.

Пользователь с привилегиями Удалить расписание и Доступ к контрактам и уровнем доступа не ниже ORGANIZATION.

Пользователь с уровнем доступа CLUSTER может удалить расписание внутри своего кластера.

Пользователь с уровнем доступа ORGANIZATION может удалить расписание внутри своей организации.

POST /rest/timetables/preview/:yyyymm

Пользователь с привилегиями Создать расписание и Доступ к контрактам и уровнем доступа не ниже ORGANIZATION.

Пользователь с уровнем доступа CLUSTER может получить запуски и выходные дни расписания своего кластера.

Пользователь с уровнем доступа ORGANIZATION может получить запуски и выходные дни расписания своей организации.

Получить запуски и выходные дни расписания за указанный месяц. В реальности данные присылаются за 6 недель, включающие указанный месяц. Первая неделя из шести выбирается так, чтобы она включала 1-е число указанного месяца.

Даты начала и окончания срока действия могут быть переданы как в формате Unix Timestamp, так и в виде строки. Строка при этом состоит из даты (YYYY, MM, DD в прямом или обратном порядке, разделённые точкой, дефисом или слэшем) и времени (hh:mm или hh:mm:ss), разделённых пробелом.

Timestamp трактуется как абсолютное время в UTC. Строковая дата трактуется как местное время; часовой пояс передаётся в самом расписании. Если его нет, то он будет вычислен из кластера расписания. Если расписание принадлежит организации

Присланные изменения учитываются при генерации запусков расписания, но не сохраняются в БД.

Входные данные

// 2.0+
{                                              
    "on": false,                               // * включено расписание или нет
    "title": "Расписание",                     // * название расписания
    "start_date_time": "2025-01-01 00:00:00",  // начало действия расписания
    "finish_date_time": "01.01.2026 00:00",    // окончание действия расписания
    "worktime": 7200,                          // срок выполнения заданий, сек
    "time_zone": "Europe/Moscow"               // таймзона расписания, возможный формат - "UTC+3", "UTC+03:00" или "Europe/Moscow"
    "contract": {                              // контракт расписания
        "id": 97                               
    },                                         
    "organization": {                          // организация расписания
        "id": 134                              
    },                                         
    "cluster": {                               // кластер расписания
        "id": 135                              
    },                                         
    "weekdays": [                              // рабочие группы
        {                                      
            "on": true,                        // * включена группа или нет
            "times": [                         // массив моментов времени
                {                              
                    "on": true,                // * включен момент времени или нет
                    "time": "12:01"            // * время
                }                              
            ],                                 
            "periods_months": [                // периоды
                {                              
                    "value": [                 // * массив значений
                        "OCTOBER"              
                    ],                         
                    "on": true                 // * включен период или нет
                }                              
            ],                                 
            "weekly_patterns": [               // еженедельные шаблоны
                {                              
                    "value": [                 // * массив значений
                        "FRIDAY"               
                    ],                         
                    "on": false                // * включен шаблон или нет
                }                              
            ],                                 
            "random_patterns": [               // произвольные шаблоны
                {                              
                    "value": [                 // * массив значений
                        "20.12.2024"           
                    ],                         
                    "on": true                 // * включен шаблон или нет
                }                              
            ],                                 
            "yearly_patterns": [               // ежегодные шаблоны
                {                              
                    "value": [                 // * массив значений
                        "01.01"                
                    ],                         
                    "on": true                 // * включен шаблон или нет
                }                              
            ],                                 
            "monthly_patterns": [              // ежемесячные шаблоны
                {                              
                    "value": [                 // * массив значений
                        10                     
                    ],                         
                    "on": true                 // * включен шаблон или нет
                }                              
            ]                                  
        }                                      
    ],                                         
    "holidays": [                              // выходные группы
        {                                      
            "on": false,                       // * включена группа или нет
            "weekly_patterns": [               // еженедельные шаблоны
                {                              
                    "value": [                 // * массив значений
                        "WEDNESDAY"            
                    ],                         
                    "on": true                 // * включен шаблон или нет
                }                              
            ],                                 
            "random_patterns": [               // произвольные шаблоны
                {                              
                    "value": [                 // * массив значений
                        "02.01.2024"           
                    ],                         
                    "on": true                 // * включен шаблон или нет
                }                              
            ],                                 
            "yearly_patterns": [               // ежегодные шаблоны
                {                              
                    "value": [                 // * массив значений
                        "01.01"                
                    ],                         
                    "on": true                 // * включен шаблон или нет
                }                              
            ],                                 
            "monthly_patterns": [              // ежемесячные шаблоны
                {                              
                    "value": [                 // * массив значений
                        7,                     
                        14                     
                    ],                         
                    "on": true                 // * включен шаблон или нет
                }                              
            ]                                  
        }                                      
    ]                                          
}                                              

http 200

// 2.0+
{                                                      
    "schedule": {                                      // расписание
        "id": 263,                                     // id расписания
        "on": false,                                   // включено расписание или нет
        "title": "Расписание",                         // название расписания
        "start_date_time": 1673955726,                 // начало действия расписания
        "finish_date_time": 1705480730,                // окончание действия расписания
        "start_date_time_local": "01.01.2025 00:00",   // локальное начало действия расписания
        "finish_date_time_local": "01.01.2026 00:00",  // локальное окончание действия расписания
        "worktime": 7200,                              // срок выполнения заданий, сек
        "archive": false,                              // архивное расписание
        "total_template_count": 0,                     // количество шаблонов в расписании
        "time_zone": "Europe/Moscow",                  // таймзона расписания
        "contract": {                                  // контракт расписания
            "id": 97,                                  // id контракта
            "no": "N1",                                // номер контракта
            "title": "Контракт расписания",            
            "start_date_local": "01.01.2025 00:00",    // локальная дата начала действия контракта
            "finish_date_local": "01.01.2026 00:00",   // локальная дата окончания действия контракта
            "start_date": 1706798372,                  
            "finish_date": 1716798372,                 
            "cluster": {                               
                "id": 97,                              
                "title": "Мой кластер"                 
            }                                          
        },                                             
        "organization": {                              // организация
            "id": 134,                                 // id организации
            "name": "Отдел разработки",                // название организации
            "cluster": {                               // кластер организации
                "id": 1,                               
                "title": "По умолчанию"                
            }                                          
        }                                              
        "cluster": {                                   // кластер
            "id": 62286,                               // id кластера
            "title": "Тестовый кластер"                // название кластера
        },                                             
        "user": {                                      // информация о пользователе, который создал расписание
            "id": 360393,                              // id пользователя
            "fio": "Админ кластера"                    // фио пользователя
        },                                             
        "weekdays": [                                  // рабочие группы
            {                                          
                "id": 645,                             // id группы
                "on": true,                            // включена группа или нет
                "times": [                             // массив моментов времени
                    {                                  
                        "id": 83,                      // id момента времени
                        "on": true,                    // включен момент времени или нет
                        "time": "12:01"                // время
                    }                                  
                ],                                     
                "periods_months": [                    // периоды
                    {                                  
                        "id": 64,                      // id периода
                        "value": [                     // массив значений
                            "OCTOBER"                  
                        ],                             
                        "on": true                     // включен период или нет
                    }                                  
                ],                                     
                "weekly_patterns": [                   // еженедельные шаблоны
                    {                                  
                        "id": 489,                     // id шаблона
                        "value": [                     // массив значений
                            "FRIDAY"                   
                        ],                             
                        "on": false                    // включен шаблон или нет
                    }                                  
                ],                                     
                "random_patterns": [                   // произвольные шаблоны
                    {                                  
                        "id": 488,                     // id шаблона
                        "value": [                     // массив значений
                            "20.12.2024"               
                        ],                             
                        "on": true                     // включен шаблон или нет
                    }                                  
                ],                                     
                "yearly_patterns": [                   // ежегодные шаблоны
                    {                                  
                        "id": 495,                     // id шаблона
                        "value": [                     // массив значений
                            "01.01"                    
                        ],                             
                        "on": true                     // включен шаблон или нет
                    }                                  
                ],                                     
                "monthly_patterns": [                  // ежемесячные шаблоны
                    {                                  
                        "id": 490,                     // id шаблона
                        "value": [                     // массив значений
                            10                         
                        ],                             
                        "on": true                     // включен шаблон или нет
                    }                                  
                ]                                      
            }                                          
        ],                                             
        "holidays": [                                  // выходные группы
            {                                          
                "id": 646,                             // id группы
                "on": false,                           // включена группа или нет
                "weekly_patterns": [                   // еженедельные шаблоны
                    {                                  
                        "id": 492,                     // id шаблона
                        "value": [                     // массив значений
                            "WEDNESDAY"                
                        ],                             
                        "on": true                     // включен шаблон или нет
                    }                                  
                ],                                     
                "random_patterns": [                   // произвольные шаблоны
                    {                                  
                        "id": 491,                     // id шаблона
                        "value": [                     // массив значений
                            "02.01.2024"               
                        ],                             
                        "on": true                     // включен шаблон или нет
                    }                                  
                ],                                     
                "yearly_patterns": [                   // ежегодные шаблоны
                    {                                  
                        "id": 495,                     // id шаблона
                        "value": [                     // массив значений
                            "01.01"                    
                        ],                             
                        "on": true                     // включен шаблон или нет
                    }                                  
                ],                                     
                "monthly_patterns": [                  // ежемесячные шаблоны
                    {                                  
                        "id": 493,                     // id шаблона
                        "value": [                     // массив значений
                            7,                         
                            14                         
                        ],                             
                        "on": true                     // включен шаблон или нет
                    }                                  
                ]                                      
            }                                          
        ]                                              
    },                                                 
    "runs": [                                          // запуски расписания
        {                                              
            "date": "24.10.2023",                      // дата
            "time": "09:50"                            // время
        }                                              
    ],                                                 
    "holidays": [                                      // выходные дни
        "20.12.2024"                                   
    ]                                                  
}                                                      

POST /rest/timetables/:id/preview/:yyyymm

Пользователь с привилегями Редактировать расписание и Доступ к контрактам и уровнем доступа не ниже ORGANIZATION.

Пользователь с уровнем доступа CLUSTER может получить запуски и выходные дни расписания своего кластера.

Пользователь с уровнем доступа ORGANIZATION может получить запуски и выходные дни расписания своей организации.

Получить запуски и выходные дни расписания за указанный месяц. В реальности данные присылаются за 6 недель, включающие указанный месяц. Первая неделя из шести выбирается так, чтобы она включала 1-е число указанного месяца.

Даты начала и окончания срока действия могут быть переданы как в формате Unix Timestamp, так и в виде строки. Строка при этом состоит из даты (YYYY, MM, DD в прямом или обратном порядке, разделённые точкой, дефисом или слэшем) и времени (hh:mm или hh:mm:ss), разделённых пробелом.

Timestamp трактуется как абсолютное время в UTC. Строковая дата трактуется как местное время; часовой пояс будет взят из самого расписания.

Присланные изменения учитываются при генерации запусков расписания, но не сохраняются в БД.

Входные данные

// 2.0+
{                                              
    "on": false,                               // включено расписание или нет
    "title": "Расписание",                     // название расписания
    "archive": false,                          // архивное расписание
    "start_date_time": "2025-01-01 00:00:00",  // начало действия расписания
    "finish_date_time": "01.01.2026 00:00",    // окончание действия расписания
    "worktime": 7200,                          // срок выполнения заданий, сек
    "weekdays": [                              // рабочие группы
        {                                      
            "id": 645,                         // id группы
            "on": true,                        // включена группа или нет
            "times": [                         // массив моментов времени
                {                              
                    "id": 83,                  // id момента времени
                    "on": true,                // включен момент времени или нет
                    "time": "12:01"            // время
                }                              
            ],                                 
            "periods_months": [                // периоды
                {                              
                    "id": 64,                  // id периода
                    "value": [                 // массив значений
                        "OCTOBER"              
                    ],                         
                    "on": true                 // включен период или нет
                }                              
            ],                                 
            "weekly_patterns": [               // еженедельные шаблоны
                {                              
                    "id": 489,                 // id шаблона
                    "value": [                 // массив значений
                        "FRIDAY"               
                    ],                         
                    "on": false                // включен шаблон или нет
                }                              
            ],                                 
            "random_patterns": [               // произвольные шаблоны
                {                              
                    "id": 488,                 // id шаблона
                    "value": [                 // массив значений
                        "20.12.2024"           
                    ],                         
                    "on": true                 // включен шаблон или нет
                }                              
            ],                                 
            "yearly_patterns": [               // ежегодные шаблоны
                {                              
                    "id": 495,                 // id шаблона
                    "value": [                 // массив значений
                        "01.01"                
                    ],                         
                    "on": true                 // включен шаблон или нет
                }                              
            ],                                 
            "monthly_patterns": [              // ежемесячные шаблоны
                {                              
                    "id": 490,                 // id шаблона
                    "value": [                 // массив значений
                        10                     
                    ],                         
                    "on": true                 // включен шаблон или нет
                }                              
            ]                                  
        }                                      
    ],                                         
    "holidays": [                              // выходные группы
        {                                      
            "id": 646,                         // id группы
            "on": false,                       // включена группа или нет
            "weekly_patterns": [               // еженедельные шаблоны
                {                              
                    "id": 492,                 // id шаблона
                    "value": [                 // массив значений
                        "WEDNESDAY"            
                    ],                         
                    "on": true                 // включен шаблон или нет
                }                              
            ],                                 
            "random_patterns": [               // произвольные шаблоны
                {                              
                    "id": 491,                 // id шаблона
                    "value": [                 // массив значений
                        "02.01.2024"           
                    ],                         
                    "on": true                 // включен шаблон или нет
                }                              
            ],                                 
            "yearly_patterns": [               // ежегодные шаблоны
                {                              
                    "id": 495,                 // id шаблона
                    "value": [                 // массив значений
                        "01.01"                
                    ],                         
                    "on": true                 // включен шаблон или нет
                }                              
            ],                                 
            "monthly_patterns": [              // ежемесячные шаблоны
                {                              
                    "id": 493,                 // id шаблона
                    "value": [                 // массив значений
                        7,                     
                        14                     
                    ],                         
                    "on": true                 // включен шаблон или нет
                }                              
            ]                                  
        }                                      
    ]                                          
}                                              

http 200

// 2.0+
{                                                      
    "schedule": {                                      // расписание
        "id": 263,                                     // id расписания
        "on": false,                                   // включено расписание или нет
        "title": "Расписание",                         // название расписания
        "start_date_time": 1673955726,                 // начало действия расписания
        "finish_date_time": 1705480730,                // окончание действия расписания
        "start_date_time_local": "01.01.2025 00:00",   // локальное начало действия расписания
        "finish_date_time_local": "01.01.2026 00:00",  // локальное окончание действия расписания
        "worktime": 7200,                              // срок выполнения заданий, сек
        "archive": false,                              // архивное расписание
        "total_template_count": 1,                     // количество шаблонов в расписании
        "time_zone": "Europe/Moscow",                  // таймзона расписания
        "contract": {                                  // контракт расписания
            "id": 97,                                  // id контракта
            "no": "N1",                                // номер контракта
            "title": "Контракт расписания",            
            "start_date_local": "01.01.2025 00:00",    // локальная дата начала действия контракта
            "finish_date_local": "01.01.2026 00:00",   // локальная дата окончания действия контракта
            "start_date": 1706798372,                  
            "finish_date": 1716798372,                 
            "cluster": {                               
                "id": 97,                              
                "title": "Мой кластер"                 
            }                                          
        },                                             
        "organization": {                              // организация
            "id": 134,                                 // id организации
            "name": "Отдел разработки",                // название организации
            "cluster": {                               // кластер организации
                "id": 1,                               
                "title": "По умолчанию"                
            }                                          
        }                                              
        "cluster": {                                   // кластер
            "id": 62286,                               // id кластера
            "title": "Тестовый кластер"                // название кластера
        },                                             
        "user": {                                      // информация о пользователе, который создал расписание
            "id": 360393,                              // id пользователя
            "fio": "Админ кластера"                    // фио пользователя
        },                                             
        "weekdays": [                                  // рабочие группы
            {                                          
                "id": 645,                             // id группы
                "on": true,                            // включена группа или нет
                "times": [                             // массив моментов времени
                    {                                  
                        "id": 83,                      // id момента времени
                        "on": true,                    // включен момент времени или нет
                        "time": "12:01"                // время
                    }                                  
                ],                                     
                "periods_months": [                    // периоды
                    {                                  
                        "id": 64,                      // id периода
                        "value": [                     // массив значений
                            "OCTOBER"                  
                        ],                             
                        "on": true                     // включен период или нет
                    }                                  
                ],                                     
                "weekly_patterns": [                   // еженедельные шаблоны
                    {                                  
                        "id": 489,                     // id шаблона
                        "value": [                     // массив значений
                            "FRIDAY"                   
                        ],                             
                        "on": false                    // включен шаблон или нет
                    }                                  
                ],                                     
                "random_patterns": [                   // произвольные шаблоны
                    {                                  
                        "id": 488,                     // id шаблона
                        "value": [                     // массив значений
                            "20.12.2024"               
                        ],                             
                        "on": true                     // включен шаблон или нет
                    }                                  
                ],                                     
                "yearly_patterns": [                   // ежегодные шаблоны
                    {                                  
                        "id": 495,                     // id шаблона
                        "value": [                     // массив значений
                            "01.01"                    
                        ],                             
                        "on": true                     // включен шаблон или нет
                    }                                  
                ],                                     
                "monthly_patterns": [                  // ежемесячные шаблоны
                    {                                  
                        "id": 490,                     // id шаблона
                        "value": [                     // массив значений
                            10                         
                        ],                             
                        "on": true                     // включен шаблон или нет
                    }                                  
                ]                                      
            }                                          
        ],                                             
        "holidays": [                                  // выходные группы
            {                                          
                "id": 646,                             // id группы
                "on": false,                           // включена группа или нет
                "weekly_patterns": [                   // еженедельные шаблоны
                    {                                  
                        "id": 492,                     // id шаблона
                        "value": [                     // массив значений
                            "WEDNESDAY"                
                        ],                             
                        "on": true                     // включен шаблон или нет
                    }                                  
                ],                                     
                "random_patterns": [                   // произвольные шаблоны
                    {                                  
                        "id": 491,                     // id шаблона
                        "value": [                     // массив значений
                            "02.01.2024"               
                        ],                             
                        "on": true                     // включен шаблон или нет
                    }                                  
                ],                                     
                "yearly_patterns": [                   // ежегодные шаблоны
                    {                                  
                        "id": 495,                     // id шаблона
                        "value": [                     // массив значений
                            "01.01"                    
                        ],                             
                        "on": true                     // включен шаблон или нет
                    }                                  
                ],                                     
                "monthly_patterns": [                  // ежемесячные шаблоны
                    {                                  
                        "id": 493,                     // id шаблона
                        "value": [                     // массив значений
                            7,                         
                            14                         
                        ],                             
                        "on": true                     // включен шаблон или нет
                    }                                  
                ]                                      
            }                                          
        ]                                              
    },                                                 
    "runs": [                                          // запуски расписания
        {                                              
            "date": "24.10.2023",                      // дата
            "time": "09:50"                            // время
        }                                              
    ],                                                 
    "holidays": [                                      // выходные дни
        "20.12.2024"                                   
    ]                                                  
}                                                      

GET /rest/timetables/:id

Получение информации по расписанию.

Пользователь с привилегией Доступ к контрактам

http 200

// 2.0+
{                                                  
    "id": 263,                                     // id расписания
    "on": false,                                   // включено расписание или нет
    "title": "Расписание",                         // название расписания
    "start_date_time": 1673955726,                 // начало действия расписания
    "finish_date_time": 1705480730,                // окончание действия расписания
    "start_date_time_local": "01.01.2025 00:00",   // локальное начало действия расписания
    "finish_date_time_local": "01.01.2026 00:00",  // локальное окончание действия расписания
    "worktime": 7200,                              // срок выполнения заданий, сек
    "archive": false,                              // архивное расписание
    "total_template_count": 1,                     // количество шаблонов в расписании
    "time_zone": "Europe/Moscow",                  // таймзона расписания
    "contract": {                                  // контракт расписания
        "id": 97,                                  // id контракта
        "no": "N1",                                // номер контракта
        "title": "Контракт расписания",            
        "start_date_local": "01.01.2025 00:00",    // локальная дата начала действия контракта
        "finish_date_local": "01.01.2026 00:00",   // локальная дата окончания действия контракта
        "start_date": 1706798372,                  
        "finish_date": 1716798372,                 
        "cluster": {                               
            "id": 97,                              
            "title": "Мой кластер"                 
        }                                          
    },                                             
    "organization": {                              // организация
        "id": 134,                                 // id организации
        "name": "Отдел разработки",                // название организации
        "cluster": {                               // кластер организации
            "id": 1,                               
            "title": "По умолчанию"                
        }                                          
    }                                              
    "cluster": {                                   // кластер
        "id": 62286,                               // id кластера
        "title": "Тестовый кластер"                // название кластера
    },                                             
    "user": {                                      // информация о пользователе, который создал расписание
        "id": 360393,                              // id пользователя
        "fio": "Админ кластера"                    // фио пользователя
    },                                             
    "weekdays": [                                  // рабочие группы
        {                                          
            "id": 645,                             // id группы
            "on": true,                            // включена группа или нет
            "times": [                             // массив моментов времени
                {                                  
                    "id": 83,                      // id момента времени
                    "on": true,                    // включен момент времени или нет
                    "time": "12:01"                // время
                }                                  
            ],                                     
            "periods_months": [                    // периоды
                {                                  
                    "id": 64,                      // id периода
                    "value": [                     // массив значений
                        "OCTOBER"                  
                    ],                             
                    "on": true                     // включен период или нет
                }                                  
            ],                                     
            "weekly_patterns": [                   // еженедельные шаблоны
                {                                  
                    "id": 489,                     // id шаблона
                    "value": [                     // массив значений
                        "FRIDAY"                   
                    ],                             
                    "on": false                    // включен шаблон или нет
                }                                  
            ],                                     
            "random_patterns": [                   // произвольные шаблоны
                {                                  
                    "id": 488,                     // id шаблона
                    "value": [                     // массив значений
                        "20.12.2024"               
                    ],                             
                    "on": true                     // включен шаблон или нет
                }                                  
            ],                                     
            "yearly_patterns": [                   // ежегодные шаблоны
                {                                  
                    "id": 495,                     // id шаблона
                    "value": [                     // массив значений
                        "01.01"                    
                    ],                             
                    "on": true                     // включен шаблон или нет
                }                                  
            ],                                     
            "monthly_patterns": [                  // ежемесячные шаблоны
                {                                  
                    "id": 490,                     // id шаблона
                    "value": [                     // массив значений
                        10                         
                    ],                             
                    "on": true                     // включен шаблон или нет
                }                                  
            ]                                      
        }                                          
    ],                                             
    "holidays": [                                  // выходные группы
        {                                          
            "id": 646,                             // id группы
            "on": false,                           // включена группа или нет
            "weekly_patterns": [                   // еженедельные шаблоны
                {                                  
                    "id": 492,                     // id шаблона
                    "value": [                     // массив значений
                        "WEDNESDAY"                
                    ],                             
                    "on": true                     // включен шаблон или нет
                }                                  
            ],                                     
            "random_patterns": [                   // произвольные шаблоны
                {                                  
                    "id": 491,                     // id шаблона
                    "value": [                     // массив значений
                        "02.01.2024"               
                    ],                             
                    "on": true                     // включен шаблон или нет
                }                                  
            ],                                     
            "yearly_patterns": [                   // ежегодные шаблоны
                {                                  
                    "id": 495,                     // id шаблона
                    "value": [                     // массив значений
                        "01.01"                    
                    ],                             
                    "on": true                     // включен шаблон или нет
                }                                  
            ],                                     
            "monthly_patterns": [                  // ежемесячные шаблоны
                {                                  
                    "id": 493,                     // id шаблона
                    "value": [                     // массив значений
                        7,                         
                        14                         
                    ],                             
                    "on": true                     // включен шаблон или нет
                }                                  
            ]                                      
        }                                          
    ]                                              
}                                                  

GET /rest/timetables/:id/templates

Запрос возвращает список шаблонов расписания, к которым у текущего пользователя есть доступ.

Пользователь с привилегией Доступ к контрактам

Параметры

Знаком + помечены поля, для которых можно указывать список значений, разделённых запятой. Например, typeId=1,2.

http 200

{                                                            
    "items": [                                               
        {                                                    
            "id": 133119,                                    // id шаблона
            "no": 133119,                                    // номер
            "title": "Тестовая задача",                      // название
            "type": {                                        // вид работ
                "id": 139,                                   
                "name": "Разукомплектованный автомобиль",    
                "icon": "icon_139.png",                      
                "deleted": false                             
            },                                               
            "priority": {                                    // приоритет
                "id": 1,                                     
                "name": "Плановые",                          
                "deleted": false                             
            },                                               
            "organization": {                                // организация-владелец
                "id": 98,                                    
                "name": "Тестовая организация",              
                "cluster": {                                 // кластер организации
                    "id": 1,                                 
                    "title": "По умолчанию"                  
                },                                           
                "deleted": false                             
            },                                               
            "assigned_organization": {                       // назначенная организация
                "id": 99,                                    
                "name": "Название назначенной организации",  
                "cluster": {                                 // кластер организации
                    "id": 1,                                 
                    "title": "По умолчанию"                  
                },                                           
                "deleted": false                             
            },                                               
            "assigned_user": {                               // исполнитель
                "id": 599,                                   
                "fio": "Сникерсов Марс Твиксович",           
                "deleted": false                             
            },                                               
            "contract": {                                    // контракт расписания
                "id": 97,                                    // id контракта
                "no": "N1",                                  // номер контракта
                "title": "Контракт расписания",              
                "start_date_local": "01.01.2025 00:00",      // локальная дата начала действия контракта
                "finish_date_local": "01.01.2026 00:00",     // локальная дата окончания действия контракта
                "start_date": 1706798372,                    
                "finish_date": 1716798372,                   
                "cluster": {                                 
                    "id": 97,                                
                    "title": "Мой кластер"                   
                }                                            
            },                                               
            "deadline": 1630665780,                          // дедлайн
            "num_main_photo": 1,                             // номер главного фото
            "update_date": 1630493003,                       // дата обновления
            "expired_date": 1630493003,                      // момент, когда задание было просрочен
        }                                                    
    ],                                                       
    "total": 2,                                              // всего
    "limit": 1,                                              // количество на одной странице
    "page": 1                                                // текущая страница
}                                                            

POST /rest/timetables/:id/restart/:yyyymmdd/@/:hhmm

Перезапустить запуск.

Пользователь с привилегиями Перезапустить запуск расписания и Доступ к расписаниям и уровнем доступа не ниже ORGANIZATION.

Пользователь с уровнем доступа CLUSTER может перезапускать запуск расписания внутри своего кластера.

Пользователь с уровнем доступа ORGANIZATION может перезапускать запуск расписания внутри своей организации.

/rest/chats

/rest/addresses

Поиск адреса с учётом координат.

Используется поисковый движок geocoder geo4me. Выдаётся 10 первых результатов.

Результаты сортируются в порядке удаления от центра поиска.

Параметры

http 200

// 2.0+
{                                                                                                 
    "items": [                                                                                    
        {                                                                                         
            "lng": 49.14210192142546,                                                             // долгота
            "lat": 55.77440909550581,                                                             // широта
            "kind": "10",                                                                         
            "label": "Российская Федерация, Татарстан, Казань, улица Нурсултана Назарбаева, 27",  
            "formattedLabel": "Казань, улица Нурсултана Назарбаева, 27"                           
        }                                                                                         
    ]                                                                                             
}                                                                                                 

/rest/scripts

GET /rest/scripts/status

Любой пользователь.

Проверить наличие JEP.

http 200

// 2.0+
{                    
    "started": true  // установлена ли JEP-библиотека
}                    

GET /rest/scripts/list

Список скриптов.

Сортировка осуществляется по полю title.

Параметры

http 200

// 2.0+
{                                                                
    "items": [                                                   
        {                                                        
            "id": 1,                                             // id скрипта
            "script": "return noop()",                           // скрипт
            "title": "test 1",                                   // название
            "description": "description",                        // описание
            "on": false,                                         // включен скрипт или нет
            "created_by": {                                      // создатель
                "id": 6,                                         
                "fio": "Администратор"                           
            },                                                   
            "create_date": 1618388512,                           // дата создания
            "roles": [                                           // привязка к роли пользователя, который выполняет операцию
                                                                 // (разрешено несколько значений; ни одного значения означает любое значения)
                {                                                
                    "id": 11,                                    
                    "name": "Инспектор организации",             
                    "code": "ORG_INSPECTOR"                      
                }                                                
            ],                                                   
            "cluster": {                                         // кластер плагина
                "id": 62286,                                     // id кластера
                "title": "Тестовый кластер"                      // название кластера
            },                                                   
            "type": "REACTION",                                  // тип плагина. Возможные значения - VALIDATION, REACTION
            "entity_type": "TASK",                               // модель, над которой совершается операция. Возможные значения - TASK, USER, COMMENT
            "operation": "UPDATE",                               // операция над моделью. Возможные значения: для моделей TASK и USER - INSERT, UPDATE, DELETE, для модели COMMENT - INSERT
            "webhook_server": {                                  // для вебхуков: информация о сервере вебхука
                "id": 64,                                        // id сервера
                "name": "integration new",                       // название сервера
                "url": "https://integration.new.dev.geo4.pro/",  // адрес сервера
                "on": false                                      // включен сервер или нет
            },                                                   
            "workgroups": [                                      // для плагинов модели TASK: привязка к проектам
                                                                 // (разрешено несколько значений; ни одного значения означает любое значения)
                {                                                
                    "id": 188,                                   
                    "title": "По умолчанию"                      
                }                                                
            ],                                                   
            "types": [                                           // для плагинов модели TASK: привязка к видам работ
                                                                 // (разрешено несколько значений; ни одного значения означает любое значения)
                {                                                
                    "id": 139,                                   
                    "name": "Брошенный автомобиль",              
                    "icon": "icon_139.png"                       
                }                                                
            ],                                                   
            "priorities": [                                      // для плагинов модели TASK: привязка к приоритетам
                                                                 // (разрешено несколько значений; ни одного значения означает любое значения)
                167,                                             
                null,                                            
                5                                                
            ],                                                   
            "statuses_before": [                                 // для плагинов модели TASK: этап задания до изменения
                                                                 // (разрешено несколько значений; ни одного значения означает любое значения)
                {                                                
                    "id": 1,                                     
                    "name": "new"                                
                }                                                
            ],                                                   
            "statuses_after": [                                  // для плагинов модели TASK: этап задания после изменения
                                                                 // (разрешено несколько значений; ни одного значения означает любое значения)
                {                                                
                    "id": 2,                                     
                    "name": "назначено"                          
                }                                                
            ],                                                   
            "stages_before": [                                   // для плагинов модели TASK: стадия задания до изменения
                                                                 // возможные значения: 0 - отказано, 1 - в работе, 2 - завершено
                                                                 // (разрешено несколько значений; ни одного значения означает любое значения)
                1                                                
            ],                                                   
            "stages_after": [                                    // для плагинов модели TASK: стадия задания после изменения
                                                                 // возможные значения: 0 - отказано, 1 - в работе, 2 - завершено
                                                                 // (разрешено несколько значений; ни одного значения означает любое значения)
                0                                                
            ],                                                   
            "user_organizations_before": [],                     // для плагинов модели USER: организации пользователей до изменения
            "user_organizations_after": [],                      // для плагинов модели USER: организации пользователей после изменения
            "user_roles_before": [],                             // для плагинов модели USER: роли пользователей до изменения
            "user_roles_after": [],                              // для плагинов модели USER: роли пользователей после изменения
            "user_types_before": [],                             // для плагинов модели USER: типы пользователей до изменения
            "user_types_after": [],                              // для плагинов модели USER: типы пользователей после изменения
            "user_tags_before": [],                              // для плагинов модели USER: метки пользователей до изменения
            "user_tags_after": []                                // для плагинов модели USER: метки пользователей после изменения
        }                                                        
    ],                                                           
    "total": 1,                                                  // общее количество элементов
    "limit": 25,                                                 // максимальное количество элементов на странице
    "page": 1                                                    // текущая страница
}                                                                

GET /rest/scripts/:id

Получить информации о скрипте.

Пользователь с уровнем доступа не ниже CLUSTER.

Пользователь с уровнем доступа CLUSTER видит только локальные скрипты своего кластера.

http 200

// 2.0+
{                                                        
    "id": 1,                                             // id скрипта
    "script": "return noop()",                           // скрипт
    "title": "test 1",                                   // название
    "description": "description",                        // описание
    "on": false,                                         // включен скрипт или нет
    "created_by": {                                      // создатель
        "id": 6,                                         
        "fio": "Администратор"                           
    },                                                   
    "create_date": 1618388512,                           // дата создания
    "roles": [],                                         // привязка к роли пользователя, который выполняет операцию
                                                         // (разрешено несколько значений; ни одного значения означает любое значения)
    "cluster": {                                         // кластер плагина
        "id": 62286,                                     // id кластера
        "title": "Тестовый кластер"                      // название кластера
    },                                                   
    "type": "REACTION",                                  // тип плагина
                                                         // возможные значения - VALIDATION, REACTION
    "entity_type": "USER",                               // модель, над которой совершается операция. Возможные значения - TASK, USER, COMMENT
    "operation": "INSERT",                               // операция над моделью. Возможные значения: для моделей TASK и USER - INSERT, UPDATE, DELETE, для модели COMMENT - INSERT
    "webhook_server": {                                  // для вебхуков: информация о сервере вебхука
        "id": 64,                                        // id сервера
        "name": "integration new",                       // название сервера
        "url": "https://integration.new.dev.geo4.pro/",  // адрес сервера
        "on": false                                      // включен сервер или нет
    },                                                   
    "user_organizations_before": [                       // для плагинов модели USER: организации пользователей до изменения
        {                                                
            "id": 10,                                    // id организации
            "name": "Услыги по ремонту"                  // название организации
        }                                                
    ],                                                   
    "user_organizations_after": [                        // для плагинов модели USER: организации пользователей после изменения
        {                                                
            "id": 3,                                     // id организации
            "name": "Доставка товаров"                   // название организации
        }                                                
    ],                                                   
    "user_roles_before": [                               // для плагинов модели USER: роли пользователей до изменения
        {                                                
            "id": 7,                                     // id роли
            "name": "Пользователь организации",          // название роли
            "code": "ORG_USER"                           // код роли
        }                                                
    ],                                                   
    "user_roles_after": [                                // для плагинов модели USER: роли пользователей после изменения
        {                                                
            "id": 10,                                    // id роли
            "name": "Администратор организации",         // название роли
            "code": "ORG_ADMINISTRATOR"                  // код роли
        }                                                
    ],                                                   
    "user_types_before": [                               // для плагинов модели USER: типы пользователей до изменения
        {                                                
            "id": 1,                                     // id типа
            "title": "Человек"                           // название типа
        },                                               
        {                                                
            "id": 2,                                     
            "title": "Транспортное средство"             
        }                                                
    ],                                                   
    "user_types_after": [                                // для плагинов модели USER: типы пользователей после изменения
        {                                                
            "id": 1,                                     // id типа
            "title": "Человек"                           // название типа
        },                                               
        {                                                
            "id": 2,                                     
            "title": "Транспортное средство"             
        }                                                
    ],                                                   
    "user_tags_before": [                                // для плагинов модели USER: метки пользователей до изменения
        {                                                
            "id": 1,                                     // id метки
            "title": "Курьер",                           // название метки
            "color": "ffffff"                            // цвет метки
        }                                                
    ],                                                   
    "user_tags_after": [],                               // для плагинов модели USER: метки пользователей после изменения
    {                                                    
        "id": 101,                                       // id метки
        "title": "Доставка техники",                     // название метки
        "color": "ff0000"                                // цвет метки
    }                                                    
],                                                       
"workgroups": [],                                        // для плагинов модели TASK: привязка к проектам
                                                         // (разрешено несколько значений; ни одного значения означает любое значения)
"types": [],                                             // для плагинов модели TASK: привязка к видам работ
                                                         // (разрешено несколько значений; ни одного значения означает любое значения)
"priorities": [],                                        // для плагинов модели TASK: привязка к приоритетам
                                                         // (разрешено несколько значений; ни одного значения означает любое значения)
"statuses_before": [],                                   // для плагинов модели TASK: этап задания до изменения
                                                         // (разрешено несколько значений; ни одного значения означает любое значения)
"statuses_after": [],                                    // для плагинов модели TASK: этап задания после изменения
                                                         // (разрешено несколько значений; ни одного значения означает любое значения)
"stages_before": [],                                     // для плагинов модели TASK: стадия задания до изменения
                                                         // возможные значения: 0 - отказано, 1 - в работе, 2 - завершено
                                                         // (разрешено несколько значений; ни одного значения означает любое значения)
"stages_after": []                                       // для плагинов модели TASK: стадия задания после изменения
                                                         // возможные значения: 0 - отказано, 1 - в работе, 2 - завершено
                                                         // (разрешено несколько значений; ни одного значения означает любое значения)
}                                                        

POST /rest/scripts

Добавление нового скрипта.

Пользователь с привилегией Создать скрипт и уровнем доступа не ниже CLUSTER.

Пользователь с уровнем доступа CLUSTER может создать только локальный скрипт внутри своего кластера.

Входные данные

// 2.0+
{                                     
    "script": "return noop()",        // * скрипт
    "title": "test 1",                // * название скрипта
    "entity_type": "TASK",            // * модель, над которой совершается операция. Возможные значения - TASK, USER, COMMENT, ORGANIZATION
    "operation": "UPDATE",            // * операция над моделью. Возможные значения: для модели TASK и USER - INSERT, UPDATE, DELETE, для модели COMMENT - INSERT
    "type": "REACTION",               // * тип плагина. Возможные значения - VALIDATION, REACTION
    "webhook_server": {               // для вебхуков: id сервера
        "id": 64                      
    }                                 
    "description": "description",     // описание
    "on": true,                       // включен скрипт или нет (по умолчанию - true)
    "cluster": {                      // кластер плагина
        "id": 62286                   // id кластера
    },                                
    "roles": [                        // привязка к роли пользователя, который выполняет операцию
                                      // (разрешено несколько значений; ни одного значения означает любое значения)
        {                             
            "id": 11                  
        }                             
    ],                                
    "workgroups": [                   // для плагинов модели TASK: привязка к проектам
                                      // (разрешено несколько значений; ни одного значения означает любое значения)
        {                             
            "id": 188                 
        }                             
    ],                                
    "types": [                        // для плагинов модели TASK: привязка к видам работ
                                      // (разрешено несколько значений; ни одного значения означает любое значения)
        {                             
            "id": 139                 
        }                             
    ],                                
    "priorities": [                   // для плагинов модели TASK: привязка к приоритетам
                                      // (разрешено несколько значений; ни одного значения означает любое значения)
        167                           
    ],                                
    "statuses_before": [              // для плагинов модели TASK: этап задания до изменения
                                      // (разрешено несколько значений; ни одного значения означает любое значения)
        {                             
            "id": 2                   
        }                             
    ],                                
    "statuses_after": [               // для плагинов модели TASK: этап задания после изменения
                                      // (разрешено несколько значений; ни одного значения означает любое значения)
        {                             
            "id": 3                   
        }                             
    ],                                
    "stages_before": [                // для плагинов модели TASK: стадия задания до изменения
                                      // возможные значения: 0 - отказано, 1 - в работе, 2 - завершено
                                      // (разрешено несколько значений; ни одного значения означает любое значения)
        1                             
    ],                                
    "stages_after": [                 // для плагинов модели TASK: стадия задания после изменения
                                      // возможные значения: 0 - отказано, 1 - в работе, 2 - завершено
                                      // (разрешено несколько значений; ни одного значения означает любое значения)
        0                             
    ],                                
    "user_organizations_before": [],  // для плагинов модели USER: список id организаций пользователей до изменения
    "user_organizations_after": [],   // для плагинов модели USER: список id организаций пользователей после изменения
    "user_roles_before": [],          // для плагинов модели USER: список id ролей пользователей до изменения
    "user_roles_after": [],           // для плагинов модели USER: список id ролей пользователей после изменения
    "user_types_before": [],          // для плагинов модели USER: список id типов пользователей до изменения
    "user_types_after": [],           // для плагинов модели USER: список id типов пользователей после изменения
    "user_tags_before": [],           // для плагинов модели USER: список id меток пользователей до изменения
    "user_tags_after": []             // для плагинов модели USER: список id меток пользователей после изменения
}                                     

http 200

// 2.0+
{                                                        
    "id": 1,                                             // id скрипта
    "script": "return noop()",                           // скрипт
    "title": "test 1",                                   // название
    "description": "description",                        // описание
    "type": "REACTION",                                  // тип плагина. Возможные значения - VALIDATION, REACTION
    "entity_type": "TASK",                               // модель, над которой совершается операция. Возможные значения - TASK, COMMENT
    "operation": "UPDATE",                               // операция над моделью. Возможные значения: для модели TASK - INSERT, UPDATE, DELETE, для модели COMMENT - INSERT
    "webhook_server": {                                  // для вебхуков: информация о сервере вебхука
        "id": 64,                                        // id сервера
        "name": "integration new",                       // название сервера
        "url": "https://integration.new.dev.geo4.pro/",  // адрес сервера
        "on": false                                      // включен сервер или нет
    },                                                   
    "on": false,                                         // включен скрипт или нет
    "created_by": {                                      // создатель
        "id": 6,                                         
        "fio": "Администратор"                           
    },                                                   
    "create_date": 1618388512,                           // дата создания
    "roles": [                                           // привязка к роли пользователя, который выполняет операцию
                                                         // (разрешено несколько значений; ни одного значения означает любое значения)
        {                                                
            "id": 11,                                    
            "name": "Инспектор организации",             
            "code": "ORG_INSPECTOR"                      
        }                                                
    ],                                                   
    "cluster": {                                         // кластер плагина
        "id": 62286,                                     // id кластера
        "title": "Тестовый кластер"                      // название кластера
    },                                                   
    "workgroups": [                                      // для плагинов модели TASK: привязка к проектам
                                                         // (разрешено несколько значений; ни одного значения означает любое значения)
        {                                                
            "id": 188,                                   
            "title": "По умолчанию"                      
        }                                                
    ],                                                   
    "types": [                                           // для плагинов модели TASK: привязка к видам работ
                                                         // (разрешено несколько значений; ни одного значения означает любое значения)
        {                                                
            "id": 139,                                   
            "name": "Брошенный автомобиль",              
            "icon": "icon_139.png"                       
        }                                                
    ],                                                   
    "priorities": [                                      // для плагинов модели TASK: привязка к приоритетам
                                                         // (разрешено несколько значений; ни одного значения означает любое значения)
        167                                              
    ],                                                   
    "statuses_before": [                                 // для плагинов модели TASK: этап задания до изменения
                                                         // (разрешено несколько значений; ни одного значения означает любое значения)
        {                                                
            "id": 1,                                     
            "name": "new"                                
        }                                                
    ],                                                   
    "statuses_after": [                                  // для плагинов модели TASK: этап задания после изменения
                                                         // (разрешено несколько значений; ни одного значения означает любое значения)
        {                                                
            "id": 2,                                     
            "name": "назначено"                          
        }                                                
    ],                                                   
    "stages_before": [                                   // для плагинов модели TASK: стадия задания до изменения
                                                         // возможные значения: 0 - отказано, 1 - в работе, 2 - завершено
                                                         // (разрешено несколько значений; ни одного значения означает любое значения)
        1                                                
    ],                                                   
    "stages_after": [                                    // для плагинов модели TASK: стадия задания после изменения
                                                         // возможные значения: 0 - отказано, 1 - в работе, 2 - завершено
                                                         // (разрешено несколько значений; ни одного значения означает любое значения)
        0                                                
    ],                                                   
    "user_organizations_before": [],                     // для плагинов модели USER: организации пользователей до изменения
    "user_organizations_after": [],                      // для плагинов модели USER: организации пользователей после изменения
    "user_roles_before": [],                             // для плагинов модели USER: роли пользователей до изменения
    "user_roles_after": [],                              // для плагинов модели USER: роли пользователей после изменения
    "user_types_before": [],                             // для плагинов модели USER: типы пользователей до изменения
    "user_types_after": [],                              // для плагинов модели USER: типы пользователей после изменения
    "user_tags_before": [],                              // для плагинов модели USER: метки пользователей до изменения
    "user_tags_after": []                                // для плагинов модели USER: метки пользователей после изменения
}                                                        

PATCH /rest/scripts/:id

Изменение информации о скрипте.

Пользователь с привилегией Редактировать скрипт и уровнем доступа не ниже CLUSTER.

Пользователь с уровнем доступа CLUSTER может редактировать только локальный скрипт своего кластера.

Входные данные

// 2.0+
{                                     
    "script": "return noop()",        // скрипт
    "title": "test 1",                // название скрипта
    "description": "description",     // описание
    "type": "REACTION",               // тип плагина. Возможные значения - VALIDATION, REACTION
    "operation": "UPDATE",            // операция над моделью. Возможные значения - INSERT, UPDATE, DELETE
    "webhook_server": {               // для вебхуков: id сервера
        "id": 64                      
    },                                
    "on": true,                       // включен скрипт или нет (по умолчанию - true)
    "roles": [                        // привязка к роли пользователя, который выполняет операцию
                                      // (разрешено несколько значений; ни одного значения означает любое значения)
        {                             
            "id": 11                  
        }                             
    ],                                
    "workgroups": [                   // для плагинов модели TASK: привязка к проектам
                                      // (разрешено несколько значений; ни одного значения означает любое значения)
        {                             
            "id": 188                 
        }                             
    ],                                
    "types": [                        // для плагинов модели TASK: привязка к видам работ
                                      // (разрешено несколько значений; ни одного значения означает любое значения)
        {                             
            "id": 139                 
        }                             
    ],                                
    "priorities": [                   // для плагинов модели TASK: привязка к приоритетам
                                      // (разрешено несколько значений; ни одного значения означает любое значения)
        176,                          
        null                          
    ],                                
    "statuses_before": [              // для плагинов модели TASK: этап задания до изменения
                                      // (разрешено несколько значений; ни одного значения означает любое значения)
        {                             
            "id": 2                   
        }                             
    ],                                
    "statuses_after": [               // для плагинов модели TASK: этап задания после изменения
                                      // (разрешено несколько значений; ни одного значения означает любое значения)
        {                             
            "id": 3                   
        }                             
    ],                                
    "stages_before": [                // для плагинов модели TASK: стадия задания до изменения
                                      // возможные значения: 0 - отказано, 1 - в работе, 2 - завершено
                                      // (разрешено несколько значений; ни одного значения означает любое значения)
        1                             
    ],                                
    "stages_after": [                 // для плагинов модели TASK: стадия задания после изменения
                                      // возможные значения: 0 - отказано, 1 - в работе, 2 - завершено
                                      // (разрешено несколько значений; ни одного значения означает любое значения)
        0                             
    ],                                
    "user_organizations_before": [],  // для плагинов модели USER: список id организаций пользователей до изменения
    "user_organizations_after": [],   // для плагинов модели USER: список id организаций пользователей после изменения
    "user_roles_before": [],          // для плагинов модели USER: список id ролей пользователей до изменения
    "user_roles_after": [],           // для плагинов модели USER: список id ролей пользователей после изменения
    "user_types_before": [],          // для плагинов модели USER: список id типов пользователей до изменения
    "user_types_after": [],           // для плагинов модели USER: список id типов пользователей после изменения
    "user_tags_before": [],           // для плагинов модели USER: список id меток пользователей до изменения
    "user_tags_after": []             // для плагинов модели USER: список id меток пользователей после изменения
}                                     

http 200

// 2.0+
{                                                        
    "id": 1,                                             // id скрипта
    "script": "return noop()",                           // скрипт
    "title": "test 1",                                   // название
    "description": "description",                        // описание
    "type": "REACTION",                                  // тип плагина. Возможные значения - VALIDATION, REACTION
    "entity_type": "TASK",                               // модель, над которой совершается операция. Возможные значения - TASK, USER, COMMENT
    "operation": "UPDATE",                               // операция над моделью. Возможные значения: для модели TASK и USER - INSERT, UPDATE, DELETE, для модели COMMENT - INSERT
    "webhook_server": {                                  // для вебхуков: информация о сервере вебхука
        "id": 64,                                        // id сервера
        "name": "integration new",                       // название сервера
        "url": "https://integration.new.dev.geo4.pro/",  // адрес сервера
        "on": false                                      // включен сервер или нет
    },                                                   
    "on": false,                                         // включен скрипт или нет
    "created_by": {                                      // создатель
        "id": 6,                                         
        "fio": "Администратор"                           
    },                                                   
    "create_date": 1618388512,                           // дата создания
    "roles": [                                           // привязка к роли пользователя, который выполняет операцию
                                                         // (разрешено несколько значений; ни одного значения означает любое значения)
        {                                                
            "id": 11,                                    
            "name": "Инспектор организации",             
            "code": "ORG_INSPECTOR"                      
        }                                                
    ],                                                   
    "cluster": {                                         // кластер плагина
        "id": 62286,                                     // id кластера
        "title": "Тестовый кластер"                      // название кластера
    },                                                   
    "workgroups": [                                      // для плагинов модели TASK: привязка к проектам
                                                         // (разрешено несколько значений; ни одного значения означает любое значения)
        {                                                
            "id": 188,                                   
            "title": "По умолчанию"                      
        }                                                
    ],                                                   
    "types": [                                           // для плагинов модели TASK: привязка к видам работ
                                                         // (разрешено несколько значений; ни одного значения означает любое значения)
        {                                                
            "id": 139,                                   
            "name": "Брошенный автомобиль",              
            "icon": "icon_139.png"                       
        }                                                
    ],                                                   
    "priorities": [                                      // для плагинов модели TASK: привязка к приоритетам
                                                         // (разрешено несколько значений; ни одного значения означает любое значения)
        167                                              
    ],                                                   
    "statuses_before": [                                 // для плагинов модели TASK: этап задания до изменения
                                                         // (разрешено несколько значений; ни одного значения означает любое значения)
        {                                                
            "id": 1,                                     
            "name": "new"                                
        }                                                
    ],                                                   
    "statuses_after": [                                  // для плагинов модели TASK: этап задания после изменения
                                                         // (разрешено несколько значений; ни одного значения означает любое значения)
        {                                                
            "id": 2,                                     
            "name": "назначено"                          
        }                                                
    ],                                                   
    "stages_before": [                                   // для плагинов модели TASK: стадия задания до изменения
                                                         // возможные значения: 0 - отказано, 1 - в работе, 2 - завершено
                                                         // (разрешено несколько значений; ни одного значения означает любое значения)
        1                                                
    ],                                                   
    "stages_after": [                                    // для плагинов модели TASK: стадия задания после изменения
                                                         // возможные значения: 0 - отказано, 1 - в работе, 2 - завершено
                                                         // (разрешено несколько значений; ни одного значения означает любое значения)
        0                                                
    ],                                                   
    "user_organizations_before": [],                     // для плагинов модели USER: организации пользователей до изменения
    "user_organizations_after": [],                      // для плагинов модели USER: организации пользователей после изменения
    "user_roles_before": [],                             // для плагинов модели USER: роли пользователей до изменения
    "user_roles_after": [],                              // для плагинов модели USER: роли пользователей после изменения
    "user_types_before": [],                             // для плагинов модели USER: типы пользователей до изменения
    "user_types_after": [],                              // для плагинов модели USER: типы пользователей после изменения
    "user_tags_before": [],                              // для плагинов модели USER: метки пользователей до изменения
    "user_tags_after": []                                // для плагинов модели USER: метки пользователей после изменения
}                                                        

DELETE /rest/scripts/:id

Удаление скрипта.

Пользователь с привилегией Удалить скрипт и уровнем доступа не ниже CLUSTER.

Пользователь с уровнем доступа CLUSTER может удалять только локальные скрипты своего кластера.

GET /rest/scripts/servers/list

Список серверов для вебхуков.

Сортировка осуществляется по полю name.

Параметры

http 200

// 2.0+
{                                                        
    "items": [                                           
        {                                                
            "id": 12,                                    // id сервера
            "name": "integration",                       // название сервера
            "url": "https://integration.dev.geo4.pro/",  // адрес сервера
            "cluster": {                                 // кластер
                "id": 62286,                             // id кластера
                "title": "Тестовый кластер"              // название кластера
            },                                           
            "on": true                                   // включен сервер или нет
        }                                                
    ],                                                   
    "total": 10,                                         // общее количество элементов
    "limit": 25,                                         // максимальное количество элементов на странице
    "page": 1                                            // текущая страница
}                                                        

GET /rest/scripts/servers/:id

Получить информацию о сервере вебхука.

Пользователь с уровнем доступа не ниже CLUSTER.

Пользователь с уровнем доступа CLUSTER видит только локальные серверы своего кластера.

http 200

// 2.0+
{                                                
    "id": 12,                                    // id сервера
    "name": "integration",                       // название сервера
    "url": "https://integration.dev.geo4.pro/",  // адрес сервера
    "cluster": {                                 // кластер
        "id": 62286,                             // id кластера
        "title": "Тестовый кластер"              // название кластера
    },                                           
    "on": true                                   // включен сервер или нет
}                                                

POST /rest/scripts/servers

Добавление нового сервера для вебхука.

Пользователь с привилегией Создать скрипт и уровнем доступа не ниже CLUSTER.

Пользователь с уровнем доступа CLUSTER может создать только локальный сервер внутри своего кластера.

Входные данные

// 2.0+
{                                                
    "name": "integration",                       // * название сервера
    "url": "https://integration.dev.geo4.pro/",  // * адрес сервера
    "cluster": {                                 // кластер
        "id": 62286                              // id кластера
    },                                           
    "on": true                                   // включен сервер или нет (по умолчанию - true)
}                                                

http 200

// 2.0+
{                                                
    "id": 12,                                    // id сервера
    "name": "integration",                       // название сервера
    "url": "https://integration.dev.geo4.pro/",  // адрес сервера
    "cluster": {                                 // кластер
        "id": 62286,                             // id кластера
        "title": "Тестовый кластер"              // название кластера
    },                                           
    "on": true                                   // включен сервер или нет
}                                                

PATCH /rest/scripts/servers/:id

Изменение информации о сервере вебхука.

Пользователь с привилегией Редактировать скрипт и уровнем доступа не ниже CLUSTER.

Пользователь с уровнем доступа CLUSTER может редактировать только локальный сервер своего кластера.

Входные данные

// 2.0+
{                                                    
    "name": "new integration",                       // название сервера
    "url": "https://integration.new.dev.geo4.pro/",  // адрес сервера
    "on": false                                      // включен сервер или нет
}                                                    

http 200

// 2.0+
{                                                    
    "id": 12,                                        // id сервера
    "name": "new integration",                       // название сервера
    "url": "https://integration.new.dev.geo4.pro/",  // адрес сервера
    "cluster": {                                     // кластер
        "id": 62286,                                 // id кластера
        "title": "Тестовый кластер"                  // название кластера
    },                                               
    "on": false                                      // включен сервер или нет
}                                                    

DELETE /rest/scripts/servers/:id

Удаление сервера вебхука.

Пользователь с привилегией Удалить скрипт и уровнем доступа не ниже CLUSTER.

Пользователь с уровнем доступа CLUSTER может удалять только локальные серверы своего кластера.

/rest/logs

GET /rest/logs/list

Главный администратор, главный инспектор.

Возвращает информацию о действиях пользователей.

Параметры

// 2.0+
{                                                        
    "items": [                                           
        {                                                
            "id": 87368,                                 // id действия
            "object_id": 176853,                         // id объекта, над которым было совершено действие
            "table_name": "issues.comments",             // название таблицы
            "operation": "INSERT",                       // операция
            "date": 1573198662,                          // дата совершения действия
            "user": {                                    // пользователь, который совершил действие
                "id": 6,                                 
                "fio": "Администратор"                   
            },                                           
            "http_request": {                            // http запрос
                "id": 13433,                             
                "url": "localhost:9000/tasks/75183...",  
                "method": "PATCH",                       
                "payload": {                             // тело запроса
                    "issue_date": 1573121844002,         
                    "expired_date": 1572614941,          
                    "parent_id": 75322,                  
                    "fields": {                          
                        "Date": {                        
                            "field_id": 13,              
                            "value": 1548158400          
                        }                                
                    }                                    
                },                                       
                "datetime": 1573198428,                  
                "author": {                              
                    "id": 6,                             
                    "fio": "Администратор"               
                },                                       
                "ip": "0:0:0:0:0:0:0:1",                 
                "user_agent": "PostmanRuntime/7.19.0"    
            }                                            
        }                                                
        ...                                              // следующие элементы списка
    }                                                    

/rest/service-objects

GET /rest/service-objects/mappings/list

Список маппингов.

Пользователь с уровнем доступа ниже GLOBAL видит маппинг, если у него есть права на чтение слоя маппинга.

Сортировка осуществляется по полю id.

Параметры

http 200

// 2.0+
{                                                      
    "items": [                                         
        {                                              
            "id": 63,                                  // id
            "layer": {                                 // слой
                "id": 5                                // id слоя
                "title": "Объекты",                    // название
                "name": "service_objects_vw"           // название индекса
            },                                         
            "geo_json_field": "the_geom.coordinates",  // атрибут с координатами
            "title_format": "{0}",                     // формат названия
            "title_fields": [                          // атрибуты названия
                "address"                              
            ],                                         
            "fields": [                                // атрибуты
                "fid",                                 
                "address",                             
                "the_geom.coordinates"                 
            ],                                         
            "field_mappings": [                        // соответствие атрибутов и полей
                {                                      
                    "format": "{0}-{1}",               // формат
                    "type": "CustomField",             // тип. Возможные значения: CustomField, Title, Description,
                                                       // Type, Priority, AssignedOrganization, AssignedUser
                    "fields": [                        // атрибуты формата
                        "fid",                         
                        "address"                      
                    ],                                 
                    "field_id": 2                      // id настраиваемого поля
                },                                     
                {                                      
                    "format": "{0}-title-{1}",         
                    "type": "Title",                   
                    "fields": [                        
                        "address",                     
                        "fid"                          
                    ]                                  
                },                                     
                {                                      
                    "format": "{0}-desc-{1}",          
                    "type": "Description",             
                    "fields": [                        
                        "address",                     
                        "fid"                          
                    ]                                  
                }                                      
            ]                                          
        }                                              
    ],                                                 
    "total": 1,                                        // общее количество элементов
    "limit": 25,                                       // максимальное количество элементов на странице
    "page": 1                                          // текущая страница
}                                                      

POST /rest/service-objects/mappings

Запрос на создание маппинга из атрибутов слоя объектов в поля задания.

Пользователь с привилегией Создать маппинг и уровнем доступа не ниже CLUSTER.

Пользователю с уровнем доступа CLUSTER разрешено создавать маппинг, если ему разрешено редактировать слой маппинга.

// 2.0+
{                                              
    "layer": {                                 // * слой
        "id": 5                                // id слоя
    },                                         
    "geo_json_field": "the_geom.coordinates",  // атрибут с координатами
    "title_format": "{0}",                     // * формат названия
    "title_fields": [                          // * атрибуты названия
        "address"                              
    ],                                         
    "fields": [                                // * атрибуты
        "fid",                                 
        "address",                             
        "the_geom.coordinates"                 
    ],                                         
    "field_mappings": [                        // соответствие атрибутов и полей
        {                                      
            "type": "CustomField",             // * тип. Возможные значения: CustomField, Title, Description,
                                               // Type, Priority, AssignedOrganization, AssignedUser
            "field_id": 2,                     // id настраиваемого поля
            "format": "{0}-{1}",               // * формат
                                               // для полей типа int (Type, Priority, AssignedOrganization, AssignedUser)
                                               // можно указать ссылку вида {0} либо явным образом прописанное число
            "fields": [                        // * атрибуты формата
                "fid",                         
                "address"                      
            ]                                  
        },                                     
        {                                      
            "type": "Title",                   
            "format": "{0}-title-{1}",         
            "fields": [                        
                "address",                     
                "fid"                          
            ]                                  
        },                                     
        {                                      
            "type": "Description",             
            "format": "{0}-desc-{1}",          
            "fields": [                        
                "address",                     
                "fid"                          
            ]                                  
        }                                      
    ]                                          
}                                              

http 200

// 2.0+
{                                              
    "id": 63,                                  // id
    "layer": {                                 // слой
        "id": 5                                // id слоя
        "title": "Сервисные объекты",          // название
        "name": "service_objects_vw"           // название индекса
    },                                         
    "geo_json_field": "the_geom.coordinates",  // атрибут с координатами
    "title_format": "{0}",                     // формат названия
    "title_fields": [                          // атрибуты названия
        "address"                              
    ],                                         
    "fields": [                                // атрибуты
        "fid",                                 
        "address",                             
        "the_geom.coordinates"                 
    ],                                         
    "field_mappings": [                        // соответствие атрибутов и полей
        {                                      
            "format": "{0}-{1}",               // формат
            "type": "CustomField",             // тип. Возможные значения: CustomField, Title, Description,
                                               // Type, Priority, AssignedOrganization, AssignedUser
            "fields": [                        // атрибуты формата
                "fid",                         
                "address"                      
            ],                                 
            "field_id": 2                      // id настраиваемого поля
        },                                     
        {                                      
            "format": "{0}-title-{1}",         
            "type": "Title",                   
            "fields": [                        
                "address",                     
                "fid"                          
            ]                                  
        },                                     
        {                                      
            "format": "{0}-desc-{1}",          
            "type": "Description",             
            "fields": [                        
                "address",                     
                "fid"                          
            ]                                  
        }                                      
    ]                                          
}                                              

/rest/contracts

GET /rest/contracts/list

Список контрактов, доступных текущему пользователю.

Пользователь с привилегией Доступ к контрактам и уровнем доступа не ниже ORGANIZATION.

Пользователь с уровнем доступа CLUSTER видит контракты своего кластера.

Пользователь с уровнем доступа ORGANIZATION видит контракты, назначенные на его организации.

Остальные пользователи получают в ответе пустой список.

Параметры

Знаком + помечены поля, для которых можно указывать список значений, разделённых запятой. Например, customerId=1,2.

http 200

// 2.0+
{                                                                              
    "items": [                                                                 // список доступных контрактов
        {                                                                      
            "id": 989,                                                         // id контракта
            "title": "Контракт на поставку оборудования",                      // название контракта
            "description": "Контракт на поставку оборудования от 12.01.2022",  // описание контракта
            "no": "N1",                                                        // номер контракта
            "cluster": {                                                       // информация о кластере контракта
                "id": 1310,                                                    // id кластера
                "title": "Доставка по России"                                  // название кластера
            },                                                                 
            "customer": {                                                      // информация об организации-заказчике
                "id": 6,                                                       // id организации
                "name": "Отдел продаж"                                         // название организации
            },                                                                 
            "assigned_organization": {                                         // информация об организации-исполнителе контракта
                "id": 39707,                                                   // id организации
                "name": "Доставка по Казани"                                   // название организации
            },                                                                 
            "start_date": 1641988800,                                          // дата начала действия контракта
            "finish_date": 1642852800,                                         // дата окончания действия контракта
            "start_date_local": "01.01.2025 00:00",                            // локальная дата начала действия контракта
            "finish_date_local": "01.01.2026 00:00",                           // локальная дата окончания действия контракта
            "grant_task_creation": false,                                      // права исполнителя на создание задания по контракту
            "files": [                                                         // файлы контракта
                {                                                              
                    "id": 41,                                                  // id файла контракта
                    "physical_file": {                                         // физический файл
                        "id": 362,                                             // id физического файла
                        "name": "моя фотография.jpg",                          // исходное название файла
                        "extension": "jpg",                                    // расширение файла
                        "size": 110038,                                        // размер файла в байтах
                        "type": "PHOTO",                                       // тип файла, PHOTO/VIDEO/FILE/SOUND
                        "file_name": "3e1603bdfec5.jpg"                        // название файла на сервере
                    }                                                          
                }                                                              
            ],                                                                 
            "groups": [                                                        // группы сервисных объектов, по которым можно создавать задания
                {                                                              
                    "id": 981,                                                 
                    "objects": [                                               // список сервисных объектов
                        {                                                      
                            "id": 962,                                         
                            "title": "сервисный объект",                       // название сервисного объекта
                            "object_id": 2,                                    // id сервисного объекта
                            "layer_id": 6                                      // id слоя сервисного объекта
                        },                                                     
                        {                                                      
                            "id": 963,                                         
                            "title": "сервисный объект",                       // название сервисного объекта
                            "object_id": 1,                                    
                            "layer_id": 5                                      
                        }                                                      
                    ],                                                         
                    "types": [                                                 // список видов работ
                        {                                                      
                            "id": 1,                                           // id вида рвбот
                            "name": "Доставка",                                // название вида работ
                            "icon": "icon.png"                                 // файл пиктограммы вида работ
                        },                                                     
                        {                                                      
                            "id": 2,                                           
                            "name": "Погрузка",                                
                            "icon": "icon.png"                                 
                        }                                                      
                    ]                                                          
                }                                                              
            ]                                                                  
        }                                                                      
    ],                                                                         
    "total": 84,                                                               // общее количество контрактов
    "limit": 25,                                                               // количество записей на тсранице
    "page": 1                                                                  // номер страницы
}                                                                              

GET /rest/contracts/:id

Получение информации по контракту.

Пользователь с привилегиями Доступ к контрактам и уровнем доступа не ниже ORGANIZATION.

Пользователь с уровнем доступа CLUSTER видит контракты своего кластера.

Пользователь с уровнем доступа ORGANIZATION видит контракты, назначенные на его организации.

http 200

// 2.0+
 {                                                                     
    "id": 989,                                                         // id контракта
    "title": "Контракт на поставку оборудования",                      // название контракта
    "description": "Контракт на поставку оборудования от 12.01.2022",  // описание контракта
    "no": "N1",                                                        // номер контракта
    "cluster": {                                                       // информация о кластере контракта
        "id": 1310,                                                    // id кластера
        "title": "Доставка по России"                                  // название кластера
    },                                                                 
    "customer": {                                                      // информация об организации-заказчике
        "id": 6,                                                       // id организации
        "name": "Отдел продаж"                                         // название организации
    },                                                                 
    "assigned_organization": {                                         // информация об организации-исполнителе контракта
        "id": 39707,                                                   // id организации
        "name": "Доставка по Казани"                                   // название организации
    },                                                                 
    "start_date": 1641988800,                                          // дата начала действия контракта
    "finish_date": 1642852800,                                         // дата окончания действия контракта
    "start_date_local": "01.01.2025 00:00",                            // локальная дата начала действия контракта
    "finish_date_local": "01.01.2026 00:00",                           // локальная дата окончания действия контракта
    "grant_task_creation": false,                                      // права исполнителя на создание задания по контракту
    "files": [                                                         // файлы контракта
        {                                                              
            "id": 41,                                                  // id файла контракта
            "physical_file": {                                         // физический файл
                "id": 362,                                             // id физического файла
                "name": "моя фотография.jpg",                          // исходное название файла
                "extension": "jpg",                                    // расширение файла
                "size": 110038,                                        // размер файла в байтах
                "type": "PHOTO",                                       // тип файла, PHOTO/VIDEO/FILE/SOUND
                "file_name": "3e1603bdfec5.jpg"                        // название файла на сервере
            }                                                          
        }                                                              
    ],                                                                 
    "groups": [                                                        // группы сервисных объектов, по которым можно создавать задания
        {                                                              
            "id": 981,                                                 
            "objects": [                                               // список сервисных объектов
                {                                                      
                    "id": 962,                                         
                    "title": "сервисный объект",                       // название сервисного объекта
                    "object_id": 2,                                    // id сервисного объекта
                    "layer_id": 6                                      // id слоя сервисного объекта
                }                                                      
            ],                                                         
            "types": [                                                 // список видов работ
                {                                                      
                    "id": 1,                                           // id вида рвбот
                    "name": "Доставка",                                // название вида работ
                    "icon": "icon.png"                                 // файл пиктограммы вида работ
                }                                                      
            ]                                                          
        }                                                              
    ]                                                                  
}                                                                      

POST /rest/contracts

Добавление нового контракта.

Пользователь с привилегиями Доступ к контрактам и Создать контракт и уровнем доступа не ниже CLUSTER.

Пользователь с уровнем доступа CLUSTER может создавать контракты только в своем кластере.

Даты начала и окончания срока действия могут быть переданы как в формате Unix Timestamp, так и в виде строки. Строка при этом состоит из даты (YYYY, MM, DD в прямом или обратном порядке, разделённые точкой, дефисом или слэшем) и времени (hh:mm или hh:mm:ss), разделённых пробелом.

Timestamp трактуется как абсолютное время в UTC. Строковая дата трактуется как местное время; Часовой пояс будет вычислен из кластера контракта.

// 2.0+
{                                                                      
    "title": "Контракт на поставку оборудования",                      // * название контракта
    "description": "Контракт на поставку оборудования от 12.02.2022",  // описание контракта
    "no": "N1",                                                        // номер контракта
    "assigned_organization": {                                         // * информация об организации-исполнителе контракта
        "id": 39707                                                    // * id организации
    },                                                                 
    "customer": {                                                      // * информация об организации-заказчике
        "id": 6                                                        // * id организации
    },                                                                 
    "start_date": "2025-01-01 00:00",                                  // дата начала действия контракта
    "finish_date": "2026-01-01 00:00",                                 // дата окончания действия контракта
    "grant_task_creation": true,                                       // права исполнителя на создание задания по контракту, по умолчанию false
    "files": [                                                         // физические файлы контракта
        {                                                              
            "id": 362                                                  
        },                                                             
        {                                                              
            "id": 363                                                  
        }                                                              
    ],                                                                 
    "groups_add": [                                                    // группы сервисных объектов, по которым можно создавать задания
        {                                                              
            "types_add": [                                             // список видов работ
                {                                                      
                    "id": 1                                            // id вида рвбот
                }                                                      
            ],                                                         
            "objects_add": [                                           // список сервисных объектов
                {                                                      
                    "object_id": 2,                                    // id сервисного объекта
                    "layer_id": 6                                      // id слоя сервисного объекта
                }                                                      
            ]                                                          
        }                                                              
    ]                                                                  
}                                                                      

http 200

// 2.0+
 {                                                                     
    "id": 989,                                                         // id контракта
    "title": "Контракт на поставку оборудования",                      // название контракта
    "description": "Контракт на поставку оборудования от 12.01.2022",  // описание контракта
    "no": "N1",                                                        // номер контракта
    "cluster": {                                                       // информация о кластере контракта
        "id": 1310,                                                    // id кластера
        "title": "Доставка по России"                                  // название кластера
    },                                                                 
    "customer": {                                                      // информация об организации-заказчике
        "id": 6,                                                       // id организации
        "name": "Отдел продаж"                                         // название организации
    },                                                                 
    "assigned_organization": {                                         // информация об организации-исполнителе контракта
        "id": 39707,                                                   // id организации
        "name": "Доставка по Казани"                                   // название организации
    },                                                                 
    "start_date": 1641988800,                                          // дата начала действия контракта
    "finish_date": 1642852800,                                         // дата окончания действия контракта
    "start_date_local": "01.01.2025 00:00",                            // локальная дата начала действия контракта
    "finish_date_local": "01.01.2026 00:00",                           // локальная дата окончания действия контракта
    "grant_task_creation": false,                                      // права исполнителя на создание задания по контракту
    "files": [                                                         // файлы контракта
        {                                                              
            "id": 41,                                                  // id файла контракта
            "physical_file": {                                         // физический файл
                "id": 362,                                             // id физического файла
                "name": "моя фотография.jpg",                          // исходное название файла
                "extension": "jpg",                                    // расширение файла
                "size": 110038,                                        // размер файла в байтах
                "type": "PHOTO",                                       // тип файла, PHOTO/VIDEO/FILE/SOUND
                "file_name": "3e1603bdfec5.jpg"                        // название файла на сервере
            }                                                          
        }                                                              
    ],                                                                 
    "groups": [                                                        // группы сервисных объектов, по которым можно создавать задания
        {                                                              
            "id": 981,                                                 
            "objects": [                                               // список сервисных объектов
                {                                                      
                    "id": 962,                                         
                    "title": "сервисный объект",                       // название сервисного объекта
                    "object_id": 2,                                    // id сервисного объекта
                    "layer_id": 6                                      // id слоя сервисного объекта
                }                                                      
            ],                                                         
            "types": [                                                 // список видов работ
                {                                                      
                    "id": 1,                                           // id вида рвбот
                    "name": "Доставка",                                // название вида работ
                    "icon": "icon.png"                                 // файл пиктограммы вида работ
                }                                                      
            ]                                                          
        }                                                              
    ]                                                                  
}                                                                      

PATCH /rest/contracts/:id

Изменение информации о контракте.

Пользователь с привилегиями Доступ к контрактам и Редактировать контракт и уровнем доступа не ниже CLUSTER.

Пользователь с уровнем доступа CLUSTER может редактировать контракты только в своем кластере.

Даты начала и окончания срока действия могут быть переданы как в формате Unix Timestamp, так и в виде строки. Строка при этом состоит из даты (YYYY, MM, DD в прямом или обратном порядке, разделённые точкой, дефисом или слэшем) и времени (hh:mm или hh:mm:ss), разделённых пробелом.

Timestamp трактуется как абсолютное время в UTC. Строковая дата трактуется как местное время; Часовой пояс будет вычислен из кластера контракта.

// 2.0+
{                                                                      
    "title": "Контракт на поставку оборудования",                      // название контракта
    "description": "Контракт на поставку оборудования от 12.02.2022",  // описание контракта
    "no": "N1",                                                        // номер контракта
    "assigned_organization": {                                         // информация об организации-исполнителе контракта
        "id": 39707                                                    // * id организации
    },                                                                 
    "customer": {                                                      // информация об организации-заказчике
        "id": 6                                                        // id организации
    },                                                                 
    "start_date": "2025-01-01 00:00",                                  // дата начала действия контракта
    "finish_date": "2025-12-31 00:00",                                 // дата окончания действия контракта
    "grant_task_creation": true,                                       // права исполнителя на создание задания по контракту
    "files": {                                                         // физические файлы контракта
        "add": [                                                       
            {                                                          
                "id": 362                                              
            }                                                          
        ],                                                             
        "remove": [                                                    
            {                                                          
                "id": 363                                              
            }                                                          
        ],                                                             
    },                                                                 
    "groups_add": [                                                    // список новых групп сервисных объектов
        {                                                              
            "types_add": [                                             // список видов работ
                {                                                      
                    "id": 1                                            // id вида рвбот
                }                                                      
            ],                                                         
            "objects_add": [                                           // список сервисных объектов
                {                                                      
                    "object_id": 2,                                    // id сервисного объекта
                    "layer_id": 6                                      // id слоя сервисного объекта
                }                                                      
            ]                                                          
        }                                                              
    ],                                                                 
    "groups_edit": [                                                   // список измененных групп сервисных объектов
        {                                                              
            "id": 981,                                                 // id группы сервисных объектов
            "types_add": [                                             // список добавленных видов работ
                {                                                      
                    "id": 1                                            // id вида рвбот
                }                                                      
            ],                                                         
            "objects_add": [                                           // список добавленных сервисных объектов
                {                                                      
                    "object_id": 2,                                    // id сервисного объекта
                    "layer_id": 6                                      // id слоя сервисного объекта
                }                                                      
            ],                                                         
            "types_remove": [                                          // список удаленных видов работ
                {                                                      
                    "id": 2                                            // id вида рвбот
                }                                                      
            ],                                                         
            "objects_remove": [                                        // список удаленных сервисных объектов
                {                                                      
                    "object_id": 1                                     // id сервисного объекта
                    "layer_id": 5                                      // id слоя сервисного объекта
                }                                                      
            ],                                                         
        }                                                              
    ],                                                                 
    "groups_remove": [                                                 // список удаленных групп сервисных объектов
        {                                                              
            "id": 1                                                    // id группы сервисных объектов
        }                                                              
    ]                                                                  
}                                                                      

http 200

// 2.0+
 {                                                                     
    "id": 989,                                                         // id контракта
    "title": "Контракт на поставку оборудования",                      // название контракта
    "description": "Контракт на поставку оборудования от 12.02.2022",  // описание контракта
    "no": "N1",                                                        // номер контракта
    "cluster": {                                                       // информация о кластере контракта
        "id": 1310,                                                    // id кластера
        "title": "Доставка по России"                                  // название кластера
    },                                                                 
    "customer": {                                                      // информация об организации-заказчике
        "id": 6,                                                       // id организации
        "name": "Отдел продаж"                                         // название организации
    },                                                                 
    "assigned_organization": {                                         // информация об организации-исполнителе контракта
        "id": 39707,                                                   // id организации
        "name": "Доставка по Казани"                                   // название организации
    },                                                                 
    "start_date": 1641988800,                                          // дата начала действия контракта
    "finish_date": 1642852800,                                         // дата окончания действия контракта
    "start_date_local": "01.01.2025 00:00",                            // локальная дата начала действия контракта
    "finish_date_local": "01.01.2026 00:00",                           // локальная дата окончания действия контракта
    "grant_task_creation": false,                                      // права исполнителя на создание задания по контракту
    "files": [                                                         // файлы контракта
        {                                                              
            "id": 41,                                                  // id файла контракта
            "physical_file": {                                         // физический файл
                "id": 362,                                             // id физического файла
                "name": "моя фотография.jpg",                          // исходное название файла
                "extension": "jpg",                                    // расширение файла
                "size": 110038,                                        // размер файла в байтах
                "type": "PHOTO",                                       // тип файла, PHOTO/VIDEO/FILE/SOUND
                "file_name": "3e1603bdfec5.jpg"                        // название файла на сервере
            }                                                          
        }                                                              
    ],                                                                 
    "groups": [                                                        // группы сервисных объектов, по которым можно создавать задания
        {                                                              
            "id": 981,                                                 
            "objects": [                                               // список сервисных объектов
                {                                                      
                    "id": 962,                                         
                    "title": "сервисный объект",                       // название сервисного объекта
                    "object_id": 2,                                    // id сервисного объекта
                    "layer_id": 6                                      // id слоя сервисного объекта
                }                                                      
            ],                                                         
            "types": [                                                 // список видов работ
                {                                                      
                    "id": 1,                                           // id вида рвбот
                    "name": "Доставка",                                // название вида работ
                    "icon": "icon.png"                                 // файл пиктограммы вида работ
                }                                                      
            ]                                                          
        },                                                             
        {                                                              
            "id": 982,                                                 
            "objects": [                                               // список сервисных объектов
                {                                                      
                    "id": 972,                                         
                    "title": "сервисный объект",                       // название сервисного объекта
                    "object_id": 2,                                    // id сервисного объекта
                    "layer_id": 6                                      // id слоя сервисного объекта
                }                                                      
            ],                                                         
            "types": [                                                 // список видов работ
                {                                                      
                    "id": 1,                                           // id вида рвбот
                    "name": "Доставка",                                // название вида работ
                    "icon": "icon.png"                                 // файл пиктограммы вида работ
                }                                                      
            ]                                                          
        }                                                              
    ]                                                                  
}                                                                      

DELETE /rest/contracts/:id

Удаление контракта.

Пользователь с привилегиями Доступ к контрактам и Удалить контракт и уровнем доступа не ниже CLUSTER.

Пользователь с уровнем доступа CLUSTER может удалить контракты только в своем кластере.

/rest/licenses

POST /rest/licenses/key

Главный администратор.

Загрузить ключ лицензии.

// 2.0+
{                                                         
    "license_key": "CJKLE-NJDRQ-78CVM-94CQP-ZNAKW-ZB3K1"  // ключ лицензии
}                                                         

POST /rest/licenses/activation-code

Главный администратор.

Загрузить код активации.

// 2.0+
{                                                           
    "activation_code": "Njk8SVFTe3JlVRsXBHJPcDNNCF88IF..."  // код активации
}                                                           

DELETE /rest/licenses

Главный администратор.

Удалить ключ лицензии.

DELETE /rest/licenses/new

Главный администратор.

Удалить новый загруженный ключ лицензии до получения кода активации по нему.

GET /rest/licenses/info

Главный администратор.

Получить информацию о лицензии.

http 200

// 2.0+
{                                                              
    "license_key": "86GLA-4AJZC-*****-*****-*****-*****",      // первые 10 символов ключа
    "new_license_key": "MAK95-WDW7X-*****-*****-*****-*****",  // первые 10 символов нового ключа
    "hardware_id": "eikiJHxxdDJcUVRcDlZGW3ZbDkFDXw...",        // код активации
    "new_hardware_id": "dH0lci5wcWYEUlhfDAREWnZfCkBCDV...",    // код активации новой лицензии
    "expires": 1694072924,                                     // Unix Timestamp срока истечения действия ключа
                                                               // null, если ключ бессрочный
    "new_expires": 1794072924,                                 // Unix Timestamp срока истечения действия НОВОГО ключа
                                                               // null, если ключ бессрочный
    "total_limit": 100,                                        // максимальное количество пользователей для этого ключа
                                                               // null, если ключ безлимитный
    "new_total_limit": 1000                                    // максимальное количество пользователей для НОВОГО ключа
                                                               // null, если ключ безлимитный
    "system_limit": 15,                                        // максимальное количество пользователей в системе
    "status": "EXCEEDED"                                       // статус системы, возможные значения -
                                                               // VALID | UNCONFIRMED | BROKEN | EXPIRED | EXCEEDED | INACTIVE
}                                                              

/rest/metrics

GET /rest/metrics/tasks/mins/:N

Список запросов, совершенных пользователями в системе за последние N минут. В список входят запросы на создание, изменение и удаление заданий.

Данные за текущую (на момент выполнения запроса) минуту в список не входят.

Данные по запросам пользователей, которые выполнили меньше 5% от общего количества запросов за N минут, будут объединены ("user" будет указан null).

Главный администратор, Главный инспектор.

http 200

// 2.0+
{                                                      
    "items": [                                         // Список запросов, совершенных пользователями
        {                                              
            "operation": "INSERT",                     // Запросы на создание заданий
            "datetime": 1670854680,                    // дата и время совершения запросов
            "user": {                                  // данные пользователя, который совершал запросы
                "id": 111,                             // id пользователя
                "fio": "Иванов Петр Сергеевич"         // ФИО пользователя
            }                                          
            "count": 12                                // количество запросов за N минут
        },                                             
        {                                              
            "operation": "UPDATE",                     // Запросы на изменение заданий
            "datetime": 1670855220,                    
            "user": {                                  
                "id": 121,                             
                "fio": "Иванов Сергей Петрович"        
            }                                          
            "count": 14                                
        },                                             
        {                                              
            "operation": "DELETE",                     // Запросы на удаление заданий
            "datetime": 1670854680,                    
            "user": {                                  
                "id": 122,                             
                "fio": "Семенов Андрей Александрович"  
            }                                          
            "user_id": 6,                              
            "count": 4                                 
        },                                             
        {                                              
            "operation": "UPDATE",                     // Объединенные данные по запросам пользователей на изменение заданий
            "datetime": 1670855000,                    
            "user": null,                              
            "count": 2                                 
        },                                             
    ],                                                 
    "total": 32                                        // Общее количество запросов за N минут
}                                                      

/rest/stats

GET /rest/stats

REST /stats — сводные метрики по задачам и расписаниям Параметр days — целое число (>0), по умолчанию 7. Ограничивает интервал для расчётов по задачам.

/rest/notify-changes

POST /rest/notify-changes/datatables

Обновить версию справочника таблиц.

Главный администратор.

Параметры

Знаком + помечены поля, для которых можно указывать список значений, разделённых запятой. Например, clusterId=1,2.

POST /rest/notify-changes/baselayers

Обновить версию справочника подложек.

Главный администратор.

Параметры

Знаком + помечены поля, для которых можно указывать список значений, разделённых запятой. Например, clusterId=1,2.

POST /rest/notify-changes/reports

Обновить версию справочника отчетов.

Главный администратор.

Параметры

Знаком + помечены поля, для которых можно указывать список значений, разделённых запятой. Например, clusterId=1,2.

/rest/

GET /rest/version

Любой пользователь.

Возвращает служебную информацию о версии приложения

status = 200

// 2.0+
{                                                                      
    "appname": "Your System",                                          // "application.name" в application.conf
    "version": "1.7.7",                                                // служебное поле для обратной совместимости с более ранними версиями протокола; сейчас не используется
    "cerebellum": "0.24",                                              // версия Cerebellum
    "branch": "0.24.0",                                                // branch, из которого была произведена сборка
    "build": 1,                                                        // номер сборки
    "commit": "198d389d672138f112920833459981b0b35234ee",              // коммит сборки
    "link": "http://ci.geo4.pro/job/cerebellum/job/dev-current/142/",  // ссылка на сборку
    "mapinformer_android": "1.16",                                     // последняя выпущенная версия MapInformer Android
    "mapinformer_ios": "1.11.1",                                       // последняя выпущенная версия MapInformer iOS
    "status": "VALID"                                                  // статус системы, возможные значения -
                                                                       // VALID | UNCONFIRMED | BROKEN | EXPIRED | EXCEEDED | INACTIVE
}