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"
    }
}