Запросы по задачам, статусам и категориям задач: /news, /status, /category, /newstype, /custom_field
/news
CRUD-операции с заданиями
[t] POST /news
Добавление задания.
// IN --->
{
"action": "put", //необходимо явно указать тип запроса "put" для соответствия с MapAdmin
"values": {
"news_date": "21.12.2015", //дата
"news_hour": "13", //часы
"news_minute": "05", //минуты
"title": "Название", //заголовок
"text": "Описание", //описание
"news_type_id": "1", //id типа задания
"category": "1", //id категории
"department_id": "3", //id организации-создателя, параметр необходим, если задание создает пользователь без организации (для пользователей с организаций автоматически проставляется id их организации)
"deadline": "2015-11-24 16:38:21", //дедлайн
"system_data": "версия: 1.1.1", //
"photo_main": "1", //порядковый номер фотографии, которая будет в заголовке.
//Если отправляется параметр photos, то это порядковый номер фотографии в нем, начиная с 0, иначе данный параметр можно не отсылать, либо отсылать = -1
"custom_fields":"{\"Dop_pole_dlya_testov\":{\"field_id\":19,\"value\":\"12345\"}}", //json объект, состоящий из списка дополнительных полей с их значениями
// в формате: "{\"название поля\": {\"field_id\": "id поля", \"value\": \"значение поля\"}}"
},
"point": [55.56,46.67], //координаты точки в формате [lon, lat]
"photos": ["dN2k9B9r42YbfDyz.jpg", "tAFEAB5Aftt8ybta.png"], //массив названий фотографий, после загрузки
"photos_name": ["1313410929241.jpg", "131341095.png"], //массив исходных названий фотографий
"photos_desc": ["Главное фото", "Второстепенное фото"], //массив описаний фотографий
"video": ["dN2k9B9r42YbreDyz.3gp", "dN2k9B9r42YrtDyz.3gp"], //массив названий видео файлов, после загрузки
"video_name": ["1313910929241.3gp", "131349095.3gp"], //массив исходных названий видео файлов
"video_desc": ["Первая запись", "Вторая запись"], //массив описаний видео файлов
"files": ["dN2k9B9r42YbfDtz.txt", "tAFEAB5Aftt8ybtr.txt"], //массив названий файлов, после загрузки
"files_name": ["1313410926241.txt", "131341096.txt"], //массив исходных названий файлов
"files_desc": ["Первая запись", "Вторая запись"], //массив описаний файлов
"sounds": ["dN2k9B9r42YbtDtz.m4a", "tAFEAB5Aftt9ybtr.m4a"], //массив названий звуковых файлов, после загрузки
"sounds_name": ["1313410926541.m4a", "131341099.m4a"], //массив исходных названий звуковых файлов
"sounds_desc": ["Первая запись", "Вторая запись"] //массив описаний звуковых файлов
}
// OUT <---
{
"res": 1,
"resText": "",
"newsId": 789249 //id созданного задания
}
[t*] POST /news/:id/update
Обновление задания.
// IN --->
{
"title": "Название", //заголовок
"text": "Описание", //описание
"assigned_status": "1", //статус: "1" - новый, "2" - назначено, "3" - обратная связь, "4" - выполнено
"assigned_organization_id": "3", //id назначенной организации
"assigned_user_id": "613", //id назначенной пользователя
"news_type_id": "1", //id типа задания
"confirmed": "1", //"1" - утверждено, "2" - не утверждено, "0" - новое
"category_id": "1", //id категории (приоритета)
"deadline": "2015-11-24 16:38:21", //дедлайн
"system_data": "версия: 1.1.1",
"restricted": "false", //ограничение доступа: "t", "f"
"archive": "false", //архивное задание: "t", "f"
"custom_fields":"{\"Dop_pole_dlya_testov\":{\"field_id\":19,\"value\":\"12345\"}}", //json объект, состоящий из списка дополнительных полей с их значениями
// в формате: "{\"название поля\": {\"field_id\": "id поля", \"value\": \"значение поля\"}}"
"point": [55.56,46.67], //координаты точки в формате [lon, lat]
"pointZoom": 14, //зум, на котором будет отображаться точка, можно отправить null, тогда будет взят зум по умолчанию
"update_comments": "Задание было назначено", //комментарии при обновлении
"updatecomment_visible_all": "f", //видимость всем: "t", "f"
"updatecomment_visible_user": "t", //видимость только автору задания: "t", "f"
"updatecomment_visible_assigned_to": "t", //видимость администраторам назначенного ведомства: "t", "f"
"updatecomment_visible_assigned_to_user": "t", //видимость назначенному пользователю: "t", "f"
"photos": [ //массив прикрепленных фотографий
{"file":"naaethsde56gh.jpg","fileName":"photo1.jpg"},
{"file":"sdbvr54456fc4.png","fileName":"photo2.png"}
],
"videos": [//массив прикрепленных видео файлов
{"file":"naaethsde56gh.3gp","fileName":"video1.3gp"},
{"file":"sdbvr54456fc4.3gp","fileName":"video2.3gp"}
],
"files": [//массив прикрепленных файлов
{"file":"naaethsde56gh.txt","fileName":"file1.txt"},
{"file":"sdbvr54456fc4.txt","fileName":"file2.txt"}
],
"sounds": [//массив прикрепленных аудио файлов
{"file":"naaethsde56gh.m4a","fileName":"sound1.m4a"},
{"file":"sdbvr54456fc4.m4a","fileName":"sound2.m4a"}
]
}
// OUT <---
{
"res": 1,
"resText": ""
}
*Права пользователей на выполнение данного запроса зависят от capability роли пользователя.
Понятие capability в терминологии MapAdmin обозначает действие, которое можно выполнять с заданием.
Права пользователей на выполнения данного запроса могут быть описаны следующим образом:
- для изменения значения поля confirmed роль пользователя должна иметь capability со свойствами: capability_id = 6, capability_name = «confirm»,
- для изменения значения поля assigned_organization_id роль пользователя должна иметь capability со свойствами: capability_id = 7, capability_name = «assign_department»,
- для изменения значения поля assigned_user_id роль пользователя должна иметь capability со свойствами: capability_id = 8, capability_name = «assign_user»,
- для изменения значения поля assigned_status роль пользователя должна иметь capability со свойствами: capability_id = 9, capability_name = «assign_status»,
- для изменения значения поля text роль пользователя должна иметь capability со свойствами: capability_id = 3, capability_name = «edit».
[t*] GET /news/:id
Получение данных по конкретному заданию.
// OUT <---
{
"res": 1,
"resText": "",
"news_data": {
"id": "789249", //id созданного задания
"user_id": "6", //id создателя задания
"user_fio": "Главный Администратор", //ФИО создателя
"title": "Название", //заголовок
"text": "Описание", //описание
"department_id": "3", //id организации создателя (для создателей без организации это значение указывается явно при создании задания)
"department_title": "Власть народу", //название назначенной организации
"department_logo": null, //логотип организации
"deadline": "2015-11-24 16:38:21", //дедлайн
"confirmed": "1", //"1" - утверждено, "2" - не утверждено, "0" - новое
"news_type_default_type": "t", //является ли тип задания типом по умолчанию: "t", "f"
"news_type_id": "1", //id типа задания
"news_type_name": "Аварии", //название типа задания
"news_type_icon": "2.png", //иконка типа задания
"news_type_logo": "2.png", //логотип типа задания
"news_type_news_type_id": "1", //id типа задания
"category_id": "1", //id категории (приоритета)
"category_name": "Плановые", //название категории (приоритета)
"status_name": "рассмотрение", //название статуса
"assigned_change_date": "2015-11-25 15:42:48.907", //дата назначения задания
"restricted": "f", //ограничение доступа: "t", "f"
"notice": "1", //служебное поле в MapAdmin, всегда равно "1"
"num_main_photo": null, //порядковый номер фотографии, которая будет в заголовке.
"archive": "f", //архивное задание: "t", "f"
"system_data": "версия: 1.1.1",
"update_date": "2015-11-25 15:42:49.529", //дата обновления задания
"custom_fields":"{\"Dop_pole_dlya_testov\":{\"field_id\":19,\"value\":\"12345\"}}", //json объект, состоящий из списка дополнительных полей с их значениями
// в формате: "{\"название поля\": {\"field_id\": "id поля", \"value\": \"значение поля\"}}"
"confirmed_comment": null, //комментарий для неутвержденных заданий
"assigned_department_name": "Власть народу", //название назначенной организации
"assigned_to_user": "613", //id назначенного пользователя
"assigned_user_fio": "Борисова Алина", //ФИО назначенного пользователя
"assigned_status": "1", //статус: "1" - новый, "2" - назначено, "3" - обратная связь, "4" - выполнено
"assigned_to": "3", //id назначенной организации
"lat": "46.67", //координаты точки - lat
"zoom": null, //зум, на котором будет отображаться точка, можно отправить null, тогда будет взят зум по умолчанию
"lon": "55.56", //координаты точки - lon
"news_date": "2015-12-21 13:05:00" //дата создания задания
}
}
*Права пользователей на выполнение данного запроса зависят от capability роли пользователя.
Понятие capability в терминологии MapAdmin обозначает действие, которое можно выполнять с заданием.
Для того, чтобы пользователь мог просмотреть задание, должно выполняться по крайней мере одно из двух условий:
- пользователь должен иметь роль h (руководитель),
- роль должна иметь capability со свойствами: capability_id = 1, capability_name = «show».
[t*] POST /news/:id
Логическое удаление задания.
// IN --->
{
"action": "delete" //необходимо явно указать тип запроса "delete" для соответствия с MapAdmin
}
// OUT <---
{
"res": 1,
"resText": ""
}
*Права пользователей на выполнение этого запроса зависят от capability роли пользователя.
Понятие capability в терминологии MapAdmin обозначает действие, которое можно выполнять с заданием.
Для того, чтобы пользователь мог удалить задание, его роль должна иметь capability со свойствами: capability_id = 2, capability_name = «delete».
[A] DELETE /news/:id/hard
Физическое удаление задания.
// OUT <---
{
"res": 1,
"resText": ""
}
/status
CRUD-операции со статусами заданий.
[AI] POST /status
Создать статус.
// IN --->
{
"name": "рассмотрение", //название статуса
"visible": "t", //видимость статуса пользователям в списке статусов: 't', 'f'
"default": "f", //является ли данный статус статусом по умолчанию: 't', 'f'
"isclosed": "f" //является ли данный статус статусом выполнено: 't', 'f'
}
// OUT <---
{ "res": "1",
"resText": "",
"status":
{
"id": "1", //id статуса
"name": "рассмотрение", //название статуса
"visible": "t", //видимость статуса пользователям в списке статусов: 't', 'f'
"default": "f", //является ли данный статус статусом по умолчанию: 't', 'f'
"isclosed": "f" //является ли данный статус статусом выполнено: 't', 'f'
}
}
[AI] PUT /status/:id
Изменить статус.
// IN --->
{
"name": "подробное рассмотрение", //название статуса
"visible": "f", //видимость статуса пользователям в списке статусов: 't', 'f'
"default": "f", //является ли данный статус статусом по умолчанию: 't', 'f'
"isclosed": "t" //является ли данный статус статусом выполнено: 't', 'f'
}
// OUT <---
{ "res": "1",
"resText": "",
"status":
{
"id": "1", //id статуса
"name": "подробное рассмотрение", //название статуса
"visible": "f", //видимость статуса пользователям в списке статусов: 't', 'f'
"default": "f", //является ли данный статус статусом по умолчанию: 't', 'f'
"isclosed": "t" //является ли данный статус статусом выполнено: 't', 'f'
}
}
[t] GET /status
Получение списка статусов заданий.
Параметры фильтрации для этапов (статусов)
- search — текстовый поиск этапов(статусов) по значениям параметров id, name;
- name — текстовый поиск этапов(статусов) по значению параметра name;
- default — при значении default=true или default=t отображаются статусы, которые являются статусами по умолчанию; возможные значения: true, false, t, f;
- visible — при значении visible=true или visible=t отображаются статусы, видимые пользователям в списке статусов; возможные значения: true, false, t, f;
- isClosed — при значении isClosed=true или isClosed=t отображаются статусы, относящиеся к выполненным; возможные значения: true, false, t, f;
- sortBy — поле, по которому ведется сортировка. По умолчанию — id;
- sortDirection — направление сортировки (ASC, DESC). По умолчанию — ASC.
//Примеры запросов:
/status
/status?visible=true
/status?search=проверка
/status?visible=true&default=false&isClosed=false
/status?visible=true&default=false&isClosed=false&sortBy=name&sortDirection=DESC
// OUT <---
{
"res": 1,
"resText": "",
"count": "10", //количество статусов, удовлетворяющих заданным условиям поиска и фильтрации
"status": [
{
"id": "1", //id статуса
"name": "рассмотрение", //название статуса
"visible": "t", //видимость статуса пользователям в списке статусов: 't', 'f'
"default": "t", //является ли данный статус статусом по умолчанию: 't', 'f'
"isclosed": "f" //является ли данный статус статусом выполнено: 't', 'f'
},
... // следующие элементы списка статусов
]
}
[AI] DELETE /status/:id
Удалить статус.
// OUT <---
{ "res": "1",
"resText": ""
}
/category
CRUD-операции с категориями (приоритетами) заданий.
[AI] POST /category
Создать категорию.
// IN --->
{
"name": "Плановые" //название категории
}
// OUT <---
{
"res": "1",
"resText": "",
"category": {
"id": "1", //id категории
"name": "Плановые", //название категории
"icon": "default_category.png", //название иконки
"order_important": "7" //степень значимости категории
}
}
Примечания:
- Поле «icon» будет заполнено автоматически, путем связывания стандартной иконки «default_category_icon.png», которая лежит в CEREBELLUM_HOME/conf/resources/files/default_category_icon.png.
- Поле «order_important» будет заполнено автоматически, путем вычисления следующего, наибольшего числового значения.
[AI] PUT /category/:id
Изменить категорию.
// IN --->
{
"name": "Внеплановые" //название категории
}
// OUT <---
{
"res": "1",
"resText": "",
"category": {
"id": "1", //id категории
"name": "Внеплановые", //название категории
"icon": "category_2.png", //название иконки
"order_important": "8" //степень значимости категории
}
}
[t] GET /category
Получение списка категорий (приоритетов) заданий.
Параметры фильтрации для категорий (приоритетов) заданий
- search — текстовый поиск приоритетов по значениям параметров id, name;
- name — текстовый поиск приоритетов по значению параметра name;
- sortBy — поле, по которому ведется сортировка. По умолчанию — order_important;
- sortDirection — направление сортировки (ASC, DESC). По умолчанию — ASC.
//Примеры запросов:
/category
/category?search=test
/category?search=test&sortBy=name&sortDirection=ASC
// OUT <---
{
"res": 1,
"resText": "",
"count": "10", //количество приоритетов (категорий) заданий, удовлетворяющих заданным условиям поиска и сортировки
"category": [
{
"id": "1", //id
"name": "Плановые", //название категории
"icon": "category_1.png", //название иконки
"order_important": "7" //степень значимости категории
},
... // следующие элементы списка категорий (приоритетов)
]
}
[AI] DELETE /category/:id
Удалить категорию.
// OUT <---
{
"res": "1",
"resText": ""
}
[AI] POST /category/:id/uploadicon
Загрузка и прикрепление иконки к категории.
// OUT <---
{
"res": 1,
"resText": "",
"category": {
"id": "450",
"name": "test",
"icon": "f2761b20-db3a-1004-86b0-68c8f55ace7c.png", //имя файла, преобразованное с помощью UUID-стандарта идентификации
"order_important": "14"
}
}
[AI] POST /category/sort
Сортировка категорий (по полю order_important).
// IN --->
{
"ids":[39,1,2,3] // список всех существующих id категорий
}
// OUT <---
{
"res": 1,
"resText": "",
"category": [{ //отсортированный список категорий
"id": "39",
"name": "test",
"icon": "f2761b20-db3a-1004-86b0-68c8f55ace7c.png",
"order_important": "4"
}, {
"id": "1",
"name": "Плановые",
"icon": "category_9_20140327111133.png",
"order_important": "1"
}, {
"id": "2",
"name": "Дополнительные",
"icon": "category_10_20140327111111.png",
"order_important": "2"
}, {
"id": "3",
"name": "Сверх норматива\t",
"icon": "category_12.png",
"order_important": "3"
}]
}
/news/:id
[t] POST /news/:id/comments
Добавление комментария к заданию.
// IN --->
{
"action": "post", //необходимо явно указать тип запроса "post" для соответствия с MapAdmin
"comment": "Комментарий" //текст комментария
}
// OUT <---
{
"res": 1,
"resText": ""
}
[t] POST /news/:id/comments/:referenceId
Добавление ответного комментария: id — id задания, referenceId — id существующего комментария.
// IN --->
{
"action": "post", //необходимо явно указать тип запроса "post" для соответствия с MapAdmin
"comment": "Комментарий" //текст комментария
}
// OUT <---
{
"res": 1,
"resText": ""
}
[t] GET /news/:id/comments
Список комментариев к заданию.
// OUT <---
{
"res": 1,
"resText": "",
"comments": [
{
"id": "9145", //id комментария
"reference_id": null, //id комментария, на который данный комментарий является ответом
"level": "0", //уровень комментария
"date": "2015-11-26 16:01:34.053", //дата создания комментария
"update_text": "Работы начаты", //текст обновления (для комментария об обновлении задания)
"comment": "", //текст комментария
"visible": "6", //служебное поле для обозначения видимости комментария
"type": "2", //тип комментария: "1" - обычный, "2" - системный
"fio": "Главный Администратор", //ФИО создателя комментария
"user_id": "6", //id создателя комментария
"news_id": "789237" //id задания
},
... //следующие элементы списка комментариев
]
}
[t] GET /news/:id/point
Координаты точки, привязанной к заданию.
// OUT <---
{
"res": 1,
"resText": "",
"point": [ //координаты точки
"55.7576077716846", //широта (latitude)
"37.6749150732857" //долгота (longitude)
]
}
[t] GET /news/:id/text
Текст задания.
// OUT <---
{
"res": 1,
"resText": "",
"text": "На спортивной площадке и на детской площадке нет освещения, поэтому дети не могут гулять там вечером, так как рано темнеет.
В темноте дети играют в футбол. Причем фонари сделаны, но не работают." //текст задания
}
[t] GET /news/:id/shortdata
Краткая информация по заданию.
// OUT <---
{
"res": 1,
"resText": "",
"news": {
"id": "824786", // id задания
"title": "14060143 Неисправность элементов освещения", //заголовок задания
"news_date": "2016-04-13 10:38:00", //дата задания в формате YYYY-MM-DD hh:mm:ss
"num_main_photo": null, //номер основной фотографии
"archive": "f", //находится ли задание в архиве - true или false
"system_data": "14060143 Неисправность элементов освещения", //системные данные по заданию
"photos": "2", //количество фотографий
"video": "1", //количество видеофайлов
"difvideo": "0", //количество видеофайлов
"sounds": "1", //количество аудиофайлов
"files": "1", //количество файлов
"shorttext": "На спортивной площадке и на детской площадке нет освещения, поэтому дети не могут гулять там вечером, так как рано темнеет.
В темноте дети играют в футбол. Причем фонари сделаны, но не ", // текст задания (первые 45 символов)
"point": "0", //точка, прикрепленная к заданию
"date": "13.04.2016 10:38" //дата задания в формате DD.MM.YYYY hh:mm
}
}
[g] GET /download/newsPhoto/:id
Получение главной фотографии задания (если она имеется) в виде файла.
В теле ответа отобразится главная фотография задания.
[t] GET /news/:id/photos
Получение списка фотографий заданий.
// OUT <---
{
"res": 1,
"resText": "",
"photos": [
{
"id": "6195", //id фотографии
"num": "1", //порядковый номер фотографии
"name": "photo_test.jpg", //исходное название фотографии
"description": "фото для задания", //описание фотографии
"extension": "jpg", //расширение файла фотографии
"file_name": "photo_1_789146_1.jpg", //название файла фотографии на сервере
"link": null //служебное поле, для фотографий всегда null
},
... //следующие элементы списка фотографий
]
}
[t] GET /news/:id/video
Получение списка видео файлов задания.
// OUT <---
{
"res": 1,
"resText": "",
"video": [
{
"id": "6196", //id видео файла
"num": "0", //порядковый номер видео файла
"name": "video_test.flv", //исходное название видео файла
"description": "видео для задания", //описание видео файла
"extension": "flv", //расширение видео файла
"file_name": "video_1.flv", //название видео файла на сервере
"link": "https://www.youtube.com/watch?v=W3OamroyHQQ" //ссылка, если видео файл находится не на сервере, или null
},
... //следующие элементы списка видео файлов
]
}
[t] GET /news/:id/difvideo
Получение списка видео файлов задания (форматов, отличных от *.flv).
// OUT <---
{
"res": 1,
"resText": "",
"difvideo": [
{
"id": "6197", //id видео файла
"num": "1", //порядковый номер видео файла
"name": "video_test.3gp", //исходное название видео файла
"description": "видео для задания", //описание видео файла
"extension": "3gp", //расширение видео файла
"file_name": "video_1.3gp", //название видео файла на сервере
"link": null //ссылка, если видео файл находится не на сервере, - для данного типа видео всегда null
},
... //следующие элементы списка видео файлов
],
"difvideo_converted": [""] //массив названий сконвертированных видео файлов
}
[t] GET /news/:id/files
Получение списка файлов задания.
// OUT <---
{
"res": 1,
"resText": "",
"files": [
{
"id": "6198", //id файла
"num": "1", //порядковый номер файла
"name": "test.txt", //исходное название файла
"description": "файл для задания", //описание файла
"extension": "txt", //расширение файла
"file_name": "test_1.txt", //название файла на сервере
"link": null //служебное поле, для файлов всегда null
},
... //следующие элементы списка файлов
]
}
[t] GET /news/:id/sounds
Получение списка аудио файлов задания.
// OUT <---
{
"res": 1,
"resText": "",
"sounds": [
{
"id": "6199", //id аудио файла
"num": "1", //порядковый номер аудио файла
"name": "test.mp3", //исходное название аудио файла
"description": "аудио файл для задания", //описание аудио файла
"extension": "mp3", //расширение аудио файла
"file_name": "test_1.mp3", //название видео аудио файла на сервере
"link": null //служебное поле, для аудио файлов всегда null
},
... //следующие элементы списка файлов
],
"sounds_converted": [""] //массив названий сконвертированных аудио файлов
}
[t*] POST /news/:id/photos/:fileId
Удаление фотографии задания, id — id задания, fileId — id фотографии.
// IN --->
{
"action": "delete" //необходимо явно указать тип запроса "delete" для соответствия с MapAdmin
}
// OUT <---
{
"res": 1,
"resText": ""
}
*Права пользователей на выполнение данного запроса зависят от capability роли пользователя.
Понятие capability в терминологии MapAdmin обозначает действие, которое можно выполнять с заданием.
Для того, чтобы пользователь мог выполнить данный запрос, его роль должна иметь capability со свойствами: capability_id = 5, capability_name = «edit_files».
[t*] POST /news/:id/video/:fileId
Удаление видео файла задания, id — id задания, fileId — id видео файла.
// IN --->
{
"action": "delete" //необходимо явно указать тип запроса "delete" для соответствия с MapAdmin
}
// OUT <---
{
"res": 1,
"resText": ""
}
*Права пользователей на выполнение данного запроса зависят от capability роли пользователя.
Понятие capability в терминологии MapAdmin обозначает действие, которое можно выполнять с заданием.
Для того, чтобы пользователь мог выполнить данный запрос, его роль должна иметь capability со свойствами: capability_id = 5, capability_name = «edit_files».
[t*] POST /news/:id/difvideo/:fileId
Удаление видео файла задания, id — id задания, fileId — id видео файла.
// IN --->
{
"action": "delete" //необходимо явно указать тип запроса "delete" для соответствия с MapAdmin
}
// OUT <---
{
"res": 1,
"resText": ""
}
*Права пользователей на выполнение данного запроса зависят от capability роли пользователя.
Понятие capability в терминологии MapAdmin обозначает действие, которое можно выполнять с заданием.
Для того, чтобы пользователь мог выполнить данный запрос, его роль должна иметь capability со свойствами: capability_id = 5, capability_name = «edit_files».
[t*] POST /news/:id/files/:fileId
Удаление файла задания, id — id задания, fileId — id файла.
// IN --->
{
"action": "delete" //необходимо явно указать тип запроса "delete" для соответствия с MapAdmin
}
// OUT <---
{
"res": 1,
"resText": ""
}
*Права пользователей на выполнение данного запроса зависят от capability роли пользователя.
Понятие capability в терминологии MapAdmin обозначает действие, которое можно выполнять с заданием.
Для того, чтобы пользователь мог выполнить данный запрос, его роль должна иметь capability со свойствами: capability_id = 5, capability_name = «edit_files».
[t*] POST /news/:id/sounds/:fileId
Удаление аудио файла задания, id — id задания, fileId — id файла.
// IN --->
{
"action": "delete" //необходимо явно указать тип запроса "delete" для соответствия с MapAdmin
}
// OUT <---
{
"res": 1,
"resText": ""
}
*Права пользователей на выполнение данного запроса зависят от capability роли пользователя.
Понятие capability в терминологии MapAdmin обозначает действие, которое можно выполнять с заданием.
Для того, чтобы пользователь мог выполнить данный запрос, его роль должна иметь capability со свойствами: capability_id = 5, capability_name = «edit_files».
/news
Операции со списком заданий
[t] GET /news/listAfterId/:newsId/:limit/{:confirmed}
newsId — id задания, после которой надо получить список заданий, по умолчанию 0,
limit — количество заданий в запросе, по умолчанию 1000,
confirmed — значение поля «confirmed»: «1» — утверждено, «2» — не утверждено, «0» — новое; необязательный параметр.
Параметры фильтрации для списка заданий
- confirmed — значение поля «confirmed»: «1» — утверждено, «2» — не утверждено, «0» — новое. Значение GET-параметра запроса (?confirmed или &confirmed) перекроет значение PATH-параметра «confirmed» (/:confirmed) для запроса GET /news/listAfterId/:newsId/:limit/{:confirmed}.
- withAssigned — при значении withAssigned=true в список добавляются не новые и не закрытые задания, назначенные пользователю, либо его ведомству (если он админ) задания
- withClosed — при значении withClosed=true в список добавляются задания со статусом выполнено, назначенные пользователю, либо его ведомству (если он админ)
- withArchive — при значении withArchive=true, в список добавляются задания, которые в архиве (по умолчанию берутся текущие)
- onlyMy — при значении onlyMy=true, в списке отображаются только задания, созданные пользователем. Параметры withAssigned, withClosed, onlyStatus при этом игнорируются
- onlyStatus — отображаются задания с соответствующими статусами. Id статусов передаются через запятую. Например, onlyStatus=2,3
- onlyStates — отображаются задания, которые находятся в соответствующих состояниях. Id статусов передаются через запятую. Например, onlyStates=6,11
- onlyAssigned — при значении onlyAssigned=true отображаются задания, которые не новые и не выполнены, но назначены.
- category_id — фильтр по категориям заданий. Id категорий передаются через запятую. Например, category_id=1,2
- type_id — фильтр по типам заданий. Id типов передаются через запятую. Например, type_id=3,4,5
- gtUpdateDate — отображаются задания, дата обновления которых больше указанной даты (дата указывается в Timestamp, например, gtUpdateDate=1440835402).
- ltUpdateDate — отображаются задания, дата обновления которых меньше указанной даты (дата указывается в Timestamp, например, ltUpdateDate=1440835402).
- gtCreateDate — отображаются задания, дата создания которых больше указанной даты (дата указывается в Timestamp, например, gtCreateDate=1440835402).
- ltCreateDate — отображаются задания, дата создания которых меньше указанной даты (дата указывается в Timestamp, например, ltCreateDate=1440835402).
- gtDeadline — отображаются задания, параметр deadline которых больше указанной даты (дата указывается в Timestamp, например, gtDeadline =1440835402).
- ltDeadline — отображаются задания, параметр deadline которых меньше указанной даты (дата указывается в Timestamp, например, ltDeadline =1440835402).
- assigned_organization_id — отображаются задания, которые назначены на указанные организации. Id организаций передаются через запятую. Например, assigned_organization_id=1,2,292
- assigned_user_id — отображаются задания, которые назначены на указанных пользователей. Id пользователей передаются через запятую. Например, assigned_user_id=616,618
- user_id — отображаются задания, созданные указанными пользователями. Id пользователей передаются через запятую. Например, user_id=616,618
- search — отображаются задания, удовлетворяющие текстовому поиску указанного значения по значениям параметров id, text, title. Например, search=7891
- customFields — отображаются задания, отфильтрованные по значениям кастомных полей. Например, customFields=[{«name»:»Dop_pole_dlya_testov»,»op»:»EQ»,»value»:»12345″},{«name»:»Telefon__int__88432000555__»,»op»:»NOT NULL»}].
Более подробно фильтрация по кастомным полям описана в разделе Фильтрация задач по custom-полям - expired — при значении expired=true отображаются непросроченные задания(значение параметра deadline меньше текущей даты и параметр confirmed=1), при значении expired=false отображаются просроченные задания(значение параметра deadline больше текущей даты или значение параметра confirmed отлично от 1)
- sortBy — поле, по которому осуществляется сортировка. По умолчанию — news_date.
- sortDirection — направление сортировки (ASC, DESC). По умолчанию — DESC.
//Примеры запросов:
/news/listAfterId/0/10/1?withAssigned=true&withArchive=true&onlyStatus=2,3&onlyStates=6,11&category_id=1,2
/news/listAfterId/0/10/1?gtUpdateDate=1440835402<UpdateDate=1443513802>CreateDate=1438157002<CreateDate=1443513802&expired=false
/news/listAfterId/0/10/2?assigned_organization_id=2,292&assigned_user_id=618,625&user_id=6&confirmed=1
/news/listAfterId/0/10/0?search=тест&customFields=[{"name":"Dop_pole_dlya_testov","op":"EQ","value":"12345"},{"name":"Telefon__int__88432000555__","op":"NOT NULL"}]
// OUT <---
{
"res": 1,
"resText": "",
"news_list": [
{
"id": "788576", //id задания
"user_id": "6", //id создателя
"user_fio": "Главный Администратор", //ФИО создателя
"title": "Заголовок", //заголовок
"text": "Текст", //Описание
"department_id": "1", //id организации создателя (для создателей без организации это значение указывается явно при создании задания)
"department_title": "Население", //название организации создателя
"department_logo": "logo_3.png", //логотип организации создателя
"deadline": null, //дедлайн
"confirmed": "1", //"1" - утверждено, "2" - не утверждено, "0" - новое
"news_type_default_type": "t", //является ли тип задания типом по умолчанию: "t", "f"
"news_type_id": "1", //id типа задания
"news_type_name": "Аварии", //название типа задания
"news_type_icon": "2.png", //иконка типа задания
"news_type_news_type_id": "1", //id типа задания
"category_id": "1", //id категории (приоритета)
"category_name": "Плановые", //название категории (приоритета)
"status_name": "рассмотрение", //название статуса
"assigned_change_date": "2015-07-08 10:34:15.32", //дата назначения задания
"restricted": "f", //ограничение доступа: "t", "f"
"notice": "1", //служебное поле в MapAdmin, всегда равно "1"
"num_main_photo": null, //порядковый номер фотографии, которая будет в заголовке.
"archive": "f", //архивное задания : "t", "f"
"system_data": "версия: 1.1.1",
"update_date": "2015-07-08 10:34:17.878", //дата обновления задания
"custom_fields":"{\"Dop_pole_dlya_testov\":{\"field_id\":19,\"value\":\"12345\"}}", //json объект, состоящий из списка дополнительных полей с их значениями
// в формате: "{\"название поля\": {\"field_id\": "id поля", \"value\": \"значение поля\"}}"
"assigned_to": null, //id назначенной организации
"lon": "55.56", //координаты точки - lon
"lat": "46.67", //координаты точки - lat
"zoom": null, //зум, на котором будет отображаться точка, можно отправить null, тогда будет взят зум по умолчанию
"assigned_department_name": null, //название назначенной организации
"assigned_status": "1", //статус: "1" - новый, "2" - назначено, "3" - обратная связь, "4" - выполнено
"assigned_to_user": null, //id назначенного пользователя
"assigned_user_fio": null, //ФИО назначенного пользователя
"news_date": "2012-05-21 13:41:00" //дата создания задания
},
... //следующие элементы списка заданий
]
}
[t] GET /news/list
Список всех заданий.
Параметры фильтрации для списка заданий
- confirmed — значение поля «confirmed»: «1» — утверждено, «2» — не утверждено, «0» — новое. Значение GET-параметра запроса (?confirmed или &confirmed) перекроет значение PATH-параметра «confirmed» (/:confirmed) для запроса GET /news/listAfterId/:newsId/:limit/{:confirmed}.
- withAssigned — при значении withAssigned=true в список добавляются не новые и не закрытые задания, назначенные пользователю, либо его ведомству (если он админ) задания
- withClosed — при значении withClosed=true в список добавляются задания со статусом выполнено, назначенные пользователю, либо его ведомству (если он админ)
- withArchive — при значении withArchive=true, в список добавляются задания, которые в архиве (по умолчанию берутся текущие)
- onlyMy — при значении onlyMy=true, в списке отображаются только задания, созданные пользователем. Параметры withAssigned, withClosed, onlyStatus при этом игнорируются
- onlyStatus — отображаются задания с соответствующими статусами. Id статусов передаются через запятую. Например, onlyStatus=2,3
- onlyStates — отображаются задания, которые находятся в соответствующих состояниях. Id статусов передаются через запятую. Например, onlyStates=6,11
- onlyAssigned — при значении onlyAssigned=true отображаются задания, которые не новые и не выполнены, но назначены.
- category_id — фильтр по категориям заданий. Id категорий передаются через запятую. Например, category_id=1,2
- type_id — фильтр по типам заданий. Id типов передаются через запятую. Например, type_id=3,4,5
- gtUpdateDate — отображаются задания, дата обновления которых больше указанной даты (дата указывается в Timestamp, например, gtUpdateDate=1440835402).
- ltUpdateDate — отображаются задания, дата обновления которых меньше указанной даты (дата указывается в Timestamp, например, ltUpdateDate=1440835402).
- gtCreateDate — отображаются задания, дата создания которых больше указанной даты (дата указывается в Timestamp, например, gtCreateDate=1440835402).
- ltCreateDate — отображаются задания, дата создания которых меньше указанной даты (дата указывается в Timestamp, например, ltCreateDate=1440835402).
- gtDeadline — отображаются задания, параметр deadline которых больше указанной даты (дата указывается в Timestamp, например, gtDeadline =1440835402).
- ltDeadline — отображаются задания, параметр deadline которых меньше указанной даты (дата указывается в Timestamp, например, ltDeadline =1440835402).
- assigned_organization_id — отображаются задания, которые назначены на указанные организации. Id организаций передаются через запятую. Например, assigned_organization_id=1,2,292
- assigned_user_id — отображаются задания, которые назначены на указанных пользователей. Id пользователей передаются через запятую. Например, assigned_user_id=616,618
- user_id — отображаются задания, созданные указанными пользователями. Id пользователей передаются через запятую. Например, user_id=616,618
- search — отображаются задания, удовлетворяющие текстовому поиску указанного значения по значениям параметров id, text, title. Например, search=7891
- customFields — отображаются задания, отфильтрованные по значениям кастомных полей. Например, customFields=[{«name»:»Dop_pole_dlya_testov»,»op»:»EQ»,»value»:»12345″},{«name»:»Telefon__int__88432000555__»,»op»:»NOT NULL»}].
Более подробно фильтрация по кастомным полям описана в разделе Фильтрация задач по custom-полям - expired — при значении expired=true отображаются непросроченные задания(значение параметра deadline меньше текущей даты и параметр confirmed=1), при значении expired=false отображаются просроченные задания(значение параметра deadline больше текущей даты или значение параметра confirmed отлично от 1)
- sortBy — поле, по которому осуществляется сортировка. По умолчанию — news_date.
- sortDirection — направление сортировки (ASC, DESC). По умолчанию — DESC.
//Примеры запросов:
/news/list?withAssigned=true&withArchive=true&onlyStatus=2,3&onlyStates=6,11&category_id=1,2
/news/list?gtUpdateDate=1440835402<UpdateDate=1443513802>CreateDate=1438157002<CreateDate=1443513802&expired=false
/news/list?assigned_organization_id=2,292&assigned_user_id=618,625&user_id=6&confirmed=1
/news/list?search=тест&customFields=[{"name":"Dop_pole_dlya_testov","op":"EQ","value":"12345"},{"name":"Telefon__int__88432000555__","op":"NOT NULL"}]
// OUT <---
{
"res": 1,
"resText": "",
"news_list": [
{
"id": "788576", //id задания
"user_id": "6", //id создателя
"user_fio": "Главный Администратор", //ФИО создателя
"title": "Заголовок", //заголовок
"text": "Текст", //Описание
"department_id": "1", //id организации создателя (для создателей без организации это значение указывается явно при создании задания )
"department_title": "Население", //название организации создателя
"department_logo": "logo_3.png", //логотип организации создателя
"deadline": null, //дедлайн
"confirmed": "1", //"1" - утверждено, "2" - не утверждено, "0" - новое
"news_type_default_type": "t", //является ли тип задания типом по умолчанию: "t", "f"
"news_type_id": "1", //id типа задания
"news_type_name": "Аварии", //название типа задания
"news_type_icon": "2.png", //иконка типа задания
"news_type_news_type_id": "1", //id типа задания
"category_id": "1", //id категории (приоритета)
"category_name": "Плановые", //название категории (приоритета)
"status_name": "рассмотрение", //название статуса
"assigned_change_date": "2015-07-08 10:34:15.32", //дата назначения задания
"restricted": "f", //ограничение доступа: "t", "f"
"notice": "1", //служебное поле в MapAdmin, всегда равно "1"
"num_main_photo": null, //порядковый номер фотографии, которая будет в заголовке.
"archive": "f", //архивное задания : "t", "f"
"system_data": "версия: 1.1.1",
"update_date": "2015-07-08 10:34:17.878", //дата обновления задания
"custom_fields":"{\"Dop_pole_dlya_testov\":{\"field_id\":19,\"value\":\"12345\"}}", //json объект, состоящий из списка дополнительных полей с их значениями
// в формате: "{\"название поля\": {\"field_id\": "id поля", \"value\": \"значение поля\"}}"
"assigned_to": null, //id назначенной организации
"lon": "55.56", //координаты точки - lon
"lat": "46.67", //координаты точки - lat
"zoom": null, //зум, на котором будет отображаться точка, можно отправить null, тогда будет взят зум по умолчанию
"assigned_department_name": null, //название назначенной организации
"assigned_status": "1", //статус: "1" - новый, "2" - назначено, "3" - обратная связь, "4" - выполнено
"assigned_to_user": null, //id назначенного пользователя
"assigned_user_fio": null, //ФИО назначенного пользователя
"news_date": "2012-05-21 13:41:00" //дата создания задания
},
... //следующие элементы списка заданий
]
}
[t] GET /news
Список всех заданий, доступных пользователю.
Для неавторизованных пользователей запрос не доступен.
Для пользователя организации «Население» (people_dep = true) в ответе отобразятся только созданные им задания.
Для пользователя организации, отличной от «Население» (people_dep = false), в ответе отобразятся все задания его организации.
Для пользователя без организации (например, главного администратора) в ответе отобразятся все задания всех организаций.
// OUT <---
{
"res": 1,
"resText": "",
"news": [
{
"id": "786847", //id задания
"title": "Ямы на дорогах", //заголовок
"text": "Ямы на дорогах в центре города на ул.Профсоюзная", //описание
"department_id": "1", //id организации создателя (для создателей без организации это значение указывается явно при создании задания)
"department_title": "Население", //название назначенной организации
"department_logo": "logo_3.png", //логотип организации
"news_date": "2015-05-06 17:51:00", //дата создания задания
"confirmed": "1", //"1" - утверждено, "2" - не утверждено, "0" - новое
"news_type_default_type": "t", //является ли тип задания типом по умолчанию: "t", "f"
"news_type_id": "1", //id типа задания
"news_type_name": "Аварии", //название типа задания
"news_type_icon": "1_icon_7.jpg", //иконка типа задания
"news_type_news_type_id": "1", //id типа задания
"category_id": "2", //id приоритета
"category_name": "Дополнительные", //название приоритета
"num_main_photo": null, //порядковый номер фотографии, которая будет в заголовке.
"archive": "f" //архивное задание: "t", "f"
},
... //следующие элементы списка заданий
]
}
Замечание. На поля department_title, news_type_default_type, news_type_news_type_id рассчитывать нельзя, они могут быть удалены из ответа.
[t] GET /news/deletions
Получение списка удаленных заданий.
Параметры фильтрации:
- ltDeleteDate — оставляет в ответе только те записи, для которых время удаления строго меньше значения параметра ltDeleteDate. Формат timestamp, например date_from=1448523760.
- gtDeleteDate — оставляет в ответе только те записи, для которых время удаления строго больше значения параметра gtDeleteDate. Формат timestamp, например date_from=1445845360.
//Пример запроса:
/news/deletions?ltDeleteDate=1448523760>DeleteDate=1445845360
// OUT <---
{
"res": 1,
"resText": "",
"deletions": [
{
"id": "1615", //id задания в таблице удаленных заданий
"issue_id": "789196", // id задания
"date": "2015-10-26 11:14:03.816", //время удаления задания
"user_id": "616" //id пользователя, удалившего задания
},
... //следующие элементы списка удаленных заданий
]
}
[t] GET /news/points
Быстрый запрос для получения списка заданий и точек.
Параметры фильтрации для списка заданий
- confirmed — значение поля «confirmed»: «1» — утверждено, «2» — не утверждено, «0» — новое. Значение GET-параметра запроса (?confirmed или &confirmed) перекроет значение PATH-параметра «confirmed» (/:confirmed) для запроса GET /news/listAfterId/:newsId/:limit/{:confirmed}.
- withAssigned — при значении withAssigned=true в список добавляются не новые и не закрытые задания, назначенные пользователю, либо его ведомству (если он админ) задания
- withClosed — при значении withClosed=true в список добавляются задания со статусом выполнено, назначенные пользователю, либо его ведомству (если он админ)
- withArchive — при значении withArchive=true, в список добавляются задания, которые в архиве (по умолчанию берутся текущие)
- onlyMy — при значении onlyMy=true, в списке отображаются только задания, созданные пользователем. Параметры withAssigned, withClosed, onlyStatus при этом игнорируются
- onlyStatus — отображаются задания с соответствующими статусами. Id статусов передаются через запятую. Например, onlyStatus=2,3
- onlyStates — отображаются задания, которые находятся в соответствующих состояниях. Id статусов передаются через запятую. Например, onlyStates=6,11
- onlyAssigned — при значении onlyAssigned=true отображаются задания, которые не новые и не выполнены, но назначены.
- category_id — фильтр по категориям заданий. Id категорий передаются через запятую. Например, category_id=1,2
- type_id — фильтр по типам заданий. Id типов передаются через запятую. Например, type_id=3,4,5
- gtUpdateDate — отображаются задания, дата обновления которых больше указанной даты (дата указывается в Timestamp, например, gtUpdateDate=1440835402).
- ltUpdateDate — отображаются задания, дата обновления которых меньше указанной даты (дата указывается в Timestamp, например, ltUpdateDate=1440835402).
- gtCreateDate — отображаются задания, дата создания которых больше указанной даты (дата указывается в Timestamp, например, gtCreateDate=1440835402).
- ltCreateDate — отображаются задания, дата создания которых меньше указанной даты (дата указывается в Timestamp, например, ltCreateDate=1440835402).
- gtDeadline — отображаются задания, параметр deadline которых больше указанной даты (дата указывается в Timestamp, например, gtDeadline =1440835402).
- ltDeadline — отображаются задания, параметр deadline которых меньше указанной даты (дата указывается в Timestamp, например, ltDeadline =1440835402).
- assigned_organization_id — отображаются задания, которые назначены на указанные организации. Id организаций передаются через запятую. Например, assigned_organization_id=1,2,292
- assigned_user_id — отображаются задания, которые назначены на указанных пользователей. Id пользователей передаются через запятую. Например, assigned_user_id=616,618
- user_id — отображаются задания, созданные указанными пользователями. Id пользователей передаются через запятую. Например, user_id=616,618
- search — отображаются задания, удовлетворяющие текстовому поиску указанного значения по значениям параметров id, text, title. Например, search=7891
- customFields — отображаются задания, отфильтрованные по значениям кастомных полей. Например, customFields=[{«name»:»Dop_pole_dlya_testov»,»op»:»EQ»,»value»:»12345″},{«name»:»Telefon__int__88432000555__»,»op»:»NOT NULL»}].
Более подробно фильтрация по кастомным полям описана в разделе Фильтрация задач по custom-полям - expired — при значении expired=true отображаются непросроченные задания(значение параметра deadline меньше текущей даты и параметр confirmed=1), при значении expired=false отображаются просроченные задания(значение параметра deadline больше текущей даты или значение параметра confirmed отлично от 1)
- sortBy — поле, по которому осуществляется сортировка. По умолчанию — news_date.
- sortDirection — направление сортировки (ASC, DESC). По умолчанию — DESC.
//Примеры запросов:
/news/points?limit=10&page=1&withAssigned=true&withArchive=true&onlyStatus=2,3&onlyStates=6,11&category_id=1,2
/news/points?limit=10&page=1>UpdateDate=1440835402<UpdateDate=1443513802>CreateDate=1438157002<CreateDate=1443513802&expired=false
/news/points?limit=10&page=1&assigned_organization_id=2,292&assigned_user_id=618,625&user_id=6&confirmed=1
/news/points?limit=10&page=1&search=тест&customFields=[{"name":"Dop_pole_dlya_testov","op":"EQ","value":"12345"},{"name":"Telefon__int__88432000555__","op":"NOT NULL"}]
// OUT <---
{
"res": 1,
"resText": "",
"news_list": [
{
"id": "789238", //id задания
"title": "тест", //текст задания
"lon": "49.1425763", //координаты точки - lat
"lat": "55.774754", //координаты точки - lon
"assigned_status": "1" //статус: "1" - новый, "2" - назначено, "3" - обратная связь, "4" - выполнено
},
... //следующие элементы списка
]
}
Более подробно о получении списка заданий и точек можно прочитать здесь:
Быстрый запрос для получения задач и точек /news/points
[t] GET /news/distribution
Статистика по количеству заданий в разрезе видов работ, приоритетов, статусов.
Параметры фильтрации для списка заданий
- confirmed — значение поля «confirmed»: «1» — утверждено, «2» — не утверждено, «0» — новое. Значение GET-параметра запроса (?confirmed или &confirmed) перекроет значение PATH-параметра «confirmed» (/:confirmed) для запроса GET /news/listAfterId/:newsId/:limit/{:confirmed}.
- withAssigned — при значении withAssigned=true в список добавляются не новые и не закрытые задания, назначенные пользователю, либо его ведомству (если он админ) задания
- withClosed — при значении withClosed=true в список добавляются задания со статусом выполнено, назначенные пользователю, либо его ведомству (если он админ)
- withArchive — при значении withArchive=true, в список добавляются задания, которые в архиве (по умолчанию берутся текущие)
- onlyMy — при значении onlyMy=true, в списке отображаются только задания, созданные пользователем. Параметры withAssigned, withClosed, onlyStatus при этом игнорируются
- onlyStatus — отображаются задания с соответствующими статусами. Id статусов передаются через запятую. Например, onlyStatus=2,3
- onlyStates — отображаются задания, которые находятся в соответствующих состояниях. Id статусов передаются через запятую. Например, onlyStates=6,11
- onlyAssigned — при значении onlyAssigned=true отображаются задания, которые не новые и не выполнены, но назначены.
- category_id — фильтр по категориям заданий. Id категорий передаются через запятую. Например, category_id=1,2
- type_id — фильтр по типам заданий. Id типов передаются через запятую. Например, type_id=3,4,5
- gtUpdateDate — отображаются задания, дата обновления которых больше указанной даты (дата указывается в Timestamp, например, gtUpdateDate=1440835402).
- ltUpdateDate — отображаются задания, дата обновления которых меньше указанной даты (дата указывается в Timestamp, например, ltUpdateDate=1440835402).
- gtCreateDate — отображаются задания, дата создания которых больше указанной даты (дата указывается в Timestamp, например, gtCreateDate=1440835402).
- ltCreateDate — отображаются задания, дата создания которых меньше указанной даты (дата указывается в Timestamp, например, ltCreateDate=1440835402).
- gtDeadline — отображаются задания, параметр deadline которых больше указанной даты (дата указывается в Timestamp, например, gtDeadline =1440835402).
- ltDeadline — отображаются задания, параметр deadline которых меньше указанной даты (дата указывается в Timestamp, например, ltDeadline =1440835402).
- assigned_organization_id — отображаются задания, которые назначены на указанные организации. Id организаций передаются через запятую. Например, assigned_organization_id=1,2,292
- assigned_user_id — отображаются задания, которые назначены на указанных пользователей. Id пользователей передаются через запятую. Например, assigned_user_id=616,618
- user_id — отображаются задания, созданные указанными пользователями. Id пользователей передаются через запятую. Например, user_id=616,618
- search — отображаются задания, удовлетворяющие текстовому поиску указанного значения по значениям параметров id, text, title. Например, search=7891
- customFields — отображаются задания, отфильтрованные по значениям кастомных полей. Например, customFields=[{«name»:»Dop_pole_dlya_testov»,»op»:»EQ»,»value»:»12345″},{«name»:»Telefon__int__88432000555__»,»op»:»NOT NULL»}].
Более подробно фильтрация по кастомным полям описана в разделе Фильтрация задач по custom-полям - expired — при значении expired=true отображаются непросроченные задания(значение параметра deadline меньше текущей даты и параметр confirmed=1), при значении expired=false отображаются просроченные задания(значение параметра deadline больше текущей даты или значение параметра confirmed отлично от 1)
- sortBy — поле, по которому осуществляется сортировка. По умолчанию — news_date.
- sortDirection — направление сортировки (ASC, DESC). По умолчанию — DESC.
//Примеры запросов:
/news/distribution?withAssigned=true&withArchive=true&onlyStatus=2,3&onlyStates=6,11&category_id=1,2
/news/distribution?gtUpdateDate=1440835402<UpdateDate=1443513802>CreateDate=1438157002<CreateDate=1443513802&expired=false
/news/distribution?assigned_organization_id=2,292&assigned_user_id=618,625&user_id=6&confirmed=1
/news/distribution?search=тест&customFields=[{"name":"Dop_pole_dlya_testov","op":"EQ","value":"12345"},{"name":"Telefon__int__88432000555__","op":"NOT NULL"}]
// OUT <---
{
"res": 1,
"resText": "",
"type": { // расклад количества заданий по видам работ
"1": "1021", // id вида работ : количество заданий
"2": "879",
"3": "699"
},
"priority": { // расклад количества заданий по приоритетам
"1": "6625",
"2": "12211",
"3": "3644"
},
"confirmed": { //расклад количества заданий по полю "confirmed" ("1" - утверждено, "2" - не утверждено, "0" - новое)
"0": "5",
"1": "22457",
"2": "18"
},
"status": { // расклад количества заданий по статусам
"1": "22245",
"2": "197",
"3": "8",
"4": "30"
}
}
}
[t] GET /news/stats
Получение статистики по заданиям.
Количество заданий с группировкой по статусам, категориям, типам, организациям-исполнителям, организациям-создателям.
Параметры фильтрации:
- date_from — дата начала, начиная с которой необходимо отфильтровать задания. Формат timestamp, например date_from=1445845360
- date_till — дата, до которой необходимо отфильтровать задания. Формат timestamp, например date_till=1448523760
//Пример запроса:
/news/stats?date_from=1445845360&date_till=1448523760
// OUT <---
{
"res": 1,
"resText": "",
"statuses": [ //по статусам
{"status_id": 1, "count": 3},
{"status_id": 2, "count": 2},
{"status_id": 3, "count": 0}
],
"categories": [ //по категориям
{
"category_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}
]
}
],
"departments": [ //по организациям-создателям
{
"department_id": 1
"statuses": [
{"status_id": 1, "count": 0},
{"status_id": 2, "count": 2},
{"status_id": 3, "count": 2}
]
}
],
"assignedDepartments": [ //по назначенным организациям
{
"assigned_department_id": 1
"statuses": [
{"status_id": 1, "count": 2},
{"status_id": 2, "count": 3},
{"status_id": 3, "count": 4}
]
}
]
}
[t] GET /news/count
Количество заданий, которое доступно пользователю, с распределением по статусам заданий.
Параметры фильтрации:
- date_from — дата начала, начиная с которой необходимо отфильтровать задания. Формат timestamp, например date_from=1432626160
- date_till — дата, до которой необходимо отфильтровать задания. Формат timestamp, например date_till=1448523760
- category_id — фильтр по категориям заданий. id категорий передаются через запятую. Например, category_id=1,2
- type_id — фильтр по типам заданий. id типов передаются через запятую. Например, type_id=1,2
- status_id — фильтр по статусам заданий. id статусов передаются через запятую. Например, status_id=1,2
- department_id — фильтр по организациям, в которых были созданы задания. id организаций передаются через запятую. Например, department_id=1,2
- assigned_department_id — фильтр по организациям, которые были назначены на задания. id организаций передаются через запятую. Например, assigned_department_id=1,2
// Пример запроса:
/news/count?date_from=1432626160&date_till=1448523760&category_id=1,2&type_id=1,2&status_id=1,2&department_id=1,2&assigned_department_id=1,2
// OUT <---
{
"res": 1,
"resText": "",
"countNews": 32,
"statuses": [ //по статусам
{
"status_id": 2,
"count": 32
}
]
}
Дополнительные запросы
[t] GET /news/custom_fields
Список дополнительных (настраиваемых) полей и их возможных типов.
Параметры фильтрации для дополнительных (настраиваемых) полей
- search — текстовый поиск настраиваемых полей по значениям параметров id, name, group_name, format, regexp, default_value;
- name — текстовый поиск настраиваемых полей по значению параметра name;
- regexp — текстовый поиск настраиваемых полей по значению параметра regexp;
- defaultValue — текстовый поиск настраиваемых полей по значению параметра defaultValue;
- groupName — текстовый поиск настраиваемых полей по значению параметра groupName;
- format — текстовый поиск настраиваемых полей по значению параметра format;
- isRequired — при значении isRequired=true или isRequired=t отображаются обязательные настраиваемые поля; возможные значения: true, false, t, f;
- deleted — при значении deleted=false или deleted=f отображаются не удаленные настраиваемые поля. По умолчанию — deleted=false; возможные значения: true, false, t, f;
- isForAll — при значении isForAll =true или isForAll =t отображаются доступные для всех типов заданий настраиваемые поля; возможные значения: true, false, t, f;
- visible — при значении visible=true или visible=t отображаются видимые настраиваемые поля (видимые при показе полной информации по заданию); возможные значения: true, false, t, f;
- minLength — отображаются настраиваемые поля, минимальная длина которых совпадает с одним из указанных значений, значения передаются через запятую (например, minLength=1,2);
- maxLength — отображаются настраиваемые поля, максимальная длина которых совпадает с одним из указанных значений, значения передаются через запятую (например, maxLength=10,20);
- sortBy — поле, по которому ведется сортировка. По умолчанию — order.
- sortDirection — направление сортировки (ASC, DESC). По умолчанию — ASC.
//Примеры запросов:
/news/custom_fields
/news/custom_fields?search=test
/news/custom_fields?search=test&isRequired=false&deleted=false
/news/custom_fields?isForAll=true&minLength=1&maxLength=10
/news/custom_fields?sortBy=id&sortDirection=DESC
// OUT <---
{
"res": 1,
"resText": "",
"fields_types": [ //список возможных типов дополнительных полей
{
"name": "string", //английское название типа
"rusname": "строка" //русское название типа
},
{
"name": "int",
"rusname": "целое число"
},
... //следующие элементы списка возможных типов дополнительных полей
],
"custom_fields": [
{
"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, если необходимо такое ограничение
"is_required": "f", //является ли поле обязательным: "t", "f".
"default_value": "", //значение по умолчанию
"visible": "t", //является ли поле видимым: "t", "f". Отображать ли его, когда показывается полная информация по заданию
"is_for_all": "t", //доступно ли поле всем типам заданий: "t", "f".
"order": "1", //порядковый номер поля в общем списке
"news_type_ids": ["14"] //массив id типов заданий, для которых поле доступно, если оно не доступно всем типам заданий
},
... //следующие элементы списка дополнительных полей
],
"count": "35" //количество дополнительных полей, удовлетворяющих заданным условиям фильтрации и поиска
}
[t] GET /news/states
Список всех возможных состояний заданий.
// OUT <---
{
"res": 1,
"states": [ {
"id": "11", //id состояния
"name": "people_department", //название состояния
"field": "people_dep", //поле, по которому осуществляется проверка
"value": "t", //значение, которое оно должно принимать
"sign": null, //знак для сравнения
"field_from_session": null, //поле в сессии, если нужно сравнивать с ним
"role": null // служебное поле
},
...//следующие элементы списка состояний
]
}
[t] GET /news/capabilities
Список действий, которые можно осуществлять с заданием.
// OUT <---
{
"res": 1,
"resText": "",
"capabilities": [
{
"id": "2", //id действия
"name": "delete", //название действия
"default": "f" //служебное поле
},
{
"id": "3",
"name": "edit",
"default": "f"
},
{
"id": "7",
"name": "assign_department",
"default": "f"
},
{
"id": "8",
"name": "assign_user",
"default": "f"
},
... //следующие элементы списка действий
]
}
[t] GET /news/allowed
Список правил с состояниями, в которых должно находиться задание, чтобы определенное действие было доступно роли текущего пользователя.
Если для роли не прописано какое-то действие, оно для нее не доступно. Если в поле состояний стоит null, действие доступно роли при любых состояниях.
// OUT <---
{
"res": 1,
"resText": "",
"allowed": [
{
"id": "38", //id правила
"capability_id": "1", //id действия
"states": null //массив id состояний, либо null
},
{
"id": "14",
"capability_id": "7",
"states": [1]
},
{
"id": "159",
"capability_id": "7",
"states": [18]
},
... //следующие элементы списка
]
}
[t] GET /news/cache
Запрос на создание WebSocketChannel для возможности получения оповещений об операциях с заданиями(создание, обновление, удаление, добавление комментариев, ответов на комментарии) в формате JSON.
/newstype
CRUD-операции с типами заданиями
[t] GET /newstype/all
Получение списка всех существующих типов заданий (видов работ).
Параметры фильтрации для типов заданий
- search — текстовый поиск типов заданий по значениям параметров id, name;
- name — текстовый поиск типов заданий по значению параметра name;
- defaultType — при значении defaultType=true или defaultType=t отображаются типы заданий, которые являются типами по умолчанию; возможные значения: true, false, t, f;
- periodOfReviewInSec — отображаются типы заданий, для которых величина срока исполнения работ данного вида в секундах равна указанному значению (например, periodOfReviewInSec=172800);
- ltPeriodOfReviewInSec — отображаются типы заданий, для которых величина срока исполнения работ данного вида в секундах меньше указанного значения (например, ltPeriodOfReviewInSec=172800);
- gtPeriodOfReviewInSec — отображаются типы заданий, для которых величина срока исполнения работ данного вида в секундах больше указанного значения (например, gtPeriodOfReviewInSec=86400);
- deadlineType — отображаются типы заданий, для которых поле расчета срока исполнения работ данного вида совпадает с указанными значениями (deadlineType=1 соответствует значению «AT_CREATE», расчет срока ведется от времени создания, deadlineType=2 соответствует значению «AT_UPDATE», расчет срока ведется от даты назначения на исполнителя; может быть передано несколько значений deadlineType через запятую, например, deadlineType=1,2);
- groupId — отображаются типы заданий, принадлежащие указанным группам, id групп передаются через запятую (например, groupId=1,2);
- sortBy — поле, по которому ведется сортировка. По умолчанию — id.
- sortDirection — направление сортировки (ASC, DESC). По умолчанию — ASC.
Примечания:
В независимости от значения настройки 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.
//Примеры запросов:
/newstype/all
/newstype/all?search=тип&defaultType=true<PeriodOfReviewInSec=172800
/newstype/all?search=тип&defaultType=false>PeriodOfReviewInSec=86400&deadlineType=1&groupId=1,2
/newstype/all?defaultType=false&deadlineType=1&groupId=1,2&sortBy=order_key&sortDirecton=DESC
/newstype/all?defaultType=false&deadlineType=1>PeriodOfReviewInSec=86400<PeriodOfReviewInSec=172800&groupId=1,2
// OUT <---
{
"res": 1,
"resText": "",
"count": "30", //количество типов заданий (видов работ), удовлетворяющих условиям поиска и фильтрации
"newstype": [
{
"id": "12", //id типа
"name": "Обрушение конструкции", //название типа
"icon": "icon_12.png", //название двумерной иконки
"icon3d": "icon3d_12.png", //название трехмерной иконки
"map_icon": "map_icon_12.png", //название иконки для карты
"map_icon_highlight": "default_iconmap_highlight.png", //название увеличенной иконки для карты
"default_type": "t", //является ли данный тип типом по умолчанию: "t" или "f"
"period_of_review": null, //период исполнения работ данного вида
"period_of_review_in_sec": null, // величина срока исполнения работ данного вида по умолчанию (в секундах)
"deadline_type": "AT_CREATE", //поле для расчета срока исполнения работ данного вида: null, от даты создания "AT_CREATE", от даты назначения на исполнителя "AT_UPDATE".
"departments": [ //массив id организаций, которым доступен тип
"1",
"2",
"3"
],
"order_key": "3", //порядковый номер типа заданий в отсортированном списке
"group_id": null, //id группы, которой принадлежит тип, и null, если тип не принадлежит никакой группе
"news_type_id": "12" //id типа
},
... //следующие элементы списка типов заданий
]
}
Более подробно о сортировке типов заданий (видов работ) можно прочитать здесь:
Сортировка видов работ
Более подробно о группировке типов заданий (видов работ) можно прочитать здесь:
Группировка видов работ
[t] GET /newstype
Получение списка доступных текущему пользователю типов заданий (видов работ).
Параметры фильтрации для типов заданий
- search — текстовый поиск типов заданий по значениям параметров id, name;
- name — текстовый поиск типов заданий по значению параметра name;
- defaultType — при значении defaultType=true или defaultType=t отображаются типы заданий, которые являются типами по умолчанию; возможные значения: true, false, t, f;
- periodOfReviewInSec — отображаются типы заданий, для которых величина срока исполнения работ данного вида в секундах равна указанному значению (например, periodOfReviewInSec=172800);
- ltPeriodOfReviewInSec — отображаются типы заданий, для которых величина срока исполнения работ данного вида в секундах меньше указанного значения (например, ltPeriodOfReviewInSec=172800);
- gtPeriodOfReviewInSec — отображаются типы заданий, для которых величина срока исполнения работ данного вида в секундах больше указанного значения (например, gtPeriodOfReviewInSec=86400);
- deadlineType — отображаются типы заданий, для которых поле расчета срока исполнения работ данного вида совпадает с указанными значениями (deadlineType=1 соответствует значению «AT_CREATE», расчет срока ведется от времени создания, deadlineType=2 соответствует значению «AT_UPDATE», расчет срока ведется от даты назначения на исполнителя; может быть передано несколько значений deadlineType через запятую, например, deadlineType=1,2);
- groupId — отображаются типы заданий, принадлежащие указанным группам, id групп передаются через запятую (например, groupId=1,2);
- sortBy — поле, по которому ведется сортировка. По умолчанию — id.
- sortDirection — направление сортировки (ASC, DESC). По умолчанию — ASC.
Примечания:
В независимости от значения настройки 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.
//Примеры запросов:
/newstype
/newstype?search=тип&defaultType=true<PeriodOfReviewInSec=172800
/newstype?search=тип&defaultType=false>PeriodOfReviewInSec=86400&deadlineType=1&groupId=1,2
/newstype?defaultType=false&deadlineType=1&groupId=1,2&sortBy=order_key&sortDirecton=DESC
/newstype?defaultType=false&deadlineType=1>PeriodOfReviewInSec=86400<PeriodOfReviewInSec=172800&groupId=1,2
// OUT <---
{
"res": 1,
"resText": "",
"count": "20", //количество типов заданий (видов работ), удовлетворяющих условиям поиска и фильтрации
"newstype": [
{
"id": "12", //id типа
"name": "Обрушение конструкции", //название типа
"icon": "icon_12.png", //название двумерной иконки
"icon3d": "icon3d_12.png", //название трехмерной иконки
"map_icon": "map_icon_12.png", //название иконки для карты
"map_icon_highlight": "default_iconmap_highlight.png", //название увеличенной иконки для карты
"default_type": "t", //является ли данный тип типом по умолчанию: "t" или "f"
"period_of_review": null, //период исполнения работ данного вида
"period_of_review_in_sec": null, // величина срока исполнения работ данного вида по умолчанию (в секундах)
"deadline_type": "AT_CREATE", //поле для расчета срока исполнения работ данного вида: null, от даты создания "AT_CREATE", от даты назначения на исполнителя "AT_UPDATE".
"departments": [ //массив id организаций, которым доступен тип
"1",
"2",
"3"
],
"order_key": "3", //порядковый номер типа заданий в отсортированном списке
"group_id": null, //id группы, которой принадлежит тип, и null, если тип не принадлежит никакой группе
"news_type_id": "12" //id типа
},
... //следующие элементы списка типов заданий
]
}
[AaIi] POST /newstype
Создание типа задания (вида работ).
// IN --->
{
"name":"новый тип", //название типа
"icon":"icon_158.png", //название двумерной иконки, иконка по умолчанию - "default_icon.png"
"icon3d":"icon3d_158.png", //название трехмерной иконки, иконка по умолчанию - "default_icon3d.png"
"map_icon":"default_iconmap.png", //название иконки для карты, иконка по умолчанию - "default_iconmap.png"
"map_icon_highlight":"default_iconmap_highlight.png", //название увеличенной иконки для карты, иконка по умолчанию - "default_iconmap_highlight.png"
"map_icon_highlight_done":"default_iconmap_highlight_done.png", //название увеличенной иконки со статусом "выполнено" для карты, иконка по умолчанию - "default_iconmap_highlight_done.png"
"default_type":"f", //является ли данный тип типом по умолчанию: "t" или "f"
"period_of_review":"2", //период исполнения работ данного вида
"period_of_review_in_sec":"172800", // величина срока исполнения работ данного вида по умолчанию (в секундах)
"deadline_type":"AT_CREATE", //поле для расчета срока исполнения работ данного вида: null, от даты создания "AT_CREATE", от даты назначения на исполнителя "AT_UPDATE".
"departments":["2","3"], //массив id организаций, которым доступен тип
"group_id": "22" //id группы, которой принадлежит тип, и null, если тип не принадлежит никакой группе
}
// OUT --->
{
"res": 1,
"resText": "",
"newstype": {
"id": "1325", //id типа
"name": "новый тип", //название типа
"icon": "icon_158.png", //название двумерной иконки
"icon3d": "icon3d_158.png", //название трехмерной иконки
"map_icon": "default_iconmap.png", //название иконки для карты
"map_icon_highlight": "default_iconmap_highlight.png", //название увеличенной иконки для карты
"map_icon_highlight_done": "default_iconmap_highlight_done.png", //название увеличенной иконки со статусом "выполнено" для карты
"default_type": "f", //является ли данный тип типом по умолчанию: "t" или "f"
"period_of_review": "2", //период исполнения работ данного вида
"icon3d_done": null, //название трехмерной иконки со статусом "выполнено"
"icon_done": null, //название иконки со статусом "выполнено"
"map_icon_done": null, //название иконки со статусом "выполнено" для карты
"iconmap": null, //название иконки для карты
"iconmap_highlight": null, //название увеличенной иконки для карты
"iconmap_done": null, //название иконки со статусом "выполнено" для карты
"iconmap_highlight_done": null, //название увеличенной иконки со статусом "выполнено" для карты
"period_of_review_in_sec": "172800", // величина срока исполнения работ данного вида по умолчанию (в секундах)
"deadline_type": "AT_CREATE", //поле для расчета срока исполнения работ данного вида: null, от даты создания "AT_CREATE", от даты назначения на исполнителя "AT_UPDATE".
"departments": [ //массив id организаций, которым доступен тип
"2",
"3"
],
"group_id": "22", //id группы, которой принадлежит тип, или null, если тип не принадлежит никакой группе
"news_type_id": "1325" //id типа
}
}
[t] GET /newstype/:id
Получение типа заданий (вида работ) по указанному id.
// OUT --->
{
"res": 1,
"resText": "",
"newstype": {
"id": "1325", //id типа
"name": "новый тип", //название типа
"icon": "icon_158.png", //название двумерной иконки
"icon3d": "icon3d_158.png", //название трехмерной иконки
"map_icon": "default_iconmap.png", //название иконки для карты
"map_icon_highlight": "default_iconmap_highlight.png", //название увеличенной иконки для карты
"map_icon_highlight_done": "default_iconmap_highlight_done.png", //название увеличенной иконки со статусом "выполнено" для карты
"default_type": "f", //является ли данный тип типом по умолчанию: "t" или "f"
"period_of_review": "2", //период исполнения работ данного вида
"icon3d_done": null, //название трехмерной иконки со статусом "выполнено"
"icon_done": null, //название иконки со статусом "выполнено"
"map_icon_done": null, //название иконки со статусом "выполнено" для карты
"iconmap": null, //название иконки для карты
"iconmap_highlight": null, //название увеличенной иконки для карты
"iconmap_done": null, //название иконки со статусом "выполнено" для карты
"iconmap_highlight_done": null, //название увеличенной иконки со статусом "выполнено" для карты
"period_of_review_in_sec": "172800", // величина срока исполнения работ данного вида по умолчанию (в секундах)
"deadline_type": "AT_CREATE", //поле для расчета срока исполнения работ данного вида: null, от даты создания "AT_CREATE", от даты назначения на исполнителя "AT_UPDATE".
"departments": [ //массив id организаций, которым доступен тип
"2",
"3"
],
"group_id": "22", //id группы, которой принадлежит тип, или null, если тип не принадлежит никакой группе
"news_type_id": "1325" //id типа
}
}
[AaIi] PUT /newstype/:id
Изменение типа задания (вида работ).
// IN --->
{
"name":"измененный тип", //название типа
"icon":"icon_158.png", //название двумерной иконки
"icon3d":"icon3d_158.png", //название трехмерной иконки
"map_icon":"default_iconmap.png", //название иконки для карты
"map_icon_highlight":"default_iconmap_highlight.png", //название увеличенной иконки для карты
"map_icon_highlight_done":"default_iconmap_highlight_done.png", //название увеличенной иконки со статусом "выполнено" для карты
"default_type":"f", //является ли данный тип типом по умолчанию: "t" или "f"
"period_of_review":"2", //период исполнения работ данного вида
"period_of_review_in_sec":"172800", // величина срока исполнения работ данного вида по умолчанию (в секундах)
"deadline_type":"AT_CREATE", //поле для расчета срока исполнения работ данного вида: null, от даты создания "AT_CREATE", от даты назначения на исполнителя "AT_UPDATE".
"departments":["2","3"], //массив id организаций, которым доступен тип
"group_id": "22" //необязательное поле: значение null (либо отсутствие поля в JSON) означает, что нужно оставить текущее значение;
//значение 0 означает, что нужно удалить этот вид работ из текущей группы;
//положительные значения трактуются как id группы, к которой нужно привязать этот вид работ;
}
// OUT --->
{
"res": 1,
"resText": "",
"newstype": {
"id": "1325", //id типа
"name": "измененный тип", //название типа
"icon": "icon_158.png", //название двумерной иконки
"icon3d": "icon3d_158.png", //название трехмерной иконки
"map_icon": "default_iconmap.png", //название иконки для карты
"map_icon_highlight": "default_iconmap_highlight.png", //название увеличенной иконки для карты
"map_icon_highlight_done": "default_iconmap_highlight_done.png", //название увеличенной иконки со статусом "выполнено" для карты
"default_type": "f", //является ли данный тип типом по умолчанию: "t" или "f"
"period_of_review": "2", //период исполнения работ данного вида
"icon3d_done": null, //название трехмерной иконки со статусом "выполнено"
"icon_done": null, //название иконки со статусом "выполнено"
"map_icon_done": null, //название иконки со статусом "выполнено" для карты
"iconmap": null, //название иконки для карты
"iconmap_highlight": null, //название увеличенной иконки для карты
"iconmap_done": null, //название иконки со статусом "выполнено" для карты
"iconmap_highlight_done": null, //название увеличенной иконки со статусом "выполнено" для карты
"period_of_review_in_sec": "172800", // величина срока исполнения работ данного вида по умолчанию (в секундах)
"deadline_type": "AT_CREATE", //поле для расчета срока исполнения работ данного вида: null, от даты создания "AT_CREATE", от даты назначения на исполнителя "AT_UPDATE".
"departments": [ //массив id организаций, которым доступен тип
"2",
"3"
],
"group_id": "22", //id группы, которой принадлежит тип, или null, если тип не принадлежит никакой группе
"news_type_id": "1325" //id типа
}
}
[AaIi] PUT /newstype/:id/:iconType
Загрузить иконку типа заданий (вида работ).
id — id типа заданий (вида работ),
iconType — тип загружаемой иконки, возможные значения:
- icon,
- icon3d,
- mapIcon,
- mapIconHighlight,
- mapIconHighlightDone,
- icon3dDone,
- iconDone,
- mapIconDone
- iconmap,
- iconmapHighlight,
- iconmapDone,
- iconmapHighlightDone.
В запросе необходимо:
- указать Content-Disposition: name=»icon»,
- передать файл в переменной «icon».
Формат ответа при успешной загрузке файлов:
// OUT <---
{
"res": 1,
"resText": "",
"newstype": {
"id": "1326",//id типа
"name": "тип задания", //название типа заданий (вида работ)
"icon": "default_icon.png", //название двумерной иконки
"icon3d": "14486184457501326_icon3d_photo_test.jpg", //название трехмерной иконки
"map_icon": "default_iconmap.png", //название иконки для карты
"map_icon_highlight": "default_iconmap_highlight.png", //название увеличенной иконки для карты
"map_icon_highlight_done": "default_iconmap_highlight.png", //название увеличенной иконки со статусом "выполнено" для карты
"default_type": "f", //является ли данный тип типом по умолчанию: "t" или "f"
"period_of_review": "2", //период исполнения работ данного вида
"icon3d_done": null, //название трехмерной иконки со статусом "выполнено"
"icon_done": null, //название иконки со статусом "выполнено
"map_icon_done": null, //название иконки со статусом "выполнено" для карты
"iconmap": null, //название иконки для карты
"iconmap_highlight": null, //название увеличенной иконки для карты
"iconmap_done": null, //название иконки со статусом "выполнено" для карты
"iconmap_highlight_done": null, //название увеличенной иконки со статусом "выполнено" для карты
"period_of_review_in_sec": "172800", //величина срока исполнения работ данного вида по умолчанию (в секундах)
"deadline_type": "AT_CREATE", //поле для расчета срока исполнения работ данного вида: null, от даты создания "AT_CREATE", от даты назначения на исполнителя "AT_UPDATE".
"departments": [ //массив id организаций, которым доступен тип
"2",
"3"
],
"news_type_id": "1326", //id типа
"group_id": "22" //id группы, которой принадлежит тип, или null, если тип не принадлежит никакой группе
}
}
[AaIi] DELETE /newstype/:id
Удаление типа задания (вида работ).
// OUT <---
{
"res": 1,
"resText": ""
}
/newstype/group
Группировка типов заданий (видов работ).
Более подробно о группировке типов заданий (видов работ) можно почитать здесь:Группировка видов работ
[AI] POST /newstype/group
Создание новой группы типов заданий (видов работ).
// IN --->
{
"name": "название группы" //название группы, обязательное поле
}
// OUT <---
{
"res": 1,
"resText": "",
"group": {
"id": "208", //id группы
"name": "название группы" //название группы
}
}
[AI] PUT /newstype/group/:id
Изменение группы типов заданий (видов работ).
// IN --->
{
"name": "измененное название группы" //название группы
}
// OUT <---
{
"res": 1,
"resText": "",
"group": {
"id": "208", //id группы
"name": "измененное название группы" //название группы
}
}
[AI] GET /newstype/group/:id
Получение группы типов заданий (видов работ).
// OUT <---
{
"res": 1,
"resText": "",
"group": {
"id": "208", //id группы
"name": "название группы" //название группы
}
}
[AI] DELETE /newstype/group/:id
Удаление группы типов заданий (видов работ).
// OUT <---
{
"res": 1,
"resText": ""
}
[AI] GET /newstype/group/list
Получить список всех групп типов заданий (видов работ).
// OUT <---
{
"res": 1,
"resText": "",
"groups": [
{
"id": "41", //id группы
"name": "название группы" //название группы
},
...//следующие элементы списка групп
]
}
/newstype/sort
Ручная сортировка типов заданий (видов работ).
Более подробно о сортировке типов заданий (видов работ) можно почитать здесь:
Сортировка видов работ
[AaIi] POST /newstype/sort
Ручная сортировка типов заданий (видов работ) в порядке, заданном в теле запроса.
// IN --->
{ "ids": [12, 1, 3, 6, 2, 5] //id типов заданий (видов работ) в отсортированном порядке
}
// OUT <---
{
"res": 1,
"resText": "",
"newstype": [
{
"id": "12", //id типа
"name": "Обрушение конструкции", //название типа
"icon": "icon_12.png", //название двумерной иконки
"icon3d": "icon3d_12.png", //название трехмерной иконки
"map_icon": "map_icon_12.png", //название иконки для карты
"map_icon_highlight": "default_iconmap_highlight.png", //название увеличенной иконки для карты
"default_type": "t", //является ли данный тип типом по умолчанию: "t" или "f"
"period_of_review": null, //период исполнения работ данного вида
"period_of_review_in_sec": null, // величина срока исполнения работ данного вида по умолчанию (в секундах)
"deadline_type": "AT_CREATE", //поле для расчета срока исполнения работ данного вида: null, от даты создания "AT_CREATE", от даты назначения на исполнителя "AT_UPDATE".
"departments": [ //массив id организаций, которым доступен тип
"1",
"2",
"3"
],
"order_key": "3", //порядковый номер типа заданий (видов работ) в отсортированном списке
"group_id": null, //id группы, которой принадлежит тип, и null, если тип не принадлежит никакой группе
"news_type_id": "12" //id типа
},
... //следующие элементы списка типов заданий (видов работ) в заданном порядке сортировки
]
}
Связи между типами заданий и настраиваемыми полями
[AIai] POST /newstype/:id/custom_field/:id
Привязка настраиваемого поля к виду работ.
Если указанных вида работ или настраиваемого поля не существует, получаем ошибку 404.
Если связь уже существует, ошибку не получаем (INSERT в таблицу повторно не выполняется).
// OUT <---
{
"res": 1,
"resText": ""
}
[AIai] DELETE /newstype/:id/custom_field/:id
Удаление связи между видом работ и настраиваемым полем, отвязка поля от вида работ.
Если указанных вида работ или настраиваемого поля не существует, получаем ошибку 404.
Если связи не существует, получаем ошибку 400.
// OUT <---
{
"res": 1,
"resText": ""
}
/custom_field
Более подробно о настраиваемых полях и операциях с ними можно прочитать здесь:
CRUD REST для настраиваемых полей
CRUD-операции с настраиваемыми полями
[AI] POST /custom_field
Создание нового настраиваемого (кастомного) поля.
// IN --->
{
"name": "Фактический адрес организации", // название нового поля, обязательный параметр
"format": "text", // формат данных поля, возможные значения: "int", "float", "bool", "geometry", "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"
"is_required": "t", // обязательное ли поле: "t", "f", по умолчанию "f"
"default_value": "г.Москва", // значение по умолчанию, доступно для всех форматов полей, за исключением формата "geometry",
// значение задается с соответствии с форматом поля (текст, число, дата, булево значение)
"visible": "t" // видимость данного поля при отображении полной информации по заданию: "t", "f", по умолчанию "t"
}
При возникновении одной из следующих ситуаций клиенту возвращается статус 400:
- Передано поле possible_values, но формат настраиваемого поля не «list»;
- передано поле regexp, но формат не «string», «text», «int» или «float»;
- переданы поля min_length или max_length, но формат не «string» или «text»;
- передано поле default_value, но формат «geometry»;
- значение default_value (переданное или текущее)
- не соответствует формату поля (для форматов «bool», «int», «float», «date»);
- и/или не проходит валидацию по regexp/min_length/max_length;
- и/или не является одним из possible_values (для поля формата «list»).
// OUT <---
{
"res": 1,
"resText": "",
"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"
"is_required": "t", // обязательное ли поле: "t", "f"
"default_value": "РТ, г.Москва", // значение по умолчанию, доступно для всех форматов полей, за исключением формата "geometry",
// значение задается с соответствии с форматом поля (текст, число, дата, булево значение)
"visible": "t", // видимость данного поля при отображении полной информации по заданию: "t", "f"
"is_for_all": "f", // доступно ли данное поле для всех типов заданий (видов работ): "t", "f"
"news_type_ids": "["1", "2"]", //массив id типов заданий, для которых поле доступно, если оно не доступно всем типам заданий
"order": "10" // номер данного поля для отображения в списке настраиваемых полей
}
[AI] PUT /custom_field/:id
Редактирование настраиваемого поля.
Формат поля изменить нельзя, т.к. это может вызвать массовую некорректность данных настраиваемых полей в заданиях.
// IN --->
{
"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": "f", // обязательное ли поле: "t", "f"
"default_value": "РТ, г.Казань", // значение по умолчанию, доступно для всех форматов полей, за исключением формата "geometry",
// значение задается с соответствии с форматом поля (текст, число, дата, булево значение)
"visible": "f" // видимость данного поля при отображении полной информации по заданию: "t", "f"
}
Если поле не существует или логически удалено, клиенту возвращается статус 404.
При возникновении одной из следующих ситуаций клиенту возвращается статус 400:
- Передано поле possible_values, но формат настраиваемого поля не «list»;
- передано поле regexp, но формат не «string», «text», «int» или «float»;
- переданы поля min_length или max_length, но формат не «string» или «text»;
- передано поле default_value, но формат «geometry»;
- значение default_value (переданное или текущее)
- не соответствует формату поля (для форматов «bool», «int», «float», «date»);
- и/или не проходит валидацию по regexp/min_length/max_length;
- и/или не является одним из possible_values (для поля формата «list»).
Если массив «possible_values» не будет передан, то элементы списка не изменятся. При передаче массива «possible_values» все предыдущие значения списка будут удалены.
// OUT <---
{
"res": 1,
"resText": "",
"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"
"is_required": "f", // обязательное ли поле: "t", "f"
"default_value": "РТ, г.Казань", // значение по умолчанию, доступно для всех форматов полей, за исключением формата "geometry",
// значение задается с соответствии с форматом поля (текст, число, дата, булево значение)
"visible": "f", // видимость данного поля при отображении полной информации по заданию: "t", "f"
"is_for_all": "f", // доступно ли данное поле для всех типов заданий (видов работ): "t", "f"
"news_type_ids": "["1", "2"]", //массив id типов заданий, для которых поле доступно, если оно не доступно всем типам заданий
"order": "10" // номер данного поля для отображения в списке настраиваемых полей
}
[AI] GET /custom_field/:id
Получение информации по настраиваемому полю.
Если поле не существует или логически удалено, клиенту возвращается статус 404.
// OUT <---
{
"res": 1,
"resText": "",
"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"
"is_required": "f", // обязательное ли поле: "t", "f"
"default_value": "РТ, г.Казань", // значение по умолчанию, доступно для всех форматов полей, за исключением формата "geometry",
// значение задается с соответствии с форматом поля (текст, число, дата, булево значение)
"visible": "f", // видимость данного поля при отображении полной информации по заданию: "t", "f"
"is_for_all": "f", // доступно ли данное поле для всех типов заданий (видов работ): "t", "f
"news_type_ids": "["1", "2"]", //массив id типов заданий, для которых поле доступно, если оно не доступно всем типам заданий
"order": "10" // номер данного поля для отображения в списке настраиваемых полей
}
[AI] DELETE /custom_field/:id
Логическое удаление настраиваемого поля.
Если поле не существует или логически удалено, клиенту возвращается статус 404.
// OUT <---
{
"res": 1,
"resText": ""
}
[A] DELETE /custom_field/:id/hard
Служебный запрос для физического удаления настраиваемого поля.
Если поле не существует, клиенту возвращается статус 404.
// OUT <---
{
"res": 1,
"resText": ""
}
[AI] POST /custom_field/sort
Ручная сортировка настраиваемых полей.
Сортировке подлежат только неудаленные настраиваемые поля.
Отсортированный список будет сохраняться в БД и отдаваться клиентам при последующих запросах списка (в ответе к данному запросу, а также в ответе на GET-запрос /news/custom_fields).
1. Сортировка ведется по полю order типа integer.
2. Для ручной сортировки будет добавлен POST-запрос /custom_field/sort, который можно будет выполнить неоднократно.
3. В теле POST-запроса /custom_field/sort клиент должен будет передать id-шники настраиваемых полей в отсортированном им порядке:
// IN --->
{ "ids": [4, 1, 3, 6, 2, 5]
}
Если переданный список id-шников будет некорректным, в ответе будет выдан BadRequest.
Корректность списка id-шников проверяется по следующим пунктам:
- неверный формат переданных данных,
- передача несуществующих id-шников,
- передача дублирующихся id-шников,
- передача id-шников удаленных настраиваемых полей,
- передача неверного количества id-шников (должны быть переданы все существующие в БД id-шники).
4. В БД будет произведен UPDATE: порядок полученных id-шников будет занесен в таблицу issues.custom_fields в столбец order.
5. Пользователю в ответ на POST-запрос /custom_field/sort, а также в ответ на GET-запрос /news/custom_fields будет выдаваться список настраиваемых полей, отсортированный в указанном порядке.
6. Для новых настраиваемых полей order будет назначаться равным 0. В БД также имеются настраиваемые поля с order = null (созданные до ввода дефолтного значения order = 0).
Настраиваемые поля с order , равным 0 или null, будут располагаться в списке после отсортированных по order полей, и они будут отсортированы по полю id.
// OUT <---
{
"res": 1,
"resText": "",
"custom_fields": [
{
"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",
"is_required": "f",
"default_value": "",
"visible": "t",
"is_for_all": "t",
"order": "1",
"news_type_ids": [
"14"
]
},
{
"id": "9",
"name": "Доп.поле для тестов (5-10)",
"translit": "Dop_pole_dlya_testov",
"format": "text",
"group_name": "",
"possible_values": null,
"regexp": "",
"min_length": "5",
"max_length": "10",
"is_required": "f",
"default_value": "12345",
"visible": "t",
"is_for_all": "t",
"order": "2",
"news_type_ids": []
},
...
]
}