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 роли
    "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                       // дата окончания действия токена
}                                                       

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.

// 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",                                     // логотип организации
                "workgroup_id": 188,                                                   // id проекта
                "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,                                             // дата изменение задания
                "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",                                               // тип файла
                        "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 изменения
                    "date": 1533289354,                                                // дата изменения
                    "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/stats

Получение статистики по заданиям. Количество заданий с группировкой по этапам, приоритетам, видам работ, организациям-исполнителям, организациям-создателям.

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

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

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

/tasks/stats?date_from=1445845360&date_till=1448523760`

http 200

// 2.0+
{                                           
    "statuses": [                           // по этапам
        {                                   
            "status_id": 1,                 
            "count": 3                      
        },                                  
        {                                   
            "status_id": 2,                 
            "count": 2                      
        },                                  
        {                                   
            "status_id": 3,                 
            "count": 0                      
        }                                   
    ],                                      
    "priorities": [                         // по приоритетам
        {                                   
            "priority_id": 1,               
            "statuses": [                   
                {                           
                    "status_id": 1,         
                    "count": 1              
                },                          
                {                           
                    "status_id": 2,         
                    "count": 0              
                },                          
                {                           
                    "status_id": 3,         
                    "count": 2              
                }                           
            ]                               
        }                                   
    ],                                      
    "types": [                              // по видам работ
        {                                   
            "type_id": 1,                   
            "statuses": [                   
                {                           
                    "status_id": 1,         
                    "count": 2              
                },                          
                {                           
                    "status_id": 2,         
                    "count": 2              
                },                          
                {                           
                    "status_id": 3,         
                    "count": 2              
                }                           
            ]                               
        }                                   
    ],                                      
    "organizations": [                      // по организациям-создателям
        {                                   
            "organization_id": 1,           
            "statuses": [                   
                {                           
                    "status_id": 1,         
                    "count": 0              
                },                          
                {                           
                    "status_id": 2,         
                    "count": 2              
                },                          
                {                           
                    "status_id": 3,         
                    "count": 2              
                }                           
            ]                               
        }                                   
    ],                                      
    "assignedOrganizations": [              // по назначенным организациям
        {                                   
            "assigned_organization_id": 1,  
            "statuses": [                   
                {                           
                    "status_id": 1,         
                    "count": 2              
                },                          
                {                           
                    "status_id": 2,         
                    "count": 3              
                },                          
                {                           
                    "status_id": 3,         
                    "count": 4              
                }                           
            ]                               
        }                                   
    ]                                       
}                                           

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&gtCreateDate=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&gtCreateDate=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&gtCreateDate=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&gtCreateDate=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",                                     // логотип организации
            "workgroup_id": 188,                                                   // id проекта
            "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,                                             // дата изменение задания
            "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
            "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")
                    "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",                                               // тип файла
                    "task_id": 786847                                              // id задания
                }                                                                  
            ],                                                                     
        },                                                                         
        ...                                                                        // следующие элементы списка заданий
    ],                                                                             
    "schedules": [                                                                 
        {                                                                          
            "id": 107486,                                                          // id расписания
            "title": "Расписание",                                                 // название
            "worktime": 7200,                                                      // дедлайн
            "on": true,                                                            // включено расписание или нет
            "user": {                                                              // информация о пользователе, который создал расписание
                "id": 6,                                                           
                "fio": "Главный администратор"                                     
            },                                                                     
            "cluster": {                                                           // кластер
                "id": 150086,                                                      
                "title": "Тестовый кластер"                                        
            },                                                                     
            "archive": false,                                                      // является ли расписание архивным
            "contract": {                                                          // контракт
                "id": 195270,                                                      
                "no": "1",                                                         
                "title": "организация"                                             
            },                                                                     
            "organization": {                                                      // организация
                "id": 195270,                                                      
                "name": "организация"                                              
            },                                                                     
            "total_template_count": 1                                              // количество шаблонов
        }                                                                          
    ],                                                                             
    "count": 59503                                                                 // количество заданий
}                                                                                  

POST /rest/tasks

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

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

В массив 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": 1533286296,                                               // * дата задания
    "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+ организация исполнителя при её наличии;
                                                                      // также можно указать только организацию
                                                                      // без указания конкретного исполнителя;
                                                                      // организации должен быть доступен вид работ задания
                                                                      //
    "workgroup_id": 188,                                              // id проекта
    "deadline": 1533545495,                                           // дедлайн;
                                                                      // если не передан, то может быть проставлен
                                                                      // на основе поля 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
            "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,                                             // логотип организации
    "workgroup_id": 188,                                                   // id проекта
    "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,                                             // дата обновления задания
    "workgroup_id": 188,                                                   // id проекта
    "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
    "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,                                             // логотип организации
        "workgroup_id": 188,                                                   // id проекта
        "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,                                             // дата обновления задания
        "assigned_organization_id": 3,                                         // id назначенной организации
        "assigned_organization_name": "Ремонт дорог",                          // название назначенной организации
        "assigned_user_id": 613,                                               // id назначенного пользователя
        "assigned_user_fio": "Петров Иван",                                    // ФИО назначенного пользователя
        "lat": 46.67,                                                          // координаты точки - lat
        "lon": 55.56,                                                          // координаты точки - lon
        "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,                                                            // включено расписание или нет
        "user": {                                                              // информация о пользователе, который создал расписание
            "id": 6,                                                           
            "fio": "Главный администратор"                                     
        },                                                                     
        "cluster": {                                                           // кластер
            "id": 150086,                                                      
            "title": "Тестовый кластер"                                        
        },                                                                     
        "archive": false,                                                      // является ли расписание архивным
        "contract": {                                                          // контракт
            "id": 195270,                                                      
            "no": "1",                                                         
            "title": "организация"                                             
        },                                                                     
        "organization": {                                                      // организация
            "id": 195270,                                                      
            "name": "организация"                                              
        },                                                                     
        "total_template_count": 1                                              // количество шаблонов
    },                                                                         
    "configuration": {}                                                        
}                                                                              

PATCH /rest/tasks/:id

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

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

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

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

Если массив "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+
{                                                                     
    "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": 1533286296,                                           // дедлайн
    "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
    "schedule": {                                                     
        "id": 107486,                                                 // id расписания
        "title": "Расписание",                                        // название
        "worktime": 7200,                                             // дедлайн
        "on": true,                                                   // включено расписание или нет
        "user": {                                                     // информация о пользователе, который создал расписание
            "id": 6,                                                  
            "fio": "Главный администратор"                            
        },                                                            
        "cluster": {                                                  // кластер
            "id": 150086,                                             
            "title": "Тестовый кластер"                               
        },                                                            
        "archive": false,                                             // является ли расписание архивным
        "contract": {                                                 // контракт
            "id": 195270,                                             
            "no": "1",                                                
            "title": "организация"                                    
        },                                                            
        "organization": {                                             // организация
            "id": 195270,                                             
            "name": "организация"                                     
        },                                                            
        "total_template_count": 1                                     // количество шаблонов
    },                                                                
    "attachments": [                                                  // передача файлов в массиве для версий Cerebellum от 0.16 и старше
        {                                                             
            "file": "dN2k9B9r42YbfDyz.jpg",                           // название файла после загрузки
            "file_name": "1313410929241.jpg",                         // исходное название файла
            "sample_matching": 60,                                    // процент совпадения фото с образцом
            "description": "Второстепенное фото",                     // описание файла
            "file_type": "PHOTO",                                     // тип файла: "PHOTO" - фото, "VIDEO" - видео, "FILE" - файл, "SOUND" - аудио
            "main_photo": false,                                      // является ли фото главным
            "sticker_id": 12,                                         // id стикера для прикрепления к файлу
            "file_source": "device_camera",                           // источник файла, тип String, возможные значения: "device_camera"/"app_camera"/app_redactor/"gallery"/"dictaphone"
            "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,                                        // логотип организации
    "workgroup_id": 188,                                              // id проекта
    "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,                                        // дата обновления задания
    "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
    "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": "Все отлично",  
    "datetime": 1234567890,    // время проставления оценки, Timestamp
    "last_update": 1234567890  // время последнего изменения, Timestamp
    "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": "Все отлично",  
    "datetime": 1234567890,    // время проставления оценки, Timestamp
    "last_update": 1234567890  // время последнего изменения, Timestamp
    "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": "Все отлично",  
    "datetime": 1234567890,    // время проставления оценки, Timestamp
    "last_update": 1543312469  // время последнего изменения, Timestamp
    "author": {                // пользователь, который поставил оценку
        "id": 6,               
        "fio": "Иванов Петр"   
    }                          
}                              

http 200

// 2.0+
{                                      
    "rating": 4,                       // Оценка, Int от 1 до 5
    "comment": "Не уложились в срок",  
    "datetime": 1234567890,            // время проставления оценки, Timestamp
    "last_update": 1543312469          // время последнего изменения, Timestamp
    "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,                                                    // дата создания комментария
            "update_text": "Заданию назначили организацию: \"Отдел разработки\"",  //текст обновления (для комментария об обновлении задания)
            "comment": "",                                                         // текст комментария
            "type": 2,                                                             // тип комментария: 1 - обычный, 2 - системный
            "diff": {                                                              // информация по внесенным в задание изменениям
                "id": 39983,                                                       // id изменения
                "date": 1533289354,                                                // дата изменения
                "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,                                                    //дата создания комментария
            "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,                                                    // дата создания комментария
            "update_text": "Были добавлены новые файлы. Файлы были изменены.",     //текст обновления (для комментария об обновлении задания)
            "comment": "",                                                         // текст комментария
            "type": 2,                                                             // тип комментария: 1 - обычный, 2 - системный
            "diff": {                                                              // информация по внесенным в задание изменениям
                "id": 39981,                                                       // id изменения
                "date": 1533215336,                                                // дата изменения
                "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",                            // источник файла
                        "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",                                           // тип файла
                        "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                                            // код системного сообщения
        }                                                                          
    ]                                                                              
}                                                                                  

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

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

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

http 200

// 2.0+
{                                                                                  
    "items": [                                                                     
        {                                                                          
            "id": 50029,                                                           // id комментария
            "uuid": "1454bd95-3653-4499-ab39-9733af031312",                        
            "date": 1533289354,                                                    // дата создания комментария
            "update_text": "Заданию назначили организацию: \"Отдел разработки\"",  //текст обновления (для комментария об обновлении задания)
            "comment": "",                                                         // текст комментария
            "type": 2,                                                             // тип комментария: 1 - обычный, 2 - системный
            "diff": {                                                              // информация по внесенным в задание изменениям
                "id": 39983,                                                       // id изменения
                "date": 1533289354,                                                // дата изменения
                "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": 1533289352,                                                    //дата создания комментария
            "update_text": "Вид работы изменен с \"Ямы\" на \"Аварии\"",           //текст обновления (для комментария об обновлении задания)
            "comment": "",                                                         // текст комментария
            "type": 2,                                                             // тип комментария: 1 - обычный, 2 - системный
            "diff": null,                                                          // информация по внесенным в задание изменениям
            "parent": null,                                                        // родительский комментарий
            "fio": "Администратор",                                                // ФИО пользователя, который сделал изменение
            "user_id": 6,                                                          // id пользователя, который сделал изменение
            "task_id": 60530,                                                      // id задания
            "chat_message_number": 1,                                              // номер сообщения в чате задания
            "chat_id": 123,                                                        // системный номер канала сообщений
            "system_message_code": null                                            // код системного сообщения
        },                                                                         
        {                                                                          
            "id": 50026,                                                           // id комментария
            "uuid": "df11d7d7-1e36-4e2a-8343-dbd5b7e94058",                        
            "date": 1533289350,                                                    // дата создания комментария
            "update_text": "Были добавлены новые файлы. Файлы были изменены.",     //текст обновления (для комментария об обновлении задания)
            "comment": "",                                                         // текст комментария
            "type": 2,                                                             // тип комментария: 1 - обычный, 2 - системный
            "diff": null,                                                          // информация по внесенным в задание изменениям
            "parent": null,                                                        // родительский комментарий
            "fio": "Администратор",                                                // ФИО пользователя, который сделал изменение
            "user_id": 6,                                                          // id пользователя, который сделал изменение
            "task_id": 60529,                                                      // id задания
            "chat_message_number": 98,                                             // номер сообщения в чате задания
            "chat_id": 123,                                                        // системный номер канала сообщений
            "system_message_code": null                                            // код системного сообщения
        }                                                                          
    ],                                                                             
    "total": 3,                                                                    // общее количество комментариев
    "page": 1,                                                                     // текущая страница
    "limit": 25                                                                    // максимальное количество элементов на странице
}                                                                                  

POST /rest/tasks/:id/comments

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

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

http 200

// 2.0+
{                                
    "id": 9145,                  // id комментария
    "uuid": "cdnjskcnkjdancfk",  // UUID4, необязательное поле
    "parent": null,              // родительский комментарий
    "date": 1542969580,          // дата создания комментария
    "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,                             // дата создания комментария
    "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

Маппинг объекта обслуживания в пустое задание.

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,           
        "workgroup_id": null,                
        "date": null,                        
        "attachments": [],                   
        "sys_org_id": 456,                   
        "sys_clr_id": null,                  
        "sys_user_id": 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

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

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

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

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

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

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

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

Параметры

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

// 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/backward-compatible

Получение некоторых настроек для сохранения обратной совместимости со старыми версиями клиентских приложений. Ранее запрос назывался /files/settings; он и сейчас работает, т.к. на nginx сделан проброс.

Т.к. ранее /files/settings был просто запросом к файлу, и потому выполнялся без токена, то в /backward-compatible сохранено такое поведение. Все настройки вычисляются так, как если бы токен не передавался.

http 200

// 2.0+
{                                                         
    "is_camera_needs_to_use_location": false,             // настройка "mobileapp/camera/is_camera_needs_to_use_location"
    "camera_max_location_error_meters": 50,               // настройка "mobileapp/camera/camera_max_location_error_meters"
    "camera_max_location_delay_millis": 10000,            // настройка "mobileapp/camera/camera_max_location_delay_millis"
    "is_need_to_use_custom_camera": true,                 // настройка "mobileapp/camera/is_need_to_use_custom_camera"
    "camera_is_put_date_stamp": false,                    // настройка "mobileapp/camera/camera_is_put_date_stamp"
    "is_need_choose_sticker_before_start_camera": false,  // настройка "mobileapp/camera/is_need_choose_sticker_before_start_camera"
    "is_need_choose_sticker_after_stop_camera": false,    // настройка "mobileapp/camera/is_need_choose_sticker_after_stop_camera"
    "camera_max_distance_to_task_meters": 100,            // настройка "mobileapp/camera/camera_max_distance_to_task_meters"
    "is_need_add_caption_mode": true,                     // настройка "mobileapp/camera/is_need_add_caption_mode"
    "is_required_add_caption": false,                     // настройка "mobileapp/camera/is_required_add_caption"
    "is_landing": false,                                  // настройка "system/is_landing"
    "mapinformer_type": "standard",                       // настройка "mobileapp/mapinformer_type"
    "geoportal": {                                        
        "url": "http://integration.dev.geo4.pro",         // доступ к геопорталу; значение рассчитывается
                                                          // исходя из ключей ssc.host и requests.use.ssl.protocol
                                                          // в настройках
        "socket_port": "80"                               // константа
    },                                                    
    "cerebellum": {                                       
        "url": "http://integration.dev.geo4.pro"          // доступ к cerebellum; значение рассчитывается
                                                          // исходя из ключей ssc.host и requests.use.ssl.protocol
    }                                                     
}                                                         

GET /rest/configuration/java-options

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

http 200

// 2.0+
{                                           
    "onlyMyOrganization": false,            // в системе отображается только организация текущего пользователя
                                            // (значение параметра берется из конфигурационного файла application.conf)
    "-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,                     // порт
    "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.

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

// 2.0+
{                                    
    "host": "ldap.example.com",      // хост
    "port": 389,                     // порт
    "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,                     // порт
    "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             // включено
    }                                
}                                    

/rest/clusters

GET /rest/clusters/list

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

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

Пользователи других ролей видят только свой кластер.

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

Параметры

http 200

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

GET /rest/clusters/:id

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

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

Пользователи других ролей видят только свой кластер.

http 200

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

POST /rest/clusters

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

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

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

http 200

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

PATCH /rest/clusters/:id

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

Администратор кластера может редактировать только свой кластер.

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

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

http 200

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

DELETE /rest/clusters/:id

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

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

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

/rest/organizations

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

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

Главный инспектор и главный администратор видят все организации, для других пользователей видимость организаций зависит от настройки behavior.can.see.my.organization.only. Если эта настройка выставлена в true, пользователь будет видеть только доступные ему организации. Если настройка выставлена в false, доступ к организациям будет ограничиваться его кластером.

Параметры 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

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

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

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

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

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

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

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

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

// 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

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

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

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

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

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

Перенос организации в другой кластер (cluster_id) разрешен только пользователю с ролью Главный администратор.

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

// 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": "Никитина Ольга Ивановна",                       // ФИО бухгалтера
        "max_users_count": 100                                             // Максимально допустимое количество пользователей организации
    },                                                                     //
                                                                           //
    "default_assigned_organization_id": 99,                                // организация-исполнитель по умолчанию
    "message_channel_id": 65006                                            // идентификатор канала уведомлений
}                                                                          

PUT /rest/organizations/:id

Изменение существующей организации.

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

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

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

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

Перенос организации в другой кластер clusterid) разрешен только пользователю с ролью Главный администратор.

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

// 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",                                                // файл с логотипом организации
    "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": "Никитина Ольга Ивановна",                       // ФИО бухгалтера
        "max_users_count": 100                                             // Максимально допустимое количество пользователей организации
    },                                                                     //
                                                                           //
    "default_assigned_organization_id": 99,                                // организация-исполнитель по умолчанию
    "message_channel_id": 65006                                            // идентификатор канала уведомлений
}                                                                          

DELETE /rest/organizations/:id

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

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

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

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

Параметры

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

Создать invite-URL.

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

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

Администратор кластера может создать 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.

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

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

Администратор кластера может удалить 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 организации.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

GET /rest/organizations/:id/stamp

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

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

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

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

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

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

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

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

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

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

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

/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": "Отдел разработки ПО"                               // название организации
    }                                                               
}                                                                   

GET /rest/workgroups/:id/users

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

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

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

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

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                            // канал входящих сообщений
        },                                                      
        ...                                                     // следующие элементы списка
                                                                // пользователей организации
    ]                                                           
}                                                               

POST /rest/workgroups

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

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

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

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

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

// 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

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

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

Главному администратору и Главному инспектору для редактирования доступны все проекты.

Администратору организации и Инспектору организации для редактирования доступны проекты своих организаций, а также другие проекты, в которые их включили явно.

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

При попытке изменения проекта "По умолчанию" получим ошибку (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

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

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

Главному администратору для удаления доступны все проекты.

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

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

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

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

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

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

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

Администратору организации и Инспектору организации доступны проекты своих организаций, а также другие проекты, в которые их включили явно.

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

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

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

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

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

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

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

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

Если проект открытый, и пользователь состоит в его организации, то ничего не происходит, а запрос возвращает 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)
    "active_till": 1712984116                            // срок действия учётной записи
    "last_authentication": 1605793362,                   // дата последней авторизации
    "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,                           // дата окончания действия
        "total": 5,                                      // максимальное количество попыток использования
        "attempts_left": 5                               // оставшееся количество попыток использования
    },                                                   
    "system": false,                                     // системный пользователь
    "avatar_update_date": 1605793362,                    // дата обновления аватара
    "tags": [                                            // метки пользователя
        {                                                
            "id": 1                                      // id метки
        },                                               
        ...                                              // следующие элементы списка
    ],                                                   
    "organization_id": 1,                                // id основной организации
    "cluster": {                                         // кластер
        "id": 2184,                                      // id кластера
        "title": "Тестовый кластер"                      // название кластера
    },                                                   
    "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,                            // канал входящих сообщений
    "default_assigned_organization_id": 500              // организация-исполнитель заданий,
                                                         // подставляемая по умолчанию
}                                                        

POST /rest/users/register

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

Регистрация нового пользователя с ролью Клиент .

Параметры

// 2.0+
{                                                        
    "login": "login",                                    // * логин
    "paswd": 12345,                                      // * пароль
    "fio": "Иванов И.И.",                                // * ФИО
    "organization_id": 514,                              // * id организации
    "email": "test@gmail.com",                           // * email
    "tracking": true                                     // включить трекинг, по умолчанию - false
    "phone": "+7 999 888 7766",                          // телефон
    "role_id": 6,                                        // id роли,
                                                         // возможные значения роли - Пользователь организации и Клиент,
                                                         // по умолчанию - Клиент
    "address": "г.Казань, ул.Назарбаева, д.25, кв.125",  // адрес
    "passport": "9205 999999"                            // паспортные данные
}                                                        

http 200

// 2.0+
{                                                        
    "id": 6923,                                          // id пользователя
    "login": "login",                                    // логин
    "fio": "Иванов И.И.",                                // ФИО
    "type": {                                            // тип
        "id": 1,                                         // id типа
        "title": "Пользователи"                          // название
    },                                                   
    "authentication_type": 0,                            // тип аутентификации (0 - логин/пароль,
                                                         // 1 - LDAP)
    "active_till": 1712984116                            // срок действия учётной записи
    "last_authentication": 1605793362,                   // дата последней авторизации
    "avatar_update_date": 1605793362,                    // дата обновления аватара
    "gis_editor_access": true,                           // интеграция с ГИС редактором
    "invite": null,                                      // последнее приглашение
    "system": false,                                     // системный пользователь
    "tags": [],                                          // список меток пользователя
    "organization_id": 514,                              // id организации
    "cluster": {                                         // кластер
        "id": 2184,                                      // id кластера
        "title": "Тестовый кластер"                      // название кластера
    },                                                   
    "role_id": 6,                                        // id роли
    "email": "test@gmail.com",                           // адрес электронной почты
    "address": "г.Казань, ул.Назарбаева, д.25, кв.125",  // адрес
    "passport": "9205 999999",                           // паспортные данные
    "phone": "+7 999 888 7766",                          // телефон
    "tracking": false,                                   // включить трекинг
    "glonass_id": null,                                  // ГЛОНАСС-id для трекинга
    "message_channel_id": 99                             // канал входящих сообщений
}                                                        

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 основной организации
            "cluster": {                                         // кластер
                "id": 2184,                                      // id кластера
                "title": "Тестовый кластер"                      // название кластера
            },                                                   
            "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_ids": [                                // массив id организаций пользователя
                2,                                               
                132,                                             
                232                                              
            ],                                                   
            "role_id": 10,                                       // id роли
            "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": "Иванов Иван Иванович",      // ФИО пользователя
                "type": {                           // тип
                    "id": 1,                        // id типа
                    "title": "Пользователи"         // название
                },                                  
                "authentication_type": 0,           // тип аутентификации (0 - логин/пароль,
                                                    // 1 - LDAP)
                "last_authentication": 1605793362,  // дата последней авторизации
                "blocked": false,                   // признак заблокированного пользователя
                "avatar_update_date": 1605793362,   // дата обновления аватара
                "tags": [                           // метки пользователя
                    {                               
                        "id": 1                     // id метки
                    },                              
                    ...                             // следующие элементы списка
                ],                                  
                "cluster": {                        // кластер
                    "id": 2184,                     // 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/count

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

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

http 200

// 2.0+
{                 
    "count": 970  // количество пользователей
}                 

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

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

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

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

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

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

Параметры

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

// 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 - логин/пароль,
    "active_till": 1712984116                                       // срок действия учётной записи
                                                                    // 1 - LDAP)
    "avatar_file_name": "f71adbab-724f-47a1-996d-0e62062b006b.jpg"  // имя файла после загрузки на сервер
                                                                    // (jpg | jpeg)
    "tags": [                                                       // метки пользователя
        {                                                           
            "id": 1                                                 // id метки
        },                                                          
        {                                                           
            "id": 22                                                
        },                                                          
        ...                                                         // следующие элементы списка
    ],                                                              
    "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)
    "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 метки
        },                                               
        {                                                
            "id": 22                                     
        },                                               
        ...                                              // следующие элементы списка
    ],                                                   
    "organization_id": 1,                                // id основной организации
    "cluster": {                                         // кластер
        "id": 2184,                                      // id кластера
        "title": "Тестовый кластер"                      // название кластера
    },                                                   
    "organization_ids": [                                // массив id организаций пользователя
        1,                                               
        132,                                             
        232                                              
    ],                                                   
    "role_id": 7,                                        // id роли
    "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.

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

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

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

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

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

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

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

Параметры

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

// 2.0+
{                                                                   
    "login": "ivanov_ivan",                                         // логин
    "fio": "Иванов Иван Иванович",                                  // ФИО
    "paswd": "123123",                                              // новый пароль
    "role_id": 7,                                                   // id роли; пользователь не может сам поменять свою роль
    "organization_id": 517,                                         // id основной организации, права на изменения
                                                                    // есть только у главного администратора
    "organization_ids": [                                           // массив id организаций пользователя
        517,                                                        
        132,                                                        
        232                                                         
    ],                                                              
    "type": {                                                       // тип
        "id": 1                                                     // id типа
    },                                                              
    "authentication_type": 0,                                       // тип аутентификации (0 - логин/пароль,
                                                                    // 1 - LDAP)
    "active_till": 1712984116                                       // срок действия учётной записи
    "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 метки
            }                                                       
        ]                                                           
    }                                                               
    "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)
    "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 метки
        },                                               
        {                                                
            "id": 21                                     
        },                                               
        ...                                              // следующие элементы списка
    ],                                                   
    "organization_id": 517,                              // id основной организации
    "cluster": {                                         // кластер
        "id": 2184,                                      // id кластера
        "title": "Тестовый кластер"                      // название кластера
    },                                                   
    "organization_ids": [                                // массив id организаций пользователя
        517,                                             
        132,                                             
        232                                              
    ],                                                   
    "role_id": 10,                                       // id роли
    "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

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

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

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

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

Параметры

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

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

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

Параметры

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

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

http 200

{                               
    "items": [                  
        {                       
            "id": 6,            // id роли
            "name": "Клиент",   // название роли
            "code": "CUSTOMER"  // код роли
        },                      
        ...                     // следующие элементы списка
    ]                           
}                               

PATCH /rest/users/roles/:id

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

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

{                     
    "name": "Клиент"  // * название роли
}                     

http 200

{                       
    "id": 6,            // id роли
    "name": "Клиент",   // название роли
    "code": "CUSTOMER"  // код роли
}                       

POST /rest/users/roles/sort

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

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

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

http 200

{                               
    "items": [                  
        {                       
            "id": 6,            // id роли
            "name": "Клиент",   // название роли
            "code": "CUSTOMER"  // код роли
        },                      
        ...                     // следующие элементы списка ролей
                                // в заданном порядке сортировки
    ]                           
}                               

POST /rest/users/:id/invites

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

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

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

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

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

Параметры

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

// 2.0+
{                           
    "expires": 1658304773,  // дата окончания действия, unix timestamp в будущем,
                            // по умолчанию - +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,                          // дата окончания действия
    "total": 5,                                     // максимальное количество попыток использования
    "attempts_left": 5                              // оставшееся количество попыток использования
}                                                   

DELETE /rest/users/invites/:id

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

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

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

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

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

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

Создать invite-URL.

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

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

Администратор организации может создать 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,                          // дата окончания действия
    "total": 5,                                     // максимальное количество попыток использования
    "attempts_left": 5                              // оставшееся количество попыток использования
}                                                   

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

Удалить invite-URL.

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

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

Администратор организации может удалить 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,                          // дата окончания действия
    "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,                          // дата окончания действия
            "total": 5,                                     // максимальное количество попыток использования
            "attempts_left": 5                              // оставшееся количество попыток использования
        }                                                   
    ],                                                      
    "total": 1,                                             // общее количество элементов
    "limit": 25,                                            // максимальное количество элементов на странице
    "page": 1                                               // текущая страница
}                                                           

POST /rest/users/import

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

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

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

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

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

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

Если у создаваемого пользователя нет организации, и поле organization на "верхнем уровне" не проставлено, то будет использована главная организация пользователя, выполняющего запрос. Главный администратор не состоит ни в одной организации, поэтому для него обязательна передача 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)
            "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

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

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

Параметры

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)
            "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 метки
                },                                                     
                {                                                      
                    "id": 22                                           
                },                                                     
                ...                                                    // следующие элементы списка
            ],                                                         
            "organization_id": 1,                                      // id основной организации
            "cluster": {                                               // кластер
                "id": 2184,                                            // id кластера
                "title": "Тестовый кластер"                            // название кластера
            },                                                         
            "organization_ids": [                                      // массив id организаций пользователя
                1,                                                     
                132,                                                   
                232                                                    
            ],                                                         
            "role_id": 7,                                              // id роли
            "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": null,         // период исполнения работ
                                              // данного вида работ
            "period_of_review_in_sec": null,  // величина срока исполнения работ данного
                                              // вида работ по умолчанию (в секундах)
            "deadline_type": "AT_CREATE",     // поле для расчета срока исполнения
                                              // работ данного вида:
                                              // null,
                                              // от даты создания "AT_CREATE",
                                              // от даты назначения на исполнителя
                                              // "AT_UPDATE".
            "organizations": [                // массив id организаций,
                                              // которым доступен вид работ
                1,                            
                2,                            
                3                             
            ],                                
            "order_key": 3,                   // порядковый номер вида работ
                                              // в отсортированном списке
            "cluster": {                      // кластер
                "id": 2184,                   // id кластера
                "title": "Тестовый кластер"   // название кластера
            },                                
            "group_id": null                  // id группы, которой принадлежит
                                              // вид работ, и null,
                                              // если он не принадлежит никакой группе
        },                                    
        ...                                   // следующие элементы списка видов работ
    ]                                         
}                                             

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

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

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

GET /rest/types/compressed

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

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

Администратор кластера и инспектор кластера видят:

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

Параметры

Знаком + помечены поля, для которых можно указывать список значений, разделённых запятой. Например, 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": null,         // период исполнения работ
                                              // данного вида работ
            "period_of_review_in_sec": null,  // величина срока исполнения работ данного
                                              // вида работ по умолчанию (в секундах)
            "deadline_type": "AT_CREATE",     // поле для расчета срока исполнения
                                              // работ данного вида:
                                              // null,
                                              // от даты создания "AT_CREATE",
                                              // от даты назначения на исполнителя
                                              // "AT_UPDATE".
            "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

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

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

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

// 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": null,                // период исполнения работ данного вида
            "period_of_review_in_sec": null,         // величина срока исполнения работ
                                                     // данного вида по умолчанию (в секундах)
            "deadline_type": "AT_CREATE",            // поле для расчета срока исполнения работ
                                                     // данного вида: null, от даты создания
                                                     // "AT_CREATE", от даты назначения
                                                     // на исполнителя "AT_UPDATE".
            "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

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

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

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

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

// 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

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

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

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

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

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

http 200

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

DELETE /rest/types/groups/:id

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

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

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

POST /rest/types

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

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

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

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

// 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": 2,                                  // период исполнения работ данного вида
    "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
            },                                              
            ...                                             // следующие элементы списка
        ]                                                   
    },                                                      
    "fields": {                                             // настраиваемые поля
        "add": [                                            // настраиваемые поля, которые необходимо добавить
            {                                               
                "id": 1                                     // id
            },                                              
            ...                                             // следующие элементы списка
        ]                                                   
    },                                                      
    "cluster": {                                            // кластер
        "id": 64                                            
    }                                                       
}                                                           

http 200

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

PATCH /rest/types/:id

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

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

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

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

// 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": 2,                                  // период исполнения работ данного вида
    "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
            },                                              
            ...                                             // следующие элементы списка
        ]                                                   
    },                                                      
    "fields": {                                             // настраиваемые поля
        "add": [                                            // настраиваемые поля, которые необходимо добавить
            {                                               
                "id": 1                                     // id
            },                                              
            ...                                             // следующие элементы списка
        ],                                                  
        "remove": [                                         // настраиваемые поля, которые необходимо удалить
            {                                               
                "id": 2                                     // id
            },                                              
            ...                                             // следующие элементы списка
        ]                                                   
    },                                                      
    "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": 2,                                  // период исполнения работ
                                                            // данного вида
    "period_of_review_in_sec": 172800,                      // величина срока исполнения работ
                                                            // данного вида по умолчанию
                                                            // (в секундах)
    "deadline_type": "AT_CREATE",                           // поле для расчета срока исполнения
                                                            // работ данного вида:
                                                            // от даты создания "AT_CREATE",
                                                            // от даты назначения на исполнителя
                                                            // "AT_UPDATE".
    "organizations": [                                      // массив id организаций,
                                                            // которым доступен вид
        2,                                                  
        3                                                   
    ],                                                      
    "cluster": {                                            // кластер
        "id": 2184,                                         // id кластера
        "title": "Тестовый кластер"                         // название кластера
    },                                                      
    "group_id": 22                                          // id группы, которой принадлежит
                                                            // вид, или null, если вид не
                                                            // принадлежит никакой группе
}                                                           

DELETE /rest/types/:id

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

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

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

POST /rest/types/:id/fields/:fieldId

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

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

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

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

DELETE /rest/types/:id/fields/:fieldId

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

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

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

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

POST /rest/types/:id/stickers/:stickerId

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

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

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

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

DELETE /rest/types/:id/stickers/:stickerId

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

Открепление стикера от вида работ.

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

Если стикер доступен для всех видов работ (is_for_all=true), получаем 403. Если связи не существует, то есть, стикер не был явно прикреплен к виду работ, получаем ошибку 400.

/rest/statuses

POST /rest/statuses

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

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

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

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

// 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

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

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

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

Этапы рассматриваются вместе в группе. Есть группа глобальных этапов, есть группы кластерных этапов. Сортировать этапы можно только в рамках группы. При этом нужно передать 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

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

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

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

// 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

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

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

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

/rest/priorities

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": "Тестовый кластер"  // название кластера
            },                               
            "order_important": 1             // порядковый номер для сортировки
        },                                   
        ...                                  // следующие элементы списка приоритетов
    ]                                        
}                                            

POST /rest/priorities/sort

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

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

Администратор кластера может сортировать только локальные приоритеты своего кластера.

Приоритеты рассматриваются вместе в группе. Есть группа глобальных приоритетов, есть группы кластерных приоритетов. Сортировать приоритеты можно только в рамках группы. При этом нужно передать 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": "Тестовый кластер"                      // название кластера
            },                                                   
            "order_important": 1                                 
        },                                                       
        {                                                        
            "id": 1,                                             
            "name": "Плановые",                                  
            "icon": "priority_9_20140327111133.png",             
            "cluster": {                                         // кластер
                "id": 2184,                                      // id кластера
                "title": "Тестовый кластер"                      // название кластера
            },                                                   
            "order_important": 2                                 
        },                                                       
        ...                                                      // следующие элементы списка
    ]                                                            
}                                                                

POST /rest/priorities

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

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

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

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

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

// 2.0+
{                                                   
    "name": "Плановые",                             // * название приоритета
    "cluster": {                                    // кластер
        "id": 64                                    
    }                                               
    "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": "Тестовый кластер"                  // название кластера
    },                                               
    "order_important": 7                             // порядковый номер для сортировки
}                                                    

PATCH /rest/priorities/:id

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

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

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

// 2.0+
{                                                   
    "name": "Внеплановые",                          // название приоритета
    "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": "Тестовый кластер"                  // название кластера
    },                                               
    "order_important": 8                             // порядковый номер для сортировки
}                                                    

DELETE /rest/priorities/:id

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

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

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

/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,                              // является ли поле видимым. Отображать
                                                          // ли его, когда показывается полная
                                                          // информация по заданию
            "is_for_all": true,                           // доступно ли поле всем типам заданий
            "order": 1,                                   // порядковый номер поля в общем списке
            "type_ids": [                                 
                14                                        
            ],                                            // массив id типов заданий, для которых
                                                          // поле доступно, если оно не
                                                          // доступно всем типам заданий
            "cluster": {                                  // кластер
                "id": 2184,                               // id кластера
                "title": "Тестовый кластер"               // название кластера
            }                                             
        },                                                
        ...                                               // следующие элементы списка
                                                          // настраиваемых полей
    ],                                                    
    "count": 35                                           // количество настраиваемых полей, удовлетворяющих
                                                          // заданным условиям фильтрации и поиска
}                                                         

POST /rest/fields/sort

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

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

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

Настраиваемые поля рассматриваются вместе в группе. Есть группа глобальных настраиваемых полей, есть группы кластерных настраиваемых полей. Сортировать настраиваемые поля можно только в рамках группы. При этом нужно передать 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,                              
            "is_for_all": true,                           
            "order": 1,                                   
            "type_ids": [                                 
                14                                        
            ],                                            
            "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,                              
            "is_for_all": true,                           
            "order": 2,                                   
            "type_ids": [],                               
            "cluster": {                                  // кластер
                "id": 2184,                               // id кластера
                "title": "Тестовый кластер"               // название кластера
            }                                             
        },                                                
        ...                                               
    ]                                                     
}                                                         

POST /rest/fields

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

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

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

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

// 2.0+
{                                               
    "name": "Фактический адрес организации",    // * название нового поля
    "format": "text",                           // * формат данных поля, возможные значения:
                                                // "int", "float", "bool", "geometry", "dataTableObjects",
                                                // "string", "text", "list", "date";
    "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
    "types": [                                  // массив id типов заданий, для которых
                                                // поле доступно, если оно не доступно
                                                // всем типам заданий
        12,                                     
        14                                      
    ],                                          
    "cluster": {                                // кластер
        "id": 64                                
    }                                           
}                                               

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

http 200

// 2.0+
{                                                  
    "id": 123,                                     // id нового поля
    "name": "Фактический адрес организации",       // название нового поля
    "translit": "Fakticheskiy_adres_organizatsi",  // транслитерация названия поля
    "format": "text",                              // формат данных поля, возможные значения:
                                                   // "int", "float", "bool", "geometry", "string",
                                                   // "text", "list", "date"
    "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,                               // видимость данного поля при отображении
                                                   // полной информации по заданию
    "is_for_all": false,                           // доступно ли данное поле для
                                                   // всех типов заданий (видов работ)
    "type_ids": [                                  // массив id типов заданий, для которых
                                                   // поле доступно, если оно не доступно
                                                   // всем типам заданий
        12,                                        
        14                                         
    ],                                             
    "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"
    "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,                                   // видимость данного поля при отображении
                                                        // полной информации по заданию
    "is_for_all": false,                                // доступно ли данное поле для
                                                        // всех типов заданий (видов работ)
    "type_ids": [                                       // массив id типов заданий, для которых
                                                        // поле доступно, если оно не доступно
                                                        // всем типам заданий
        12,                                             
        14                                              
    ],                                                  
    "cluster": {                                        // кластер
        "id": 2184,                                     // id кластера
        "title": "Тестовый кластер"                     // название кластера
    },                                                  
    "order": 10                                         // номер данного поля для отображения
                                                        // в списке настраиваемых полей
}                                                       

PUT /rest/fields/:id

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

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

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

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

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

// 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,                               // обязательное ли поле
    "table_id": 1,                                      // id таблицы данных,
                                                        // доступно только для полей формата "dataTableObjects"
    "multiselect": true,                                // разрешение на прикрепление нескольких объектов,
                                                        // доступно только для полей формата "dataTableObjects"
    "allow_add_num": true,                              // разрешение на изменение числа, прикреплённого к объекту
                                                        // доступно только для полей формата "dataTableObjects"
    "default_value": "РТ, г.Казань",                    // значение по умолчанию, доступно для
                                                        // всех форматов полей, за исключением
                                                        // форматов "geometry" и "dataTableObjects",
                                                        // значение задается с соответствии с форматом поля
                                                        // (текст, число, дата, булево значение)
    "visible": false                                    // видимость данного поля при отображении
                                                        // полной информации по заданию
    "types": [                                          // массив id типов заданий, для которых
                                                        // поле доступно, если оно не доступно
                                                        // всем типам заданий
        12,                                             
        14                                              
    ]                                                   
}                                                       

При возникновении одной из следующих ситуаций клиенту возвращается статус 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"
    "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,                                   // видимость данного поля при отображении
                                                        // полной информации по заданию
    "is_for_all": false,                                // доступно ли данное поле для
                                                        // всех типов заданий (видов работ)
    "type_ids": [                                       // массив id типов заданий, для которых
                                                        // поле доступно, если оно не доступно
                                                        // всем типам заданий
        12,                                             
        14                                              
    ],                                                  
    "cluster": {                                        // кластер
        "id": 2184,                                     // id кластера
        "title": "Тестовый кластер"                     // название кластера
    },                                                  
    "order": 10                                         // номер данного поля для отображения
                                                        // в списке настраиваемых полей
}                                                       

DELETE /rest/fields/:id

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

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

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

/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

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

Создание стикера.

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

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

// 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

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

Изменение стикера.

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

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

// 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

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

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

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

Стикер будет откреплен ото всех файлов, к которым он был прикреплен.

/rest/schedules

GET /rest/schedules/list

Описание моделей и структур хранения данных

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

Расписания могут быть действующими (включенными) или выключенными. Если расписание выключено, задания создаваться не будут.

У расписания могут быть моменты времени, в которые оно запускается в течение дня - times. Время хранится в формате timestamp (дата не важна, во время всех операций из нее извлекается только время). Моменты времени могут быть включены и выключены; при выключении момента времени задания в это время создаваться не будут.

У расписания есть моменты запуска - launches. Момент запуска - это дата + одно из времён запуска расписания. Дата и время хранится явным образом.

К расписанию прикрепляются задания-шаблоны. В момент запуска на их основе создаются реальные задания. Задания-шаблоны - это обычные задания, у которых проставлена колонка is_template=true. Параметры "стадия", "этап", "срок выполнения" таких заданий игнорируются. У расписания есть поле "срок выполнения"; если это поле заполнено, то на его основе реальному создаваемому заданию назначается срок выполнения. Если не заполнено, то срок выполнения назначается на основе вида работ.

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

Запрос /list

Запрос за списком расписаний с учётом фильтров и прав доступа:

API не фиксирован и может изменяться в дальнейшем!

Параметры

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

http 200

// 2.0+
  {                                               
    "page": 1,                                    // текущая страница
    "total": 37,                                  // всего расписаний
    "limit": 25,                                  // количество на одной странице
    "items": [                                    // список расписаний
        {                                         
            "id": 1002,                           
            "title": "Расписание на май 2018",    // название расписания
            "worktime": 7200,                     // дедлайн расписания
            "on": true                            // включено расписание или нет
            "user": {                             // информация о пользователе, который создал расписание
                "id": 6,                          
                "fio": "Захаров Андрей Петрович"  
            },                                    
            "archive": false,                     // является ли расписание архивным
            "organization": {                     // информация об организации расписания
                "id": 76,                         
                "name": "Тестовая организация"    
            },                                    
            "cluster": {                          // кластер расписания
                "id": 62286,                      // id кластера
                "title": "Тестовый кластер"       // название кластера
            },                                    //
                                                  //
            "total_template_count": 85,           // общее количество шаблонов
                                                  //
            "times": [                            // массив моментов времени, прикрепленных к расписанию
                {                                 
                    "id": 10012,                  
                    "time": 1514829600,           // время в формате unix timestamp
                    "on": true                    // включен момент времени или нет
                },                                
                {                                 
                    "id": 10011,                  
                    "time": 1514808000,           
                    "on": true                    
                }                                 
            ],                                    //
                                                  //
            "dates": [                            // массив дат запусков расписания
                                                  // (при наличии from и till)
                1609448400,                       
                1609534800                        
            ]                                     
        }                                         
    ]                                             
}                                                 

GET /rest/schedules/list/archive

Запрос за списком архивных расписаний с учётом фильтров и прав доступа:

Параметры

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

http 200

// 2.0+
  {                                               
    "page": 1,                                    // текущая страница
    "total": 37,                                  // всего расписаний
    "limit": 25,                                  // количество на одной странице
    "items": [                                    // список расписаний
        {                                         
            "id": 1002,                           
            "title": "Расписание на май 2018",    // название расписания
            "worktime": 7200,                     // дедлайн расписания
            "on": true                            // включено расписание или нет
            "user": {                             // информация о пользователе, который создал расписание
                "id": 6,                          
                "fio": "Захаров Андрей Петрович"  
            },                                    
            "archive": true,                      // является ли расписание архивным
            "organization": {                     // информация об организации расписания
                "id": 76,                         
                "name": "Тестовая организация"    
            },                                    
            "cluster": {                          // кластер расписания
                "id": 62286,                      // id кластера
                "title": "Тестовый кластер"       // название кластера
            },                                    //
                                                  //
            "total_template_count": 85,           // общее количество шаблонов
                                                  //
            "times": [                            // массив моментов времени, прикрепленных к расписанию
                {                                 
                    "id": 10012,                  
                    "time": 1514829600,           // время в формате unix timestamp
                    "on": true                    // включен момент времени или нет
                },                                
                {                                 
                    "id": 10011,                  
                    "time": 1514808000,           
                    "on": true                    
                }                                 
            ],                                    //
                                                  //
            "dates": [                            // массив дат запусков расписания
                                                  // (при наличии from и till)
                1609448400,                       
                1609534800                        
            ]                                     
        }                                         
    ]                                             
}                                                 

POST /rest/schedules

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

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

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

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

{                                  
    "title": "Расписание на май",  // * название расписания
    "organization": {              // организация расписания
        "id": 134                  
    },                             
    "cluster": {                   // кластер расписания
        "id": 135                  
    },                             
    "worktime": 3600,              // срок выполнения (в секундах) для заданий,
                                   // которые будут созданы по этому расписанию;
                                   // если не задан, в момент создания задания
                                   // берётся из вида работ шаблонного задания
                                   //
    "on": true,                    // включено расписание или нет
                                   //
                                   //
    "templates": [                 // id заданий-шаблонов, по которым составляется расписание;
        {                          
            "id": 1279826          
        },                         
        ...                        
    ],                             //
                                   //
    "dates": [                     // массив дней для расписания;
        1526342400,                // время может быть любое, оно будет отброшено
        ...                        
    }                              //
                                   //
    "times": [                     // моменты времени для расписания
        {                          
            "time": 1514829600,    // для новых моментов времени нужно передать время запуска в формате timestamp;
                                   // (дата может быть любая, она будет отброшена)
            "on": true             
        },                         
        ...                        
    ]                              
}                                  

http 200

// 2.0+
  {                                       
    "id": 1002,                           // id расписания
    "title": "Расписание на май",         // название расписания
    "worktime": 3600,                     // срок выполнения создаваемых заданий
    "on": true,                           // включено расписание или нет
    "user": {                             // информация о пользователе, который создал расписание
        "id": 6,                          
        "fio": "Захаров Андрей Петрович"  
    },                                    
    "archive": false,                     // является ли расписание архивным
    "organization": {                     // организация
        "id": 134,                        
        "name": "Отдел разработки"        
    }                                     
    "cluster": {                          // кластер расписания
        "id": 62286,                      // id кластера
        "title": "Тестовый кластер"       // название кластера
    },                                    //
                                          //
    "total_template_count": 85,           // общее количество шаблонов
                                          //
    "times": [                            // массив моментов времени, прикрепленных к расписанию
        {                                 
            "id": 10012,                  
            "time": 1514829600,           // время в формате unix timestamp
            "on": true                    // включен момент времени или нет
        },                                
        ...                               
    ],                                    
}                                         

PATCH /rest/schedules/:id

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

Изменение расписания.

Можно изменить поля title, worktime, on, добавить/удалить дни расписания в объекте days, добавить/включить/выключить моменты времени в массиве times, добавить/удалить шаблоны.

На основании массивов days и times формируется список запусков launches для данного расписания. При удалении дней будут удалены соответствующие запуски, если по ним еще не были созданы задания.

{                                       
    "title": "Расписание на май 2018",  // название расписания
    "worktime": 7200,                   // дедлайн (в секундах) для заданий по этому расписанию
    "on": true,                         // включено расписание или нет
                                        //
    "templates": {                      // id заданий-шаблонов, по которым составляется расписание
        "add": [                        
            {                           
                "id": 1279826           
            },                          
            ...                         
        ],                              
        "remove": [                     
            {                           
                "id": 999123            
            },                          
            ...                         
        ],                              
    },                                  //
                                        //
    "dates": {                          // объект дней для расписания в формате Unix Timestamp;
                                        // время может быть любое, оно будет отброшено
        "add": [                        
            1526342400,                 
            1526083200                  
        ],                              
        "remove": [                     
            1526774400                  
        ]                               
    }                                   //
                                        //
    "times": [                          // моменты времени для расписания
                                        // в формате Unix Timestamp
        {                               
            "id": 10012,                // id момента времени (только при включении/выключении времени)
            "on": true                  // включен момент времени или нет
        },                              
        {                               
            "time": 1514829600,         // для новых моментов времени нужно передать время запуска в формате Unix Timestamp;
                                        // (дата может быть любая, она будет отброшена)
            "on": true                  
        }                               
    ]                                   
}                                       

http 200

// 2.0+
  {                                       
    "id": 1002,                           
    "title": "Расписание на май 2018",    // название расписания
    "worktime": 7200,                     // дедлайн расписания
    "on": true                            // включено расписание или нет
    "user": {                             // информация о пользователе, который создал расписание
        "id": 6,                          
        "fio": "Захаров Андрей Петрович"  
    },                                    
    "archive": false,                     // является ли расписание архивным
    "organization": {                     // организация
        "id": 134,                        
        "name": "Отдел разработки"        
    },                                    
    "cluster": {                          // кластер расписания
        "id": 62286,                      // id кластера
        "title": "Тестовый кластер"       // название кластера
    },                                    //
                                          //
    "total_template_count": 85,           // общее количество шаблонов
                                          //
    "times": [                            // массив моментов времени, прикрепленных к расписанию
        {                                 
            "id": 10012,                  
            "time": 1514829600,           // время в формате unix timestamp
            "on": true                    // включен момент времени или нет
        },                                
        {                                 
            "id": 10011,                  
            "time": 1514808000,           
            "on": true                    
        }                                 
    ]                                     
}                                         

DELETE /rest/schedules/:id

Удаление расписания.

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

GET /rest/schedules/stats

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

Параметры

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

http 200

2.0+
{                                       
    "stats": [                          
        {                               
            "date": 1518696000,         // дата в формате Unix Timestamp
            "on": 9,                    // включенные задания (planned + created + fail + missed + остальное)
            "off": 2,                   // выключенные задания
            "created": 5,               // созданные задания
            "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 - в работе
            "planned": 1,               // запланированные задания
            "fail": 2,                  // не создано из-за ошибок
            "missed": 0                 // создание просрочено (более 15 мин назад)
        },                              
        {                               
            "date": 1518739200,         
            "on": 9,                    
            "off": 2,                   
            "created": 5,               
            "done_expired": 0,          
            "done_not_expired": 0,      
            "rejected_expired": 0,      
            "rejected_not_expired": 0,  
            "working_expired": 3,       
            "working_not_expired": 2,   
            "planned": 0,               
            "fail": 1,                  
            "missed": 2                 
        }                               
    ]                                   
}                                       

GET /rest/schedules/runs

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

API не фиксирован и может изменяться в дальнейшем!

Параметры

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

http 200

2.0+
{                                                     
    "items": [                                        
        {                                             
            "time": {                                 // time запуска
                "id": 115241,                         
                "time": 1546311600,                   
                "on": true                            
            },                                        
            "schedule": {                             // ссылка на родительское расписание
                "id": 1002,                           
                "title": "Расписание на май 2018",    // название расписания
                "worktime": 7200,                     // дедлайн расписания
                "archive": false,                     // является ли расписание архивным
                "on": true                            // включено расписание или нет
                "user": {                             // информация о пользователе, который создал расписание
                    "id": 6,                          
                    "fio": "Захаров Андрей Петрович"  
                },                                    
                "organization": {                     // информация об организации расписания
                    "id": 76,                         
                    "name": "Тестовая организация"    
                },                                    
                "cluster": {                          // кластер расписания
                    "id": 62286,                      // id кластера
                    "title": "Тестовый кластер"       // название кластера
                },                                    //
                                                      //
                "total_template_count": 85,           // общее количество шаблонов
                                                      //
                "times": [                            // массив моментов времени, прикрепленных к расписанию
                    {                                 
                        "id": 10012,                  
                        "time": 1514829600,           // время в формате unix timestamp
                        "on": true                    // включен момент времени или нет
                    },                                
                    {                                 
                        "id": 10011,                  
                        "time": 1514808000,           
                        "on": true                    
                    }                                 
                ]                                     
            },                                        
            "datetime": 1579489200,                   // дата и время
            "on": true,                               // признак включенного запуска
            "stats": {                                // статистика
                "off": 0,                             // выключенные задания
                "fail": 0,                            // не создано из-за ошибок
                "missed": 0,                          // создание просрочено (более 15 мин назад)
                "planned": 0,                         // запланированные задания
                "created": 163,                       // созданные задания
                "done_expired": 55,                   // просроченные задания, находящиеся в стадии 2 - завершено
                "done_not_expired": 88,               // непросроченные задания, находящиеся в стадии 2 - завершено
                "rejected_expired": 0,                // просроченные задания, находящиеся в стадии 0 - отклонено
                "rejected_not_expired": 0,            // непросроченные задания, находящиеся в стадии 0 - отклонено
                "working_expired": 20,                // просроченные задания, находящиеся в стадии 1 - в работе
                "working_not_expired": 0,             // непросроченные задания, находящиеся в стадии 1 - в работе
                "on": 163                             // включенные задания (planned + created + fail + missed + прочие)
            }                                         
        },                                            
        ...                                           
    ]                                                 
}                                                     

GET /rest/schedules/tasks

Получение списка заданий по расписанию (созданных, запланированных, пропущенных и выключенных) за нужный период.

API не фиксирован и может изменяться в дальнейшем!

Параметры

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

http 200

2.0+
 {                                                              
    "items": [                                                  //
        {                                                       // успешно созданное задание по расписанию
            "run": {                                            // ссылка на родительский запуск
                "datetime": 1514829600,                         // дата и время запуска
                "on": true,                                     // признак включенного запуска
                "time": {                                       // time запуска
                    "id": 10010,                                
                    "time": 1514829600,                         
                    "on": true                                  
                },                                              
                "schedule": {                                   // ссылка на родительское расписание
                    "id": 972,                                  
                    "title": "Заголовок расписания",            
                    "worktime": 3600,                           // срок выполнения заданий в секундах
                    "on": true,                                 // признак включённого расписания
                    "user": {                                   // пользователь-создатель
                        "id": 6,                                
                        "fio": "Захаров Андрей Петрович"        
                    },                                          
                    "archive": false,                           // является ли расписание архивным
                    "organization": {                           // информация об организации расписания
                        "id": 76,                               
                        "name": "Тестовая организация"          
                    },                                          
                    "cluster": {                                // кластер расписания
                        "id": 62286,                            // id кластера
                        "title": "Тестовый кластер"             // название кластера
                    },                                          
                    "total_template_count": 85                  // общее количество шаблонов
                }                                               
            },                                                  
            "task": {                                           // созданное задание
                "id": 198,                                      
                "title": "Задание по расписанию",               
                "date": 1514829600,                             // дата задания
                "deadline": 1514833200,                         // срок выполнения
                "expired_date": 1514833200,                     // когда задание было просрочено
                "stage": 1,                                     // стадия
                "num_main_photo": 1,                            // номер главного фото
                "type": {                                       // вид работ
                    "id": 139,                                  
                    "name": "Разукомплектованный автомобиль",   
                    "icon": "icon_139.png"                      
                },                                              
                "priority": {                                   // приоритет
                    "id": 1,                                    
                    "name": "Плановые"                          
                },                                              
                "organization": {                               // организация-владелец
                    "id": 98,                                   
                    "name": "Тестовая организация"              
                },                                              
                "assigned_organization": {                      // назначенная организация
                    "id": 99,                                   
                    "name": "Название назначенной организации"  
                },                                              
                "assigned_user": {                              // исполнитель
                    "id": 599,                                  
                    "fio": "Сникерсов Марс Твиксович"           
                },                                              
                "status": {                                     // этап
                    "name": "новое",                            
                    "color": "0000ff"                           
                },                                              
                "update_date": 1514829600,                      // дата последнего изменения
                "deleted": null                                 // признак удалённого задания = deleted != null
            },                                                  //
                                                                //
            "template": {                                       // шаблон-основа для задания
                "id": 32,                                       
                "title": "Задание по расписанию",               
                "num_main_photo": 1,                            // номер главного фото
                "type": {                                       // вид работ
                    "id": 139,                                  
                    "name": "Разукомплектованный автомобиль",   
                    "icon": "icon_139.png"                      
                },                                              
                "priority": {                                   // приоритет
                    "id": 1,                                    
                    "name": "Плановые"                          
                },                                              
                "organization": {                               // организация-владелец
                    "id": 98,                                   
                    "name": "Тестовая организация"              
                },                                              
                "assigned_organization": {                      // назначенная организация
                    "id": 99,                                   
                    "name": "Название назначенной организации"  
                },                                              
                "assigned_user": {                              // исполнитель
                    "id": 599,                                  
                    "fio": "Сникерсов Марс Твиксович"           
                }                                               
            },                                                  
            "template_deleted": false                           // признак того, что шаблон
                                                                // в настоящее время удалён
                                                                //
                                                                //
            "fail": null                                        // поле сообщения об ошибке пусто
        },                                                      
        {                                                       // запланированное или просроченное задание
            "launch": {...},                                    
            "task": null,                                       
            "template": {...},                                  // задание-шаблон
            "template_deleted": false                           // признак того, что шаблон
                                                                // в настоящее время удалён
            "fail": null                                        // поле сообщения об ошибке пусто
        },                                                      
        {                                                       // при создании задания произошла ошибка
            "launch": {...},                                    
            "task": null,                                       
            "template": {...},                                  // задание-шаблон
            "template_deleted": false                           // признак того, что шаблон
                                                                // в настоящее время удалён
            "fail": "Текст ошибки"                              
        },                                                      
        ...                                                     
    ],                                                          //
                                                                //
    "total": 117                                                // общее количество заданий,
                                                                // удовлетворяющих фильтрам
}                                                               

GET /rest/schedules/:id

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

Главный администратор, главный инспектор, администратор кластера (если расписание относится к его кластеру), инспектор кластера (если расписание относится к его кластеру), администратор организации (если расписание относится к его организации), инспектор организации (если расписание относится к его организации), любой авторизованный пользователь, у которого есть права на "show" хотя бы одного шаблона, даже удаленного из расписания.

API не фиксирован и может изменяться в дальнейшем!

http 200

{                                         
    "id": 1002,                           
    "title": "Расписание на май 2018",    // название расписания
    "worktime": 7200,                     // дедлайн расписания
    "on": true                            // включено расписание или нет
    "user": {                             // информация о пользователе, который создал расписание
        "id": 6,                          
        "fio": "Захаров Андрей Петрович"  
    },                                    
    "archive": false,                     // является ли расписание архивным
    "organization": {                     // информация об организации расписания
        "id": 76,                         
        "name": "Тестовая организация"    
    },                                    
    "cluster": {                          // кластер расписания
        "id": 62286,                      // id кластера
        "title": "Тестовый кластер"       // название кластера
    },                                    //
                                          //
    "total_template_count": 85,           // общее количество шаблонов
                                          //
    "times": [                            // массив моментов времени, прикрепленных к расписанию
        {                                 
            "id": 10012,                  
            "time": 1514829600,           // время в формате unix timestamp
            "on": true                    // включен момент времени или нет
        },                                
        {                                 
            "id": 10011,                  
            "time": 1514808000,           
            "on": true                    
        }                                 
    ]                                     
}                                         

GET /rest/schedules/:id/dates

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

Главный администратор, главный инспектор, администратор кластера (если расписание относится к его кластеру), инспектор кластера (если расписание относится к его кластеру), администратор организации (если расписание относится к его организации), инспектор организации (если расписание относится к его организации), любой авторизованный пользователь, у которого есть права на "show" хотя бы одного шаблона, даже удаленного из расписания.

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

http 200

// 2.0+
{                    
    "items": [       // массив дат (время сброшено в 0)
        1574456400,  
        1575406800,  
        1575666000,  
        1575752400,  
        1577826000,  
        1577912400,  
        1577998800,  
        1578085200   
    ],               
    "total": 8,      // общее количество дат
    "limit": 25,     // максимальное количество элементов на странице
    "page": 1        // текущая страница
}                    

GET /rest/schedules/:id/templates

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

Главный администратор, главный инспектор, администратор кластера (если расписание относится к его кластеру), инспектор кластера (если расписание относится к его кластеру), администратор организации (если расписание относится к его организации), инспектор организации (если расписание относится к его организации), любой авторизованный пользователь, у которого есть права на "show" хотя бы одного шаблона, даже удаленного из расписания.

Параметры

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

http 200

{                                                           
    "page": 1,                                              // текущая страница
    "total": 37,                                            // всего шаблонов доступно
    "limit": 25,                                            // количество на одной странице
    "items": [                                              // информация по заданиям-шаблонам,
                                                            // доступным текущему пользователю
        {                                                   
            "id": 32,                                       
            "title": "Задание по расписанию",               
            "num_main_photo": 1,                            // номер главного фото
            "type": {                                       // вид работ
                "id": 139,                                  
                "name": "Разукомплектованный автомобиль",   
                "icon": "icon_139.png"                      
            },                                              
            "priority": {                                   // приоритет
                "id": 1,                                    
                "name": "Плановые"                          
            },                                              
            "organization": {                               // организация-владелец
                "id": 98,                                   
                "name": "Тестовая организация"              
            },                                              
            "assigned_organization": {                      // назначенная организация
                "id": 99,                                   
                "name": "Название назначенной организации"  
            },                                              
            "assigned_user": {                              // исполнитель
                "id": 599,                                  
                "fio": "Сникерсов Марс Твиксович"           
            }                                               
        },                                                  
    ]                                                       
}                                                           

POST /rest/schedules/:id/archive

Главный администратор, администратор кластера (если расписание относится к его кластеру), администратор организации (если расписание относится к его организации).

Отправить расписание в архив.

http 200

{                                         
    "id": 1002,                           
    "title": "Расписание на май 2018",    // название расписания
    "worktime": 7200,                     // дедлайн расписания
    "on": true                            // включено расписание или нет
    "user": {                             // информация о пользователе, который создал расписание
        "id": 6,                          
        "fio": "Захаров Андрей Петрович"  
    },                                    
    "archive": true,                      // является ли расписание архивным
    "organization": {                     // информация об организации расписания
        "id": 76,                         
        "name": "Тестовая организация"    
    },                                    
    "cluster": {                          // кластер расписания
        "id": 62286,                      // id кластера
        "title": "Тестовый кластер"       // название кластера
    },                                    //
                                          //
    "total_template_count": 85            // общее количество шаблонов
                                          //
}                                         

DELETE /rest/schedules/:id/archive

Главный администратор, администратор кластера (если расписание относится к его кластеру), администратор организации (если расписание относится к его организации).

Убрать расписание из архива.

http 200

{                                         
    "id": 1002,                           
    "title": "Расписание на май 2018",    // название расписания
    "worktime": 7200,                     // дедлайн расписания
    "on": true                            // включено расписание или нет
    "user": {                             // информация о пользователе, который создал расписание
        "id": 6,                          
        "fio": "Захаров Андрей Петрович"  
    },                                    
    "archive": false,                     // является ли расписание архивным
    "organization": {                     // информация об организации расписания
        "id": 76,                         
        "name": "Тестовая организация"    
    },                                    
    "cluster": {                          // кластер расписания
        "id": 62286,                      // id кластера
        "title": "Тестовый кластер"       // название кластера
    },                                    //
                                          //
    "total_template_count": 85            // общее количество шаблонов
                                          //
}                                         

POST /rest/schedules/:id/restart/:yyyy/:mm/:dd/:hh/:mi

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

Перезапустить запуск.

/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: привязка к приоритетам
                                                                 // (разрешено несколько значений; ни одного значения означает любое значения)
                {                                                
                    "id": 167,                                   
                    "name": "Дополнительные"                     
                }                                                
            ],                                                   
            "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

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

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

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

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

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

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

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

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

// 2.0+
{                                     
    "script": "return noop()",        // * скрипт
    "title": "test 1",                // * название скрипта
    "entity_type": "TASK",            // * модель, над которой совершается операция. Возможные значения - TASK, USER, COMMENT
    "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: привязка к приоритетам
                                      // (разрешено несколько значений; ни одного значения означает любое значения)
        {                             
            "id": 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: привязка к приоритетам
                                                         // (разрешено несколько значений; ни одного значения означает любое значения)
        {                                                
            "id": 167,                                   
            "name": "Дополнительные"                     
        }                                                
    ],                                                   
    "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

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

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

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

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

// 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: привязка к приоритетам
                                      // (разрешено несколько значений; ни одного значения означает любое значения)
        {                             
            "id": 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, 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: привязка к приоритетам
                                                         // (разрешено несколько значений; ни одного значения означает любое значения)
        {                                                
            "id": 167,                                   
            "name": "Дополнительные"                     
        }                                                
    ],                                                   
    "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

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

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

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

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

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

Получить информацию о сервере вебхука.

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

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

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

Добавление нового сервера для вебхука.

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

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

// 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

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

Изменение информации о сервере вебхука.

Администратор кластера может редактировать только локальный сервер своего кластера.

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

// 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

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

Удаление сервера вебхука.

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

/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

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

Список маппингов.

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

Сортировка осуществляется по полю 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                                          // текущая страница
}                                                      

GET /rest/service-objects/mappings/layer/:id

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

Получить информацию о маппинге по id его слоя.

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

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"                          
            ]                                  
        }                                      
    ]                                          
}                                              

POST /rest/service-objects/mappings

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

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

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

// 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"                          
            ]                                  
        }                                      
    ]                                          
}                                              

PUT /rest/service-objects/mappings/layer/:id

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

Запрос на редактирование маппинга (по id его слоя) из атрибутов слоя объектов обслуживания в поля задания. Работает по принципу полной замены.

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

// 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"                          
            ]                                  
        }                                      
    ]                                          
}                                              

DELETE /rest/service-objects/mappings/layer/:id

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

Запрос на удаление маппинга (по id его слоя) из атрибутов слоя объектов обслуживания в поля задания.

Администратору кластера разрешено удалять маппинг, если ему разрешено редактировать слой маппинга.

/rest/contracts

GET /rest/contracts/list

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

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

Администраторам и инспекторам кластера доступны контракты их кластера.

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

Остальные пользователи получают в ответе пустой список.

Параметры

Знаком + помечены поля, для которых можно указывать список значений, разделённых запятой. Например, 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,                                         // дата окончания действия контракта
            "grant_task_creation": false,                                      // права исполнителя на создание задания по контракту
            "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

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

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

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

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,                                         // дата окончания действия контракта
    "grant_task_creation": false,                                      // права исполнителя на создание задания по контракту
    "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

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

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

Администратор кластера может создавать контракты только в своем кластере.

// 2.0+
{                                                                      
    "title": "Контракт на поставку оборудования",                      // * название контракта
    "description": "Контракт на поставку оборудования от 12.02.2022",  // описание контракта
    "no": "N1",                                                        // номер контракта
    "assigned_organization": {                                         // * информация об организации-исполнителе контракта
        "id": 39707                                                    // * id организации
    },                                                                 
    "customer": {                                                      // * информация об организации-заказчике
        "id": 6                                                        // * id организации
    },                                                                 
    "start_date": 1646145299,                                          // дата начала действия контракта
    "finish_date": 1648737299,                                         // дата окончания действия контракта
    "grant_task_creation": true,                                       // права исполнителя на создание задания по контракту, по умолчанию false
    "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,                                         // дата окончания действия контракта
    "grant_task_creation": false,                                      // права исполнителя на создание задания по контракту
    "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

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

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

Администратор кластера может редактировать контракты только в своем кластере.

// 2.0+
{                                                                      
    "title": "Контракт на поставку оборудования",                      // название контракта
    "description": "Контракт на поставку оборудования от 12.02.2022",  // описание контракта
    "no": "N1",                                                        // номер контракта
    "assigned_organization": {                                         // информация об организации-исполнителе контракта
        "id": 39707                                                    // * id организации
    },                                                                 
    "customer": {                                                      // информация об организации-заказчике
        "id": 6                                                        // id организации
    },                                                                 
    "start_date": 1646145299,                                          // дата начала действия контракта
    "finish_date": 1648737299,                                         // дата окончания действия контракта
    "grant_task_creation": true,                                       // права исполнителя на создание задания по контракту
    "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,                                         // дата окончания действия контракта
    "grant_task_creation": false,                                      // права исполнителя на создание задания по контракту
    "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

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

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

/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/

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
}