- Пользователи
- Список пользователей
- Количество пользователей
- Информация о пользователе
- Роли пользователей
- Создание пользователя
- Изменение пользователя
- Удаление пользователя
- Экспорт пользователя
- Управление пользователями (вариант 2)
- Управление типами пользователей
- Управление метками пользователей
- Мониторинг пользователей
- Датчики пользователей
- Объекты слоя
- Создание объекта
- Список возможных значений для полей, связанных с таблицами
- Изменение объекта
- Удаление объекта
- Добавление медиа файлов к объекту
- Список объектов
- Количество объектов
- Объект слоя
- Список объектов в точке
- Список объектов в области
- Получение медиа информации всех объектов
- Получение медиа информации объекта
- Получение медиа файла
- Метрические характеристики произвольной геометрии
Главная страница
Базовые слои
GET /baselayers
Пример запроса:
GET /baselayers?apiVersion=2.0
apiVersion: версия API, 2.0
Ответ:
Статус: 200 - успешное выполнение
Формат: json
[
{
"id": 1,
"name": "Карта России",
"code": 1940335525,
"className": "M.TileLayer",
"firstKey": "https://basemap.geo4.me/worldmap/{z}/{x}/{y}.png",
"options": "{minZoom: 2, maxZoom: 19}",
"customClass": null,
"position": 1,
"space": false,
"main": true
}
]
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Карта
GET /mapextent
Пример запроса:
GET /mapextent
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"mapExtent": {
"id": 6,
"name": "Наименование",
"extent": {
"minX": 47.867088965011725,
"minY": 54.233424150623314,
"maxX": 54.99757390915839,
"maxY": 56.72299186350165,
"projection": "EPSG:4326"
},
"main": true
}
}
// текущее положение карты, объект // id, целое число // название, строка // расположение, объект // минимальное значение X, вещественное число // минимальное значение Y, вещественное число // максимальное значение X, вещественное число // максимальное значение Y, вещественное число // проекция // является основным положением карты
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Текущая версия
GET /version
Пример запроса:
GET /version
Ответ:
Статус: 200 - успешное выполнение
Формат: json
3.31.0
// текущая версия приложения
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Текущая локаль
GET /locale
Пример запроса:
GET /locale
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"language": "ru",
"country": "Russia",
"code": "ru"
}
// язык, строка // страна, строка // код, строка
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Языки
Доступные языки
GET /languages
Структура запроса:
GET /languages
Ответ:
Статус: 200 - успешное выполнение
Формат: json
[
{
"id": 1,
"code": "ru",
"name": "Русский",
"position": 1,
"visible": true,
"main": true,
"current": true
}
]
// id, целое число // двухбуквенный код язык, строка // название языка, строка // позиция в списке, целое число // показывать ли в интерфейсе, логическое // язык сервера, логическое // текущий язык пользователя, строка
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Переключение языка
Передается параметр с любым запросом, ответ от основного запроса
/?lang=en
Структура запроса:
/?lang=en
lang: код языка
Ответ:
Статус: 200 - успешное выполнение
Ответ от основного запроса
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Авторизация
Авторизация на сервере
POST /auth/token
Структура запроса:
POST /auth/token
Пример запроса:
{
"login": "testlogin",
"password": "12345"
}
// логин пользователя, строка // пароль, строка
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"token": "eyJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2MjM3NjMzNzIs",
"refreshToken": "eyJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2MjQzNj",
"ttl": 3600
}
// ключ доступа, строка // ключ для обновления ключа доступа, строка // время жизни ключа доступа в секундах, целое число
Статус: 401 - логин или пароль переданы неверно
Формат: text/plain
Содержит описание ошибки
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Обновление ключа доступа
GET /auth/token/refresh
Структура запроса:
GET /auth/token/refresh?refreshToken=RHJNK5KJBGJARB654JBFDBGRJKTB45TJBGJARTB4KJG
refreshToken: ключ для обновления ключа доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"token": "hwk12poi3f1",
"refreshToken": "mbs90lon2a8",
"ttl": 3600
}
// новый ключ доступа, строка // новый ключ для обновления ключа доступа, строка // время жизни ключа доступа в секундах, целое число
Статус: 400 - не передан параметр refreshToken
Формат: text/plain
Содержит описание ошибки
Статус: 404 - параметр refreshToken не найден в системе
Формат: text/plain
Содержит описание ошибки
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Авторизован ли пользователь
GET /auth
Структура запроса:
GET /auth?token=9d63ac832398e2bc8992459fa5551b6b
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"authenticated": true,
"user": {
"id": 110,
"login": "login",
"name": "Пользователь",
"info": {
"address": "",
"phone": "",
"email": "test@gmail.com",
"passport": ""
},
"organizations": [
{
"main": true,
"organizationId": 4
}
],
"tracking": true,
"avatarUpdateDate": null,
"tags": [
{
"id": 1
}
],
"role": {
"id": 10,
"title": "Администратор организации",
"code": "ORG_ADMINISTRATOR",
"order": 3
},
"typeId": 1,
"roleId": 10
"organizationId": 4,
"organizationName": "Организация",
}
}
// true, если пользователь авторизован, иначе false, логическое // данные о пользователе, если он авторизован, объект // id пользователя, целое число // логин пользователя // имя пользователя, строка // данные о пользователе, объект // адрес пользователя, строка // телефон, строка // электронная почта, строка // паспортные данные, строка // доступные организации, массив объектов // является ли основной, логичское // id организации, целое число // включен ли трекинг, логическое // дата обновления аватарки, если она есть, timestamp // прикрепленные метки, массив объектов // id метки, целое число // информация о роли, объект // id, целое число // название, строка // код, строка // id типа, целое число // id роли, целое число // id основной организации, целое число // название основной организации, строка
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Текущий пользователь
GET /users/current
Структура запроса:
GET /users/current?token=9d63ac832398e2bc8992459fa5551b6b
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"user": {
"id": 110,
"login": "login",
"name": "Пользователь",
"info": {
"address": "",
"phone": "",
"email": "test@gmail.com",
"passport": ""
},
"organizations": [
{
"main": true,
"organizationId": 4
}
],
"tracking": true,
"avatarUpdateDate": null,
"tags": [
{
"id": 1
}
],
"role": {
"id": 10,
"title": "Администратор организации",
"code": "ORG_ADMINISTRATOR",
"order": 3
},
"typeId": 1,
"roleId": 10
"organizationId": 4,
"organizationName": "Организация",
}
}
// true, если пользователь авторизован, иначе false, логическое // данные о пользователе, если он авторизован, объект // id пользователя, целое число // логин пользователя // имя пользователя, строка // данные о пользователе, объект // адрес пользователя, строка // телефон, строка // электронная почта, строка // паспортные данные, строка // доступные организации, массив объектов // является ли основной, логичское // id организации, целое число // включен ли трекинг, логическое // дата обновления аватарки, если она есть, timestamp // прикрепленные метки, массив объектов // id метки, целое число // информация о роли, объект // id, целое число // название, строка // код, строка // id типа, целое число // id роли, целое число // id основной организации, целое число // название основной организации, строка
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Выход
GET /logout
Структура запроса:
GET /logout?token=9d63ac832398e2bc8992459fa5551b6b
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"status": "ok"
}
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Организации
Список организаций
GET /organizations
GET /organizations?token=9c6333f651846cfc94feae0597b61224
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
[{
"id": 3,
"name": "Клиент 1",
"logo": "logo_3.png",
"client": true,
"mapinformerDeeplink": "https://mapinformer.geo4.me/Yy3keapLj3",
"info": {
"address": "",
"phone": "",
"fax": "",
"email": "",
"inn": null,
"kpp": null,
"bank": "",
"bankKpp": null,
"bankBik": null,
"bankSchet": "",
"fullName": "",
"account": "",
"headFio": "",
"accountantFio": "",
"maxUsersCount": null
},
"totalUsers": 2,
"dataStoreId": 3,
"clusterId": 1,
"clusterName": "По умолчанию1",
"mapExtentBBox": {
"minX": 37.4973678588867,
"minY": 55.72034270027683,
"maxX": 37.73769378662114,
"maxY": 55.79375442691235,
"projection": "EPSG:4326"
}
},...]
// id организации, целое число // название организации, строка // файл логотипа, строка // клиентская ли организация, логическое // ссылка для регистрации в организации, строка // дополнительная информация, объект // адрес, строка // телефон, строка // факс, строка // email, строка // ИНН, целое число // КПП, целое число // банк, строка // КПП банка, целое число // БИК банка, целое число // кор.счет банка, строка // полное юридическое название организации // счет организации, строка // ФИО руководителя, строка // ФИО бухгалтера, строка // максимальное количество пользователей в организации, целое число // всего пользователей в организации // id хранилища данных, целое число // id кластера, целое число // название кластера, строка // границы карты, объект // минимальный Х, вещественное число // минимальный Y, вещественное число // максимальный Х, вещественное число // максимальный Y, вещественное число // проекция, строка
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Информация об организации
GET /organizations/{id}
GET /organizations/1?token=9c6333f651846cfc94feae0597b61224
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"id": 3,
"name": "Клиент 1",
"logo": "logo_3.png",
"client": true,
"mapinformerDeeplink": "https://mapinformer.geo4.me/Yy3keapLj3",
"info": {
"address": "",
"phone": "",
"fax": "",
"email": "",
"inn": null,
"kpp": null,
"bank": "",
"bankKpp": null,
"bankBik": null,
"bankSchet": "",
"fullName": "",
"account": "",
"headFio": "",
"accountantFio": "",
"maxUsersCount": null
},
"totalUsers": 2,
"dataStoreId": 3,
"clusterId": 1,
"clusterName": "По умолчанию1",
"mapExtentBBox": {
"minX": 37.4973678588867,
"minY": 55.72034270027683,
"maxX": 37.73769378662114,
"maxY": 55.79375442691235,
"projection": "EPSG:4326"
}
}
// id организации, целое число // название организации, строка // файл логотипа, строка // клиентская ли организация, логическое // ссылка для регистрации в организации, строка // дополнительная информация, объект // адрес, строка // телефон, строка // факс, строка // email, строка // ИНН, целое число // КПП, целое число // банк, строка // КПП банка, целое число // БИК банка, целое число // кор.счет банка, строка // полное юридическое название организации // счет организации, строка // ФИО руководителя, строка // ФИО бухгалтера, строка // максимальное количество пользователей в организации, целое число // всего пользователей в организации // id хранилища данных, целое число // id кластера, целое число // название кластера, строка // границы карты, объект // минимальный Х, вещественное число // минимальный Y, вещественное число // максимальный Х, вещественное число // максимальный Y, вещественное число // проекция, строка
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Описание организации
GET /organizations/{id}/about
GET /organizations/1?token=9c6333f651846cfc94feae0597b61224
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: html
описание организации в формате html
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Создание организации
Доступно только для пользователей с правами гл. администратора и администратора организации
POST /organizations
POST /organizations?token=9c6333f651846cfc94feae0597b61224&apiVersion=2.0
token: ключ доступа
apiVersion: версия REST API 2.0
Пример запроса:
Формат: json
{
"name": "Организация",
"dataStoreId": 3,
"clusterId": 1,
"client": true,
"assignedOrganizationId": 3,
"info": {
"about": "",
"account": "",
"accountantFio": "",
"accountantSignatureUuid": null,
"address": "",
"bank": "",
"bankBik": "",
"bankKpp": "",
"bankSchet": "",
"email": "",
"fax": "",
"fullName": "",
"headFio": "",
"headSignatureUuid": null,
"inn": "",
"kpp": "",
"logoUuid": null,
"maxUsersCount": "",
"phone": "",
"stampUuid": null
},
"mapExtent": [
56.72299186350165,
54.233424150623314,
54.997573909158405,
47.86708896501173
]
}
// название организации, строка // id хранилища данных (доступно только гл. админу), целое число // id кластера (доступно только гл. админу), целое число // является ли организация клиентской (доступно только гл. админу), логическое // дополнительная информация, объект // информация об организации, строка // описание, текст // счет организации, строка // ФИО бухгалтера, строка // подпись бухгалтера, uuid загруженного файла, строка // адрес, строка // банк, строка // БИК банка, целое число // КПП банка, целое число // кор. счет банка, строка // email, строка // факс, строка // полное юридическое название организации, строка // ФИО директора, строка // подпись директора, uuid загруженного файла, строка // ИНН, целое число // КПП, целое число // логотип организации, uuid загруженного файла, строка // максимальное количество пользователей в организации, целое число // телефон, строка // печать, uuid загруженного файла, строка // минимальный Х, вещественное число // минимальный Y, вещественное число // максимальный Х, вещественное число // максимальный Y, вещественное число
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"id": 3,
"name": "Клиент 1",
"logo": "logo_3.png",
"client": true,
"mapinformerDeeplink": "https://mapinformer.geo4.me/Yy3keapLj3",
"info": {
"address": "",
"phone": "",
"fax": "",
"email": "",
"inn": null,
"kpp": null,
"bank": "",
"bankKpp": null,
"bankBik": null,
"bankSchet": "",
"fullName": "",
"account": "",
"headFio": "",
"accountantFio": "",
"maxUsersCount": null
},
"totalUsers": 2,
"dataStoreId": 3,
"clusterId": 1,
"clusterName": "По умолчанию1",
"mapExtentBBox": {
"minX": 37.4973678588867,
"minY": 55.72034270027683,
"maxX": 37.73769378662114,
"maxY": 55.79375442691235,
"projection": "EPSG:4326"
}
}
// id организации, целое число // название организации, строка // файл логотипа, строка // клиентская ли организация, логическое // ссылка для регистрации в организации, строка // дополнительная информация, объект // адрес, строка // телефон, строка // факс, строка // email, строка // ИНН, целое число // КПП, целое число // банк, строка // КПП банка, целое число // БИК банка, целое число // кор.счет банка, строка // полное юридическое название организации // счет организации, строка // ФИО руководителя, строка // ФИО бухгалтера, строка // максимальное количество пользователей в организации, целое число // всего пользователей в организации // id хранилища данных, целое число // id кластера, целое число // название кластера, строка // границы карты, объект // минимальный Х, вещественное число // минимальный Y, вещественное число // максимальный Х, вещественное число // максимальный Y, вещественное число // проекция, строка
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Изменение организации
Доступно только для пользователей с правами гл. администратора и администратора организации
PUT /organizations/{id}
PUT /organizations/35?token=9c6333f651846cfc94feae0597b61224&apiVersion=2.0
id: id организации
token: ключ доступа
apiVersion: версия REST API 2.0
Пример запроса:
Формат: json
{
"id": 1,
"name": "Организация",
"dataStoreId": 3,
"clusterId": 1,
"client": true,
"assignedOrganizationId": 3,
"info": {
"about": "",
"account": "",
"accountantFio": "",
"accountantSignatureUuid": null,
"accountantSignatureDeleted": false,
"address": "",
"bank": "",
"bankBik": "",
"bankKpp": "",
"bankSchet": "",
"email": "",
"fax": "",
"fullName": "",
"headFio": "",
"headSignatureUuid": null,
"headSignatureDeleted": false,
"inn": "",
"kpp": "",
"logoUuid": null,
"logoDeleted": false,
"maxUsersCount": "",
"phone": "",
"stampUuid": null,
"stampDeleted": false
},
"mapExtent": [
56.72299186350165,
54.233424150623314,
54.997573909158405,
47.86708896501173
]
}
// id организации, целое число // название организации, строка // id хранилища данных (доступно только гл. админу), целое число // id кластера (доступно только гл. админу), целое число // является ли организация клиентской (доступно только гл. админу), логическое // дополнительная информация, объект // информация об организации, строка // счет организации, строка // ФИО бухгалтера, строка // подпись бухгалтера, uuid загруженного файла, строка // удален ли файл подписи бухгалтера, логическое // адрес, строка // банк, строка // БИК банка, целое число // КПП банка, целое число // кор. счет банка, строка // email, строка // факс, строка // полное юридическое название организации, строка // ФИО директора, строка // подпись директора, uuid загруженного файла, строка // удален ли файл подписи директора, логическое // ИНН, целое число // КПП, целое число // логотип организации, uuid загруженного файла, строка // удален ли файл логотипа, логическое // максимальное количество пользователей в организации, целое число // телефон, строка // печать, uuid загруженного файла, строка // удален ли файл печати, логическое // минимальный Х, вещественное число // минимальный Y, вещественное число // максимальный Х, вещественное число // максимальный Y, вещественное число
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"id": 3,
"name": "Клиент 1",
"logo": "logo_3.png",
"client": true,
"mapinformerDeeplink": "https://mapinformer.geo4.me/Yy3keapLj3",
"info": {
"address": "",
"phone": "",
"fax": "",
"email": "",
"inn": null,
"kpp": null,
"bank": "",
"bankKpp": null,
"bankBik": null,
"bankSchet": "",
"fullName": "",
"account": "",
"headFio": "",
"accountantFio": "",
"maxUsersCount": null
},
"totalUsers": 2,
"dataStoreId": 3,
"clusterId": 1,
"clusterName": "По умолчанию1",
"mapExtentBBox": {
"minX": 37.4973678588867,
"minY": 55.72034270027683,
"maxX": 37.73769378662114,
"maxY": 55.79375442691235,
"projection": "EPSG:4326"
}
}
// id организации, целое число // название организации, строка // файл логотипа, строка // клиентская ли организация, логическое // ссылка для регистрации в организации, строка // дополнительная информация, объект // адрес, строка // телефон, строка // факс, строка // email, строка // ИНН, целое число // КПП, целое число // банк, строка // КПП банка, целое число // БИК банка, целое число // кор.счет банка, строка // полное юридическое название организации // счет организации, строка // ФИО руководителя, строка // ФИО бухгалтера, строка // максимальное количество пользователей в организации, целое число // всего пользователей в организации // id хранилища данных, целое число // id кластера, целое число // название кластера, строка // границы карты, объект // минимальный Х, вещественное число // минимальный Y, вещественное число // максимальный Х, вещественное число // максимальный Y, вещественное число // проекция, строка
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Удаление организации
Доступно только для пользователей с правами гл. администратора
DELETE /organizations/{id}
DELETE /organizations/35?token=9c6333f651846cfc94feae0597b61224
id: id организации
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"delete": true
}
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Экспорт организации
Доступно только для пользователей с правами гл. администратора и гл. инспектора
GET /organizations.xlsx
GET /organizations.xlsx?token=9c6333f651846cfc94feae0597b61224
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
Возвращает бинарный файл
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Пользователи
Список пользователей
GET /users
GET /users?token=9c6333f651846cfc94feae0597b61224
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
[{
"id": 108,
"login": "login",
"name": "ФИО",
"tracking": true,
"organizationId": 4,
"organizationName": "Организация",
"organizations": [
{
"main": true,
"organizationId": 4
},...
],
"roleId": 10,
"typeId": 25,
"info": {
"address": "",
"phone": "",
"email": "",
"passport": ""
},
"avatarUpdateDate": 1609362406957,
"tags": [
{
"id": 43
},...
]
},...]
// id пользователя, целое число // логин пользователя, строка // ФИО пользователя, строка // включен ли мониторинг, логическое // id основной организации, целое число // название основной организации, строка // все организации, массив объектов // является ли организация основной, логическое // id организации, целое число // id роли пользователя, целое число // id типа пользователя, целое число // информация о пользователе, объект // адрес, строка // телефон, строка // электронная почта, строка // паспортные данные, строка // время последнего обновления аватара, миллисекунды // метки, массив объектов // id метки, целое число
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Количество пользователей
GET /users/count
GET /users/count?token=9c6333f651846cfc94feae0597b61224
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: text/plain
233
// количество пользователей, целое число
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Информация о пользователе
GET /users
GET /users/108?token=9c6333f651846cfc94feae0597b61224
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"id": 108,
"login": "login",
"name": "ФИО",
"tracking": true,
"organizationId": 4,
"organizationName": "Организация",
"organizations": [
{
"main": true,
"organizationId": 4
},...
],
"roleId": 10,
"typeId": 25,
"info": {
"address": "",
"phone": "",
"email": "",
"passport": ""
},
"avatarUpdateDate": 1609362406957,
"tags": [
{
"id": 43
},...
]
}
// id пользователя, целое число // логин пользователя, строка // ФИО пользователя, строка // включен ли мониторинг, логическое // id основной организации, целое число // название основной организации, строка // все организации, массив объектов // является ли организация основной, логическое // id организации, целое число // id роли пользователя, целое число // id типа пользователя, целое число // информация о пользователе, объект // адрес, строка // телефон, строка // электронная почта, строка // паспортные данные, строка // время последнего обновления аватара, миллисекунды // метки, массив объектов // id метки, целое число
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Роли пользователей
Доступно только для пользователей с правами администратора
GET /users/roles
GET /users/roles?token=9c6333f651846cfc94feae0597b61224
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
[
{
"id": 7,
"title": "Пользователь организации",
"code": "ORG_USER",
"order": 5
},...
]
// id роли, целое число // название роли, строка // код роли, строка // порядок, целое число
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Создание пользователя
Доступно только для пользователей с правами гл. администратора, администратора организации, администратора кластера
POST /users
POST /users?token=9c6333f651846cfc94feae0597b61224
token: ключ доступа
Пример запроса:
Формат: json
{
"login": "login",
"name": "ФИО",
"password": "",
"roleId": 10,
"typeId": 1,
"organizationId": 4,
"additionalOrgIds": [24],
"tracking": false,
"info": {
"passport": "",
"address": "",
"phone": "",
"email": ""
},
"tags": [12,14],
"avatarUuid": "hrajjtwyjtwyjtjstyjstywjtsjtyj.jpg"
}
// логин, строка // имя пользователя, строка // пароль, строка // id роли, целое число // id типа, целое число // id основной организации, целое число // массив id дополнительных организаций // включен ли мониторинг, логическое // информация о пользователе, объект // паспортные данные, строка // адрес пользователя, строка // номер телефона, строка // электронная почта, строка // массив id меток // uuid загруженного аватара, строка
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"id": 108,
"login": "login",
"name": "ФИО",
"tracking": true,
"organizationId": 4,
"organizationName": "Организация",
"organizations": [
{
"main": true,
"organizationId": 4
},...
],
"roleId": 10,
"typeId": 25,
"info": {
"address": "",
"phone": "",
"email": "",
"passport": ""
},
"avatarUpdateDate": 1609362406957,
"tags": [
{
"id": 43
},...
]
}
// id пользователя, целое число // логин пользователя, строка // ФИО пользователя, строка // включен ли мониторинг, логическое // id основной организации, целое число // название основной организации, строка // все организации, массив объектов // является ли организация основной, логическое // id организации, целое число // id роли пользователя, целое число // id типа пользователя, целое число // информация о пользователе, объект // адрес, строка // телефон, строка // электронная почта, строка // паспортные данные, строка // время последнего обновления аватара, миллисекунды // метки, массив объектов // id метки, целое число
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Изменение пользователя
Доступно только для пользователей с правами гл. администратора, администратора организации, администратора кластера
PUT /users/{id}
PUT /users/24?token=9c6333f651846cfc94feae0597b61224
id: id пользователя
token: ключ доступа
Пример запроса:
Формат: json
{
"id": 24,
"login": "login",
"name": "ФИО",
"password": "",
"roleId": 10,
"typeId": 1,
"organizationId": 4,
"additionalOrgIds": [24],
"tracking": false,
"info": {
"passport": "",
"address": "",
"phone": "",
"email": ""
},
"tags": [12,14],
"avatarUuid": "hrajjtwyjtwyjtjstyjstywjtsjtyj.jpg",
"avatarDeleted": false
}
// id пользователя, целое число // логин, строка // имя пользователя, строка // пароль, строка // id роли, целое число // id типа, целое число // id основной организации, целое число // массив id дополнительных организаций // включен ли мониторинг, логическое // информация о пользователе, объект // паспортные данные, строка // адрес пользователя, строка // номер телефона, строка // электронная почта, строка // массив id меток // uuid нового загруженного аватара, строка // если надо удалить аватарку, логическое
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"id": 24,
"login": "login",
"name": "ФИО",
"tracking": true,
"organizationId": 4,
"organizationName": "Организация",
"organizations": [
{
"main": true,
"organizationId": 4
},...
],
"roleId": 10,
"typeId": 25,
"info": {
"address": "",
"phone": "",
"email": "",
"passport": ""
},
"avatarUpdateDate": 1609362406957,
"tags": [
{
"id": 43
},...
]
}
// id пользователя, целое число // логин пользователя, строка // ФИО пользователя, строка // включен ли мониторинг, логическое // id основной организации, целое число // название основной организации, строка // все организации, массив объектов // является ли организация основной, логическое // id организации, целое число // id роли пользователя, целое число // информация о пользователе, объект // id пользователя, целое число // адрес, строка // телефон, строка // электронная почта, строка // паспортные данные, строка // время последнего обновления аватара, миллисекунды // метки, массив объектов // id метки, целое число
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Удаление пользователя
Доступно только для пользователей с правами гл. администратора, администратора организации, администратора кластера
DELETE /users/{id}
DELETE /users/24?token=9c6333f651846cfc94feae0597b61224
id: id пользователя
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"delete": true
}
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Экспорт пользователя
Доступно только для пользователей с правами гл. администратора, администратора организации, администратора кластера
GET /users.xlsx
GET /users.xlsx?token=9c6333f651846cfc94feae0597b61224
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
Возвращает бинарный файл
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Отчеты
Список отчетов
GET /jreports
Структура запроса:
GET /jreports?token=9c6333f651846cfc94feae0597b61224
token: ключ доступа
editable: дополнительный параметр, возвращает список отчетов, которые могут быть отредактированы
Ответ:
Статус: 200 - успешное выполнение
Формат: json
[
{
"id": 1556,
"name": "Отчет с разными параметрам",
"description": "отчет для тестирования",
"preferredFormat": "xlsx",
"dataStoreId": 1
"parameters": [
{
"id": 1505,
"description": "с",
"type": "date",
"name": "in_date_from",
"lib": false,
"listPossibleValues": null,
"defaultValue": "d+7200",
"hint": "начало периода",
"required": true,
"period": true
},
{
"id": 1506,
"description": "по",
"type": "date",
"name": "in_date_till",
"lib": false,
"listPossibleValues": null,
"defaultValue": "n+0",
"hint": "конец периода",
"required": true,
"period": false
},
{
"id": 1507,
"description": "Список из БД",
"type": "int",
"name": "remote",
"lib": true,
"listPossibleValues": null,
"defaultValue": null,
"hint": "возможные значения для этого поля необходимо запросить отдельно",
"required": true,
"period": false
},
{
"id": 1774,
"description": "Вещественное число",
"type": "num",
"name": "double",
"lib": false,
"listPossibleValues": null,
"defaultValue": "4.6",
"hint": "",
"required": false,
"period": false
},
{
"id": 1772,
"description": "Логическое поле",
"type": "boolean",
"name": "boolean",
"lib": false,
"listPossibleValues": null,
"defaultValue": "true",
"hint": "значения да или нет",
"required": false,
"period": false
},
{
"id": 1775,
"description": "Целое число",
"type": "int",
"name": "Integer",
"lib": false,
"listPossibleValues": null,
"defaultValue": "18",
"hint": "обычное целое число",
"required": false,
"period": false
},
{
"id": 1776,
"description": "Списко строк",
"type": "list",
"name": "list",
"lib": false,
"listPossibleValues": {
"possibleValues": [
"один",
"два",
"три",
"четыре ",
"пять"
]
},
"defaultValue": "три",
"hint": "списко из строк",
"required": false,
"period": false
}
]
}, ...
]
// id отчета, целое число // название отчета, строка // описание отчета, строка // предпочтительный формат выгрузки отчета (pdf,xsls,doc,rtf), строка // id хранилища, целое число // список параметров, массив // id параметра, целое число // название параметра, строка // тип, строка // английское название, строка // получать ли возможные значения дополнительно из БД (для типа "int" может быть true), логическое // список возможных значений (для типа "list" не пустое), массив строк // значение по умолчанию, строка // описание параметра, строка // является ли поле обязательным, логическое // сцепить ли со следующим в период (может быть true только для типа "date" или "date_without_time" и если дальше следует параметр того же типа),
Тип параметров:
- date: дата со временем (timestamp). Если два поля идут подряд, то из можно связать в период (period=true). defaultValue состоит из следующего выражения (n|d|w|m|y)(+|-)секунды, например n-7200 или w+14400, где n-сейчас, d-начало суток, w-начало текущей недели, m-начало текущего месяца, y-начало текущего года
- date_without_time: дата (date). Если два поля идут подряд, то из можно связать в период (period=true). defaultValue состоит из следующего выражения (n|d|w|m|y)(+|-)секунды, например n-7200 или w+14400, где n-сейчас, d-начало суток, w-начало текущей недели, m-начало текущего месяца, y-начало текущего года
- int: целое число (integer). Если lib=true, то необходимо запросить список доступных значений
- num: вещественное число (double)
- boolean: логическое (boolean)
- text: текст (string)
- list: список текстовых значений (list). Список конечен и заранее сформирован
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Получение отчета по id
GET /jreports/{reportId}
Структура запроса:
GET /jreports/705?token=9c6333f651846cfc94feae0597b61224
reportId: id отчета
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"id": 1556,
"name": "Отчет с разными параметрам",
"description": "отчет для тестирования",
"preferredFormat": "xlsx",
"dataStoreId": 1
"parameters": [
{
"id": 1505,
"description": "с",
"type": "date",
"name": "in_date_from",
"lib": false,
"listPossibleValues": null,
"defaultValue": "d+7200",
"hint": "начало периода",
"sourceQuery": null,
"required": true,
"period": true
},
{
"id": 1506,
"description": "по",
"type": "date",
"name": "in_date_till",
"lib": false,
"listPossibleValues": null,
"defaultValue": "n+0",
"hint": "конец периода",
"sourceQuery": null,
"required": true,
"period": false
},
{
"id": 1507,
"description": "Список из БД",
"type": "int",
"name": "remote",
"lib": true,
"listPossibleValues": null,
"defaultValue": null,
"sourceQuery": "SELECT id,name from users.organizations Limit 20 order by id DESC",
"hint": "возможные значения для этого поля необходимо запросить отдельно",
"required": true,
"period": false
},
{
"id": 1774,
"description": "Вещественное число",
"type": "num",
"name": "double",
"lib": false,
"listPossibleValues": null,
"defaultValue": "4.6",
"hint": "",
"sourceQuery": null,
"required": false,
"period": false
},
{
"id": 1772,
"description": "Логическое поле",
"type": "boolean",
"name": "boolean",
"lib": false,
"listPossibleValues": null,
"defaultValue": "true",
"hint": "значения да или нет",
"sourceQuery": null,
"required": false,
"period": false
},
{
"id": 1775,
"description": "Целое число",
"type": "int",
"name": "Integer",
"lib": false,
"listPossibleValues": null,
"defaultValue": "18",
"hint": "обычное целое число",
"sourceQuery": null,
"required": false,
"period": false
},
{
"id": 1776,
"description": "Списко строк",
"type": "list",
"name": "list",
"lib": false,
"listPossibleValues": {
"possibleValues": [
"один",
"два",
"три",
"четыре ",
"пять"
]
},
"defaultValue": "три",
"hint": "списко из строк",
"sourceQuery": null,
"required": false,
"period": false
}
]
}
// id отчета, целое число // название отчета, строка // описание отчета, строка // предпочтительный формат выгрузки отчета (pdf,xsls,doc,rtf), строка // id хранилища, целое число // список параметров, массив // id параметра, целое число // название параметра, строка // тип, строка // английское название, строка // получать ли возможные значения дополнительно из БД (для типа "int" может быть true), логическое // список возможных значений (для типа "list" не пустое), массив строк // значение по умолчанию, строка // описание параметра, строка // SQL-строка, строка // является ли поле обязательным, логическое // сцепить ли со следующим в период (может быть true только для типа "date" или "date_without_time" и если дальше следует параметр того же типа),
Тип параметров
- date: дата со временем (timestamp). Если два поля идут подряд, то из можно связать в период (period=true). defaultValue состоит из следующего выражения (n|d|w|m|y)(+|-)секунды, например n-7200 или w+14400, где n-сейчас, d-начало суток, w-начало текущей недели, m-начало текущего месяца, y-начало текущего года
- date_without_time: дата (date). Если два поля идут подряд, то из можно связать в период (period=true). defaultValue состоит из следующего выражения (n|d|w|m|y)(+|-)секунды, например n-7200 или w+14400, где n-сейчас, d-начало суток, w-начало текущей недели, m-начало текущего месяца, y-начало текущего года
- int: целое число (integer). Если lib=true, то необходимо запросить список доступных значений
- num: вещественное число (double)
- boolean: логическое (boolean)
- text: текст (string)
- list: список текстовых значений (list). Список конечен и заранее сформирован
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Доступные значения параметра из БД
GET /jreports/{reportId}/parameters/{parameterId}/values
Запрос доступен для параметров типа int со свойством lib=true
Структура запроса:
GET /jreports/705/parameters/234/values?token=9c6333f651846cfc94feae0597b61224eyhrwtuwtejetkeyuketkeyuk
reportId: id отчета
parameterId: id параметра
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
[
{
"id": 1,
"name": "Градосервис",
},...
]
// id значения, целое число // название значения, строка
Статус: 404 - параметр не найден
Формат: text/plain
Содержит описание ошибки
Права по умолчанию на отчет
GET /jreports/{reportId}/defaultaccess
Структура запроса:
GET /jreports/705/defaultaccess?token=9c6333f651846cfc94feae0597b61224eyhrwtuwtejetkeyuketkeyuk
reportId: id отчета
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
[
{
"id": 7,
"roleId": null,
"roleName": null
"allRoles": null,
"organizationId": 5,
"organizationName": "ОРГ А",
"allOrganizations": null,
"publicOrganizations": null,
"read": true,
"edit": true
}, ...
]
// id значения, целое число // id роли, целое число // название роли, если выбрана, строка // для всех ролей, логическое // id организации, целое число // название организации, если выбрана, строка // для всех организаций, логическое // true - для клиентских органзаций, false - для не клиентских // права на чтение, логическое // права на изменение, логическое
Загрузка отчета
POST /jreports/upload
Структура запроса:
POST /jreports/upload?token=9c6333f651846cfc94feae0597b61224
token: ключ доступа
Пример запроса:
Формат: multipart/form-data
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary0ohUI5iAAtfIX8A0
Формат отчета: jrxml
FormData(
name: p1dsrje76s18emv27mff1kb0aof3.jrxml,
file: (binary)
)
// поле name в форме, уникальное для файла // xml отчета, созданного через специализированное ПО
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"status": "ok",
"data": ["p198coiisr1o0c1a15vmu1knv5iv3.jrxml"]
}
// статус ответа // uuid загруженного файла
Статус: 403 - нет доступа к загрузке отчетов
Формат: text/plain
Содержит описание ошибки
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Получение параметров только что загруженного отчета
GET /jreports/uploaded/{uuid}
Структура запроса:
GET /jreports/uploaded/p198coiisr1o0c1a15vmu1knv5iv3.jrxml?token=9c6333f651846cfc94feae0597b61224
uuid: uuid файла отчета
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
[{
"name":"in_integer",
"type":"int"
}]
// название, строка // тип, строка
Доступные тип параметров
- date: дата со временем (timestamp). Если два поля идут подряд, то из можно связать в период (period=true). defaultValue состоит из следующего выражения (n|d|w|m|y)(+|-)секунды, например n-7200 или w+14400, где n-сейчас, d-начало суток, w-начало текущей недели, m-начало текущего месяца, y-начало текущего года
- date_without_time: дата (date). Если два поля идут подряд, то из можно связать в период (period=true). defaultValue состоит из следующего выражения (n|d|w|m|y)(+|-)секунды, например n-7200 или w+14400, где n-сейчас, d-начало суток, w-начало текущей недели, m-начало текущего месяца, y-начало текущего года
- int: целое число (integer). Если lib=true, то необходимо запросить список доступных значений
- num: вещественное число (double)
- boolean: логическое (boolean)
- text: текст (string)
- list: список текстовых значений (list). Список конечен и заранее сформирован
Статус: 403 - нет доступа к загрузке отчетов
Формат: text/plain
Содержит описание ошибки
Статус: 404 - отчет не загружен
Формат: text/plain
Содержит описание ошибки
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Создание только что загруженного отчета
POST /jreports
Структура запроса:
POST /jreports?token=9c6333f651846cfc94feae0597b61224
token: ключ доступа
Пример запроса:
Формат: json
{
"name": "Новый отчет",
"xmlFile": "p1dsrk8a6rb2a1os14c1qjg3f73.jrxml",
"description": "создаем новый отчет",
"preferredFormat": "xlsx",
"dataStoreId": "1",
"parameters": [
{
"name": "timestamp",
"type": "date",
"description": "дата и время",
"required": true,
"hint": "описание параметра",
"period": false,
"defaultValue": "d+7200",
"lib": false,
"sourceQuery": null
},...
],
"defaultAccess": [
{
"roleId": 10,
"allRoles": false,
"organizationId": null,
"allOrganizations": true,
"publicOrganizations": null,
"read": true,
"edit": false
}
]
}
// название отчета, строка // uuid файла отчета (приходит при загрузке файла отчета), строка // описание отчета, строка // предпочитаемый формат создания отчета (pdf,xlsx,doc,rtf), строка // id хранилища данных для отчета, целое число // параметры // английское название параметра, строка // тип параметра, строка // название параметра, строка // обязателен ли параметр, логическое число // описание параметра, строка // сцепить со следующим в период (для дат), логическое число // значение по умолчанию, строка // берутся ли значения из БД (для типа int), логическое число // SQL-запрос (для типа int), строка // права на слой по умолчанию // правило // id роли // для всех ролей, логическое // id организации // для всех организаций, логическое // true - для клиентских органзаций, false - для не клиентских // право на чтение // право на изменение
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"id": 1,
"name": "Новый отчет",
"description": "создаем новый отчет",
"preferredFormat": "xlsx",
"dataStoreId": 1,
"parameters": [
{
"id": 1,
"description": "дата и время",
"type": "date",
"name": "timestamp",
"lib": false,
"listPossibleValues": null,
"defaultValue": "d+7200",
"hint": "описание параметра",
"required": true,
"period": false
},...
]
}
Статус: 403 - нет доступа к загрузке отчетов
Формат: text/plain
Содержит описание ошибки
Статус: 404 - отчет не загружен
Формат: text/plain
Содержит описание ошибки
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Изменение отчета
PUT /jreports/{reportId}
Структура запроса:
PUT /jreports/604?token=9c6333f651846cfc94feae0597b61224
reportId: id отчета
token: ключ доступа
Пример запроса:
Формат: json
{
"name": "Измененный отчет",
"description": "меняем отчет",
"preferredFormat": "pdf",
"dataStoreId": "1",
"parameters": [
{
"name": "timestamp",
"type": "date",
"description": "дата и время",
"required": true,
"hint": "описание параметра",
"period": false,
"defaultValue": "d+7200",
"lib": false,
"sourceQuery": null
},...
],
"defaultAccess": [
{
"roleId": 10,
"allRoles": false,
"organizationId": null,
"allOrganizations": true,
"publicOrganizations": null,
"read": true,
"edit": false
}
]
}
// название отчета, строка // описание отчета, строка // предпочитаемый формат создания отчета (pdf,xlsx,doc,rtf), строка // id хранилища данных для отчета, целое число // параметры // английское название параметра, строка // тип параметра, строка // название параметра, строка // обязателен ли параметр, логическое число // описание параметра, строка // сцепить со следующим в период (для дат), логическое число // значение по умолчанию, строка // берутся ли значения из БД (для типа int), логическое число // SQL-запрос (для типа int), строка // права на слой по умолчанию // правило // id роли // для всех ролей, логическое // id организации // для всех организаций, логическое // true - для клиентских органзаций, false - для не клиентских // право на чтение // право на изменение
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"id": 1,
"name": "Измененный отчет",
"description": "меняем отчет",
"preferredFormat": "pdf",
"dataStoreId": 1,
"parameters": [
{
"id": 1,
"description": "дата и время",
"type": "date",
"name": "timestamp",
"lib": false,
"listPossibleValues": null,
"defaultValue": "d+7200",
"hint": "описание параметра",
"required": true,
"period": false
},...
]
}
// статус ответа
Статус: 403 - нет доступа к загрузке отчетов
Формат: text/plain
Содержит описание ошибки
Статус: 404 - отчет не загружен
Формат: text/plain
Содержит описание ошибки
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Удаление отчета
DELETE /jreports/{id}
Структура запроса:
DELETE /jreports/1?token=mbs90lon2adathutyrkrytkirtuiltuoltuiol8
id: id удаляемого отчета
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"delete":true,
"id":1
}
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Генерация отчетов
Для генерации отчетов необходится подключиться по WebSocket
wss://site.domain/ws?token=&lang=
token: ключ доступа
lang: 2-х значное обозначение языка: ru, en ит.д.
Подключение к сервису отчетов
Команда через WebSocket:
{
"command": "CONNECT_TO_REPORTS",
"data": {}
}
В ответ от сервера приходит текущее состояние по отчетам для данного пользователя:
Формат: json
{
"command": "CONNECTED_TO_REPORTS",
"data": [
{
"status": 1,
"name": "1573130284987PdkVAHCv.pdf",
"alias": "Отчет 'Качество работы по заданиям'
от 07.11.2019 15:38:39 (с 08.10.19 15:37 по 07.11.19 15:37) (PDF)",
"expire": 1573133885018,
"format": "pdf",
"taskId": "4yh2441-c201-4e7d-8bfe-0e65b800764b",
"reportId": 1393,
"size": 2945,
"requestDate": 1576840864165
},
{
"status": 2,
"name": null,
"alias": "Отчет \"Качество работы по заданиям\" принят в обработку",
"expire": null,
"format": "xlsx",
"taskId": "rf55441-c201-4e7d-8bfe-0e65b800764b",
"reportId": 1393,
"size": null,
"requestDate": 1576840354165
},
{
"status": 4,
"name": null,
"alias": "Отчет \"Качество работы по заданиям\" отправлен в очередь на создание....",
"expire": null,
"format": "pdf",
"taskId": "d81a2441-c201-4e7d-8bfe-0e65b800764b",
"reportId": 1393,
"size": null,
"requestDate": 1576840874165
}
]
}
// статус отчета, целое число (0,1,2,3,4) // название сгенерированного файла, строка // название отчета или описание стадии, строка // время жизни сгенерированного отчета или null, миллисекунды // формат сгенерированного отчета (pdf,xsls,doc,rtf), строка // id процесса, целое число // id отчета, целое число // размер созданного отчета в байтах или null, целое число // когда был запрошен отчет, миллисекунды
Статусы:
- 1 - отчет сгенерирован
- 0 - отчет сгенерирован с ошибкой
- 2 - отчет принят в обработку, начался процесс генерации
- 3 - отчет отменен
- 4 - отчет ожидает в очереди
Генерация отчета
Команда через WebSocket:
{
"command":"GET_REPORT",
"data":{
"reportId":"275",
"fileType":"pdf",
"params":[
{
"name":"in_date_from",
"type":"date",
"value":1570538220000
},
{
"name":"in_date_till",
"type":"date",
"value":1573130220000
}
]
}
}
Ответ от сервера, когда отчет попал в очередь на создание:
Формат: json
{
"command": "REPORT_IN_QUEUE",
"data": {
"status": 4,
"name": null,
"alias": "Отчет \"Качество работы по заданиям\"
отправлен в очередь на создание....",
"expire": null,
"format": null,
"taskId": "bdbee471-6c6c-4416-bcfd-f27209c3ac19",
"reportId": 1553,
"size": null,
"requestDate": 1576848878881
}
}
// статус отчета // название сгенерированного файла = null // описание стадии // время жизни сгенерированного отчета = null // формат сгенерированного отчета = null // id процесса // id отчета // размер созданного отчета в байтах = null // когда был запрошен отчет
Ответ от сервера, когда отчет начал генерироваться:
Формат: json
{
"command": "REPORT_IN_WORK",
"data": {
"status": 2,
"name": null,
"alias": "Отчет \"Качество работы по заданиям\"
принят в обработку",
"expire": null,
"format": null,
"taskId": "bdbee471-6c6c-4416-bcfd-f27209c3ac19",
"reportId": 1553,
"size": null,
"requestDate": 1576848878881
}
}
// статус отчета // название сгенерированного файла = null // описание стадии // время жизни сгенерированного отчета = null // формат сгенерированного отчета = null // id процесса // id отчета // размер созданного отчета в байтах = null // когда был запрошен отчет
Ответ от сервера, когда отчет создался:
Формат: json
{
"command": "REPORT_READY",
"data": {
"status": 1,
"name": "1576848882094nXFhclQq.pdf",
"alias": "Отчет 'Качество работы по заданиям'
от 20.12.2019 16:34:42 (PDF)",
"expire": 1576852482121,
"format": "pdf",
"taskId": "bdbee471-6c6c-4416-bcfd-f27209c3ac19",
"reportId": 1553,
"size": 26224,
"requestDate": 1576848878881
}
}
// статус отчета // название сгенерированного файла // название отчета // время жизни сгенерированного отчета // формат сгенерированного отчета // id процесса // id отчета // размер созданного отчета в байтах // когда был запрошен отчет
Ответ от сервера, когда отчет не может создаться, так как выходит ошибка:
Формат: json
{
"command": "REPORT_READY",
"data": {
"status": 0,
"name": null,
"alias": "Ошибка при создании отчета:
\"Error executing SQL statement for: Отчет по зоне.\"",
"expire": null,
"format": null,
"taskId": "64f8ac17-7f56-4a1e-bf55-c3b577daa00a",
"reportId": 1556,
"size": null,
"requestDate": 1576849192090
}
}
// статус отчета // название сгенерированного файла = null // название ошибки // время жизни сгенерированного отчета = null // формат сгенерированного отчета = null // id процесса // id отчета // размер созданного отчета в байтах = null // когда был запрошен отчет
Прерывание генерации отчета
Команда через WebSocket:
{
"command":"CANCEL_REPORT",
"data":{
"taskId":"32cffab4-5a19-4c21-8fbf-eb1f70e9d936"
}
}
В ответ придет:
Формат: json
{
"command": "REPORT_CANCELED",
"data": {
"status": 3,
"name": null,
"alias": "Отчет отменен",
"expire": null,
"format": null,
"taskId": "cbcc5c18-e40c-4652-818f-fea94fa4e582",
"reportId": 1393,
"size": null,
"requestDate": 1576849490230
}
}
// статус отчета // название сгенерированного файла = null // название состояния // время жизни сгенерированного отчета = null // формат сгенерированного отчета = null // id процесса // id отчета // размер созданного отчета в байтах = null // когда был запрошен отчет
Удаление сгенерированного отчета
Команда через WebSocket:
{
"command": "DELETE_REPORT",
"data": {
"taskId": "99d5486e-a533-4022-9894-e40ed0980534"
}
}
В ответ придет:
Формат: json
{
"command": "REPORT_DELETED",
"data": {
"taskId": "99d5486e-a533-4022-9894-e40ed0980534",
"reportId": 1557
}
}
// id процесса // id отчета
В случае ошибки:
Формат: json
{
"command": "REPORT_DELETED_ERROR",
"data": {
"text": "Недостаточно прав для данной операции"
"taskId": "99d5486e-a533-4022-9894-e40ed0980534",
"reportId": 1557
}
}
// описание ошибки // id процесса // id отчета
Поддержка соединения
Команда через WebSocket:
{
"command":"PING",
"data": null
}
В ответ придет:
Формат: json
{
"command":"PONG",
"data": null
}
Скачивание сгенерированного отчета
GET /jreports/file/{:name}
Структура запроса:
GET /jreports/file/1576848882094nXFhclQq.pdf?token=9c6333f651846cfc94feae0597b61224
name: название созданного файла
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: массив байтов
Статус: 404 - параметр не найден
Формат: text/plain
Содержит описание ошибки
Список сгенерированных отчетов
GET /jreports/saved
Структура запроса:
GET /jreports/saved?token=9c6333f651846cfc94feae0597b61224
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
[
{
id: 54458,
taskId: "bdbee471-6c6c-4416-bcfd-f27209c3ac19",
name: "1576848882094nXFhclQq.pdf",
alias: "Отчет 'Отчет с разными параметрами'
от 20.12.2019 16:34:42 (PDF)",
format: {
value: "pdf",
contentType: "application/pdf"
},
createDate: 1576848882097,
requestDate: 1576848878881,
size: 26224,
reportId: 1553
}
]
// id файла, целое число // id процесса, строка // название файла отчета // название отчета // формат // contentType // дата создания // когда очтет был запрошен // размер файла в байтах // id отчета
Удаление сгенерированного отчета
GET /jreports/saved/{:id}
Структура запроса:
GET /jreports/saved/54458?token=9c6333f651846cfc94feae0597b61224
id: id файла
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"id": 54461
}
Статус: 404 - параметр не найден
Формат: text/plain
Содержит описание ошибки
Состояние отчетов в очереди
GET /jreports/generation
Структура запроса:
GET /jreports/generation?token=9c6333f651846cfc94feae0597b61224
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
[
{
"status": 2,
"name": null,
"alias": "Отчет \"Качество работы по заданиям\"
принят в обработку",
"expire": null,
"format": "pdf",
"taskId": "d81a2441-c201-4e7d-8bfe-0e65b800764b",
"reportId": 1393,
"size": null,
"requestDate": 1576840354165
},
{
"status": 4,
"name": null,
"alias": "Отчет \"Качество работы по заданиям новый\"
отправлен в очередь на создание....",
"expire": null,
"format": "pdf",
"taskId": "d81a2441-c201-4e7d-8bfe-0e65b800764b",
"reportId": 1394,
"size": null,
"requestDate": 1576840357645
}
]
// статус отчета, целое число (2,4) // название сгенерированного файла = null, строка // описание стадии, строка // время жизни сгенерированного отчета = null, миллисекунды // формат сгенерированного отчета = null, строка // id процесса, целое число // id отчета, целое число // размер созданного отчета в байтах = null, целое число // когда был запрошен отчет, миллисекунды
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Отмена генерации отчета
DELETE /jreports/generation?taskId=&token=
Структура запроса:
DELETE /jreports/generation?taskId=d81a2441-c201-4e7d-8bfe-0e65b800764b&token=9c6333f651846cfc94feae0597b61224
taskId: id процесса
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: text/plain
Содержит описание
Статус: 400 - во время операции произошла ошибка
Формат: text/plain
Содержит описание ошибки
Права на отчеты
Список прав на отчеты
Доступно только для пользователей с правами администратора
GET /jreports/accesses
Структура запроса:
GET /jreports/accesses?token=9c6333f651846cfc94feae0597b61224
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
[{
"userId": 60,
"reportId": 25,
"reportName": "Отчет",
"userLogin": "login",
"userName": "ФИО пользователя",
"read": false
},...]
// id пользователя, целое число // id отчета, целое число // название отчета, строка // логин пользователя, строка // имя пользователя, строка // доступен просмотр, булевое поле
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Количество прав на отчеты
Доступно только для пользователей с правами администратора
GET /jreports/accesses/count
Структура запроса:
GET /jreports/accesses/count?token=9c6333f651846cfc94feae0597b61224
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: text/plain
367
// количество прав на отчеты
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Создание права на отчеты
Доступно только для пользователей с правами администратора
POST /jreports/accesses
Структура запроса:
POST /jreports/accesses?token=9c6333f651846cfc94feae0597b61224
token: ключ доступа
Пример запроса:
Формат: json
{
"read": true,
"reportId": 368,
"userId": 58
}
// право на просмотр, булевое поле // id отчета, целое число // id пользователя, целое число
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"read": true,
"userName": "Имя пользователя",
"userId": 58,
"reportId": 368,
"reportName": "Новый отчет"
}
// право на просмотр, булевое поле // имя пользователя, строка // id пользователя, целое число // id отчета, целое число // название отчета, строка
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Сохранение порядка
POST /jreports/ordering
Структура запроса:
POST /jreports/ordering?token=9c6333f651846cfc94feae0597b61224
token: ключ доступа
Пример запроса:
Формат: json
{
"orderings": [{
"id": 748,
"order": 1
},
{
"id": 747,
"order": 2
},…]
}
// порядок групп слоев, объект // id группы, целое число // порядок группы, целое число // id группы, целое число // порядок группы, целое число
Ответ:
Статус: 200 - успешное выполнение
Формат: json
Порядок сохранен
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Экспорт прав на отчеты
Доступно только для пользователей с правами администратора
GET /jreports/accesses.xlsx
Структура запроса:
GET /jreports/accesses.xlsx?token=9c6333f651846cfc94feae0597b61224
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
Возвращает бинарный файл
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Сервисы
WMS - получение тайла слоя
GET /service/wms
Структура запроса:
GET /service/wms?service=WMS&request=GetMap&version=1.1.1&layers=kziokzn:vamin_kioski_p_vw&
styles=vamin_kioski_p_vw_style_21_03_2011_19_20_16&format=image/png&transparent=true&height=256&
width=256&srs=EPSG:900913&bbox=5283327.395071382,7514065.628545966,5322463.153553393,7553201.387027976&
token=9c6333f651846cfc94feae0597b61224
service: сервис запроса WMS
request: название запроса GetMap
version: версия 1.1.1
layers: английское название слоя или слоев через запятую
styles: название стиля или стилей через запятую
format: формат, в котором вернется тайл
transparent: есть ли прозрачность
height: высота тайла
width: ширина тайла
srs: код проекции
bbox: область запроса
cql_filter: строка CQL фильтра
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: зависит от параметра format
Статус: 404 - ни один слой не найден в системе
Формат: text/plain
Содержит описание ошибки
Статус: 403 - нет доступа к слою
Формат: text/plain
Содержит описание ошибки
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
WMS - запрос легенды слоя
GET /service/wms
Структура запроса:
GET /service/wms?request=GetLegendGraphic&style=vamin_kioski_p_vw_style_21_03_2011_19_20_16&
layer=kziokzn:vamin_kioski_p_vw&format=image/png&token=9c6333f651846cfc94feae0597b61224
request: название запроса GetLegendGraphic
layer: английское название слоя
style: название стиля слоя
format: формат, в котором вернется легенда
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: зависит от параметра format
Статус: 404 - слой не найден в системе
Формат: text/plain
Содержит описание ошибки
Статус: 403 - нет доступа к слою
Формат: text/plain
Содержит описание ошибки
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
WFS - получение WFS слоя
GET /service/wfs
Структура запроса:
GET /service/wfs?service=WFS&version=1.0.0&request=GetFeature&typeName=DEMO:kfu_building&outputFormat=json&
bbox=40.14404296875,52.905589081407825,61.23779296875,57.630699148918424&token=9c6333f651846cfc94feae0597b61224
service: сервис запроса WFS
request: название запроса GetFeature
version: версия 1.0.0
typeName: английское название слоя
outputFormat: формат возвращаемых данных
bbox: область запроса слоя
srs: код проекции, по умолчанию EPSG:4326
cql_filter: строка CQL фильтра
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: зависит от параметра outputFormat
Статус: 404 - слой не найден в системе
Формат: text/plain
Содержит описание ошибки
Статус: 403 - нет доступа к слою
Формат: text/plain
Содержит описание ошибки
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
WFS - post запросы к геосерверу
POST /service/wfs/{layerId}
Структура запроса:
POST /service/wfs/{layerId}
service: сервис запроса WFS
Пример запроса:
Формат: Xml
<wfs:Transaction service="WFS" version="1.0.0"
xmlns:wfs="http://www.opengis.net/wfs"
xmlns:topp="
http://www.openplans.org/topp"
xmlns:gml="
http://www.opengis.net/gml"
xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.0.0/WFS-transaction.xsd
http://www.openplans.org/topp
http://localhost:8080/geoserver/wfs/DescribeFeatureType?typename=topp:tasmania_roads">
<wfs:Insert>
<topp:tasmania_roads>
<topp:the_geom>
<gml:MultiLineString srsName="http://www.opengis.net/gml/srs/epsg.xml#4326">
<gml:lineStringMember>
<gml:LineString>
<gml:coordinates decimal="." cs="," ts=" ">
494475.71056415,5433016.8189323 494982.70115662,5435041.95096618
</gml:coordinates>
</gml:LineString>
</gml:lineStringMember>
</gml:MultiLineString>
</topp:the_geom>
<topp:TYPE>alley</topp:TYPE>
</topp:tasmania_roads>
</wfs:Insert>
</wfs:Transaction>
// xml запроса к геосерверу, для указанного слоя
Ответ:
Статус: 200 - успешное выполнение, возвращается ответ от Geoserver
Статус: 403 - нет доступа к слою
Формат: text/plain
Содержит описание ошибки
Статус: 404 - слой не найден в системе
Формат: text/plain
Содержит описание ошибки
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Стиль слоя
Запрос sld-файла стиля
GET /service/styles/{layerId}/{styleName}.sld
Структура запроса:
GET /service/styles/367/set_wifi_iconstyle_02_10_2012_14_00_01.sld?token=9c6333f651846cfc94feae0597b61224
layerId: id слоя
styleName: название стиля
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: text/xml
Статус: 403 - нет доступа к слою
Формат: text/plain
Содержит описание ошибки
Статус: 404 - слой не найден в системе
Формат: text/plain
Содержит описание ошибки
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Хранилища
Список хранилищ
Доступно только для пользователей с правами администратора
GET /datastores
Структура запроса:
GET /datastores?token=9c6333f651846cfc94feae0597b61224
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
[{
"id": 1,
"name": "Datastore",
"host": "192.168.63.36",
"port": 5432,
"database": "data",
"login": "login",
"schema": "data"
},...]
// id хранилища, целое число // название хранилища, строка // хост, строка // порт, целое число // база данных, строка // логин, строка // название схемы, с которой работает хранилище, строка
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Создание хранилища
Доступно только для пользователей с правами администратора
POST /datastores
Структура запроса:
POST /datastores?token=9c6333f651846cfc94feae0597b61224
token: ключ доступа
Пример запроса:
{
"name": "Datastore",
"host": "192.168.63.36",
"port": 5432,
"database": "data",
"login": "login",
"schema": "data"
}
// название хранилища, строка // хост, строка // порт, целое число // база данных, строка // логин, строка // название схемы, с которой работает хранилище, строка
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"id": 25,
"name": "Datastore",
"host": "192.168.63.36",
"port": 5432,
"database": "data",
"login": "login",
"schema": "data"
}
// id хранилища, целое число // название хранилища, строка // хост, строка // порт, целое число // база данных, строка // логин, строка // название схемы, с которой работает хранилище, строка
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Изменение хранилища
Доступно только для пользователей с правами администратора
PUT /datastores/{id}
Структура запроса:
PUT /datastores/64?token=9c6333f651846cfc94feae0597b61224
id: id хранилища
token: ключ доступа
Пример запроса:
{
"id": 64,
"name": "Datastore",
"host": "192.164.63.32",
"port": 5874,
"database": "data",
"login": "login",
"password": "654321",
"schema": "data"
}
// id хранилища, целое число // название хранилища, строка // хост, строка // порт, целое число // база данных, строка // логин, строка // пароль, строка // название схемы, с которой работает хранилище, строка
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"id": 64,
"name": "Datastore",
"host": "192.164.63.32",
"port": 5874,
"database": "data",
"login": "login",
"schema": "data"
}
// id хранилища, целое число // название хранилища, строка // хост, строка // порт, целое число // база данных, строка // логин, строка // название схемы, с которой работает хранилище, строка
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Удаление хранилища
Доступно только для пользователей с правами администратора
DELETE /datastores/{id}
Структура запроса:
DELETE /datastores/64?token=9c6333f651846cfc94feae0597b61224
id: id хранилища
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"delete": true
}
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Экспорт хранилищ
Доступно только для пользователей с правами администратора
GET /datastores.xlsx
Структура запроса:
GET /datastores.xlsx?token=9c6333f651846cfc94feae0597b61224
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
Возвращает бинарный файл
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Проекции хранилищ
Доступно только для пользователей с правами администратора
GET /datastores/projections
Структура запроса:
GET /datastores/projections?token=9c6333f651846cfc94feae0597b61224
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
[{
"projection": "EPSG:3819"
},...]
// проекция
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Проекции хранилища
Доступно только для пользователей с правами администратора
GET /datastores/{id}/projections
Структура запроса:
GET /datastores/42/projections?token=9c6333f651846cfc94feae0597b61224
id: id хранилища
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
[{
"projection": "EPSG:3819"
},...]
// проекция
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Таблицы хранилища
Доступно только для пользователей с правами администратора
GET /datastores/{id}/tables
Структура запроса:
GET /datastores/42/tables?token=9c6333f651846cfc94feae0597b61224
id: id хранилища
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
[{
"datastoreId": 42,
"tableId": 0,
"layerId": null,
"nameDb": "departments_news_points",
"geometryType": "POINT"
},...]
// id хранилища, целое число // id таблицы, целое число // id слоя, целое число // название базы данных, строка // тип геометрии, строка
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Информация о таблице хранилища
Доступно только для пользователей с правами администратора
GET /datastores/{id}/tables/{tablename}
Структура запроса:
GET /datastores/42/tables/test_table?token=9c6333f651846cfc94feae0597b61224
id: id хранилища
tablename: название таблицы
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"geometryType": "multilinestring",
"name": "test_table",
"title": "Тестовая таблица",
"style": {
"styleName": null,
"geoCss": "* {\n stroke-dashoffset: 0;\n}",
"base": false,
"simple": false
},
"dataStoreId": 22,
"attributes": [{
"name": "attribute",
"rusName": "Атрибут",
"type": "int",
"title": true,
"view": true,
"order": 1,
"htmlEscape": true,
"popupView": false,
"reference": false,
"refTable": null,
"refField": null,
"refFieldName": null,
},...]
}
// тип геометрии, строка // название таблицы, строка // русское название таблицы, строка // стили, объект // название стиля, строка // geocss стиль, строка // базовый, логическое // простой, логическое // id хранилища, целое число // атрибуты таблицы, массив // название атрибута, строка // русское название атрибута, строка // тип, строка // является заголовком, логическое // доступен к просмотру, логическое // порядковый номер, целое число // экранировать ли html, логическое // показывать ли во всплывающем окне, логическое // поле связано с таблицей, логическое // id таблицы, целое число // id поля c ключом, целое число // id поля с названием, целое число
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Слои
Список слоев
GET /layers
Структура запроса:
GET /layers?token=9c6333f651846cfc94feae0597b61224
token: ключ доступа
Получение списка слоев по английскому названию
GET /layers?name=testlayer&token=9c6333f651846cfc94feae0597b61224
name: английское название слоя или слово, встречающееся в названии списка слоев
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"layers": [{
"order": 9,
"layer": {
"id": 135,
"name": "testlayerpoint",
"info": {
"id": 135,
"typeName": "test:testlayerpoint1410257743497_vw",
"style": "point",
"service": "WFS",
"poly": false,
"requestUrl": "/service/wfs",
"tileSize": 256,
"geomField": "the_geom",
"pkField": "gid"
},
"isEditable": true,
"isStyleEditable": true,
"owner": 6,
"clusterId": 1,
"layerType": "vector",
"geometryType": "point",
"access": {
"read": true,
"edit": false,
"write": true,
"serviceObjects": true
},
"system": false,
"systemCode": null,
"fields": [{
"id": 250,
"name": "Field",
"rusName": "Поле",
"order": 1,
"title": false,
"view": true,
"forUpsert": true,
"forSearch": true,
"type": "string",
"htmlEscape": true,
"popupView": false,
"reference": false,
}],
"titleFields": {
"format": "{0}",
"fields": ["name"]
},
"subTitleFields": {
"format": "{0}",
"fields": ["category"]
}
},
"groupId": 12
}]
}
// массив слоев // порядковый номер в списке, целое число // объект слоя // id слоя, целое число // название слоя, строка // информация по слою, объект // id слоя, целое число // английское название слоя, строка // название стиля, строка // тип сервиса, WMS/WFS // является ли полигоном, логическое // url для запроса, строка // размер тайла, целое число // название поля с геометрией, строка // является ли редактируемым, логическое // можно ли редактировать стиль, логическое // id создателя слоя, целое число // id кластера или null, целое число // тип слоя vector или raster, строка // тип геометрии, строка // права текущего пользователя на слой // на чтение // на изменение/удаление слоя // на добавление/изменение/удаление объектов слоя // на использование слоя в качестве оъектов обслуживания // является ли слой системным, логическое // код для системного слоя, строка // объект полей // id поля, целое число // английское название поля, строка // русское название поля , строка // порядок следования в списке, целое число // является ли заголовком, логическое // показывать ли поле, логическое // показывать ли поле при создании/редактировании объекта, логическое // будет ли использоваться поле для поиска по объектам слоя, логическое // тип, строка // экранировать ли html, логическое // показывать ли во всплывающем окошке, логическое // является ли ссылкой на таблицу, логическое // заголовок слоя // формат заголовка, строка // атрибуты, которые входят в заголовок, массив строк // подзаголовок слоя // формат заголовка, строка // атрибуты, которые входят в заголовок, массив строк // id группы
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Количество слоев
GET /layers/count
GET /layers/count?token=9c6333f651846cfc94feae0597b61224
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: text/plain
237
// количество слоев
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Создание слоя
POST /layers
Структура запроса:
POST /layers?token=9c6333f651846cfc94feae0597b61224&apiVersion=2.0
token: ключ доступа
apiVersion: версия REST API 2.0
Пример запроса:
Формат: json
{
"name": "Novyi-sloy",
"title": "Новый слой",
"groupId": 1053,
"dataStoreId": 12,
"сlusterId": 1,
"attributes": [{
"name": "attribute",
"rusName": "Атрибут",
"type": "string",
"view": true,
"forUpsert": true,
"forSearch": true,
"htmlEscape": true,
"popupView": false,
"order": 1,
"reference": false,
"refTable": null,
"refField": null,
"refFieldName": null
}],
"titleFields": {
"format": "{0}",
"fields": ["name"]
},
"subTitleFields": {
"format": "{0}",
"fields": ["category"]
},
"service": "WFS",
"fileName": "point",
"isEditable": true,
"isStyleEditable": true,
"styles": {
"isBase": true
},
"projection": "EPSG:4326",
"customFields": {
"field_1": {
"field_id": 41,
"value": "1"
}
},
"serviceObjects": {
"turned": true,
"title_format": "{0} - {1}",
"title_fields": [
"name",
"count"
],
"field_mappings": [
{
"type": "Title",
"field_id": null,
"format": "{0}",
"fields": [
"name"
]
},
{
"type": "Description",
"field_id": null,
"format": "{0}",
"fields": [
"category"
]
},
{
"type": "CustomField",
"field_id": 10,
"format": "{0}",
"fields": [
"color"
]
}
]
},
"defaultAccess": [
{
"roleId": 10,
"allRoles": false,
"organizationId": null,
"allOrganizations": true,
"publicOrganizations": null,
"read": true,
"edit": false,
"write": false,
"serviceObjects": true,
}
]
}
// английское название слоя, строка // заголовок, строка // id группы, целое число // id хранилища, целое число // id кластера, целое число // данные об атрибутах, массив // английское название, строка // русское название, строка // тип, строка // показывать ли поле, логическое // показывать ли поле при создании/изменении объекта, логическое // будет ли использоваться поле для поиска по объектам слоя, логическое // экранировать ли html, логическое // показывать ли во всплавающем окошке, логическое // порядок, целое число // является ссылкой на таблицу, логическое // id таблицы, целое число // id поля с первичным ключом в таблице, целое число // id поля с названием в таблице, целое число // заголовок слоя // формат заголовка, строка // атрибуты, которые входят в заголовок, массив строк // подзаголовок слоя // формат заголовка, строка // атрибуты, которые входят в заголовок, массив строк // сервис получения данных WMS/WFS, строка // тип геометрии, строка // является редактируемым, логическое // можно редактировать стиль, логическое // стили, объект // является ли стиль простым, логическое // проекция, строка // дополнительные поля, объект // название дополнительного поля // id поля, целое число // значение поля, строка // доп. настройка объектов обслуживания // включена ли, логическое // формат названия (совестимость со старыми версиям) // поля для формата названия (совестимость со старыми версиям) // соответствие атрибутов и полей задания // тип для заголова задания // формат // поля для формата // тип для описания задания // формат // поля для формата // тип для доп.полей задания // id доп.поля // формат // поля для формата // права на слой по умолчанию // правило // id роли // для всех ролей, логическое // id организации // для всех органзаций, логическое // true - для клиентских органзаций, false - для не клиентских // на чтение // на изменение/удаление слоя // на добавление/изменение/удаление объектов слоя // на использование слоя в качестве оъектов обслуживания
Примечание:
В зависимости от выбранного типа геометрии в "styles" могут передаваться следующие параметры:
- isBase - базовый стиль (логическое)
- isSimple - простой стиль (логическое)
- style - расширенный стиль (строка - описывается geocss)
Параметр service можно не передавать. Для полигонов и линий по умолчанию WMS, для точек WFS.
Параметр clusterId может передавать только гд.администратор, если создает слой для конкретного кластера. Параметр может быть null
Параметр projection можно не передавать. По умолчанию - EPSG:4326
Доступные типы атрибутов:
- string - строка
- int - целое число
- boolean - логический тип
- num - вещественное число
- date - дата
- dateTime - дата и время
- dictionary - справочник (необходимо заполнить reference = false, refTable - id таблицы из списка справочиков, refField - id поля с первичным ключом в таблице, refFieldName - id поля с названием в таблице)
- datatable - таблица с данными (необходимо заполнить reference = false, refTable - id таблицы из списка таблиц с данными, refField - id поля с первичным ключом в таблице, refFieldName - id поля с названием в таблице)
- systemorg - связь с организацией (английское название поля должно быть sys_org_id)
- systemcluster - связь с кластером (английское название поля должно быть sys_clr_id)
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"id": 154,
"name": "Новый слой",
"info": {
"id": 154,
"typeName": "test:novcyj_sloj_vw",
"style": "polygon",
"service": "WMS",
"poly": true,
"requestUrl": "/service/wms",
"tileSize": 256,
"geomField": "the_geom",
"pkField": "gid"
},
"isEditable": true,
"isStyleEditable": true,
"owner": 6,
"clusterId": 1,
"system": false,
"systemCode": null,
"fields": [{
"id": 3452,
"name": "parameter",
"rusName": "parameter",
"order": 1,
"title": false,
"view": true,
"forUpsert": true,
"forSearch": true,
"type": "string",
"htmlEscape": true,
"popupView": false,
"reference": false,
}],
"titleFields": {
"format": "{0}",
"fields": ["name"]
},
"subTitleFields": {
"format": "{0}",
"fields": ["category"]
},
"groupId": 42,
"dataStoreId": 22,
"order": 3,
"geometryType": "multipolygon",
"dataStoreName": "fail_store",
"layerType": "vector"
}
// id слоя, целое число // название слоя, строка // информация о слое, объект // id слоя, целое число // английское название слоя, строка // название стиля, строка // тип сервиса, WMS/WFS // является ли полигоном, логическое // url для запроса, строка // размер тайла, целое число // название поля с геометрией, строка // является ли редактируемым, логическое // можно ли редактировать стиль, логическое // id создателя слоя, целое число // id кластера или null, целое число // является ли слой системным, логическое // код для системного слоя, строка // информация об атрибутах, массив // id атрибута, целое число // английское название атрибута, строка // русское название атрибута, строка // порядковый номер в списке, целое число // является ли заголовком, логическое // показывать ли поле, логическое // показывать ли поле при создании/изменении объекта, логическое // будет ли использоваться поле для поиска по объектам слоя, логическое // тип, строка // экранировать ли html, логическое // показывать ли во всплывающем окошке, логическое // является ли ссылкой на таблицу, логическое // заголовок слоя // формат заголовка, строка // атрибуты, которые входят в заголовок, массив строк // подзаголовок слоя // формат заголовка, строка // атрибуты, которые входят в заголовок, массив строк // id группы, целое число // id хранилища данных, целое число // порядковый номер в списке, целое число // тип геометрии, строка // название хранилища, строка // тип слоя, строка
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Изменение слоя
PUT /layers/{layerId}
Структура запроса:
PUT /layers/365?token=9c6333f651846cfc94feae0597b61224&apiVersion=2.0
layerId: id изменяемого слоя
token: ключ доступа
apiVersion: версия REST API 2.0
Пример запроса:
Формат: json
{
"id": 40,
"name": "workspace:noviysloi1_vw",
"title": "Новый слой",
"service": "WFS",
"groupId": 4,
"isStyleEditable": true,
"styles": {
"isBase": false,
"isSimple": true,
"style": "*{\n mark: symbol(\"circle\");\n}
\n:mark{\n fill:#0000FF;\n
fill-opacity:1;\n size:7;\n\n}"
},
"attributes": [{
"name": "attribute",
"rusName": "Атрибут",
"type": "string",
"view": true,
"forUpsert": true,
"forSearch": true,
"htmlEscape": true,
"popupView": false,
"order": 1,
"reference": false,
"refTable": null,
"refField": null,
"refFieldName": null
}],
"titleFields": {
"format": "{0}",
"fields": ["name"]
},
"subTitleFields": {
"format": "{0}",
"fields": ["category"]
},
"customFields": {
"field": {
"field_id": 501,
"value": ""
}
},
"serviceObjects": {
"turned": true,
"mappingId": 1,
"geo_field": "the_geom",
"title_format": "{0} - {1}",
"title_fields": [
"name",
"count"
],
"field_mappings": [
{
"type": "Title",
"field_id": null,
"format": "{0}",
"fields": [
"name"
]
},
{
"type": "Description",
"field_id": null,
"format": "{0}",
"fields": [
"category"
]
},
{
"type": "CustomField",
"field_id": 10,
"format": "{0}",
"fields": [
"color"
]
}
]
},
"defaultAccess": [
{
"roleId": 10,
"allRoles": false,
"organizationId": null,
"allOrganizations": true,
"publicOrganizations": null,
"read": true,
"edit": false,
"write": false,
"serviceObjects": true,
}
]
}
// id слоя, целое число // английское название, строка // русское название, строка // тип сервиса, WMS/WFS // id группы, целое число // можно ли редактировать стиль, логическое // стили, объект // является ли стиль базовым, логическое // является ли стиль простым, логическое // geocss стиль // данные об атрибутах, массив // английское название, строка // русское название, строка // тип, строка // показывать ли поле, логическое // показывать ли поле при создании/изменении объекта, логическое // будет ли использоваться поле для поиска по объектам слоя, логическое // экранировать ли html, логическое // показывать ли во всплавающем окошке, логическое // порядок, целое число // является ссылкой на таблицу, логическое // id таблицы, целое число // id поля с первичным ключом в таблице, целое число // id поля с названием в таблице, целое число // заголовок слоя // формат заголовка, строка // атрибуты, которые входят в заголовок, массив строк // для удаления необходимо передать пустую строку и пустой массив // подзаголовок слоя // формат заголовка, строка // атрибуты, которые входят в заголовок, массив строк // для удаления необходимо передать пустую строку и пустой массив // дополнительные поля, объект // название дополнительного поля // id поля, целое число // значение поля, строка // доп. настройка объектов обслуживания // включена ли, логическое // id настройки // атрибут и направление сортировки (совестимость со старыми версиям) // формат названия (совестимость со старыми версиям) // поля для формата названия (совестимость со старыми версиям) // соответствие атрибутов и полей задания // тип для заголова задания // формат // поля для формата // тип для описания задания // формат // поля для формата // тип для доп.полей задания // id доп.поля // формат // поля для формата // права на слой по умолчанию // правило // id роли // для всех ролей, логическое // id организации // для всех органзаций, логическое // true - для клиентских органзаций, false - для не клиентских // на чтение // на изменение/удаление слоя // на добавление/изменение/удаление объектов слоя // на использование слоя в качестве оъектов обслуживания
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"id": 154,
"name": "Новый слой",
"info": {
"id": 154,
"typeName": "test:novcyj_sloj_vw",
"style": "polygon",
"service": "WMS",
"poly": true,
"requestUrl": "/service/wms",
"tileSize": 256,
"geomField": "the_geom",
"pkField": "gid"
},
"isEditable": true,
"isStyleEditable": true,
"owner": 6,
"clusterId": 1,
"system": false,
"systemCode": null,
"fields": [{
"id": 3452,
"name": "parameter",
"rusName": "parameter",
"order": 1,
"title": false,
"view": true,
"forUpsert": true,
"forSearch": true,
"type": "string",
"htmlEscape": true,
"popupView": false,
"reference": false,
}],
"titleFields": {
"format": "{0}",
"fields": ["name"]
},
"subTitleFields": {
"format": "{0}",
"fields": ["category"]
},
"groupId": 42,
"dataStoreId": 22,
"order": 3,
"geometryType": "multipolygon",
"dataStoreName": "fail_store",
"layerType": "vector"
}
// id слоя, целое число // название слоя, строка // информация о слое, объект // id слоя, целое число // английское название слоя, строка // название стиля, строка // тип сервиса, WMS/WFS // является ли полигоном, логическое // url для запроса, строка // размер тайла, целое число // название поля с геометрией, строка // является ли редактируемым, логическое // можно ли редактировать стиль, логическое // id создателя слоя, целое число // id кластера или null, целое число // является ли слой системным, логическое // код для системного слоя, строка // информация об атрибутах, массив // id атрибута, целое число // английское название атрибута, строка // русское название атрибута, строка // порядковый номер в списке, целое число // является ли заголовком, логическое // показывать ли поле, логическое // показывать ли поле при создании/изменения объекта, логическое // будет ли использоваться поле для поиска по объектам слоя, логическое // тип, строка // экранировать ли html, логическое // показывать ли во всплывающем окошке, логическое // является ли ссылкой на таблицу, логическое // заголовок слоя // формат заголовка, строка // атрибуты, которые входят в заголовок, массив строк // подзаголовок слоя // формат заголовка, строка // атрибуты, которые входят в заголовок, массив строк // id группы, целое число // id хранилища данных, целое число // порядковый номер в списке, целое число // тип геометрии, строка // название хранилища, строка // тип слоя, строка
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Изменение конкретных полей слоя
PATCH /layers/{layerId}
Структура запроса:
PATCH /layers/1413?token=9c6333f651846cfc94feae0597b61224&apiVersion=2.0
layerId: id изменяемого слоя
token: ключ доступа
apiVersion: версия REST API 2.0
Пример запроса:
Формат: json
{
"id": 40,
"name": "workspace:noviysloi1_vw",
"title": "Новый слой",
"service": "WFS",
"groupId": 4,
"isStyleEditable": true,
"styles": {
"isBase": false,
"isSimple": true,
"style": "*{\n mark: symbol(\"circle\");\n}
\n:mark{\n fill:#0000FF;\n
fill-opacity:1;\n size:7;\n\n}"
},
"attributes": [{
"name": "attribute",
"rusName": "Атрибут",
"type": "string",
"forUpsert": true,
"forSearch": true,
"view": true,
"htmlEscape": true,
"popupView": false,
"order": 1,
"reference": false,
"refTable": null,
"refField": null,
"refFieldName": null
}],
"titleFields": {
"format": "{0}",
"fields": ["name"]
},
"subTitleFields": {
"format": "{0}",
"fields": ["category"]
},
"customFields": {
"field": {
"field_id": 501,
"value": ""
}
},
"serviceObjects": {
"turned": true,
"mappingId": 1,
"geo_field": "the_geom",
"title_format": "{0} - {1}",
"title_fields": [
"name",
"count"
],
"field_mappings": [
{
"type": "Title",
"field_id": null,
"format": "{0}",
"fields": [
"name"
]
},
{
"type": "Description",
"field_id": null,
"format": "{0}",
"fields": [
"category"
]
},
{
"type": "CustomField",
"field_id": 10,
"format": "{0}",
"fields": [
"color"
]
}
]
},
"defaultAccess": [
{
"roleId": 10,
"allRoles": false,
"organizationId": null,
"allOrganizations": true,
"publicOrganizations": null,
"read": true,
"edit": false,
"write": false,
"serviceObjects": true,
}
]
}
// id слоя, целое число // английское название, строка // русское название, строка // тип сервиса, WMS/WFS // id группы, целое число // можно ли редактировать стиль, логическое // стили, объект // является ли стиль базовым, логическое // является ли стиль простым, логическое // geocss стиль // данные об атрибутах, массив // английское название, строка // русское название, строка // тип, строка // показывать ли поле при создании/изменении объекта, логическое // будет ли использоваться поле для поиска по объектам слоя, логическое // показывать ли поле, логическое // экранировать ли html, логическое // показывать ли во всплавающем окошке, логическое // порядок, целое число // является ссылкой на таблицу, логическое // id таблицы, целое число // id поля с первичным ключом в таблице, целое число // id поля с названием в таблице, целое число // заголовок слоя // формат заголовка, строка // атрибуты, которые входят в заголовок, массив строк // для удаления необходимо передать пустую строку и пустой массив // подзаголовок слоя // формат заголовка, строка // атрибуты, которые входят в заголовок, массив строк // для удаления необходимо передать пустую строку и пустой массив // дополнительные поля, объект // название дополнительного поля // id поля, целое число // значение поля, строка // доп. настройка объектов обслуживания // включена ли, логическое // id настройки // поле с геометрией (совестимость со старыми версиям) // формат названия (совестимость со старыми версиям) // поля для формата названия (совестимость со старыми версиям) // соответствие атрибутов и полей задания // тип для заголова задания // формат // поля для формата // тип для описания задания // формат // поля для формата // тип для доп.полей задания // id доп.поля // формат // поля для формата // права на слой по умолчанию // правило // id роли // для всех ролей, логическое // id организации // для всех организаций, логическое // true - для клиентских органзаций, false - для не клиентских // на чтение // на изменение/удаление слоя // на добавление/изменение/удаление объектов слоя // на использование слоя в качестве оъектов обслуживания
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"id": 154,
"name": "Новый слой",
"info": {
"id": 154,
"typeName": "test:novcyj_sloj_vw",
"style": "polygon",
"service": "WMS",
"poly": true,
"requestUrl": "/service/wms",
"tileSize": 256,
"geomField": "the_geom",
"pkField": "gid"
},
"isEditable": true,
"isStyleEditable": true,
"owner": 6,
"clusterId": 1,
"system": false,
"systemCode": null,
"fields": [{
"id": 3452,
"name": "parameter",
"rusName": "parameter",
"order": 1,
"title": false,
"view": true,
"forUpsert": true,
"forSearch": true,
"type": "string",
"htmlEscape": true,
"popupView": false,
"reference": false,
}],
"titleFields": {
"format": "{0}",
"fields": ["name"]
},
"subTitleFields": {
"format": "{0}",
"fields": ["category"]
},
"groupId": 42,
"dataStoreId": 22,
"order": 3,
"geometryType": "multipolygon",
"dataStoreName": "fail_store",
"layerType": "vector"
}
// id слоя, целое число // название слоя, строка // информация о слое, объект // id слоя, целое число // английское название слоя, строка // название стиля, строка // тип сервиса, WMS/WFS // является ли полигоном, логическое // url для запроса, строка // размер тайла, целое число // название поля с геометрией, строка // является ли редактируемым, логическое // можно ли редактировать стиль, логическое // id создателя слоя, целое число // id кластера или null, целое число // является ли слой системным, логическое // код для системного слоя, строка // информация об атрибутах, массив // id атрибута, целое число // английское название атрибута, строка // русское название атрибута, строка // порядковый номер в списке, целое число // является ли заголовком, логическое // показывать ли поле, логическое // показывать ли поле при создании/редактировании объекта, логическое // будет ли использоваться поле для поиска по объектам слоя, логическое // тип, строка // экранировать ли html, логическое // показывать ли во всплывающем окошке, логическое // является ли ссылкой на таблицу, логическое // заголовок слоя // формат заголовка, строка // атрибуты, которые входят в заголовок, массив строк // подзаголовок слоя // формат заголовка, строка // атрибуты, которые входят в заголовок, массив строк // id группы, целое число // id хранилища данных, целое число // порядковый номер в списке, целое число // тип геометрии, строка // название хранилища, строка // тип слоя, строка
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Удаление слоя
DELETE /layers/{layerId}
Структура запроса:
DELETE /layers/14?token=9c6333f651846cfc94feae0597b61224
layerId: id удаляемого слоя
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"delete":true
}
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Экспорт слоев
Доступно только для пользователей с правами администратора
GET /layers.xlsx?token=9c6333f651846cfc94feae0597b61224
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
Возвращает бинарный файл
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Список слоев, используемый в качестве объектов обслуживания
GET /layers/serviceobjects
GET /layers/serviceobjects?token=9c6333f651846cfc94feae0597b61224
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
[
{
"id": 32,
"name": "Слой 1",
"owner": 6,
"clusterId": 1,
"system": false,
"systemCode": null,
"info": {
"id": 32,
"typeName": "workspace:sloj_1_vw",
"style": "point",
"service": "WFS",
"poly": false,
"requestUrl": "/service/wfs",
"tileSize": 256,
"geomField": "the_geom",
"pkField": "gid"
}
}
]
// массив слоев // id слоя, целое число // название слоя, строка // id создателя слоя, целое число // id кластера или null, целое число // является ли слой системным, логическое // код для системного слоя, строка // информация по слою, объект // id слоя, целое число // английское название слоя, строка // название стиля, строка // тип сервиса, WMS/WFS // является ли полигоном, логическое // url для запроса, строка // размер тайла, целое число // название поля с геометрией, строка
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Информация по слою
GET /layers/{layerId}
Структура запроса:
GET /layers/136?token=9c6333f651846cfc94feae0597b61224
layerId: id слоя
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"layer": {
"order": 4,
"layer": {
"id": 29,
"name": "Сервисные объекты 1",
"isEditable": true,
"isStyleEditable": true,
"owner": 6,
"clusterId": 1,
"system": false,
"systemCode": null,
"info": {
"id": 29,
"typeName": "workspace:servisncye_obcaektcy_1_vw",
"style": "servisncye_obcaektcy_1_1622626848248_style",
"service": "WMS",
"poly": false,
"requestUrl": "/service/wms",
"tileSize": 256,
"geomField": "the_geom",
"pkField": "fid",
"eisInfo": {
"hasEis": true,
"pkField": "fid",
"hasType_photo": true,
"edit_photo": true,
"hasType_file": true,
"edit_file": true
}
},
"fields": [{
"id": 94,
"name": "naimenovan",
"rusName": "Наименование",
"order": 1,
"title": true,
"view": true,
"forUpsert": true,
"forSearch": true,
"type": "String",
"htmlEscape": true,
"popupView": false,
"reference": false
},...],
"titleFields": {
"format": "{0}",
"fields": ["name"]
},
"subTitleFields": {
"format": "{0}",
"fields": ["category"]
},
"customFields": null,
"geometryType": "multipoint",
"dataStoreName": "activemap_store",
"isRaster": false,
"layerType": "vector",
"access": {
"read": true,
"edit": true,
"write": true,
"serviceObjects": true
},
"cluster": null
}
},
"groupId": 2
}
// объект // порядковый номер в списке, целое число // объект слоя // id слоя, целое число // русское название слоя, строка // является ли редактируемым, логическое // можно ли редактировать стиль, логическое // id создателя слоя, целое число // id кластера или null, целое число // является ли слой системным, логическое // код для системного слоя, строка // информация по слою, объект // id слоя, целое число // английское название слоя, строка // название стиля, строка // тип сервиса, WMS/WFS // является ли полигоном, логическое // url для запроса, строка // размер тайла, целое число // название поля с геометрией, строка // данные о наличии медиа информации, объект // есть ли медиа информация, логическое // поле для первичного ключа, строка // есть ли фотографии, логическое // можно ли редактировать фотографии, логическое // есть ли файлы, логическое // можно ли редактировать файлы, логическое // массив полей // id поля, целое число // английское название поля, строка // русское название поля, строка // порядок следования в списке, целое число // является ли заголовком, логическое // показывать ли поле, логическое // показывать ли поле при создании/редактировании объекта, логическое // будет ли использоваться поле для поиска по объектам слоя, логическое // тип поля, строка // экранировать ли html, логическое // показывать ли во всплывающем окошке, логическое // является ли ссылкой на таблицу, логическое // заголовок слоя // формат заголовка, строка // атрибуты, которые входят в заголовок, массив строк // подзаголовок слоя // формат заголовка, строка // атрибуты, которые входят в заголовок, массив строк // дополнительные поля, строка // тип геометрии, строка // название хранилища данных, строка // является ли космоснимком, логическое // тип слоя, строка // права текущего пользователя на слой // на чтение // на изменение/удаление слоя // на добавление/изменение/удаление объектов слоя // на использование слоя в качестве оъектов обслуживания // кластер, строка // id группы
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Информация по слою, исключая данные о группе слоя
GET /layers/{layerId}/info
Структура запроса:
GET /layers/132/info?token=9c6333f651846cfc94feae0597b61224
layerId: id слоя
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"layer": {
"id": 29,
"name": "Сервисные объекты 1"
"isEditable": true,
"isStyleEditable": true,
"owner": 6,
"clusterId": 1,
"system": false,
"systemCode": null,
"info": {
"id": 29,
"typeName": "workspace:servisncye_obcaektcy_1_vw",
"style": "servisncye_obcaektcy_1_1622626848248_style",
"service": "WMS",
"poly": false,
"requestUrl": "/service/wms",
"tileSize": 256,
"geomField": "the_geom",
"pkField": "fid",
"eisInfo": {
"hasEis": true,
"pkField": "fid",
"hasType_photo": true,
"edit_photo": true,
"hasType_file": true,
"edit_file": true
}
},
"fields": [{
"id": 94,
"name": "naimenovan",
"rusName": "Наименование",
"order": 1,
"title": true,
"view": true,
"forUpsert": true,
"forSearch": true,
"type": "String",
"htmlEscape": true,
"popupView": false,
"reference": false
},...],
"titleFields": {
"format": "{0}",
"fields": ["name"]
},
"subTitleFields": {
"format": "{0}",
"fields": ["category"]
},
"customFields": null,
"geometryType": "multipoint",
"dataStoreName": "activemap_store",
"isRaster": false,
"layerType": "vector",
"access": {
"read": true,
"edit": true,
"write": true,
"serviceObjects": true
},
"cluster": null
}
}
// объект слоя // id слоя, целое число // русское название слоя, строка // является ли редактируемым, логическое // можно ли редактировать стиль, логическое // id создателя слоя, целое число // id кластера или null, целое число // является ли слой системным, логическое // код для системного слоя, строка // информация по слою, объект // id слоя, целое число // английское название слоя, строка // название стиля, строка // тип сервиса, WMS/WFS // является ли полигоном, логическое // url для запроса, строка // размер тайла, целое число // название поля с геометрией, строка // данные о наличии медиа информации, объект // есть ли медиа информация, логическое // поле для первичного ключа, строка // есть ли фотографии, логическое // можно ли редактировать фотографии, логическое // есть ли файлы, логическое // можно ли редактировать файлы, логическое // массив полей // id поля, целое число // английское название поля, строка // русское название поля, строка // порядок следования в списке, целое число // является ли заголовком, логическое // показывать ли поле, логическое // показывать ли поле при создании/редактировании объекта, логическое // будет ли использоваться поле для поиска по объектам слоя, логическое // тип поля, строка // экранировать ли html, логическое // показывать ли во всплывающем окошке, логическое // является ли ссылкой на таблицу, логическое // заголовок слоя // формат заголовка, строка // атрибуты, которые входят в заголовок, массив строк // подзаголовок слоя // формат заголовка, строка // атрибуты, которые входят в заголовок, массив строк // дополнительные поля, строка // тип геометрии, строка // название хранилища данных, строка // является ли космоснимком, логическое // тип слоя, строка // права текущего пользователя на слой // на чтение // на изменение/удаление слоя // на добавление/изменение/удаление объектов слоя // на использование в качестве оъектов обслуживания // кластер, строка
Статус: 403 - у вас нет доступа к данному слою
Формат: text/plain
Содержит описание ошибки
Статус: 404 - слой не найден в системе
Формат: text/plain
Содержит описание ошибки
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Информация о слоях
Граница слоя
GET /layers/{layerId}/bbox
Структура запроса:
GET /layers/199/bbox?token=9c6333f651846cfc94feae0597b61224&apiVersion=2.0
layerId: id слоя
apiVersion: версия API, 2.0
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"minX": 49.053,
"maxX": 49.24,
"minY": 55.739,
"maxY": 55.863,
"projection": "EPSG:4326"
}
// минимальный x, вещественное число // минимальный y, вещественное число // максимальный x, вещественное число // максимальный y, вещественное число // код проекции, строка
Статус: 404 - слой не найден
Формат: text/plain
Содержит описание ошибки
Статус: 403 - нет доступа к данному слою
Формат: text/plain
Содержит описание ошибки
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Метаданные слоя
GET /layers/{layerId}/metadata
Структура запроса:
GET /layers/179/metadata?token=9c6333f651846cfc94feae0597b61224
layerId: id слоя
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"metadata": {
"id": 179,
"owner": "Владелец",
"dataCreate": "2011.12.28 09.47",
"dataUpdate": "2011.12.28 09.47",
"itemsCount": 45,
"type": {
"id": 1,
"name": "Космоснимки",
"fieldList": [
{
"id": 1,
"name": "Облачность",
"order": 1,
"inTable": true,
"inTableName": "clouds",
"fieldType": {
"id": 2,
"name": "Облачность",
"control": "input_integer",
"geomType": null,
"library": false,
"libraryData": {}
},
"necessary": false
}]
},
"additionalFieldValues": [
{
"field": {
"id": 4,
"name": "name",
"order": 6,
"inTable": false,
"inTableName": null,
"fieldType": {
"id": 3,
"name": "целое число",
"control": "input_integer",
"geomType": null,
"library": false,
"libraryData": {}
},
"necessary": false
},
"value": "значение"
}
],
"tableData": {
"clouds": "45",
"tecy_777": null,
"sputnik_id": "1",
"data": "2011-12-14 00:00:00+04",
"test777": "1",
"geom": null,
"layer_id": "179",
"quicklook": "kosmosnimok2012_02_08_05_06_06.jpg"
}
}
}
// метадата, объект // id слоя, целое число // владелец слоя, строка // дата создания, строка // дата обновления, строка // количество объектов, целое число // тип метаданных, объект // id типа, целое число // название типа, строка // массив полей // объект поля // id поля, целое число // название, строка // порядок отображения, целое число // содержится ли значение в основной таблице, логическое // название поля в основной таблице // тип поля, объект // id типа, целое число // название типа, строка // управляющий элемент, который используется, строка // тип геометрии, строка // нужно ли искать значение поля в словаре, логическое // данные словаря, объект // является ли обязательным, логическое // массив дополнительных полей // объект // объект поля // id поля, // название, строка // порядок отображения, целое число // содержится ли значение в основной таблице, логическое // название поля в основной таблице // тип поля, объект // id: типа, целое число // название типа, строка // управляющий элемент, который используется, строка // тип геометрии, строка // нужно ли искать значение поля в словаре, логическое // данные словаря, объект // является ли обязательным, логическое // значение поля // основная таблица с данными, объект // поле таблицы и его значение
Статус: 404 - слой не найден
Формат: text/plain
Содержит описание ошибки
Статус: 403 - нет доступа к данному слою
Формат: text/plain
Содержит описание ошибки
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Атрибуты слоя
GET /layers/{layerId}/attributes
Структура запроса:
GET /layers/199/attributes?token=9c6333f651846cfc94feae0597b61224
layerId: id слоя
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"attributes": [{
"name": "pole1",
"type": "string",
"reference": false,
"refTable": null,
"refField": null,
"refFieldName": null,
"geometryField": false
}],
"geometryType": "POLYGON",
"realGeometryType": "MULTIPOLYGON"
}
// массив атрибутов // название атрибута, строка // тип атрибута, строка // является ли полем с геометрией, логическое // является ссылкой на таблицу, логическое // id таблицы, целое число // id поля с первичным ключом в таблице, целое число // id поля с названием в таблице, целое число // тип геометрии (POINT, LINE, POLYGON), строка // реальный тип геометрии (POINT, MULTIPOINT, LINE, // MULTILINE, POLYGON, MULTIPOLYGON), строка
Статус: 404 - слой не найден
Формат: text/plain
Содержит описание ошибки
Статус: 403 - нет доступа к данному слою
Формат: text/plain
Содержит описание ошибки
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Настойка слоя для использования в качестве объектов обслуживания
GET /layers/{layerId}/serviceobjects
Структура запроса:
GET /layers/136/serviceobjects?token=9c6333f651846cfc94feae0597b61224
layerId: id слоя
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"id": 1,
"layer": {
"id": 29,
"name": "servisncye_obcaektcy_1_vw"
},
"search_params": "size=10&default_operator=AND",
"search_field": "name",
"geo_field": "the_geom",
"sort": "name:asc",
"title_format": "{0} - {1}",
"title_fields": [
"name",
"count"
],
"fields": [
"name",
"count",
"category",
"color",
"the_geom.coordinates"
],
"field_mappings": [
{
"type": "Title",
"field_id": null,
"format": "{0}",
"fields": [
"name"
]
},
{
"type": "Description",
"field_id": null,
"format": "{0}",
"fields": [
"category"
]
},
{
"type": "CustomField",
"field_id": 10,
"format": "{0}",
"fields": [
"color"
]
}
]
}
// объект // id настройки // слой // id слоя // английское название слоя // доп.параметры поиска (совестимость со старыми версиям) // поиск по атрибуту (совестимость со старыми версиям) // поле с геометрией (совестимость со старыми версиям) // атрибут и направление сортировки (совестимость со старыми версиям) // формат названия (совестимость со старыми версиям) // поля для формата названия (совестимость со старыми версиям) //все используемые атрибуты // соответствие атрибутов и полей задания // тип для заголова задания // формат // поля для формата // тип для описания задания // формат // поля для формата // тип для доп.полей задания // id доп.поля // формат // поля для формата
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Права на слой по умолчанию
GET /layers/{layerId}/defaultaccess
Структура запроса:
GET /layers/136/defaultaccess?token=9c6333f651846cfc94feae0597b61224
layerId: id слоя
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
[
{
"id": 9,
"layerId": 27,
"roleId": 10,
"roleName": "Администратор организации",
"allRoles": false,
"organizationId": null,
"organizationName": null,
"allOrganizations": true,
"publicOrganizations": null,
"read": true,
"edit": false,
"write": false,
"serviceObjects": true,
}
]
// правила // правило // id правила // id слоя // id роли // название роли // для всех ролей, логическое // id организации // название организации // для всех органзаций, логическое // true - для клиентских органзаций, false - для не клиентских // на чтение // на изменение/удаление слоя // на добавление/изменение/удаление объектов слоя // на использование слоя в качестве оъектов обслуживания
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Стиль слоя
GET /layers/{layerId}/style
Структура запроса:
GET /layers/199/style?token=9c6333f651846cfc94feae0597b61224
layerId: id слоя
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"style": {
"styleName": "Polygon",
"geoCss": "*{\n mark: symbol(\"circle\");\n}",
"base": false,
"simple": true,
"styleSld": " "
}
}
// объект стиля // название стиля, строка // css стиля, строка // является ли базовым, логическое // является ли простым, логическое // sld стиля, строка
Статус: 404 - слой не найден
Формат: text/plain
Содержит описание ошибки
Статус: 403 - нет доступа к данному слою
Формат: text/plain
Содержит описание ошибки
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Стили слоев
GET /layers/styles/base
Структура запроса:
GET /layers/styles/base?token=9c6333f651846cfc94feae0597b61224
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
[{
"styleName": "point",
"geoCss": "* {\n mark-opacity: 1.0;\n}",
"base": true,
"simple": false,
"styleSld": ""
},...]
// название стиля, строка // css стиля, строка // является ли базовым, логическое // является ли простым, логическое // sld стиля, строка
Статус: 404 - слой не найден
Формат: text/plain
Содержит описание ошибки
Статус: 403 - нет доступа к данному слою
Формат: text/plain
Содержит описание ошибки
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Тип геометрии стиля слоя
GET /layers/styles/base/{geomType}
Структура запроса:
GET /layers/styles/base/point?token=9c6333f651846cfc94feae0597b61224
geomType: тип геометрии
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"style":{
"styleName": "point",
"geoCss": "* {\n mark-opacity: 1.0;\n}",
"base": true,
"simple": false,
"styleSld": ""
}
}
// информация о стиле, объект // название стиля, строка // css стиля, строка // является ли базовым, логическое // является ли простым, логическое // sld стиля, строка
Статус: 404 - слой не найден
Формат: text/plain
Содержит описание ошибки
Статус: 403 - нет доступа к данному слою
Формат: text/plain
Содержит описание ошибки
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Тип геометрии слоя
GET /layers/{layerId}/geometrytype
Структура запроса:
GET /layers/25/geometrytype?token=9c6333f651846cfc94feae0597b61224
layerId: id слоя
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"geometryType":"MULTIPOLYGON"
}
// название типа геометрии
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Кластеры слоя
GET /layers/{layerId}/cluster
Структура запроса:
GET /layers/25/cluster?token=9c6333f651846cfc94feae0597b61224
layerId: id слоя
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"id": 11179,
"turned": true,
"maxZoom": 16,
"parameters": [{
"id": 401,
"objectsCount": 0,
"icon": {
"id": 99,
"name": "red",
"width": 73,
"height": 72
},
"labelColor": "ffffff"
}]
}
// id слоя, целое число // кластеризация включена, логическое // максимальный зум для кластеризации, целое число // параметры, массив // id, целое число // количество объектов, целое число // иконка, объект // id иконки, целое число // название иконки, строка // ширина, целое число // высота, целое число // цвет подписи, строка
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Индексация слоя
GET /layers/{layerId}/reindex
Структура запроса:
GET /layers/34/reindex?token=9c6333f651846cfc94feae0597b61224
layerId: id слоя
token: ключ доступа
withCreating: пересоздание индекса полностью (с удалением)
Ответ:
Статус: 200 - успешное выполнение
Формат: json
Принят запрос на индексацию
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Загрузка слоя из файла
Загрузка файла
POST /layers/upload
Структура запроса:
POST /layers/upload?token=9c6333f651846cfc94feae0597b61224
token: ключ доступа
Пример запроса:
Формат: данные файла
<?файл .....
// тело файла
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"status": "ok",
"data": ["p18hps8iga1pi81aot89i18d81of87.zip"]
}
// статус ответа // uuid загруженного файла
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Получение параметров только что загруженного файла слоя
GET /layers/upload/{uuid}
Структура запроса:
GET /layers/upload/p18hps8iga1pi81aot89i18d81of87.zip?token=9c6333f651846cfc94feae0597b61224
uuid: uuid файла слоя
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"uuid": "0e3e43d0-fabc-42a7-87ce-2dd6fba1eefb.zip",
"type": "vector",
"geometryType": "multipolygon",
"withProjection": true,
"attributes": [{
"name": "the_geom",
"rusName": "the_geom",
"type": "MultiPolygon",
"isGeometryField": true
}]
}
// uuid файла в кеше, строка // тип слоя (vector или raster), строка // тип геометрии, строка // есть ли в архиве файл с геоетрией, логическое // массив атрибутов // название атрибута, строка // русское название атрибута, строка // тип, строка // является ли полем с геометрией, логическое
Статус: 403 - нет доступа к загрузке слоев
Формат: text/plain
Содержит описание ошибки
Статус: 404 - файл слоя не загружен
Формат: text/plain
Содержит описание ошибки
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Отправка параметров для загруженного файла слоя
POST /layers/uploaded
Структура запроса:
POST /layers/uploaded?token=9c6333f651846cfc94feae0597b61224&apiVersion=2.0
token: ключ доступа
apiVersion: версия REST API 2.0
Пример запроса:
Формат: json
{
"name": "Novyi-sloy",
"title": "Новый слой",
"groupId": 1053,
"dataStoreId": 12,
"attributes": [{
"name": "attribute",
"rusName": "Атрибут",
"type": "string",
"forUpsert": true,
"forSearch": true,
"view": true,
"htmlEscape": true,
"popupView": false,
"order": 1
}],
"titleFields": {
"format": "{0}",
"fields": ["name"]
},
"subTitleFields": {
"format": "{0}",
"fields": ["category"]
},
"service": "WFS",
"fileName": "p18hps8iga1pi81aot89i18d81of87.zip",
"isEditable": true,
"isStyleEditable": true,
"styles": {
"isBase": true
},
"projection": "EPSG:4326",
"customFields": null
}
// английское название слоя, строка // заголовок, строка // id группы, целое число // id хранилища, целое число // данные об атрибутах, массив // английское название, строка // русское название, строка // тип, строка // показывать ли поле при создании/изменении объекта, логическое // будет ли использоваться поле для поиска по объектам слоя, логическое // показывать ли поле, логическое // экранировать ли html, логическое // показывать ли во всплавающем окошке, логическое // порядок, целое число // заголовок слоя // формат заголовка, строка // атрибуты, которые входят в заголовок, массив строк // подзаголовок слоя // формат заголовка, строка // атрибуты, которые входят в заголовок, массив строк // сервис получения данных WMS/WFS, строка // uuid загруженного слоя, строка // является редактируемым, логическое // можно редактировать стиль, логическое // стили, объект // является ли стиль простым, логическое // проекция, строка // дополнительные поля, объект
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"id": 154,
"name": "Новый слой",
"info": {
"id": 154,
"typeName": "test:novcyj_sloj_vw",
"style": "polygon",
"service": "WMS",
"poly": true,
"requestUrl": "/service/wms",
"tileSize": 256,
"geomField": "the_geom",
"pkField": "gid"
},
"isEditable": true,
"isStyleEditable": true,
"owner": 6,
"clusterId": 1,
"system": false,
"systemCode": null,
"fields": [{
"id": 3452,
"name": "parameter",
"rusName": "parameter",
"order": 1,
"title": false,
"view": true,
"forUpsert": true,
"forSearch": true,
"type": "string",
"htmlEscape": true,
"popupView": false,
"reference": false,
}],
"titleFields": {
"format": "{0}",
"fields": ["name"]
},
"subTitleFields": {
"format": "{0}",
"fields": ["category"]
},
"groupId": 42,
"dataStoreId": 22,
"order": 3,
"geometryType": "multipolygon",
"dataStoreName": "fail_store",
"layerType": "vector"
}
// id слоя, целое число // название слоя, строка // информация о слое, объект // id слоя, целое число // английское название слоя, строка // название стиля, строка // тип сервиса, WMS/WFS // является ли полигоном, логическое // url для запроса, строка // размер тайла, целое число // название поля с геометрией, строка // является ли редактируемым, логическое // можно ли редактировать стиль, логическое // id создателя слоя, целое число // id кластера или null, целое число // является ли слой системным, логическое // код для системного слоя, строка // информация об атрибутах, массив // id атрибута, целое число // английское название атрибута, строка // русское название атрибута, строка // порядковый номер в списке, целое число // является ли заголовком, логическое // показывать ли поле, логическое // показывать ли поле при создании/редактировании объекта, логическое // будет ли использоваться поле для поиска по объектам слоя, логическое // тип, строка // экранировать ли html, логическое // показывать ли во всплывающем окошке, логическое // является ли ссылкой на таблицу, логическое // заголовок слоя // формат заголовка, строка // атрибуты, которые входят в заголовок, массив строк // подзаголовок слоя // формат заголовка, строка // атрибуты, которые входят в заголовок, массив строк // id группы, целое число // id хранилища данных, целое число // порядковый номер в списке, целое число // тип геометрии, строка // название хранилища, строка // тип слоя, строка
Статус: 403 - нет доступа к загрузке слоев
Формат: text/plain
Содержит описание ошибки
Статус: 404 - файл не загружен
Формат: text/plain
Содержит описание ошибки
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Загрузка слоя через WS
Необходится подключиться по WebSocket
wss://site.domain/ws?token=&lang=&apiVersion=2.0
token: ключ доступа
lang: 2-х значное обозначение языка: ru, en ит.д.
apiVersion: версия REST API 2.0
Получение параметров для загруженного файла слоя через WS
Команда через WebSocket:
{
"command":"GET_UPLOADED_LAYER_INFO",
"data":{
"fileUuid":"{uuid}"
}
}
uuid: uuid файла слоя
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"command": "HTTP_RESPONSE",
"data": {
"status": 200,
"body": null,
"json": {
"uuid": "0fa244a6-aa1c-44c9-b878-075e149817c2.zip",
"type": "vector",
"geometryType": "multipoint",
"withProjection": true,
"attributes": [{
"name": "the_geom",
"rusName": "the_geom",
"type": "MultiPoint",
"isGeometryField": true
}]
}
}
}
// uuid файла в кеше, строка // тип слоя (vector или raster), строка // тип геометрии, строка // есть ли в архиве файл с геоетрией, логическое // массив атрибутов // название атрибута, строка // русское название атрибута, строка // тип, строка // является ли полем с геометрией, логическое
Статус: 403 - нет доступа к загрузке слоев
Формат: json
Содержит описание ошибки
Статус: 404 - файл слоя не загружен
Формат: json
Содержит описание ошибки
Статус: 500 - ошибка на сервере
Формат: json
Содержит описание ошибки
Отправка параметров для загруженного файла слоя через WS
Команда через WebSocket:
{
"command":"CREATE_LAYER_FROM_FILE",
"data":{
"name": "Novyi-sloy",
"title": "Новый слой",
"groupId": 1053,
"dataStoreId": 12,
"attributes": [{
"name": "attribute",
"rusName": "Атрибут",
"type": "string",
"forUpsert": true,
"forSearch": true,
"view": true,
"htmlEscape": true,
"popupView": false,
"order": 1
}],
"titleFields": {
"format": "{0}",
"fields": ["name"]
},
"subTitleFields": {
"format": "{0}",
"fields": ["category"]
},
"service": "WFS",
"fileName": "p18hps8iga1pi81aot89i18d81of87.zip",
"isEditable": true,
"isStyleEditable": true,
"styles": {
"isBase": true
},
"projection": "EPSG:4326",
"customFields": null
}
}
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"command": "HTTP_RESPONSE",
"data": {
"status": 200,
"body": null,
"json": {
"id": 154,
"name": "Новый слой",
"info": {
"id": 154,
"typeName": "test:novcyj_sloj_vw",
"style": "polygon",
"service": "WMS",
"poly": true,
"requestUrl": "/service/wms",
"tileSize": 256,
"geomField": "the_geom",
"pkField": "gid"
},
"isEditable": true,
"isStyleEditable": true,
"owner": 6,
"clusterId": 1,
"system": false,
"systemCode": null,
"fields": [{
"id": 3452,
"name": "parameter",
"rusName": "parameter",
"order": 1,
"title": false,
"view": true,
"forUpsert": true,
"forSearch": true,
"type": "string",
"htmlEscape": true,
"popupView": false,
"reference": false,
}],
"titleFields": {
"format": "{0}",
"fields": ["name"]
},
"subTitleFields": {
"format": "{0}",
"fields": ["category"]
},
"groupId": 42,
"dataStoreId": 22,
"order": 3,
"geometryType": "multipolygon",
"dataStoreName": "fail_store",
"layerType": "vector"
}
}
}
Статус: 403 - нет доступа к загрузке слоев
Формат: json
Содержит описание ошибки
Статус: 404 - файл не загружен
Формат: json
Содержит описание ошибки
Статус: 500 - ошибка на сервере
Формат: json
Содержит описание ошибки
Права доступа к слоям
Список прав доступа
Доступно только для пользователей с правами администратора
GET /layers/accesses
Структура запроса:
GET /layers/accesses?token=9c6333f651846cfc94feae0597b61224
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
[{
"userId": 60,
"layerId": 41,
"groupId": 3,
"organizationId": 1,
"layerOrder": 9,
"groupOrder": 6,
"read": true,
"write": false,
"edit": true,
"serviceObjects": true,
"isEditable": true,
"uniqueId": 257698053339,
"layerName": "Название слоя",
"groupName": "Название группы",
"userLogin": "login",
"userName": "ФИО пользователя"
},...]
// id пользователя, целое число // id слоя, целое число // id группы, целое число // id организации, целое число // порядковый номер слоя, целое число // порядковый номер группы, целое число // доступен к просмотру, логическое // доступен к управлению, логическое // доступен к редактированию, логическое // доступен в качестве оъектов обслуживания, логическое // редактируемый, логическое // уникальный id, целое число // название слоя, строка // название группы, строка // пользовательский логин, строка // имя пользователя, строка
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Количество прав доступа
Доступно только для пользователей с правами администратора
GET /layers/accesses/count
Структура запроса:
GET /layers/accesses/count?token=9c6333f651846cfc94feae0597b61224
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: text/plain
342
// количество прав доступа
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Создание права доступа
Доступно только для пользователей с правами администратора
POST /layers/accesses
Структура запроса:
POST /layers/accesses?token=9c6333f651846cfc94feae0597b61224
token: ключ доступа
Пример запроса:
Формат: json
{
"layerId": 36,
"userId": 60,
"read": true,
"write": false,
"edit": false,
"serviceObjects": true
}
// id слоя, целое число // id пользователя, целое число // право на просмотр, логическое // право на управление, логическое // право на редактирование, логическое // право на использование в качестве оъектов обслуживания, логическое
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"read": true,
"write": false,
"edit": false,
"serviceObjects": true,
"userName": "Пользователь",
"groupId": 4,
"userId": 110,
"layerName": "Слой"
}
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Экспорт прав доступа
Доступно только для пользователей с правами администратора
GET /layers/accesses.xlsx
Структура запроса:
GET /layers/accesses.xlsx?token=9c6333f651846cfc94feae0597b61224
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
Возвращает бинарный файл
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Хранилища слоев
GET /layers/datastores
Структура запроса:
GET /layers/datastores?token=9c6333f651846cfc94feae0597b61224
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
[{
"id": 213,
"name": "for_delete",
"host": "178.213.247.170",
"database": "ssc",
"schema": "rcku"
},...]
// id хранилища, целое число // наименование хранилища, строка // хост, строка // название базы данных, строка // название схемы, с которой работает хранилище, строка
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Группы слоев
Список групп слоев
GET /groups
Структура запроса:
GET /groups?token=9c6333f651846cfc94feae0597b61224
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"groups": [{
"id": 1,
"name": "Группа 1",
"order": "1"
}],
"mapExtent": {
"id": 123,
"name": "default",
"extent": {
"minX": 37.1722412109375,
"minY": 55.64272408255231,
"maxX": 38.13354492187501,
"maxY": 55.93612557332707,
"projection": "EPSG:4326"
},
"main": true
}
}
// массив объектов с информацией по группе // id группы, целое число // название группы, строка // порядковый номер группы в списке, целое число // бласть видимости карты, объект
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Список групп, включая полную информацию по принадлежащим им слоям
GET /groups/withLayers
Структура запроса:
GET /groups/withLayers?token=9c6333f651846cfc94feae0597b61224
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"groups": [{
"id": 1,
"name": "Задания",
"order": 3,
"system": false,
"groupLayers": [{
"layer": {
"id": 2,
"name": "Новые задания"
"isEditable": false,
"isStyleEditable": false,
"owner": 6,
"clusterId": null,
"system": false,
"systemCode": null,
"view": true,
"layerType": "vector",
"geometryType": "point",
"fields": [{
"id": 56,
"name": "issue_link",
"rusName": "ID",
"order": 1,
"title": false,
"view": true,
"forUpsert": true,
"forSearch": true,
"type": "int",
"htmlEscape": false,
"popupView": false,
"reference": false
}, ...],
"titleFields": {
"format": "{0}",
"fields": ["name"]
},
"subTitleFields": {
"format": "{0}",
"fields": ["category"]
},
"info": {
"id": 2,
"typeName": "workspace:organization_layer_new_issues",
"style": "cku_departments_news_incident_style",
"service": "WMS",
"poly": false,
"requestUrl": "/service/wms",
"tileSize": 256,
"geomField": "the_geom",
"pkField": "gid"
}
},
"order": 2,
"groupId": 1
}, ... ],
}, ...],
"mapExtent": {
"id": 123,
"name": "default",
"extent": {
"minX": 37.1722412109375,
"minY": 55.64272408255231,
"maxX": 38.13354492187501,
"maxY": 55.93612557332707,
"projection": "EPSG:4326"
},
"main": true
}
}
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Группы доступные пользователю
GET /users/groups
GET /users/groups?token=9c6333f651846cfc94feae0597b61224
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"groups": [{
"id": 1,
"name": "Группа слоя",
"order": 1
},...
]}
// группы пользователей, массив // id группы, целое число // название группы, строка // порядковый номер группы, целое число
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Поиск списка групп, включая полную информацию по принадлежащим им слоям
GET /groups/withLayers?name=Группа?token=9c6333f651846cfc94feae0597b61224
name: слово/фраза, которая входит в название списка групп
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"groups": [{
"id": 1,
"name": "Задания",
"order": 3,
"system": false,
"groupLayers": [{
"layer": {
"id": 2,
"name": "Новые задания"
"isEditable": false,
"isStyleEditable": false,
"owner": 6,
"clusterId": null,
"system": false,
"systemCode": null,
"view": true,
"layerType": "vector",
"geometryType": "point",
"fields": [{
"id": 56,
"name": "issue_link",
"rusName": "ID",
"order": 1,
"title": false,
"view": true,
"forUpsert": true,
"forSearch": true,
"type": "int",
"htmlEscape": false,
"popupView": false,
"reference": false
}, ...],
"titleFields": {
"format": "{0}",
"fields": ["name"]
},
"subTitleFields": {
"format": "{0}",
"fields": ["category"]
},
"info": {
"id": 2,
"typeName": "workspace:organization_layer_new_issues",
"style": "cku_departments_news_incident_style",
"service": "WMS",
"poly": false,
"requestUrl": "/service/wms",
"tileSize": 256,
"geomField": "the_geom",
"pkField": "gid"
}
},
"order": 2,
"groupId": 1
}, ... ],
}],
"mapExtent": {
"id": 123,
"name": "default",
"extent": {
"minX": 37.1722412109375,
"minY": 55.64272408255231,
"maxX": 38.13354492187501,
"maxY": 55.93612557332707,
"projection": "EPSG:4326"
},
"main": true
}
}
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Список групп, включая краткую информацию по принадлежащим им слоям
GET /groups/shortdata/withLayers
Структура запроса:
GET /groups/shortdata/withLayers?token=9c6333f651846cfc94feae0597b61224
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"groups": [{
"id": 1,
"name": "Задания",
"order": 3,
"system": false,
"groupLayers": [{
"layer": {
"id": 2,
"name": "Новые задания"
"owner": 6,
"clusterId": null,
"system": false,
"systemCode": null,
"view": true,
"info": {
"id": 2,
"typeName": "workspace:organization_layer_new_issues",
"style": "cku_departments_news_incident_style",
"service": "WMS",
"poly": false,
"requestUrl": "/service/wms",
"tileSize": 256,
"geomField": "the_geom",
"pkField": "gid"
}
},
"order": 2,
"groupId": 1
}, ... ],
}, ...],
"mapExtent": {
"id": 123,
"name": "default",
"extent": {
"minX": 37.1722412109375,
"minY": 55.64272408255231,
"maxX": 38.13354492187501,
"maxY": 55.93612557332707,
"projection": "EPSG:4326"
},
"main": true
}
}
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Поиск по названию
GET /groups
Структура запроса:
GET /groups?name=Пункт?token=9c6333f651846cfc94feae0597b61224
name: слово/фраза, которая входит в название списка групп
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"groups": [{
"id": 32,
"name": "Группа 1",
"order": "1"
}],
"mapExtent": {
"id": 123,
"name": "default",
"extent": {
"minX": 37.1722412109375,
"minY": 55.64272408255231,
"maxX": 38.13354492187501,
"maxY": 55.93612557332707,
"projection": "EPSG:4326"
},
"main": true
}
}
// массив объектов с информацией по группе // id группы, целое число // название группы, строка // порядковый номер группы в списке, целое число
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Поиск по id
GET /groups/{groupId}
Структура запроса:
GET /groups/32?token=9c6333f651846cfc94feae0597b61224
groupId: id группы
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"group": {
"id": 32,
"name": "Базовые слои",
"order": 1
}
}
// группа, объект // id группы, целое число // название группы, строка // порядок группы в списке
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Группа слоев, включая полную информацию по принадлежащим ей слоям
GET /groups/{groupId}/withLayers
Структура запроса:
GET /groups/32/withLayers?token=9c6333f651846cfc94feae0597b61224
groupId: id группы
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"group": {
"id": 1,
"name": "Задания",
"order": 3,
"system": false,
"groupLayers": [{
"layer": {
"id": 2,
"name": "Новые задания"
"isEditable": false,
"isStyleEditable": false,
"owner": 6,
"clusterId": null,
"system": false,
"systemCode": null,
"view": true,
"layerType": "vector",
"geometryType": "point",
"fields": [{
"id": 56,
"name": "issue_link",
"rusName": "ID",
"order": 1,
"title": false,
"view": true,
"forUpsert": true,
"forSearch": true,
"type": "int",
"htmlEscape": false,
"popupView": false,
"reference": false
}, ...],
"titleFields": {
"format": "{0}",
"fields": ["name"]
},
"subTitleFields": {
"format": "{0}",
"fields": ["category"]
},
"info": {
"id": 2,
"typeName": "workspace:organization_layer_new_issues",
"style": "cku_departments_news_incident_style",
"service": "WMS",
"poly": false,
"requestUrl": "/service/wms",
"tileSize": 256,
"geomField": "the_geom",
"pkField": "gid"
}
},
"order": 2,
"groupId": 1
}, ... ]
}
}
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Создание группы слоя
Доступно только для пользователей с правами администратора
POST /layers/groups
Структура запроса:
POST /layers/groups?token=9c6333f651846cfc94feae0597b61224
token: ключ доступа
Пример запроса:
Формат: json
{
"name": "Название новой группы слоев"
}
// название группы, строка
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"id": 32,
"name": "Населенные пункты",
"order": "1"
}
// id группы, целое число // название группы, строка // порядковый номер группы, целое число
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Сохранение порядка группы слоя
Доступно только для пользователей с правами администратора
POST /layers/groups/ordering
Структура запроса:
POST /layers/groups/ordering?token=9c6333f651846cfc94feae0597b61224
token: ключ доступа
Пример запроса:
{
"orderings": [{
"id": 1093,
"order": 1
},
{
"id": 413,
"order": 2
},…]
}
// порядок групп слоев, объект // id группы, целое число // порядок группы, целое число // id группы, целое число // порядок группы, целое число
Ответ:
Статус: 200 - успешное выполнение
Формат: json
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Изменение группы слоя
Доступно только для пользователей с правами администратора
PUT /layers/groups/{id}
Структура запроса:
PUT /layers/groups/27?token=9c6333f651846cfc94feae0597b61224
id: id группы слоя
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"id": 27,
"name": "Новое название группы слоя",
"order": 1
}
// id группы, целое число // название группы, строка // порядковый номер группы, целое число
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Удаление группы слоя
Доступно только для пользователей с правами администратора
DELETE /layers/groups/{id}
Структура запроса:
DELETE /layers/groups/27?token=9c6333f651846cfc94feae0597b61224
id: id группы слоя
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"delete": true
}
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Экспорт групп слоя
Доступно только для пользователей с правами администратора
GET /layers/groups.xlsx
Структура запроса:
GET /layers/groups.xlsx?token=9c6333f651846cfc94feae0597b61224
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
Возвращает бинарный файл
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Права организаций на группы
Список прав на группы
Доступно только для пользователей с правами администратора
GET /organizations/groups
GET /organizations/groups?token=9c6333f651846cfc94feae0597b61224
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
[{
"organizationId": 1,
"groupId": 13,
"organizationName": "Министерство по ЧС",
"groupName": "Название группы",
"read": false
},...]
// id организации, целое число // id группы, целое число // название организации, строка // название группы, строка // доступна к просмотру, логическое
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Количество прав на группы
Доступно только для пользователей с правами администратора
GET /organizations/groups/count
GET /organizations/groups/count?token=9c6333f651846cfc94feae0597b61224
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: text/plain
56
// количество прав на группы, целое число
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Создание права на группу
Доступно только для пользователей с правами администратора
POST /organizations/groups
POST /organizations/groups?token=9c6333f651846cfc94feae0597b61224
token: ключ доступа
Пример запроса:
Формат: json
{
"groupId": 13,
"organizationId": 1,
"read": true
}
// id группы, целое число // id организации, целое число // доступна к просмотру, логическое
Ответ:
Статус: 200 - успешное выполнение
Формат: json
Право на группу добавлено
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Экспорт прав на группу
Доступно только для пользователей с правами администратора
GET /organizations/groups.xlsx
GET /organizations/groups.xlsx?token=9c6333f651846cfc94feae0597b61224
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
Возвращает бинарный файл
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Объекты слоя
Создание объекта слоя
POST /layers/{layerId}/features
Структура запроса:
POST /layers/145/features?apiVersion=2.0&token=9c6333f651846cfc94feae0597b61224
layerId: id слоя
apiVersion: версия API, 2.0
token: ключ доступа
Пример запроса:
Формат: json
{
"attributes": [
{
"name": "naimenovan",
"type": "string",
"value": "Мытищи"
},
{
"name": "int",
"type": "int",
"value": "1"
},
{
"name": "float",
"type": "double",
"value": "2.2"
},
{
"name": "datetime",
"type": "dateTime",
"value": 1623158460000
},
{
"name": "date",
"type": "date",
"value": "06.08.2021"
},
{
"name": "date_timestamp",
"type": "date",
"value": 1626739200000
},
{
"name": "logicheskoe",
"type": "boolean",
"value": true
}
],
"geometry": {
"type": "MultiPoint",
"coordinates": [[64.3359375,60.58696734225869]]
},
"files": [{
"uuid": "p19bmted386it1m9g1qf91h1n8jg7.doc",
"name": "gloreg.doc"
}],
"pages": [{
"url": "http://www.url.com",
"description": "Веб-страница",
"size": {
"width": 640,
"height": 360
}
}],
"photos": [{
"uuid": "p19bmtd4911ef215h0fal1ugg124a5.jpg",
"name": "Lighthouse.jpg"
}]
}
// список атрибутов // название атрибута, строка // тип атрибута, строка // значение, строка // объект геометрии // тип геометрии, строка // координаты, массив // список файлов // uuid загруженного файла, строка // название файла, строка // веб-страницы // адрес, строка // описание, строка // размер // ширина, целое число // высота, целое число // список фотографий // uuid загруженной фотографии, строка // название фотографии, строка
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"insert": true
}
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Список возможных значений для полей, связанных с таблицами
GET /layers/{layerId}/fields/{attrName}/values
GET /layers/29/fields/_RealValue_spravochnik/values?token=9c6333f651846cfc94feae0597b61224
layerId: id слоя
attrName: название атрибута в БД
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
[
{
"refValue": 1,
"refValueName": "Название1"
}
]
// массив возможных значениц // объект // id значения // заголовок
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Изменение объекта слоя
PUT /layers/{layerId}/features/{featureId}
Структура запроса:
PUT /layers/154/features/3?apiVersion=2.0&token=9c6333f651846cfc94feae0597b61224
layerId: id слоя
featureId: id объекта
apiVersion: версия API, 2.0
token: ключ доступа
Пример запроса:
Формат: json
{
"attributes": [
{
"name": "naimenovan",
"type": "string",
"value": "Мытищи1"
},
{
"name": "int",
"type": "int",
"value": "1"
},
{
"name": "float",
"type": "double",
"value": "2.2"
},
{
"name": "datetime",
"type": "dateTime",
"value": 1623158460000
},
{
"name": "date",
"type": "date",
"value": "06.08.2021"
},
{
"name": "date_timestamp",
"type": "date",
"value": 1626739200000
},
{
"name": "logicheskoe",
"type": "boolean",
"value": true
}
],
"geometry": {
"type": "MultiPoint",
"coordinates": [[64.3359375,60.58696734225869]]
},
"removeGeometry": false,
"files": [{
"uuid": "b3tbt4tuj46n4yummmm1n8jg7.doc",
"name": "gloreg.doc"
}],
"removeFiles": [5,6],
"pages": [{
"url": "http://www.url.com",
"description": "Веб-страница1",
"size": {
"width": 640,
"height": 360
}
}],
"removePages": [1],
"photos": [{
"uuid": "4345hyhukujh4ju5uyyjk7u5jgg124a5.jpg",
"name": "Lighthouse.jpg"
}],
"removePhotos": [4]
}
// список атрибутов // название атрибута, строка // тип атрибута, строка // значение, строка // объект геометрии // тип геометрии, строка // координаты, массив // нужно ли удалить геометрию объекта // список новых файлов // uuid загруженного файла, строка // название файла, строка // массив id удаляемых файлов // новые веб-страницы // адрес, строка // описание, строка // размер // ширина, целое число // высота, целое число // массив id удаляемых веб-страниц // список новых фотографий // uuid загруженной фотографии, строка // название фотографии, строка // массив id удаляемых фотографий
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"update": true
}
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Изменение конкретных полей объекта слоя
Пример с прикреплением только что загруженного изображения и удалением старого. Доступны любые комбинации полей из PUT запроса
PATCH /layers/{layerId}/features/{featureId}
Структура запроса:
PATCH /layers/154/features/3?apiVersion=2.0&token=9c6333f651846cfc94feae0597b61224
layerId: id слоя
featureId: id объекта
apiVersion: версия API, 2.0
token: ключ доступа
Пример запроса:
Формат: json
{
"photos": [{
"uuid": "p19borhjnvfm31nuaaja1dkfa335.png",
"name": "new_photo.png"
}],
"removePhotos": [5,6]
}
// список фотографий // uuid фотографии, строка // название фотографии, строка // массив id удаляемых фотографий
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"update": true
}
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Удаление объекта слоя
DELETE /layers/{layerId}/features/{featureId}
Структура запроса:
DELETE /layers/154/features/3?token=9c6333f651846cfc94feae0597b61224
layerId: id удаляемого слоя
featureId: id объекта
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"delete":true
}
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Добавление медиа файлов к объекту
PATCH /layers/{layerId}/features/{featureId}/files
Структура запроса:
PATCH /layers/145/features/345/files?apiVersion=2.0&token=9c6333f651846cfc94feae0597b61224
layerId: id слоя
featureId: id объекта
apiVersion: версия API, 2.0
token: ключ доступа
Пример запроса:
Формат: json
{
"photos": [
{
"isUrl": true,
"path": "/department_files/photos/2022_07_22_15-50_688ead68-ee2d-1004-8c84-f7a444399106.jpg",
"fileName": "2022_07_22_15-50_688ead68-ee2d-1004-8c84-f7a444399106.jpg"
},
{
"isUrl": false,
"path": "/var/www/mapadmin/htdocs/department_files/photos/2022/07/22/15-50/688ead68-ee2d-1004-8c84-f7a444399106.jpg",
"fileName": "250px-Georg_Caspar_Prenner_03.jpg"
},
{
"path": "https://ms36.dev.geo4.pro/rest/news/147/photos/2",
"fileName": "photo_2022-07-19_15-26-47 (2).jpg",
"isUrl": true
}
],
"files": [
{
"path": "c:\\Users\\san13\\OneDrive\\Pictures\\IMG_2404.MOV",
"fileName": "IMG_2404.MOV",
"isUrl": false
}
]
}
// блок с фотографиями // передается ли в виде url // путь на диске или url (внутри системы можно без домена) // название файла // блок с файлами // объект геометрии // тип геометрии, строка // координаты, массив // список файлов // uuid загруженного файла, строка // название файла, строка // веб-страницы // адрес, строка // описание, строка // размер // ширина, целое число // высота, целое число // список фотографий // uuid загруженной фотографии, строка // название фотографии, строка
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"insert": true
}
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Список объектов
GET /layers/:layerId/features
Структура запроса:
GET /layers/212/features?token=9c6333f651846cfc94feae0597b61224&pageNumber=1&limit=50&orderBy=nazvanie&asc=false
&cql_filter=(strToLowerCase(nazvanie) like '%гагарина%')
layerId: id слоя
pageNumber: страница для пагинации данных
limit: ограничение на количество данных в ответе
orderBy: поле, по которому нужно сортировать данные. По умолчанию по первичному ключу
asc: если true, то сортировка в порядке возрастания, если false - то наоборот.По умолчанию asc=true
cql_filter: фильтр для данных в формате CQL
ids: id объектов через запятую, по которым необходимо получить информацию
notIds: id объектов через запятую, которые необходимо исключить из выборки
requestAttributes: список атрибутов слоя через запятую, которые необходимо получить в ответе. Для поля с первичным ключом можно иcпользовать алиас fid
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"features": [
{
"fid": 25,
"nazvanie": "гагарина",
"kategoriya": "105",
"the_geom": "{\"type\":\"MultiLineString\",\"coordinates\":[[[49.28466796875,55.7951054522369],
[49.4590759277344,55.7788900549897],[49.3890380859375,55.8437111579294]]]}",
}, ...
],
"layerId": 212,
"geomFieldName": "the_geom"
}
// список объектов // информация по объекту // id слоя // название поля с геометрией
Статус: 403 - нет доступа к слоям
Формат: text/plain
Содержит описание ошибки
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Количество объектов
GET /layers/:layerId/features/count
GET /layers/25/features/count?token=9c6333f651846cfc94feae0597b61224
layerId: id слоя
cql_filter: фильтр для данных в формате CQL
ids: id объектов через запятую, по которым необходимо получить информацию
notIds: id объектов через запятую, которые необходимо исключить из выборки
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: text/plain
237
// количество объектов в слое
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Объект слоя
GET /layers/{layerId}/features/{featureId}
Структура запроса:
GET /layers/212/features/34?token=9c6333f651846cfc94feae0597b61224
layerId: id слоя
featureId: id объекта
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"feature": {
"fid": 25,
"nazvanie": "гагарина",
"uchastok": null,
"data_paspo": null,
"kategoriya": "105",
"protyazhen": null,
"podryadchi": null,
"rajon": null,
"the_geom": "{\"type\":\"MultiLineString\",\"coordinates\":[[[49.28466796875,55.7951054522369],
[49.4590759277344,55.7788900549897],[49.3890380859375,55.8437111579294]]]}",
"sys_geom_center": "{\"type\":\"Point\",
\"coordinates\":[37.617635,55.755814]}"
},
"layerId": 212,
"geomFieldName": "the_geom"
}
// объект // информация по объекту // точка, являющаяся цетром геометрии объекта (системное поле) // id слоя // название поля с геометрией
Статус: 403 - нет доступа к слоям
Формат: text/plain
Содержит описание ошибки
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Список объектов в точке
POST /layers/feature
Структура запроса:
POST /layers/feature?token=9c6333f651846cfc94feae0597b61224
token: ключ доступа
Пример запроса:
{
"layersId": [198,245,345],
"size": {
"x": 1920,
"y": 778
},
"extent": {
"southWest": {
"lat": 55.488191455802244,
"lon": 47.94158935546874
},
"northEast": {
"lat": 56.08889483995169,
"lon": 50.57830810546875
}
},
"point": {
"x": 859,
"y": 364
},
"filters": {
198: "(strToLowerCase(srnaimenovanie) like '%савиновский%')"
}
}
// массив id слоев, где будет осуществляться поиск // размер области видимости в пикселях, объект // пикселей по оси x, целое число // пикселей по оси y, целое число // область видимости карты, объект // координаты нижней левой точки на карте в градусах, объект // широта нижней левой точки, вещественное число // долгота нижней левой точки, вещественное число // координаты верхней правой точки на карте в градусах, объект // широта верхней правой точки, вещественное число // долгота верхней правой точки, вещественное число // точка центра области видимости в пикселях, объект // координата х, целое число // координата y, целое число // CQL-фильтры для слоев, не обязательно поле // id слоя и соответствующий ему фильтр
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"data": {
"kziokzn:vamin_kioski_p_vw": {
"features": [{
"fid": "141",
"zayavit": "ОАО Вамин Татарстан",
"syyinfo":"Есть",
"srnaimenovanie":"Ново-савиновский",
"geom":"",
"nomerdoma":"47",
"sunaimenovanie":"10летОктября[П, Ст.Победилово]",
"syinfo":"Есть",
"svinfo":"Существующий"
}
],
"layerId":198,
"geomFieldName":null
}
}
}
// объект найденных данных // английское название слоя, где найдены объекты // массив объектов // первичный ключ объекта, строка // поля объекта и их значения // id слоя // поле геометрии либо null
Статус: 403 - нет доступа к слоям
Формат: text/plain
Содержит описание ошибки
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Список объектов в области
POST /layers/feature/bbox
Структура запроса:
POST /layers/feature/bbox?token=9c6333f651846cfc94feae0597b61224
token: ключ доступа
Пример запроса:
{
"layersId": [198,234,23],
"srs": "EPSG:4326",
"extent": {
"southWest": {
"lon": 49.04296875,
"lat": 55.754940702479146
},
"northEast": {
"lon": 49.299774169921875,
"lat": 55.90457539720638
}
},
"polygonFilter": {
"filterType": "INTERSECTS",
"coordinates": [[37.49908447265626,55.73638916286441],
[37.53204345703126,55.780820813358645],...]
},
"filters": {
198: "(strToLowerCase(srnaimenovanie) like '%савиновский%')"
}
}
// массив id слоев, где будет осуществляться поиск // проекция запроса, строка // область поиска, объект // координаты нижней левой точки области, объект // широта нижней левой точки, вещественное число // долгота нижней левой точки, вещественное число // координаты верхней правой точки области, объект // широта верхней правой точки, вещественное число // долгота верхней правой точки, вещественное число // поиск по произвольному полигону (вместо extent) // тип поиска по геометри из доступных в CQL // координаты полигона // CQL-фильтры для слоев, не обязательно поле // id слоя и соответствующий ему фильтр
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"data": {
"kziokzn:vamin_kioski_p_vw": {
"features": [
{
"fid": "141",
"zayavit": "ОАО Вамин Татарстан",
"syyinfo":"Есть",
"srnaimenovanie":"Ново-савиновский",
"geom":" ",
"nomerdoma":"47",
"sunaimenovanie":"10летОктября[П, Ст.Победилово]",
"syinfo":"Есть",
"svinfo":"Существующий"
}
],
"layerId":198,
"geomFieldName":null
}
}
}
// объект найденных данных // английское название слоя, где найдены объекты, строка // массив объектов // первичный ключ объекта, строка // поля объекта и их значения // id слоя, целое число // поле геометрии, строка
Статус: 403 - нет доступа к слоям
Формат: text/plain
Содержит описание ошибки
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Получение медиа информации, прикрепленной ко всем объектам слоя
GET /layers/eis/{layerId}
Структура запроса:
GET /layers/eis/198?token=9c6333f651846cfc94feae0597b61224
layerId: id слоя
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
[
{
"layerObjectId": 1,
"files": [
{
"objectId": "1",
"url": "/layers/eis/7392/1/photo/1",
"fileName": "Chrysanthemum.jpg",
"type": {
"id": 3,
"name": "photo"
},
"asUrl": false,
"width": null,
"height": null
}
]
}
]
// массив объектов с медиафайлами // объект слоя // id объекта слоя // массив найденных прикрепленных файлов // id файла // путь к файлу // название файла // тип файла // id типа, // название типа, может быть photo, video, audio, file, page // представлен ли файл как ссылка // ширина окна, для страниц (type=page) // высота окна, для страниц (type=page)
Статус: 404 - слой не найден в системе
Формат: text/plain
Содержит описание ошибки
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Получение медиа информации, прикрепленной к объекту слоя
GET /layers/eis/{layerId}/{objectId}
Структура запроса:
GET /layers/eis/198/141?token=9c6333f651846cfc94feae0597b61224
layerId: id слоя
objectId: значение первичного ключа объекта
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"files": [
{
"url": "/layers/eis/198/141/photo/247",
"fileName": "Чистопольская,47.JPG",
"type": {
"id": 3,
"name": "photo"
},
"asUrl": false,
"width": null,
"height": null
},
{
"url": "/layers/eis/198/141/file/247",
"fileName": "Чистопольская,47.JPG",
"type": {
"id": 4,
"name": "file"
},
"asUrl": false,
"width": null,
"height": null
}
]
}
// массив найденных прикрепленных файлов // путь к файлу // название файла // тип файла // id типа, // название типа, может быть photo, video, audio, file,page // представлен ли файл как ссылка, булевое поле // ширина окна, для страниц (type=page) // высота окна, для страниц (type=page) // адрес, строка // название файла, строка // тип, объект // id типа, целое число // название, строка // представлен ли файл как ссылка, булевое поле // ширина, целое число // высота, целое число
Статус: 404 - слой не найден в системе
Формат: text/plain
Содержит описание ошибки
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Получение медиа файла, прикрепленного к объекту слоя
GET /layers/eis/{layerId}/{objectId}/photo/{photoId}
Структура запроса:
GET /layers/eis/198/141/photo/247?token=9c6333f651846cfc94feae0597b61224
layerId: id слоя
objectId: первичный ключ объекта
photoId: первичный ключ фотографии
token: ключ доступа
Отображение прикрепленной фотографии с масштабированием по высоте
GET /layers/eis/{layerId}/{objectId}/photo/{photoId}/{height}
Структура запроса:
GET /layers/eis/198/141/photo/247/100?token=9c6333f651846cfc94feae0597b61224
layerId: id слоя
objectId: первичный ключ объекта
photoId: первичный ключ фотографии
height: высота для масштабирования
token: ключ доступа
Отображение прикрепленной фотографии с масштабированием по высоте и ширине
GET /layers/eis/{layerId}/{objectId}/photo/{photoId}/{height}/{width}
Структура запроса:
GET /layers/eis/198/141/photo/247/100/150?token=9c6333f651846cfc94feae0597b61224&crop=true
layerId: id слоя
objectId: первичный ключ объекта
photoId: первичный ключ фотографии
height: высота для масштабирования
width: ширина для масштабирования
token: ключ доступа
crop: обрезать фотографию по размерам (необязательный)
Ответ:
Статус: 200 - успешное выполнение
Формат: image/jpeg и т.д.
Статус: 404 - слой не найден в системе
Формат: text/plain
Содержит описание ошибки
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Отображение прикрепленного файла
GET /layers/eis/{layerId}/{objectId}/{fileType}/{fileId}
Структура запроса:
GET /layers/eis/198/141/file/247?token=9c6333f651846cfc94feae0597b61224
layerId: id слоя
objectId: первичный ключ объекта
fileType: тип файла: photo, video, audio, file
fileId: первичный ключ файла
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: зависит от типа отдаваемого файла
Статус: 404 - слой не найден в системе
Формат: text/plain
Содержит описание ошибки
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Метрические характеристики произвольной геометрии
POST /layers/feature/bbox
Структура запроса:
POST /geometry/gisinfo?token=9c6333f651846cfc94feae0597b61224
token: ключ доступа
Пример запроса:
{
"geometry": {
"type": "MultiPolygon",
"coordinates":[[[[47.29080887999999,54.6742674],...]]]
},
"srs": "EPSG:4326"
}
// геометрияя в формате GeoJson // проекция, обязательно указывать только если отличается от 4326
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"numGeometries": 1,
"nRings": 1,
"numInteriorRings": 0,
"nPoints": 6,
"centroid": {
"type": "Point",
"coordinates": [
47.409725817,
54.532109119
]
},
"pointOnSurface": {
"type": "Point",
"coordinates": [
47.409727515,
54.532284
]
},
"area": 511564.77793467045,
"perimeter": 3179.567788512778,
"length": 0,
"geomType": "MULTIPOLYGON"
}
// Количество элементов в мультигеометрии // Количество внешних колец мультиполигона // Количество внутренних колец (дырок) мультиполигона // Количество точек // Центроид (GeoJson, проекция 4326) // Центроид гарантированно внутри полигона (GeoJson, проекция 4326) // Площадь (для полигонов), метры квадратные // Периметр (для полигонов), метры // Длина (для линий), метры // Тип геометрии
Статус: 403 - нет доступа
Формат: text/plain
Содержит описание ошибки
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Слои, таблицы с данными, справочники
Список
GET /datatables
Структура запроса:
GET /datatables?token=9c6333f651846cfc94feae0597b61224
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
[{
"id": 26,
"systemCode": "LAYER",
"view": true,
"useForSearch": true,
"schemeName": "data",
"nameDb": "materials",
"pkField": "gid",
"eisTable": false,
"titleFields": {
"format": "{0}",
"fields": [
"name"
]
},
"subTitleFields": null,
"owner": 6,
"attributes": [
{
"id": 211,
"type": "reference",
"refInfo": {
"tableType": "DICTIONARY",
"table": 71,
"field": 209,
"fieldName": 210
},
"title": "Группа материалов",
"forUpsert": true,
"forSearch": false,
"view": true,
"nameDb": "sys_group_id",
"htmlEscape": true,
"popupView": false
}, ...
],
"system": false,
"access": {
"read": true,
"edit": true,
"importObjects": true,
"write": true,
"serviceObjects": true
},
"title": "Материалы и услуги",
"clusterId": null,
"dataStoreId": 3,
"layerInfo": {
"info": {
"geomField": "geom",
"pkField": "news_id",
"service": "WMS",
"requestUrl": "/service/wms",
"tileSize": 256,
"typeName": "activemap_custom_views:organization_layer_new_issues",
"poly": false,
"style": "cku_departments_news_incident_style"
},
"clusterStyle": null,
"isStyleEditable": false,
"layerType": "vector",
"isEditable": false,
"geometryType": "point",
"isRaster": false
},
"groupInfo": {
"groupId": 12,
"order": 2
}
}]
// массив слоев, таблиц с данными, справочников // id слоя // системный код LAYER, DATATABLE, DICTIONARY // отображать ли в интерфейсе // досупен ли полнотекстовый поиск // схема в БД // название таблицы в БД // поле первичного ключа // доступно ли прикрепление файлов/фотографий // формат отображения заголовка // формат // используемые поля // формат отображения подзаголовка (по аналогии с заголовком) // создатель // атрибуты // id атрибута // тип атрибута // информация о связи c другой таблицей (тип reference) // тип таблицы (DICTIONARY, DATATABLE, LAYER) // id связанной таблицы // id поля-ключа // id поля-значения // название атрибута // доступно ли при добавлении/редактировании // доступен ли поиск по атрибуту // отображать ли в интерфейсе // название атрибута в БД // экранировать ли html-символы // отображать ли в всплаывющем окне // системный ли // права доступа // права на чтение // права на редактирование структуры // возможность на импорт объектов // права на добавление/редактирование объектов // является ли сервисным // заголовок // id кластера // id хранилища данных // информация о слое (для кода LAYER) // информация для отображения на карте // стиль кластеризации для точек // доступно ли редактирование стиля // тип слоя (vector, raster) // доступно ли редактирование структуры слоя // тип геометрии (point, line, polygon) // является ли растровым слоем // информация о группе
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Количество
GET /datatables/count
GET /datatables/count?token=9c6333f651846cfc94feae0597b61224
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: text/plain
237
// количество таблиц
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Создание
POST /datatables
Структура запроса:
POST /datatables?token=9c6333f651846cfc94feae0597b61224&apiVersion=2.0
token: ключ доступа
Пример запроса:
Формат: json
{
"systemCode": "LAYER",
"nameDb": "new_layer",
"title": "Новый слой",
"groupId": 1,
"dataStoreId": 3,
"clusterId": 1,
"attributes": [
{
"nameDb": "name",
"title": "Название",
"type": "reference",
"view": true,
"forUpsert": true,
"forSearch": true,
"htmlEscape": true,
"popupView": true,
"refTable": 2,
"refField": 1,
"refFieldName": 3
},...
],
"titleFields": {
"format": "{0}",
"fields": ["name"]
},
"subTitleFields": {
"format": "{0}",
"fields": ["count"]
},
"serviceObjects": {
"turned": true,
"title_format": "{0}",
"title_fields": ["name"],
"field_mappings": [
{
"type": "Title",
"field_id": null,
"format": "{0}",
"fields": [
"name"
]
},
]
},
"defaultAccess":[{
"roleId": 5,
"allRoles": false,
"organizationId": null,
"allOrganizations": true,
"publicOrganizations": null,
"read": true,
"edit": false,
"write": false,
"serviceObjects": true
}],
"eisTable": true,
"useForSearch": true,
"customFields": null,
"layerInfo": {
"service": "WFS",
"geometryType": "point",
"isEditable": true,
"isStyleEditable": true,
"styles": {
"isBase": true
},
"projection": "EPSG:4326"
}
}
// системный код LAYER, DATATABLE, DICTIONARY // название таблицы в БД // заголовок // id группы (не обязательное поле) // id хранилища данных (не обязательное поле) // id кластера (не обязательное поле) // атрибуты // название в БД // заголовок // тип // показывать ли в интерфейсе // можно ли редактировать // участвует ли в поиске // экранировать ли html // показывать ли в попапе // id таблицы-связки для типа "reference" // id атрибута-ключа // id атрибута-значения // формат заголовка // формат подзаголовка // настройка маппингда для заданий // настройка прав по умолчанию // можно ли прикреплять файлы и фотографии // использовать ли для полнотекстового поиска // кастомные поля // настройка для слоя (системный код LAYER)
Примечание:
Симтемные коды: LAYER, DATATABLE, DICTIONARY
В зависимости от выбранного типа геометрии в "styles" могут передаваться следующие параметры:
- isBase - базовый стиль (логическое)
- isSimple - простой стиль (логическое)
- style - расширенный стиль (строка - описывается geocss)
Параметр service можно не передавать. Для полигонов и линий по умолчанию WMS, для точек WFS.
Параметр datastoreId может передавать только гд.администратор
Параметр clusterId может передавать только гд.администратор, если создает слой для конкретного кластера. Параметр может быть null
Параметр projection можно не передавать. По умолчанию - EPSG:4326
Доступные типы атрибутов:
- string - строка
- int - целое число
- boolean - логический тип
- num - вещественное число
- date - дата
- dateTime - дата и время
- reference - связь с таблицей (refTable - id таблицы из списка, refField - id поля-ключа, refFieldName - id поляназвания
- systemorg - связь с организацией (английское название поля должно быть sys_org_id)
- systemcluster - связь с кластером (английское название поля должно быть sys_clr_id)
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"id": 5,
"systemCode": "LAYER",
"view": true,
"useForSearch": true,
"schemeName": "data",
"nameDb": "new_layer_vw",
"pkField": "gid",
"eisTable": true,
"customFields": null,
"titleFields": {
"format": "{0}",
"fields": [
"name"
]
},
"subTitleFields": null,
"owner": 6,
"attributes": [
{
"id": 4,
"type": "string",
"title": "name",
"view": true,
"forUpsert": true,
"popupView": false,
"htmlEscape": true,
"refInfo": null,
"nameDb": "name",
"forSearch": true
},...
],
"layerInfo": {
"info": {
"geomField": "the_geom",
"pkField": "gid",
"service": "WFS",
"requestUrl": "/service/wfs",
"tileSize": 256,
"typeName": "workspace:new_layer_vw",
"poly": false,
"style": "new_layer_1690205960096_style"
},
"isRaster": false,
"layerType": "vector",
"isEditable": true,
"geometryType": "multipoint",
"clusterStyle": null,
"isStyleEditable": true
},
"access": {
"read": true,
"edit": true,
"importObjects": false,
"write": true,
"serviceObjects": false
},
"dataStoreId": 3,
"clusterId": null,
"title": "Новый слой",
"system": false,
"groupInfo": {
"order": 22,
"groupId": 1
}
}
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Изменение
PATCH /datatables/{tableId}
Структура запроса:
PATCH /datatables/5?token=9c6333f651846cfc94feae0597b61224&apiVersion=2.0
tableId: id изменяемого слоя
token: ключ доступа
Пример запроса:
Формат: json
{
"title": "Новый слой",
"groupId": 1,
"clusterId": 1,
"attributes": [
{
"id": 4,
"title": "Название",
"type": "reference",
"view": true,
"forUpsert": true,
"forSearch": true,
"htmlEscape": true,
"popupView": true,
"refTable": 2,
"refField": 1,
"refFieldName": 3
},...
],
"titleFields": {
"format": "{0}",
"fields": ["name"]
},
"subTitleFields": {
"format": "{0}",
"fields": ["count"]
},
"serviceObjects": {
"turned": true,
"title_format": "{0}",
"title_fields": ["name"],
"field_mappings": [
{
"type": "Title",
"field_id": null,
"format": "{0}",
"fields": [
"name"
]
},
]
},
"defaultAccess":[{
"roleId": 5,
"allRoles": false,
"organizationId": null,
"allOrganizations": true,
"publicOrganizations": null,
"read": true,
"edit": false,
"write": false,
"serviceObjects": true
}],
"eisTable": true,
"useForSearch": true,
"customFields": null,
"layerInfo": {
"service": "WFS",
"isEditable": true,
"isStyleEditable": true,
"styles": {
"isBase": true
}
}
}
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"id": 5,
"title": "Новый слой",
"groupId": 1,
"clusterId": 1,
"attributes": [
{
"nameDb": "name",
"title": "Название",
"type": "reference",
"view": true,
"forUpsert": true,
"forSearch": true,
"htmlEscape": true,
"popupView": true,
"refTable": 2,
"refField": 1,
"refFieldName": 3
},...
],
"titleFields": {
"format": "{0}",
"fields": ["name"]
},
"subTitleFields": {
"format": "{0}",
"fields": ["count"]
},
"serviceObjects": {
"turned": true,
"title_format": "{0}",
"title_fields": ["name"],
"field_mappings": [
{
"type": "Title",
"field_id": null,
"format": "{0}",
"fields": [
"name"
]
},
]
},
"defaultAccess":[{
"roleId": 5,
"allRoles": false,
"organizationId": null,
"allOrganizations": true,
"publicOrganizations": null,
"read": true,
"edit": false,
"write": false,
"serviceObjects": true
}],
"eisTable": true,
"useForSearch": true,
"customFields": null,
"layerInfo": {
"service": "WFS",
"geometryType": "point",
"isEditable": true,
"isStyleEditable": true,
"styles": {
"isBase": true
},
"projection": "EPSG:4326"
}
}
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Удаление
DELETE /datatables/{tableId}
Структура запроса:
DELETE /datatables/14?token=9c6333f651846cfc94feae0597b61224
tableId: id удаляемой таблицы
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"delete":true
}
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Список таблиц, используемый в качестве объектов обслуживания
GET /datatables/serviceobjects
GET /datatables/serviceobjects?token=9c6333f651846cfc94feae0597b61224
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
[{
"id": 5,
"systemCode": "LAYER",
"view": true,
"useForSearch": true,
"pkField": "gid",
"eisTable': true,
"owner": 6,
"system": false,
"title": "Сервисные объекты",
"clusterId": null,
"layerInfo": {
"info": {
"geomField": "the_geom",
"pkField": "gid",
"service": "WMS",
"requestUrl": "/service/wms",
"tileSize": 256,
"typeName": "workspace:service_objects_vw",
"poly": false,
"style": "point"
}
}
}]
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Информация по таблице
GET /datatables/{tableId}
Структура запроса:
GET /datatables/5?token=9c6333f651846cfc94feae0597b61224
tableId: id слоя
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"id": 5,
"systemCode": "LAYER",
"view": true,
"useForSearch": true,
"schemeName": "data",
"nameDb": "new_layer_vw",
"pkField": "gid",
"eisTable": true,
"customFields": null,
"titleFields": {
"format": "{0}",
"fields": [
"name"
]
},
"subTitleFields": null,
"owner": 6,
"attributes": [
{
"id": 4,
"type": "string",
"title": "name",
"view": true,
"forUpsert": true,
"popupView": false,
"htmlEscape": true,
"refInfo": null,
"nameDb": "name",
"forSearch": true
},...
],
"layerInfo": {
"info": {
"geomField": "the_geom",
"pkField": "gid",
"service": "WFS",
"requestUrl": "/service/wfs",
"tileSize": 256,
"typeName": "workspace:new_layer_vw",
"poly": false,
"style": "new_layer_1690205960096_style"
},
"isRaster": false,
"layerType": "vector",
"isEditable": true,
"geometryType": "multipoint",
"clusterStyle": null,
"isStyleEditable": true
},
"access": {
"read": true,
"edit": true,
"importObjects": false,
"write": true,
"serviceObjects": false
},
"dataStoreId": 3,
"clusterId": null,
"title": "Новый слой",
"system": false,
"groupInfo": {
"order": 22,
"groupId": 1
}
}
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Объекты таблицы
Создание объекта
POST /datatables/{tableId}/features
Структура запроса:
POST /datatables/145/features?token=9c6333f651846cfc94feae0597b61224
tableId: id слоя
token: ключ доступа
Пример запроса:
Формат: json
{
"attributes": [
{
"nameDb": "naimenovan",
"type": "string",
"value": "Мытищи"
},
{
"nameDb": "int",
"type": "int",
"value": "1"
},
{
"nameDb": "float",
"type": "double",
"value": "2.2"
},
{
"nameDb": "datetime",
"type": "dateTime",
"value": 1623158460000
},
{
"nameDb": "date",
"type": "date",
"value": "06.08.2021"
},
{
"nameDb": "date_timestamp",
"type": "date",
"value": 1626739200000
},
{
"nameDb": "logicheskoe",
"type": "boolean",
"value": true
}
],
"geometry": {
"type": "MultiPoint",
"coordinates": [[64.3359375,60.58696734225869]]
},
"files": [{
"uuid": "p19bmted386it1m9g1qf91h1n8jg7.doc",
"name": "gloreg.doc"
}],
"pages": [{
"url": "http://www.url.com",
"description": "Веб-страница",
"size": {
"width": 640,
"height": 360
}
}],
"photos": [{
"uuid": "p19bmtd4911ef215h0fal1ugg124a5.jpg",
"name": "Lighthouse.jpg"
}]
}
// список атрибутов // название атрибута, строка // тип атрибута, строка // значение, строка // объект геометрии // тип геометрии, строка // координаты, массив // список файлов // uuid загруженного файла, строка // название файла, строка // веб-страницы // адрес, строка // описание, строка // размер // ширина, целое число // высота, целое число // список фотографий // uuid загруженной фотографии, строка // название фотографии, строка
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"insert": true
}
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Изменение объекта
PATCH /datatables/{tableId}/features/{featureId}
Структура запроса:
PATCH /datatables/154/features/3?token=9c6333f651846cfc94feae0597b61224
tableId: id таблицы
featureId: id объекта
token: ключ доступа
Пример запроса:
Формат: json
{
"attributes": [
{
"nameDb": "naimenovan",
"type": "string",
"value": "Мытищи1"
},
{
"nameDb": "int",
"type": "int",
"value": "1"
},
{
"nameDb": "float",
"type": "double",
"value": "2.2"
},
{
"nameDb": "datetime",
"type": "dateTime",
"value": 1623158460000
},
{
"nameDb": "date",
"type": "date",
"value": "06.08.2021"
},
{
"nameDb": "date_timestamp",
"type": "date",
"value": 1626739200000
},
{
"nameDb": "logicheskoe",
"type": "boolean",
"value": true
}
],
"geometry": {
"type": "MultiPoint",
"coordinates": [[64.3359375,60.58696734225869]]
},
"removeGeometry": false,
"files": [{
"uuid": "b3tbt4tuj46n4yummmm1n8jg7.doc",
"name": "gloreg.doc"
}],
"removeFiles": [5,6],
"pages": [{
"url": "http://www.url.com",
"description": "Веб-страница1",
"size": {
"width": 640,
"height": 360
}
}],
"removePages": [1],
"photos": [{
"uuid": "4345hyhukujh4ju5uyyjk7u5jgg124a5.jpg",
"name": "Lighthouse.jpg"
}],
"removePhotos": [4]
}
// список атрибутов // название атрибута, строка // тип атрибута, строка // значение, строка // объект геометрии // тип геометрии, строка // координаты, массив // нужно ли удалить геометрию объекта // список новых файлов // uuid загруженного файла, строка // название файла, строка // массив id удаляемых файлов // новые веб-страницы // адрес, строка // описание, строка // размер // ширина, целое число // высота, целое число // массив id удаляемых веб-страниц // список новых фотографий // uuid загруженной фотографии, строка // название фотографии, строка // массив id удаляемых фотографий
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"update": true
}
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Удаление объекта
DELETE /datatables/{tableId}/features/{featureId}
Структура запроса:
DELETE /datatables/154/features/3?token=9c6333f651846cfc94feae0597b61224
tableId: id удаляемой таблицы
featureId: id объекта
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"delete":true
}
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Добавление медиа файлов к объекту
PATCH /datatables/{tableId}/features/{featureId}/files
Структура запроса:
PATCH /datatables/145/features/345/files?token=9c6333f651846cfc94feae0597b61224
tableId: id таблицы
featureId: id объекта
token: ключ доступа
Пример запроса:
Формат: json
{
"photos": [
{
"isUrl": true,
"path": "/department_files/photos/2022_07_22_15-50_688ead68-ee2d-1004-8c84-f7a444399106.jpg",
"fileName": "2022_07_22_15-50_688ead68-ee2d-1004-8c84-f7a444399106.jpg"
},
{
"isUrl": false,
"path": "/var/www/mapadmin/htdocs/department_files/photos/2022/07/22/15-50/688ead68-ee2d-1004-8c84-f7a444399106.jpg",
"fileName": "250px-Georg_Caspar_Prenner_03.jpg"
},
{
"path": "https://ms36.dev.geo4.pro/rest/news/147/photos/2",
"fileName": "photo_2022-07-19_15-26-47 (2).jpg",
"isUrl": true
}
],
"files": [
{
"path": "c:\\Users\\san13\\OneDrive\\Pictures\\IMG_2404.MOV",
"fileName": "IMG_2404.MOV",
"isUrl": false
}
]
}
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"insert": true
}
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Список объектов
GET /datatables/:tableId/features
Структура запроса:
GET /datatables/212/features?token=9c6333f651846cfc94feae0597b61224&pageNumber=1&limit=50&orderBy=nazvanie&asc=false
&cql_filter=(strToLowerCase(nazvanie) like '%гагарина%')&sysTitle=true
tableId: id таблицы
pageNumber: страница для пагинации данных
limit: ограничение на количество данных в ответе
orderBy: поле, по которому нужно сортировать данные. По умолчанию по первичному ключу
asc: если true, то сортировка в порядке возрастания, если false - то наоборот.По умолчанию asc=true
cql_filter: фильтр для данных в формате CQL
ids: id объектов через запятую, по которым необходимо получить информацию
notIds: id объектов через запятую, которые необходимо исключить из выборки
requestAttributes: список атрибутов слоя через запятую, которые необходимо получить в ответе. Для поля с первичным ключом можно иcпользовать алиас fid
sysTitle: добавлять ли заголов и подзаголовок объектв в ситсемные поля sys_title и sys_subtitle
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"features": [
{
"gid": 25,
"nazvanie": "гагарина",
"kategoriya": "105",
"the_geom": "{\"type\":\"MultiLineString\",\"coordinates\":[[[49.28466796875,55.7951054522369],
[49.4590759277344,55.7788900549897],[49.3890380859375,55.8437111579294]]]}",
}, ...
],
"tableId": 212,
"geomFieldName": "the_geom",
"pkField: "gid",
}
// список объектов // информация по объекту // id слоя // название поля с геометрией
Статус: 403 - нет доступа к слоям
Формат: text/plain
Содержит описание ошибки
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Количество объектов
GET /datatables/:tableId/features/count
GET /datatables/25/features/count?token=9c6333f651846cfc94feae0597b61224
tableId: id таблицы
cql_filter: фильтр для данных в формате CQL
ids: id объектов через запятую, по которым необходимо получить информацию
notIds: id объектов через запятую, которые необходимо исключить из выборки
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: text/plain
237
// количество объектов в слое
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Объект таблицы
GET /datatables/{tableId}/features/{featureId}
Структура запроса:
GET /datatables/212/features/34?token=9c6333f651846cfc94feae0597b61224
tableId: id таблицы
featureId: id объекта
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"feature": {
"fid": 25,
"nazvanie": "гагарина",
"uchastok": null,
"data_paspo": null,
"kategoriya": "105",
"protyazhen": null,
"podryadchi": null,
"rajon": null,
"the_geom": "{\"type\":\"MultiLineString\",\"coordinates\":[[[49.28466796875,55.7951054522369],
[49.4590759277344,55.7788900549897],[49.3890380859375,55.8437111579294]]]}",
"sys_geom_center": "{\"type\":\"Point\",
\"coordinates\":[37.617635,55.755814]}"
},
"geomFieldName": "the_geom",
"pkField": "gid",
"tableId": 5
}
// объект // информация по объекту // точка, являющаяся цетром геометрии объекта (системное поле) // id слоя // название поля с геометрией
Статус: 403 - нет доступа к слоям
Формат: text/plain
Содержит описание ошибки
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Список объектов в области
POST /datatables/feature/bbox
Структура запроса:
POST /datatables/feature/bbox?token=9c6333f651846cfc94feae0597b61224
token: ключ доступа
Пример запроса:
{
"layersId": [198,234,23],
"srs": "EPSG:4326",
"extent": {
"southWest": {
"lon": 49.04296875,
"lat": 55.754940702479146
},
"northEast": {
"lon": 49.299774169921875,
"lat": 55.90457539720638
}
},
"polygonFilter": {
"filterType": "INTERSECTS",
"coordinates": [[37.49908447265626,55.73638916286441],
[37.53204345703126,55.780820813358645],...]
},
"filters": {
198: "(strToLowerCase(srnaimenovanie) like '%савиновский%')"
}
}
// массив id таблиц, где будет осуществляться поиск // проекция запроса, строка // область поиска, объект // координаты нижней левой точки области, объект // широта нижней левой точки, вещественное число // долгота нижней левой точки, вещественное число // координаты верхней правой точки области, объект // широта верхней правой точки, вещественное число // долгота верхней правой точки, вещественное число // поиск по произвольному полигону (вместо extent) // тип поиска по геометри из доступных в CQL // координаты полигона // CQL-фильтры для слоев, не обязательно поле // id слоя и соответствующий ему фильтр
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"data": {
"kziokzn:vamin_kioski_p_vw": {
"features": [
{
"gid": "141",
"zayavit": "ОАО Вамин Татарстан",
"syyinfo":"Есть",
"srnaimenovanie":"Ново-савиновский",
"geom" :" ",
"nomerdoma":"47",
"sunaimenovanie":"10летОктября[П, Ст.Победилово]",
"syinfo":"Есть",
"svinfo":"Существующий"
}
],
"tableId":198,
"geomFieldName":,
"pkField": "gid"
}
}
}
// объект найденных данных // английское название таблицы, где найдены объекты, строка // массив объектов // первичный ключ объекта, строка // поля объекта и их значения // id слоя, целое число // поле геометрии, строка
Статус: 403 - нет доступа к слоям
Формат: text/plain
Содержит описание ошибки
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Получение медиа информации, прикрепленной ко всем объектам слоя
GET /datatables/eis/{tableId}
Структура запроса:
GET /datatables/eis/198?token=9c6333f651846cfc94feae0597b61224
tableId: id таблицы
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
[
{
"featureId": 1,
"files": [
{
"objectId": "1",
"url": "/datatables/eis/7392/1/photo/1",
"fileName": "Chrysanthemum.jpg",
"type": {
"id": 3,
"name": "photo"
},
"asUrl": false,
"width": null,
"height": null
}
]
}
]
// массив объектов с медиафайлами // объект // id объекта таблицы // массив найденных прикрепленных файлов // id файла // путь к файлу // название файла // тип файла // id типа, // название типа, может быть photo, video, audio, file, page // представлен ли файл как ссылка // ширина окна, для страниц (type=page) // высота окна, для страниц (type=page)
Статус: 404 - слой не найден в системе
Формат: text/plain
Содержит описание ошибки
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Получение медиа информации, прикрепленной к объекту слоя
GET /datatables/eis/{tableId}/{objectId}
Структура запроса:
GET /datatables/eis/198/141?token=9c6333f651846cfc94feae0597b61224
tableId: id таблицы
objectId: значение первичного ключа объекта
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"files": [
{
"url": "/datatables/eis/198/141/photo/247",
"fileName": "Чистопольская,47.JPG",
"type": {
"id": 3,
"name": "photo"
},
"asUrl": false,
"width": null,
"height": null
},
{
"url": "/datatables/eis/198/141/file/247",
"fileName": "Чистопольская,47.JPG",
"type": {
"id": 4,
"name": "file"
},
"asUrl": false,
"width": null,
"height": null
}
]
}
// массив найденных прикрепленных файлов // путь к файлу // название файла // тип файла // id типа, // название типа, может быть photo, video, audio, file,page // представлен ли файл как ссылка, булевое поле // ширина окна, для страниц (type=page) // высота окна, для страниц (type=page) // адрес, строка // название файла, строка // тип, объект // id типа, целое число // название, строка // представлен ли файл как ссылка, булевое поле // ширина, целое число // высота, целое число
Статус: 404 - слой не найден в системе
Формат: text/plain
Содержит описание ошибки
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Получение медиа файла, прикрепленного к объекту слоя
GET /datatables/eis/{tableId}/{objectId}/photo/{photoId}
Структура запроса:
GET /datatables/eis/198/141/photo/247?token=9c6333f651846cfc94feae0597b61224
tableId: id таблицы
objectId: первичный ключ объекта
photoId: первичный ключ фотографии
token: ключ доступа
Отображение прикрепленной фотографии с масштабированием по высоте
GET /datatables/eis/{tableId}/{objectId}/photo/{photoId}/{height}
Структура запроса:
GET /datatables/eis/198/141/photo/247/100?token=9c6333f651846cfc94feae0597b61224
tableId: id слоя
objectId: первичный ключ объекта
photoId: первичный ключ фотографии
height: высота для масштабирования
token: ключ доступа
Отображение прикрепленной фотографии с масштабированием по высоте и ширине
GET /datatables/eis/{tableId}/{objectId}/photo/{photoId}/{height}/{width}
Структура запроса:
GET /datatables/eis/198/141/photo/247/100/150?token=9c6333f651846cfc94feae0597b61224&crop=true
tableId: id слоя
objectId: первичный ключ объекта
photoId: первичный ключ фотографии
height: высота для масштабирования
width: ширина для масштабирования
token: ключ доступа
crop: обрезать фотографию по размерам (необязательный)
Ответ:
Статус: 200 - успешное выполнение
Формат: image/jpeg и т.д.
Статус: 404 - слой не найден в системе
Формат: text/plain
Содержит описание ошибки
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Отображение прикрепленного файла
GET /datatables/eis/{tableId}/{objectId}/{fileType}/{fileId}
Структура запроса:
GET /datatables/eis/198/141/file/247?token=9c6333f651846cfc94feae0597b61224
tableId: id таблицы
objectId: первичный ключ объекта
fileType: тип файла: photo, video, audio, file
fileId: первичный ключ файла
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: зависит от типа отдаваемого файла
Статус: 404 - слой не найден в системе
Формат: text/plain
Содержит описание ошибки
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Импорт из текста
POST /datatables/:tableId/features/import
Структура запроса:
POST /datatables/3/features/import?token=3246efnm34jtjg14g24h655h25h
tableId: id таблицы
token: ключ доступа
Пример запроса:
Формат: json
{
"features":"text",
"attribute": null,
"separator": null
}
// текст с названиями объектов // атрибут, куда записывать название // разделить
Примечание:
По умолчанию каждая новая строка в тексте - это новый объект
Атрибут передавать не обязательно. По умолчанию значение вставляет в атрибут, который является заголовком
Разделитель также не обязательное поле. По умочанию это перенос строки
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"taskId":"eatjteyj56ujtym4yumuymtjm"
}
// id задачи на импорт в системе
Статус: 400 - ошибка валидации
Формат: json
{
"exception": ["ошибка"]
}
Статус: 403 - нет доступа к слоям
Формат: text/plain
Содержит описание ошибки
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Проверка статуса процесса импорта
GET /datatables/:tableId/features/import/{taskId}
Структура запроса:
GET /datatables/5/features/import/eatjteyj56ujtym4yumuymtjm?token=3246efnm34jtjg14g24h655h25h
tableId: id таблицы
taskId: id задачи на импорт в системе (из предвдущего запроса)
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"status":"FINISH",
"exception": ["ошибка"],
"features": {
"count": 2414,
"saved": 234
},
"startTime": "timestamp в миллисекундах",
"finishTime": "timestamp в миллисекундах",
"items": [
{
"fid": 3242,
"title": "Название объекта"
}
]
}
status:
- NOTFOUND - процесс не найден (статус ответа также будет 404)
- ERROR - произошла ошибка
- PROGRESS - в процессе
- FINISH - закончен без ошибок
- FINISH_WITH_ERRORS - закончен, но с ошибками
items: это поле присутствует только в статусе FINISH, FINISH_WITH_ERRORS
Статус: 403 - нет доступа к слоям
Формат: text/plain
Содержит описание ошибки
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Права доступа к таблицам
Список прав доступа
Доступно только для пользователей с правами администратора
GET /datatables/accesses
Структура запроса:
GET /datatables/accesses?token=9c6333f651846cfc94feae0597b61224
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
[{
"userId": 60,
"layerId": 41,
"groupId": 3,
"organizationId": 1,
"layerOrder": 9,
"groupOrder": 6,
"read": true,
"write": false,
"edit": true,
"serviceObjects": true,
"isEditable": true,
"uniqueId": 257698053339,
"layerName": "Название слоя",
"groupName": "Название группы",
"userLogin": "login",
"userName": "ФИО пользователя"
},...]
// id пользователя, целое число // id слоя, целое число // id группы, целое число // id организации, целое число // порядковый номер слоя, целое число // порядковый номер группы, целое число // доступен к просмотру, логическое // доступен к управлению, логическое // доступен к редактированию, логическое // доступен в качестве оъектов обслуживания, логическое // редактируемый, логическое // уникальный id, целое число // название слоя, строка // название группы, строка // пользовательский логин, строка // имя пользователя, строка
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Количество прав доступа
Доступно только для пользователей с правами администратора
GET /datatables/accesses/count
Структура запроса:
GET /datatables/accesses/count?token=9c6333f651846cfc94feae0597b61224
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: text/plain
342
// количество прав доступа
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Создание права доступа
Доступно только для пользователей с правами администратора
POST /datatables/accesses
Структура запроса:
POST /datatables/accesses?token=9c6333f651846cfc94feae0597b61224
token: ключ доступа
Пример запроса:
Формат: json
{
"layerId": 36,
"userId": 60,
"read": true,
"write": false,
"edit": false,
"serviceObjects": true
}
// id слоя, целое число // id пользователя, целое число // право на просмотр, логическое // право на управление, логическое // право на редактирование, логическое // право на использование в качестве оъектов обслуживания, логическое
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"read": true,
"write": false,
"edit": false,
"serviceObjects": true,
"userName": "Пользователь",
"groupId": 4,
"userId": 110,
"layerName": "Слой"
}
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Обновление права доступа
Доступно только для пользователей с правами администратора
PUT /datatables/accesses
Структура запроса:
PUT /datatables/accesses?token=9c6333f651846cfc94feae0597b61224
token: ключ доступа
Пример запроса:
Формат: json
{
"accessList": [
{
"layerId": 36,
"userId": 60,
"read": true,
"write": false,
"edit": false,
"serviceObjects": true
}
]
}
// id слоя, целое число // id пользователя, целое число // право на просмотр, логическое // право на управление, логическое // право на редактирование, логическое // право на использование в качестве оъектов обслуживания, логическое
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"errors": null
}
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Иконки
Список иконок
Доступно только для пользователей с правами администратора
GET /dictionary/icons
Структура запроса:
GET /dictionary/icons?token=9c6333f651846cfc94feae0597b61224
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
[{
"id": 99,
"name": "red",
"width": 73,
"ownerOrganizationId":null,
"height": 72
},...]
// id иконки, целое число // название иконки, строка // ширина, целое число // id организации, пользователь которой добавил иконку (если null - пользователь не из организации) // высота, целое число
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Список редактируемых иконок
Доступно только для пользователей с правами администратора
GET /dictionary/icons/editable
Структура запроса:
GET /dictionary/icons/editable?token=9c6333f651846cfc94feae0597b61224
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
[{
"id": 99,
"name": "red",
"width": 73,
"ownerOrganizationId": null,
"height": 72
},...]
// id иконки, целое число // название иконки, строка // ширина, целое число // id организации, пользователь которой добавил иконку (если null - пользователь не из организации) // высота, целое число
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Создание иконки
Доступно только для пользователей с правами администратора
POST /dictionary/icons
Структура запроса:
POST /dictionary/icons?token=9c6333f651846cfc94feae0597b61224
token: ключ доступа
Пример запроса:
{
"name": "Человек",
"uuid": "p1996qif28t071sb22us1hd93lon.png"
}
// название иконки, строка // uuid иконки, строка
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"id": 51,
"name": "Справочник",
"width": 1258,
"height": 750
}
// id иконки, целое число // название иконки, строка // ширина, целое число // высота, целое число
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Изменение иконки
Доступно только для пользователей с правами администратора
PUT /dictionary/icons/{id}
Структура запроса:
PUT /dictionary/icons/51?token=9c6333f651846cfc94feae0597b61224
id: id иконки
token: ключ доступа
Пример запроса:
{
"id": 51,
"name": "Новое название иконки",
"uuid": "p1996qif28t071sb22us1hd93lon.png"
}
// id иконки, целое число // название справочника, строка // uuid иконки, строка
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"id": 51,
"name": "Новое название иконки",
"width": 1258,
"height": 750
}
// id иконки, целое число // название иконки, строка // ширина, целое число // высота, целое число
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Удаление иконки
Доступно только для пользователей с правами администратора
DELETE /dictionary/icons/{id}
Структура запроса:
DELETE /dictionary/icons/51?token=9c6333f651846cfc94feae0597b61224
id: id иконки
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"delete": true
}
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Просмотр изображения иконки
GET /dictionary/icons/{id}/view
Структура запроса:
GET /dictionary/icons/23/view?token=9c6333f651846cfc94feae0597b61224
id: id иконки
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: image/jpeg и т.д.
Изображение
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Геокодирование
Поиск по адресу (POST запрос)
POST /geocoding
Структура запроса:
POST /geocoding?token=9c6333f651846cfc94feae0597b61224
token: ключ доступа
Пример запроса:
{
"layersId": ["10","12","26"],
"query": "Казань",
"bbox": {
"southWest": {
"lon 46,
"lat": 55
},
"northEast": {
"lon": 48,
"lat": 57
}
},
"onlylayers": true
}
// массив id слоев, где также надо осуществлять поиск // строка запроса // область запроса // левая нижняя точка // долгота точки, вещественное число // широта точки, вещественное число // правая верхняя точка // долгота точки, вещественное число // широта точки, вещественное число // есть true, то осуществлять поиск только по слоям
Ответ:
Статус: 200 - успешное выполнение
Формат: json
[
{
"layer": "Улицы",
"wmsName": "world:k2_ulitsy_l",
"layerId": null,
"items": [{
"pkid": 162815,
"label": "Казань, городской округ Казань, Татарстан",
"zoom": 16,
"point": {
"lon": 49.28956419647526,
"lat": 55.75372719479096
},
"address": {
"city": "Казань",
"county": "городской округ Казань",
"state": "Татарстан",
"country": "Россия",
"country_code": "ru"
},
"sys_clr_id": null,
"sys_org_id": null
}]
}, ...
]
// массив слоев, где найдены объекты // русское название, строка // английское название, строка // null - слой, для поиска по умолчанию, иначе id из массива // массив найденных объектов // первичный ключ, строка // заголовок, строка // зум для отображения, целое число // точка, объект // долгота точки, вещественное число // широта точки, вещественное число // расшифровка адреса, объект // системное поле id cluster, если присутствует в атрибутах слоя // системное поле id организации, если присутствует в атрибутах слоя
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Поиск по адресу (GET запрос)
GET /geocoding
Структура запроса:
GET /geocoding?query=Казань&layersId=12,23,345,56&bbox=46,55,48,57&onlylayers=true
&token=9c6333f651846cfc94feae0597b61224
query: строка запроса
layersId: id слоев, где также надо осуществлять поиск, через запятую
bbox: область запроса
onlylayers: есть true, то осуществлять поиск только по слоям
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
[
{
"layer": "Улицы",
"wmsName": "world:k2_ulitsy_l",
"layerId": null,
"items": [{
"pkid": 162815,
"label": "Казань, городской округ Казань, Татарстан",
"zoom": 16,
"point": {
"lon": 49.28956419647526,
"lat": 55.75372719479096
},
"address": {
"city": "Казань",
"county": "городской округ Казань",
"state": "Татарстан",
"country": "Россия",
"country_code": "ru"
},
"sys_clr_id": null,
"sys_org_id": null
}]
}, ...
]
// массив слоев, где найдены объекты // русское название, строка // английское название, строка // null - слой, для поиска по умолчанию, иначе id из массива // массив найденных объектов // первичный ключ, строка // заголовок, строка // зум для отображения, целое число // точка, объект // долгота точки, число с плавающей точкой // широта точки, число с плавающей точкой // расшифровка адреса, объект // системное поле id cluster, если присутствует в атрибутах слоя // системное поле id организации, если присутствует в атрибутах слоя
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Поиск по координатам (POST запрос)
POST /geocoding
Структура запроса:
POST /geocoding?token=9c6333f651846cfc94feae0597b61224
token: ключ доступа
Пример запроса:
{
"layersId": ["10","12","26"],
"point": {
"lon": 50.69091796875,
"lat": 55.33851784425634
},
"zoom": 14,
"onlylayers": true
}
// массив id слоев, где также надо осуществлять поиск // точка на карты, объект // долгота точки, вещественное число // широта точки, вещественное число // уровень масштабирования карты, влияет на уровень детализации, необходимый для адреса. // есть true, то осуществлять поиск только по слоям
Ответ:
Статус: 200 - успешное выполнение
Формат: json
[
{
"layer": "Улицы",
"wmsName": "world:k2_ulitsy_l",
"layerId": null,
"items": [{
"pkid": 162815,
"label": "Казань, городской округ Казань, Татарстан",
"zoom": 16,
"point": {
"lon": 49.28956419647526,
"lat": 55.75372719479096
},
"address": {
"city": "Казань",
"county": "городской округ Казань",
"state": "Татарстан",
"country": "Россия",
"country_code": "ru"
},
"sys_clr_id": 2,
"sys_org_id": null
}]
}, ...
]
// массив слоев, где найдены объекты // русское название, строка // английское название, строка // null - слой, для поиска по умолчанию, иначе id из массива // массив найденных объектов // первичный ключ, строка // заголовок, строка // зум для отображения, целое число // точка, объект // долгота точки, вещественное число // широта точки, вещественное число // расшифровка адреса, объект // системное поле id cluster, если присутствует в атрибутах слоя // системное поле id организации, если присутствует в атрибутах слоя
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Поиск по координатам (GET запрос)
GET /geocoding
Структура запроса:
GET /geocoding?lon=55.45&lat=49.67&layersId=12,23,345,56&zoom=14&onlylayers=true
&token=9c6333f651846cfc94feae0597b61224
lon: долгота точки, вещественное число
lat: широта точки, вещественное число
layersId: id слоев, где также надо осуществлять поиск, через запятую
zoom: уровень масштабирования карты, влияет на уровень детализации, необходимый для адреса
onlylayers: есть true, то осуществлять поиск только по слоям
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Формат: json
[
{
"layer": "Улицы",
"wmsName": "world:k2_ulitsy_l",
"layerId": null,
"items": [{
"pkid": 162815,
"label": "Казань, городской округ Казань, Татарстан",
"zoom": 16,
"point": {
"lon": 49.28956419647526,
"lat": 55.75372719479096
},
"address": {
"city": "Казань",
"county": "городской округ Казань",
"state": "Татарстан",
"country": "Россия",
"country_code": "ru"
},
"sys_clr_id": null,
"sys_org_id": 4
}]
}, ...
]
// массив слоев, где найдены объекты // русское название, строка // английское название, строка // null - слой, для поиска по умолчанию, иначе id из массива // массив найденных объектов // первичный ключ, строка // заголовок, строка // зум для отображения, целое число // точка, объект // долгота точки, число с плавающей точкой // широта точки, число с плавающей точкой // расшифровка адреса, объект // системное поле id cluster, если присутствует в атрибутах слоя // системное поле id организации, если присутствует в атрибутах слоя
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Загрузка
Загрузка файлов
POST /upload/cache
Структура запроса:
POST /upload/cache?photo=true&token=9c6333f651846cfc94feae0597b61224
photo: необязательный параметр, если загружается фотография
token: ключ доступа
Пример запроса:
Формат: данные файла
<?файл .....
// тело файла
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"status": "ok",
"data": ["p18hps8iga1pi81aot89i18d81of87"]
}
// статус ответа // uuid загруженного файла
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Получение загруженного файла
GET /upload/cache/{uuid}
Структура запроса:
GET /upload/cache/p18hps8iga1pi81aot89i18d81of87?token=9c6333f651846cfc94feae0597b61224
uuid: uuid загруженного файла
token: ключ доступа
Ответ:
Статус: 200 - успешное выполнение
Загруженный файл
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Получение загруженной фотографии
GET /upload/cache/{uuid}/{width}/{height}.{extension}
Структура запроса:
GET /upload/cache/p18hps8iga1pi81aot89i18d81of87/500/800.jpg?token=9c6333f651846cfc94feae0597b61224&stretch=true
uuid: uuid загруженного файла
width: ширина фотографии
height: высота фотографии
extension: разрешение фотографии
token: ключ доступа
stretch: растянуть фотографию по размерам (необязательный)
crop: обрезать фотографию по размерам (необязательный)
Ответ:
Статус: 200 - успешное выполнение
Загруженный файл
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Загрузка больших файлов
POST /upload/disc
Структура запроса:
POST /upload/disc?token=9c6333f651846cfc94feae0597b61224
token: ключ доступа
Пример запроса:
Формат: данные файла
<?файл .....
// тело файла
Ответ:
Статус: 200 - успешное выполнение
Формат: json
{
"status": "ok",
"data": ["p18hps8iga1pi81aot89i18d81of87.zip"]
}
// статус ответа // uuid загруженного файла
Статус: 500 - ошибка на сервере
Формат: text/plain
Содержит описание ошибки