cerebellum-rest-files
Загрузка файлов: /files
Во всех POST-запросах на загрузку файлов необходимо:
- указать Content-Disposition: name=»Filedata»,
- передать файл в переменной «Filedata».
Пример передачи файла через REST-клиент POSTMAN
Формат ответа при успешной загрузке файлов:
// OUT <---
{
"res": 1,
"resText": "",
"name": "dbf5bc90-db10-1004-87cc-d22e9fcfea25.jpg" //имя файла, преобразованное с помощью UUID-стандарта идентификации
}
[t] POST /files/upload/photos, [t] POST /upload/photos
Загрузка фотографий.
[t] POST /files/upload/video, [t] POST /upload/video
Загрузка видеофайлов.
[t] POST /files/upload/videos, [t] POST /upload/videos
Загрузка видеофайлов.
[t] POST /files/upload/files, [t] POST /upload/files
Загрузка файлов.
[t] POST /files/upload/sounds, [t] POST /upload/sounds
Загрузка аудиофайлов.
cerebellum-rest-departments_users
Запросы по организациям и пользователям: /departments, /users
/departments
Запросы по организациям.
[AI] GET /departments/count
Получение количества организаций.
// OUT <---
{
"res": 1,
"resText": "",
"count": "22" //количество организаций
}
[t] GET /departments
Получение списка организаций (для которых arm_view = true).
// OUT <---
{
"res": 1,
"resText": "",
"departments": [
{
"id": "3",//id организации
"name": "Власть народу", //название организации
"logo": null, //логотип организации
"arm_view": "t", //отображение ведомства в АРМ губернатора: "t", "f"
"map_extent_id": "268", //id положения карты
"right_id": "0", //служебное значение для MapAdmin, всегда "0"
"users_count": "6", //количество пользователей
"people_dep": "f" //является ли ведомство, ведомством населения: "t", "f"
},
... //следующие элементы списка организаций
]
}
[t] GET /departments/all/{:limit}/{:offset}
Получение списка организаций, где offset — номер первой выводимой в ответе организации, limit — количество выводимых в ответе организаций.
Параметры limit, offset не обязательны.
// OUT <---
{
"res": 1,
"resText": "",
"departments": [
{
"id": "2", //id ведомства/организации
"name": "Отдел Тестирования T", //название ведомства/организации
"logo": "logo_291.jpg", //название файла логотипа
"arm_view": "f", //отображение ведомства в АРМ губернатора: "t", "f"
"map_extent_id": "2", //id положения карты
"right_id": "0", //служебное значение для MapAdmin, всегда "0"
"users_count": "37", //количество пользователей
"people_dep": "f" //является ли ведомство, ведомством населения: "t", "f"
},
... //следующие элементы списка организаций
]
}
[t] GET /departments/arm/{:limit}/{:offset}
Получение списка организаций, видимых в АРМ Губернатора, где offset — номер первой выводимой в ответе организации, limit — количество выводимых в ответе организаций.
Параметры limit, offset не обязательны.
// OUT <---
{
"res": 1,
"resText": "",
"departments": [
{
"id": "2", //id ведомства/организации
"name": "Отдел Тестирования T", //название ведомства/организации
"logo": "logo_291.jpg", //название файла логотипа
"arm_view": "f", //отображение ведомства в АРМ губернатора: "t", "f"
"map_extent_id": "2", //id положения карты
"right_id": "0", //служебное значение для MapAdmin, всегда "0"
"users_count": "37", //количество пользователей
"people_dep": "f" //является ли ведомство, ведомством населения: "t", "f"
},
... //следующие элементы списка организаций
]
}
[AI] GET /departments/:id/name
Получение названия организации по id.
// OUT <---
{
"res": 1,
"resText": "",
"department_name": "Отдел Тестирования" //название организации
}
[AIait*] GET /departments/:id/users
Получение списка пользователей организации, где id — id организации.
// OUT <---
{
"res": 1,
"resText": "",
"users": [
{
"id": "3011", //id пользователя
"login": "admin1439218241106", //логин пользователя
"fio": "Иванов И.И.", //ФИО пользователя
"department_id": "2", //id ведомства, либо null, если пользователь не относится ни к какой организации
"role_id": "10" //id роли пользователя: "6", "7" - обычный пользователь, "10" - админ ведомства, "8" - администратор всех ведомств
},
... //следующие элементы списка пользователей организации
]
}
* Права доступа на выполнение данного запроса для ролей a, i, t зависят от настроек безопасности, прописанных в конфигурационном файле application.conf.
Права доступа на выполнение данного запроса для ролей A, I есть всегда, независимо от настроек. Для роли a (администратора организации):
- доступ есть, если указанный в запросе id организации совпадает с id организации пользователя и в конфигурационном файле application.conf
security.see.users.self.dep.allow.org.admin=true или security.see.users.self.dep.allow.org.user=true, - доступ есть, если указанный в запросе id организации не совпадает с id организации пользователя и в конфигурационном файле application.conf
security.see.users.other.dep.allow.org.admin=true или security.see.users.other.dep.allow.org.user=true, - в остальных случаях для роли a (администратора организации) доступа нет.
Для роли i (инспектора организации):
- доступ есть, если указанный в запросе id организации совпадает с id организации пользователя и в конфигурационном файле application.conf
security.see.users.self.dep.allow.org.inspector=true или security.see.users.self.dep.allow.org.user=true, - доступ есть, если указанный в запросе id организации не совпадает с id организации пользователя и в конфигурационном файле application.conf
security.see.users.other.dep.allow.org.inspector=true или security.see.users.other.dep.allow.org.user=true, - в остальных случаях для роли i (инспектора организации) доступа нет.
Для роли t (авторизованного пользователя, с ролью, отличной от ролей A, I, a, i):
- доступ есть, если указанный в запросе id организации совпадает с id организации пользователя и в конфигурационном файле application.conf
security.see.users.self.dep.allow.org.user=true, - доступ есть, если указанный в запросе id организации не совпадает с id организации пользователя и в конфигурационном файле application.conf
security.see.users.other.dep.allow.org.user=true, - в остальных случаях для роли t (авторизованного пользователя, с ролью, отличной от ролей A, I, a, i) доступа нет.
Связи между организациями и видами работ
[AIai] POST /departments/:id/newstype/:id
Привязка вида работ к организации.
Если указанных вида работ или организации не существует, получаем ошибку 404.
Если связь уже существует, ошибку не получаем (INSERT в таблицу повторно не выполняется).
// OUT <---
{
"res": 1,
"resText": ""
}
[AIai] DELETE /departments/:id/newstype/:id
Удаление связи между видом работ и организацией.
Если указанных вида работ или организации не существует, получаем ошибку 404.
Если связи не существует, получаем ошибку 400.
// OUT <---
{
"res": 1,
"resText": ""
}
/upload/departmentIcons
[t] POST /upload/departmentIcons
Загрузка файлов иконок для организаций.
В запросе на загрузку иконок необходимо:
- указать Content-Disposition: name=»Filedata»,
- передать файл в переменной «Filedata».
Пример загрузки иконки через REST-клиент POSTMAN
Формат ответа при успешной загрузке иконки:
// OUT <---
{
"res": 1,
"resText": "",
"name": "ebb453e8-db16-1004-8f9e-3e07628b8015.jpg" //имя файла, преобразованное с помощью UUID-стандарта идентификации
}
/users
Запросы по пользователям.
[AI] GET /users
Получение списка всех пользователей.
// OUT <---
{
"res": 1,
"resText": "",
"users": [
{
"id": "3011", //id пользователя
"login": "admin1439218241106", //логин пользователя
"fio": "Иванов И.И.", //ФИО пользователя
"department_id": "2", //id ведомства, либо null, если пользователь не относится ни к какой организации
"role_id": "10" //id роли пользователя: "6", "7" - обычный пользователь, "10" - админ ведомства, "8" - администратор всех ведомств
},
... //следующие элементы списка пользователей
]
}
[t] GET /users/current
Получение информации о текущем пользователе.
// OUT <---
{
"res": 1,
"resText": "",
"id": "6", //id пользователя
"login": "ivanov", //логин пользователя
"fio": "Иванов Иван Иванович", //ФИО пользователя
"uvd_department_id": "62", //id ведомства, задания которого будут отображаться в интерфейсе map3d_mcs для AРМ Губернатора
"users_site_type": "2", //принадлежность пользователя ведомству ("1") или организации ("2")
"satellites_view": "t", //видимость спутников в АРМ Губернатора: "t" или "f"
"role_id": "8", //id роли пользователя
"email": "ivanov@gmail.com", //email пользователя
"matrix": "(-0.756602,0.653875,0.00069758),(0.21426,0.246913,0.945054),(0.617775,0.715179,-0.326914),(2.34475e+06,2.7075e+06,5.26909e+06)", //матрица перелета для АРМ Губернатора
"department_id": "1" //id организации пользователя
}
[AI] GET /users/count
Получение количества пользователей.
// OUT <---
{
"res": 1,
"resText": "",
"count": "970" //количество пользователей
}
>
[t] GET /users/standartStore
Получение стандартного хранилища данных для организации, которой принадлежит текущий пользователь. У организации стандартное хранилище данных может отсутствовать.
// OUT <---
{
"res": 1,
"resText": "",
"store": {
"id": "3", //id хранилища данных
"host": "trust.geo4.me", //хост
"port": "5432", //порт
"database": "inf_region" //база данных
}
}
[t] GET /users/standartStore
Получение стандартного хранилища данных для организации, которой принадлежит текущий пользователь. У организации стандартное хранилище данных может отсутствовать.
// OUT <---
{
"res": 1,
"resText": "",
"store": {
"id": "3", //id хранилища данных
"host": "trust.geo4.me", //хост
"port": "5432", //порт
"database": "inf_region" //база данных
}
}
[tA] PATCH/users/:id
Редактирование учетной записи пользователя по id.
// IN --->
{
"email": "test@gmail.com",
"address": "г.Казань, ул.Назарбаева, д.27",
"fio": "Иванов Иван Иванович",
"phone": "8432000555",
"fax": "8432000555",
"inn": "123456789012"
}
// OUT <---
{
"res": 1,
"resText": "",
"id": "6935", //id пользователя
"login": "ivanov_ivan", //логин пользователя
"fio": "Иванов Иван Иванович", //ФИО физического лица или название организации (юридического лица)
"uvd_department_id": "62", //id ведомства, задания которого будут отображаться в интерфейсе map3d_mcs для AРМ Губернатора
"users_site_type": "2", //принадлежность пользователя ведомству ("1") или организации ("2")
"satellites_view": "t", //видимость спутников в АРМ Губернатора: "t" или "f"
"email": "test@gmail.com", //email
"role_id": "10", //id роли пользователя
"matrix": "(-0.756602,0.653875,0.00069758),(0.21426,0.246913,0.945054),(0.617775,0.715179,-0.326914),(2.34475e+06,2.7075e+06,5.26909e+06)", //матрица перелета для АРМ Губернатора
"department_id": "517" //id ведомства/организации
}
[tA] PUT/users/:id
Редактирование учетной записи пользователя по id.
// IN --->
{
"email": "test@gmail.com", //обязательный параметр
"address": "г.Казань, ул.Назарбаева, д.27", //обязательный параметр
"fio": "Иванов Иван Иванович",
"phone": "8432000555",
"fax": "8432000555",
"inn": "123456789012"
}
// OUT <---
{
"res": 1,
"resText": "",
"id": "6935", //id пользователя
"login": "ivanov_ivan", //логин пользователя
"fio": "Иванов Иван Иванович", //ФИО физического лица или название организации (юридического лица)
"uvd_department_id": "62", //id ведомства, задания которого будут отображаться в интерфейсе map3d_mcs для AРМ Губернатора
"users_site_type": "2", //принадлежность пользователя ведомству ("1") или организации ("2")
"satellites_view": "t", //видимость спутников в АРМ Губернатора: "t" или "f"
"email": "test@gmail.com", //email
"role_id": "10", //id роли пользователя
"matrix": "(-0.756602,0.653875,0.00069758),(0.21426,0.246913,0.945054),(0.617775,0.715179,-0.326914),(2.34475e+06,2.7075e+06,5.26909e+06)", //матрица перелета для АРМ Губернатора
"department_id": "517" //id ведомства/организации
}
[A] POST /users
Служебный запрос. Упрощенная схема регистрации пользователей для тестов.
// IN --->
{
"login": "login", //логин
"paswd": "12345", //пароль
"email" : "test@gradoservice.ru", //email, необязательный параметр
"phone": "8432000555", //телефон, необязательный параметр
"ur_fio": "Иванов и КО", //название юр.лица, , необязательный параметр
"ur_address": "Казань", //адрес юр.лица, необязательный параметр
"status": 2, //правовой статус: "1" - юридическое лицо, "2" - физическое лицо, необязательный параметр
"organization_id": 1, //id организации, необязательный параметр
"role_id": 7, //id роли пользователя, необязательный параметр: "6", "7" - обычный пользователь, "10" - админ ведомства, "8" - администратор всех ведомств
"fio": "Иванов И.И." //ФИО пользователя, необязательный параметр
}
// OUT <---
{
"res": 1,
"resText": "",
"user": {
"id": "6391",
"login": "login",
"fio": "Иванов И.И.",
"uvd_department_id": "62", //id ведомства, задания которого будут отображаться в интерфейсе map3d_mcs для AРМ Губернатора
"users_site_type": "2", //принадлежность пользователя ведомству ("1") или организации ("2")
"satellites_view": "t", //видимость спутников в АРМ Губернатора: "t" или "f"
"role_id": "7", //id роли пользователя: "6", "7" - обычный пользователь, "10" - админ ведомства, "8" - администратор всех ведомств
"matrix": "(-0.756602,0.653875,0.00069758),(0.21426,0.246913,0.945054),(0.617775,0.715179,-0.326914),(2.34475e+06,2.7075e+06,5.26909e+06)",//матрица перелета для АРМ Губернатора
"department_id": "1" //id ведомства/организации
}
}
[A] DELETE /users/:id
Удаление пользователя (логическое удаление).
// OUT <---
{
"res": 1,
"resText": ""
}
[A] DELETE /users/:id/hard
Удаление пользователя (физическое удаление для тестов).
// OUT <---
{
"res": 1,
"resText": ""
}
cerebellum-rest-geodata
Получение геоинформационных данных
/layers
[t] GET /layers
Получение списка слоев.
// OUT <---
{
"res": 1,
"resText": "",
"layers": [
{
"layer_id": "1375", //id слоя
"name": "Дороги", //название слоя на русском
"url": "http://trust.geo4.me/geoserver/wms", //url слоя
"type_name": "workspace:r63_k100_dorogi_l", //название слоя на геосервере
"style": "baselayer_dorogi_l", //название стиля
"have_legend": "f", //сохранена ли в базе легенда слоя: "t", "f"
"service": "WMS", //тип слоя: "WMS" или "WFS"
"poly": "f", //является ли слой полигональным: "t", "f"
"server_id": "6", //id геосервера
"group_id": "351", //id группы слоев
"from_infrastructure": "t", //находится ли слой в базе с Инфраструктурой: "t", "f"
"user_id": "6", //id пользователя, создавшего слой
"group_name": "Базовые слои Самарской области", //название группы слоев
"read": "t", //может ли данный пользователь видеть слой: "t", "f"
"write": "t", //может ли данный пользователь изменять объекты слоя: "t", "f"
"edit": "t" //может ли данный пользователь администрировать слой: "t", "f"
},
... //следующие элементы списка слоев
]
}
[h] GET /layers/:id
Получение данных по слою.
// OUT <---
{
"res": 1,
"resText": "",
"layer": {
"name": "Дороги", //название слоя на русском
"url": "http://trust.geo4.me/geoserver/wms", //url слоя
"type_name": "workspace:r63_k100_dorogi_l", //название слоя на геосервере формата "namespace:layerName"
"style": "baselayer_dorogi_l", //название стиля
"service": "WMS", //тип слоя: "WMS" или "WFS"
"read": "t", //может ли данный пользователь видеть слой: "t", "f"
"write": "t", //может ли данный пользователь изменять объекты слоя: "t", "f"
"edit": "t", //может ли данный пользователь администрировать слой: "t", "f"
"id": "1375", //id слоя
"namespace": "workspace", //получаем "namespace" из "type_name"
"server": "http://trust.geo4.me/geoserver/", //геосервер
"lname": "r63_k100_dorogi_l", //получаем "layerName" из "type_name"
"legend_url": "http://trust.geo4.me/geoserver/wms?REQUEST=GetLegendGraphic&VERSION=1.0.0&FORMAT=image/png&WIDTH=20&HEIGHT=20&LAYER=r63_k100_dorogi_l&style=baselayer_dorogi_l" //url легенды слоя
}
}
/groups
[t] GET /groups
Получение списка групп слоев.
// OUT <---
{
"res": 1,
"resText": "",
"groups": [
{
"id": "2", //id группы слоев
"name": "Задачи", //название группы
"order": "2", //порядок отображения группы
"department_id_create": "1" //id ведомства, которым была создана группа
},
... //следующие элементы списка групп
]
}
/geoservers
[t] GET /geoservers
Получить список геосерверов.
// OUT <---
{
"res": 1,
"resText": "",
"geoservers": [
{
"id": "6", // id геосервера
"name": "geoserver", // название
"link": "http://server.name/geoserver/" //url
}
]
}
/datastores
[AI] GET /datastores/saved
Получение списка сохраненных хранилищ данных.
// OUT <---
{
"res": 1,
"resText": "",
"saved_datastores": [
{
"id": "3", // id хранилища
"name": "store_name", // название
"host": "server.name", // хост
"port": "5432", // порт
"database": "database_name", // название базы данных
"have_infrastructure": "t" // есть ли "Инфраструктура": "t" или "f"
},
... // следующие элементы списка сохраненных хранилищ данных
]
}
/map/default
[t] GET /map/default
Получение положения карты по умолчанию.
// OUT <---
{
"res": 1,
"resText": "",
"map": {
"center": {
"lon": "37.672462463379", // координата lon центра положения карты по умолчанию
"lat": "55.768051898362" // координата lat центра положения карты по умолчанию
},
"zoom": "14" // зум карты
}
}
/city
[t] GET /city
Получение списка городов.
// OUT <---
{
"res": 1,
"resText": "",
"cities": [
{
"id": "2", //id города
"name": "Салемал", //название города
"photo": "salemal.png", //название фотографии города
"matrix": "(-0.935185,0.35416,0.000667788),(-0.33804,-0.893178,0.296583),(0.105634,0.277134,0.955007),(894018,2.34968e+06,5.85466e+06)", //матрица перелета
"order": "2" //порядковый номер города для отображения в списке
},
... //следующие элементы списка городов
]
}