Status Panel API

Public Status API is a tool for viewing the status of Selectel services and planned maintenance, as well as for integrating with your apps, system, and site. API information corresponds to the latest information posted on the the status panel page, except for the history printout. Updates are given in UTC format.

API calls are HTTP GET requests to a URL without any additional authentication. When performing an API request, an object model is returned in JSON format.

Example:

curl -XGET -H "Content-Type: application/json" 'http://selectel.status.io/1.0/status/5980813dd537a2a7050004bd'

Where:

  • -XGET – shows the API request type
  • "Content-Type: application/json" – HTTP header for clearly describing the data type contained in the request body
  • API address is given in single quotation marks

Response structure (printout has been cut for readability):

{
  "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
          },
     ...

Where:

  • "status_overall" – general overview of status of all services and instances
  • "id": "5982de1e383934bd050006ac" – service ID
  • "name": "Dedicated Servers and Colocation" – service name
  • "updated": "2017-10-31T08:50:22.060Z" – time the information was updated, UTC format
  • "status" and "status_code" – current service status
    • 100 – Operational – everything is working normally
    • 200 – Planned Maintenance – maintenance is currently being performed
    • 300 – Degraded Performance – the service is working, but there are performance issues
    • 400 – Partial Service Disruption – partial service unavailability
    • 500 – Service Disruption – service is fully unavailable
    • 600 – Security Event
  • "containers" – individual service instances

Information about Planned Maintenance

Below is printout segment for planned maintenance:

...
  "incidents": [],
    "maintenance": {
      "active": [],
      "upcoming": [
        {
          "name": "Planned maintenance on internal communication channel",
          "_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": "Maintenance is planned for switching back to the primary network scheme after the rupture of fiber-optic line RETN 15.10.2017.\r\nConnectivity Moscow - Petersburg is being provided by the redundant channel.\r\nDuring maintenance, the level of reundancy is reduced to N+0.\r\nConnectivity may be disrupted for up to 30 minutes.\r\nClients using direct RETN channels may notice unavailability.",
              "state": 100,
              "status": 200,
              "datetime": "2017-10-31T05:38:00.000Z"
            }
          ],
          "containers_affected": [
            {
              "name": "Core network",
              "_id": "59b69a93d4c04f860500078d"
            }
          ],
          "components_affected": [
            {
              "name": "Network",
              "_id": "59b69ac3331fbea405000743"
            }
          ]
        }
      ]
    }
...

We'll now take a detailed look at each section.

First the incident type and its status are shown:

...
"incidents": [],
   "maintenance": {
     "active": [],
     "upcoming": [
  ...

Then is the name, ID, date created, and start and end time of the incident:

...
   {
          "name": "Planned maintenance on internal communication channel",
          "_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",
...

A description of the incident, its status codes, and time the description was created (modified) are then given:

  • Incident state codes:
    • 100 – Investigation – the problem is being investigated and a solution is being sought
    • 200 – Identified – the problem is known and is being resolved
    • 300 – Monitoring – the problem has been resolved and is being monitored
...          
           "messages": [
            {
              "details": "Maintenance is planned to switch back to the primary network scheme after the rupture of fiber-optic line RETN 15.10.2017.\r\nConnectivity Moscow - Petersburg is being provided by the redundant channel.\r\nDuring maintenance, the level of reundancy is reduced to N+0.\r\nConnectivity may be disrupted for up to 30 minutes.\r\nClients using direct RETN channels may notice unavailability.",
              "state": 100,
              "status": 200,
              "datetime": "2017-10-31T05:38:00.000Z"
            }
          ]
...

Then a list of affected services are given:

...
          ],
          "containers_affected": [
            {
              "name": "Core network",
              "_id": "59b69a93d4c04f860500078d"
            }
          ],
          "components_affected": [
            {
              "name": "Network",
              "_id": "59b69ac3331fbea405000743"
            }
...

If there is an error in the request URL, the API will respond:

{"error":"status page not found"}

or

{
    "status": {
        "error": "yes",
        "message": "Not Found"
    }
}

If the error is due to the request type (only GET requests are currently available), the response will be:

{
    "status": {
        "error": "yes",
        "message": "Forbidden"
    }
}