API для статус-панели
Public Status API - это инструмент, предназначенный для получения статуса работ и информации о запланированном обслуживании сервисов Селектел, для интеграции с вашим приложением, системой или сайтом. Получаемая информация соответствует отображаемой в текущий момент на странице, за исключением вывода истории. Время обновления данных приводится в формате UTC.
Метод вызова API представляет собой HTTP-запрос GET к URL без дополнительной авторизации. При выполнении запроса API возвращает модель объекта в формате JSON.
Например:
curl -XGET -H "Content-Type: application/json" 'http://selectel.status.io/1.0/status/5980813dd537a2a7050004bd'
Где:
-XGET – параметр, указывающий тип запроса к API;
"Content-Type: application/json" – HTTP-заголовок для явного описания типа данных, содержащихся в теле запроса;
Адрес API указывается в одинарных кавычках.
Пример структуры данных ответа, в целях удобочитаемости, вывод сокращен:
{ "result": { "status_overall": { "updated": "2017-10-31T08:50:22.060Z", "status": "Operational", "status_code": 100 }, "status": [ { "id": "5982de1e383934bd050006ac", "name": "Dedicated Servers and Colocation", "updated": "2017-10-31T08:50:22.060Z", "status": "Operational", "status_code": 100, "containers": [ { "id": "5982d729f6278a3b05000618", "name": "Control panel", "updated": "2017-10-26T10:35:26.669Z", "status": "Operational", "status_code": 100 }, ...
Где:
"status_overall" – общая сводка состояния всех сервисов и их инстансов;
"id": "5982de1e383934bd050006ac" – идентификатор сервиса;
"name": "Dedicated Servers and Colocation" – название сервиса;
"updated": "2017-10-31T08:50:22.060Z" – время обновления информации в формате UTC;
Коды “status” и “status_code” – доступные статусы сервисов:
100 - Operational – Все работает в штатном режиме;
200 - Planned Maintenance – Запланированное обслуживание;
300 - Degraded Performance – Сервис работает, но имеет проблемы с производительностью;
400 - Partial Service Disruption – Частичная недоступность сервиса;
500 - Service Disruption – Сервис полностью недоступен;
600 - Security Event – Событие безопасности;
"containers" – разделы инстансов сервиса.
Информация о запланированном обслуживании
Пример части вывода, ниже разберем его более подробно:
... "incidents": [], "maintenance": { "active": [], "upcoming": [ { "name": "Плановые работы на внутреннем канале связи", "_id": "59f80c422d8d1864854fea62", "datetime_open": "2017-10-31T05:38:10.903Z", "datetime_planned_start": "2017-11-01T21:00:00.000Z", "datetime_planned_end": "2017-11-01T23:00:00.000Z", "messages": [ { "details": "Проводятся плановые работы по возвращению на основную схему сети после обрыва канала ВОЛС RETN 15.10.2017.\r\nСвязность Москва - Петербург обеспечивается резервным каналом.\r\nНа время плановых работ снижен уровень резервирования до N+0.\r\nВремя фактического перерыва связи составит до 30 минут.\r\nНедоступность могут фиксировать клиенты, использующие прямые каналы RETN.", "state": 100, "status": 200, "datetime": "2017-10-31T05:38:00.000Z" } ], "containers_affected": [ { "name": "Core network", "_id": "59b69a93d4c04f860500078d" } ], "components_affected": [ { "name": "Network", "_id": "59b69ac3331fbea405000743" } ] } ] } ...
Указывается тип инцидента и его состояние:
... "incidents": [], "maintenance": { "active": [], "upcoming": [ ...
Название, идентификатор, дата создания, начала и окончания инцидента:
... { "name": "Плановые работы на внутреннем канале связи", "_id": "59f80c422d8d1864854fea62", "datetime_open": "2017-10-31T05:38:10.903Z", "datetime_planned_start": "2017-11-01T21:00:00.000Z", "datetime_planned_end": "2017-11-01T23:00:00.000Z", ...
Описание инцидента, его коды статуса, время создания(изменения) описания:
Коды "state" инцидента:
100 - Investigating - Проблема изучается, поиск решения;
200 - Identified - Проблема известна и решается;
300 - Monitoring - Проблема устранена, производится мониторинг.
... "messages": [ { "details": "Проводятся плановые работы по возвращению на основную схему сети после обрыва канала ВОЛС RETN 15.10.2017.\r\nСвязность Москва - Петербург обеспечивается резервным каналом.\r\nНа время плановых работ снижен уровень резервирования до N+0.\r\nВремя фактического перерыва связи составит до 30 минут.\r\nНедоступность могут фиксировать клиенты, использующие прямые каналы RETN.", "state": 100, "status": 200, "datetime": "2017-10-31T05:38:00.000Z" } ] ...
Указание затронутых сервисов:
... ], "containers_affected": [ { "name": "Core network", "_id": "59b69a93d4c04f860500078d" } ], "components_affected": [ { "name": "Network", "_id": "59b69ac3331fbea405000743" } ...
В случае ошибки в URL запроса API вернет ответ:
{"error":"status page not found"}
или
{ "status": { "error": "yes", "message": "Not Found" } }
Если ошибка будет в типе запроса (доступны только GET-запросы), ответ будет таким:
{ "status": { "error": "yes", "message": "Forbidden" } }