Вы можете взаимодействовать с системой ECCM посредством открытого API. Методы API позволяют получать статистику по группам и устройствам, журналы событий, проблем и задач.
Авторизация
Все запросы требуют аутентификации с помощью JWT Bearer-токена. Токен должен передаваться в заголовке Authorization:
$ export TOKEN=<YOUR_TOKEN>
$ curl -X GET -H "Authorization: Bearer ${TOKEN}" http://localhost/api/v1/groups
import requests
TOKEN = "<YOUR_TOKEN>"
response = requests.get(
url="http://localhost/api/v1/groups",
headers={"Authorization": f"Bearer {TOKEN}"}
).json()
print(response)
# {
# "groups": [
# {
# "id": "1",
# "name": "eccm",
# "parentGroupId": "0",
# "type": "GROUPS",
# "path": "eccm/",
# "idPath": "1/"
# }
# ]
# }
Создание токена доступа осуществляется на персональной странице пользователя.
Описание API
| Метод | Описание | Параметры | Схема ответа | Пример использования |
|---|---|---|---|---|
| GET /api/v1/groups | Получение информации по всем группам | Query - параметры:
| 200 - успешная операция {
"groups":[Group],
"total": string
}
400 - ошибка валидации AnswerContract 500 - ошибка сервера AnswerContract | curl -X GET -H "Authorization: Bearer ${TOKEN}" http://localhost/api/v1/groups
|
| GET /api/v1/groups/{id} | Получение информации по конкретной группе | Path-параметры:
| 200 - успешная операция Group 400 - ошибка валидации AnswerContract 500 - ошибка сервера AnswerContract | {
"id": "1",
"name": "eccm",
"parentGroupId": "0",
"type": "GROUPS",
"path": "eccm/",
"idPath": "1/"
}
|
| GET /api/v1/groups/statistics | Получение расширенной информации по всем группам | Query - параметры:
| 200 - успешная операция {
"groupStatistics":[GroupStatistic],
"total": string
}
400 - ошибка валидации AnswerContract 500 - ошибка сервера AnswerContract | {
"groupStatistics": [
{
"id": "1",
"name": "eccm",
"parentGroupId": "0",
"totalDevices": "0",
"hasChildren": true,
"problemDevices": "0",
"unavailableDevices": "0",
"devicesWithAvailabilityStatuses": "0",
"disabledDevices": "0",
"enabledDevices": "0",
"type": "GROUPS",
"idPath": "1/",
"path": "eccm/"
}
]
}
|
| GET /api/v1/groups/{id}/statistics | Получение расширенной информации по конкретной группе | Path-параметры:
| 200 - успешная операция GroupStatistic 400 - ошибка валидации AnswerContract 500 - ошибка сервера AnswerContract | {
"id": "1",
"name": "eccm",
"parentGroupId": "0",
"totalDevices": "0",
"hasChildren": true,
"problemDevices": "0",
"unavailableDevices": "0",
"devicesWithAvailabilityStatuses": "0",
"disabledDevices": "0",
"enabledDevices": "0",
"type": "GROUPS",
"idPath": "1/",
"path": "eccm/"
}
|
| GET /api/v1/devices | Получение информации по всем устройствам | Query - параметры:
| 200 - успешная операция {
"devices": [Device],
"total": "uint64"
}
400 - ошибка валидации AnswerContract 500 - ошибка сервера AnswerContract | {
"devices": [
{
"id": "100",
"label": "100.122.0.111_ESR-200",
"ip": "100.122.0.111",
"hostname": "testhost",
"mac": "cc:9d:a2:70:af:d8",
"model": "ESR-200",
"serialNumber": "NP15011091",
"firmwareVersion": "1.34.4 build 10",
"maintenanceStatus": "ENABLED",
"groupId": "100",
"note": "",
"isStack": false,
"availabilityIcmpStatus": "UP",
"availabilitySnmpStatus": "UP",
"availabilitySshStatus": "DOWN"
}
]
}
|
| GET /api/v1/devices/{id} | Получение информации по конкретному устройству | Path-параметры:
| 200 - успешная операция Device 400 - ошибка валидации AnswerContract 500 - ошибка сервера AnswerContract | {
"id": "100",
"label": "100.122.0.111_ESR-200",
"ip": "100.122.0.111",
"hostname": "testhost",
"mac": "cc:9d:a2:70:af:d8",
"model": "ESR-200",
"serialNumber": "NP15011091",
"firmwareVersion": "1.34.4 build 10",
"maintenanceStatus": "ENABLED",
"groupId": "100",
"note": "",
"isStack": false,
"availabilityIcmpStatus": "UP",
"availabilitySnmpStatus": "UP",
"availabilitySshStatus": "DOWN"
}
|
| GET /api/v1/devices/{id}/events | Получение списка событий по конкретному устройству | Path-параметры:
Query - параметры:
| 200 - успешная операция {
"events": [Event],
"total": "uint64"
}
400 - ошибка валидации AnswerContract 500 - ошибка сервера AnswerContract | {
"events": [
{
"id": "1",
"sourceType": "METRIC",
"severity": "ALERT",
"createdAt": "1770190451591",
"label": "WLC недоступен по SNMP",
"description": "Устройство недоступно по SNMP",
"deviceId": "106",
"deviceIp": "100.122.0.108",
"deviceLabel": "100.122.0.108_WLC-15",
"deviceHostname": "ECCM-WLC"
}
]
}
|
| GET /api/v1/devices/{id}/problems | Получение списка проблем по конкретному устройству | Path-параметры:
Query - параметры:
| 200 - успешная операция {
"problems": [Problem],
"total": "uint64"
}
400 - ошибка валидации AnswerContract 500 - ошибка сервера AnswerContract | {
"problems": [
{
"id": "1",
"status": "CLOSED",
"severity": "ALERT",
"createdAt": "1770190451591",
"isAcknowledged": false,
"closedBy": "System",
"closedAt": "1770190466098",
"label": "Устройство недоступно по протоколу SNMP",
"description": "Потеря доступа к устройству по протоколу SNMP",
"deviceId": "106",
"deviceIp": "100.122.0.108",
"deviceLabel": "100.122.0.108_WLC-15",
"deviceHostname": "ECCM-WLC",
"groupId": "100",
"groupName": "1",
"duration": "14507"
}
]
}
|
| GET /api/v1/devices/{id}/tasks | Path-параметры:
Query - параметры:
| 200 - успешная операция {
"tasks": [Task],
"total": "uint64"
}
400 - ошибка валидации AnswerContract 500 - ошибка сервера AnswerContract | {
"tasks": [
{
"id": "19",
"status": "FAILED",
"type": "UPDATE_DEVICE_INFO_GROUP",
"createdAt": "1770190212668",
"scheduledAt": "0",
"startAt": "1770190212681",
"stoppedAt": "1770190232600",
"author": "System",
"errorCause": "Child task failed",
"deviceId": "106",
"deviceIp": "100.122.0.108",
"deviceLabel": "100.122.0.108_WLC-15",
"deviceHostname": "ECCM-WLC"
}
]
}
| |
| GET /api/v1/events | Получение списка всех событий | Query - параметры:
| 200 - успешная операция {
"events": [Event],
"total": "uint64"
}
400 - ошибка валидации AnswerContract 500 - ошибка сервера AnswerContract | {
"events": [
{
"id": "1",
"sourceType": "METRIC",
"severity": "ALERT",
"createdAt": "1770190451591",
"label": "WLC недоступен по SNMP",
"description": "Устройство недоступно по SNMP",
"deviceId": "106",
"deviceIp": "100.122.0.108",
"deviceLabel": "100.122.0.108_WLC-15",
"deviceHostname": "ECCM-WLC"
}
]
}
|
| GET /api/v1/problems | Получение списка всех проблем | Query - параметры:
| 200 - успешная операция {
"problems": [Problem],
"total": "uint64"
}
400 - ошибка валидации AnswerContract 500 - ошибка сервера AnswerContract | {
"problems": [
{
"id": "1",
"status": "CLOSED",
"severity": "ALERT",
"createdAt": "1770190451591",
"isAcknowledged": false,
"closedBy": "System",
"closedAt": "1770190466098",
"label": "Устройство недоступно по протоколу SNMP",
"description": "Потеря доступа к устройству по протоколу SNMP",
"deviceId": "106",
"deviceIp": "100.122.0.108",
"deviceLabel": "100.122.0.108_WLC-15",
"deviceHostname": "ECCM-WLC",
"groupId": "100",
"groupName": "1",
"duration": "14507"
}
]
}
|
GET /api/v1/tasks | Получение списка всех задач | Query - параметры:
| 200 - успешная операция {
"tasks": [Task],
"total": "uint64"
}
400 - ошибка валидации AnswerContract 500 - ошибка сервера AnswerContract | {
"tasks": [
{
"id": "19",
"status": "FAILED",
"type": "UPDATE_DEVICE_INFO_GROUP",
"createdAt": "1770190212668",
"scheduledAt": "0",
"startAt": "1770190212681",
"stoppedAt": "1770190232600",
"author": "System",
"errorCause": "Child task failed",
"deviceId": "106",
"deviceIp": "100.122.0.108",
"deviceLabel": "100.122.0.108_WLC-15",
"deviceHostname": "ECCM-WLC"
}
]
}
|
Схема данных
| Название сущности | Описание сущности |
|---|---|
Group | {
"id": "uint64",
"name": "string",
"type": GroupType,
"parentGroupId": "uint64",
"path": "string",
"idPath": "string"
}
|
GroupType | EMPTY, GROUPS, DEVICES, IP_FABRIC, FBWA, CLUSTER |
GroupStatistics | {
"id": "uint64",
"name": "string",
"parentGroupId": "uint64",
"totalDevices": "uint64",
"hasChildren": bool,
"problemDevices": "uint64",
"unavailableDevices": "uint64",
"devicesWithAvailabilityStatuses": "uint64",
"disabledDevices": "uint64",
"enabledDevices": "uint64",
"type": GroupType,
"idPath": "string",
"path": "string"
}
|
Device | {
"id": "uint64",
"label": "string",
"ip": "string",
"hostname": "string",
"mac": "string",
"model": "string",
"serialNumber": "string",
"firmwareVersion": "string",
"maintenanceStatus": MaintenanceStatus,
"groupId": "uint64",
"note": "string",
"isStack": bool,
"availabilityIcmpStatus": AvailabilityStatus,
"availabilitySnmpStatus": AvailabilityStatus,
"availabilitySshStatus": AvailabilityStatus
}
|
MaintenanceStatus | ENABLED, DISABLED, INCORRECT_MODEL, NO_LICENSE |
AvailabilityStatus | UP, DOWN |
Event | {
"id": "uint64",
"sourceType": SourceType,
"severity": Severity,
"createdAt": "uint64",
"label": "string",
"description": "string",
"deviceId": "uint64",
"deviceIp": "string",
"deviceLabel": "string",
"deviceHostname": "string"
}
|
SourceType | METRIC, TRAP, SYSLOG, TASK, WIFI_EVENT |
Severity | EMERGENCY, ALERT, CRITICAL, ERROR, WARNING, NOTICE, INFORMATIONAL, DEBUG |
Problem | {
"id": "uint64",
"status": ProblemStatus,
"severity": Severity,
"createdAt": "uint64",
"isAcknowledged": bool,
"closedBy": "string",
"closedAt": "uint64",
"label": "string",
"description": "string",
"deviceId": "uint64",
"deviceIp": "string",
"deviceLabel": "string",
"deviceHostname": "string",
"groupId": "uint64",
"groupName": "string",
"duration": "uint64"
}
|
ProblemStatus | NEW, IN_PROGRESS, CLOSED |
Task | {
"id": "uint64",
"status": TaskStatus,
"type": TaskType,
"createdAt": "uint64",
"scheduledAt": "uint64
"startAt": "uint64",
"stoppedAt": "uint64",
"author": "string",
"errorCause": "string",
"deviceId": "uint64",
"deviceIp": "string",
"deviceLabel": "string",
"deviceHostname": "string"
}
|
TaskStatus | DONE, IN_PROGRESS, FAILED, WAITING, INTERRUPTED, CANCELED |
TaskType | APPLY_CONFIGURATION, SYNC_CONFIGURATION, UPGRADE_DEVICE, REBOOT_DEVICE, UPGRADE_DEVICE_GROUP, APPLY_TEMPLATE, APPLY_TEMPLATE_GROUP, RESET_DEVICE, RESET_DEVICE_GROUP, APPLY_IP_FABRIC_ROLE_CONFIGURATION, INSTALL_DEVICE_LICENSE, INSTALL_DEVICE_LICENSE_GROUP, UPDATE_DEVICE_INVENTORY, UPDATE_DEVICE_AVAILABILITY_STATUSES, APPLY_IP_FABRIC_ROLE_CONFIGURATION_GROUP, UPDATE_LLDP_INFO, DISCOVER_INTERFACES, UPDATE_DEVICE_INFO_GROUP, APPLY_CONFIG_DATA_MODEL, REBOOT_DEVICE_GROUP, GET_ALL_FIRMWARES, SWITCH_FIRMWARE, UPDATE_DEVICE_AVAILABILITY_STATUSES_GROUP, REGISTER_ACCESS_POINTS, UNREGISTER_ACCESS_POINTS, SYNC_WIFI_CONFIG_GROUP, SYNC_WIFI_CONFIG, APPLY_WIFI_LOCATION_GROUP, APPLY_WIFI_LOCATION, DEAUTHENTICATE_WIFI_CLIENTS, SETUP_SYSLOG_SENDING, SETUP_SYSLOG_SENDING_GROUP, UPDATE_CLUSTER_DEVICES_STATUS, UPDATE_CLUSTER_DEVICES_STATUS_GROUP, DISCOVER_VLANS, UPDATE_LLDP_INFO_GROUP, SYNC_BROADBAND_PROFILES_GROUP, SYNC_BROADBAND_PROFILES |