madrobby / downtime

Standardized JSON API to indicate downtime for apps and services
MIT License
90 stars 4 forks source link

downtime

downtime is a standardized JSON API that lists recent, current and upcoming periods of maintenance or downtime for apps and services, both scheduled and unscheduled.

Wait, what? Here's why this is a cool thing:

For you:

For your apps:

File format

On your status site or blog site (hopefully independent of your service!), put up a JSON file.

To make the URL to this guessable, the file should be located at /downtime.json (this is highly recommended but not a strict requirement).

The file must be a valid JSON file adhering to the following format:

{
  "service": "My awesome application",
  "url": "http://my.awesome.application/",
  // if downtime.json is generated dynamically, the updated_at timestamp 
  // should be the current date/time
  "updated_at": "ISO8601 UTC timestamp",
  "downtime": [
    {
      "title": "Server maintenance",
      "description": "text or HTML (?), optional description of what is going on",
      "info_url": "optional url of a blog post, etc",
      "type": "scheduled|unscheduled", // default: scheduled
      "availability": "up|partial|down", // default: down
      "urls": [
        "url pattern (regex) of affected service"
        // can be more than one
      ],
      "starts_at": "ISO8601 UTC timestamp", // required
      "ends_at": "ISO8601 UTC timestamp", // if not given assume open-ended
      "updated_at": "ISO8601 UTC timestamp",
      "log": [ // optional, useful to indicate status while repair is going on
        { 
           "timestamp": "ISO8601 UTC timestamp",
           "description": "text or HTML info about current repair status, etc"
        } // etc
      ]
    }
    // moar
  ]
}

// note: actual JSON doesn't support comments

When you create or generate this file, try to stick to these rules of thumb as well:

This format is not final, and open to discussion. Please contribute in the issues.

Examples in the wild

If you provide downtime information, add your service to services.json so we and others can implement apps that fetch downtime information and provide useful services based on it.

This repository comes with a downtime.js and downtime.html example file that shows how you could use your downtime.json file to show a status page. This example is a work in progress.

Project goals

Todos

Hey, it's alpha—contribute!

I very much welcome any input and discussion on this.

My vague goal is to have a site where you can subscribe to the downtime info of various apps, and get it as RSS/iCal/push notifications.

License

downtime is licensed under the terms of the MIT license. (c) 2012 Thomas Fuchs