1.0.0 • Published 11 years ago
alarms-as-a-service v1.0.0
alarms-as-a-service
A web service built on top of reschedule.js, rrecur.js, and rrule.js for being notified when a one-time or repeat event is taking place.
POST /api/alarms
Request
{
  "dtstart": {
    "utc": "2014-06-16T12:40:00Z"
  , "zoneless": "2014-06-16T08:40:00"
  , "locale": "GMT-0400 (EDT)"
  , "tzid": "America/New_York"
  }
, "webooks": {
    "occurrence": "http://bin.mailgun.net/a90b3f8c"
  , "stop": "http://requestb.in/1hp8ppg1"
  }
, "data": {
    "foo": "bar"
  , "desc": "Whatever you supply to the 'data' field is what your webhook gets back"
  }
, rrule: {
    freq: 'yearly'
  }
}NOTE:
- tzidis not currently supported. You must use- localeand either- utcor- zoneless.
- You may supply dataif you wish. It may contain whatever you like, but must be very few bytes.
Response
{ "uuid": "aedda258-0392-4b36-9e0c-274db9f7e9de", "next": "2014-07-16T08:40:00-0400" }POST /your/webhook/occurence
{ "uuid": "aedda258-0392-4b36-9e0c-274db9f7e9de"
, "next": "2014-06-16T08:40:00-0400"
, "data": { ... }
}NOTE: next may be null
Response
{}Or, if you want to postpone the alarm:
{ "snooze": 900 } // 15 minutes in secondsPOST /your/webhook/stop
Request
{ "uuid": "aedda258-0392-4b36-9e0c-274db9f7e9de"
, "data": { ... }
}Response
{}Example Usage
var url
  , rules
  ;
url = 'http://alarms.beta.coolaj86.com/api/schedules';
rules = {
  dtstart: {
    utc: new Date(Date.now() + (15 * 1000))
  , locale: 'GMT-0600 (MDT)'
  , tzid: 'America/Denver'
  }
, rrule: null
, webooks: {
    occurrence: "http://requestb.in/16rh3i11"
  , stop: "http://requestb.in/1hp8ppg1"
  }
, data: {
    foo: "bar"
  }
}
request.post({ url: url, json: rules }, function (err, resp, data) {
  console.error(err);
  console.log(data);
});DIY
Install
npm install alarms-as-a-service'use strict';
var port = 3000
  , app
  , server
  ;
app = require('alarms-as-a-service').create();
server = app.listen(port, function () {
  console.log('Listening on ', server.address());
});API
module.exports.create() // returns an app
module.exports.alarms.add // function (req, res) {}
module.exports.alarms.remove // function (req, res) {}1.0.0
11 years ago