diff --git a/README.md b/README.md index 307c6ee..0596c07 100755 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ OpsGenie Node.js SDK covers: - Heartbeat API - Incident API - Escalation API (TODO: will be available soon) -- Schedule API (TODO: will be available soon) +- Schedule API v2 - Schedule Override API (TODO: will be available soon) - Forwarding Rule API (TODO: will be available soon) - Integration API (TODO: will be available soon) diff --git a/lib/opsgenie.js b/lib/opsgenie.js index d96e417..cd613e2 100644 --- a/lib/opsgenie.js +++ b/lib/opsgenie.js @@ -23,6 +23,8 @@ module.exports = function () { team: require('./resources/Team')(), incident: require('./incident/Incident')(), heartbeat: require('./heartbeat/Heartbeat')(), - userV2: require('./userV2/UserV2')() + userV2: require('./userV2/UserV2')(), + schedulesV2: require('./schedulesV2/SchedulesV2')(), + }; }; diff --git a/lib/schedulesV2/SchedulesV2.js b/lib/schedulesV2/SchedulesV2.js new file mode 100644 index 0000000..1b771dd --- /dev/null +++ b/lib/schedulesV2/SchedulesV2.js @@ -0,0 +1,45 @@ +"use strict"; + + +var api = require('./../restApi'); + +function schedulesV2() { + let baseURL = '/v2/schedules/'; + var oncallActionPath = "/on-calls/"; + var timelineActionPath = "/timeline"; + + return { + + create: function (data, config, cb) { + api.post(this.baseURL + 'create', data, config, cb); + }, + delete: function (data, config, cb) { + let path = api.getPath(baseURL, data, null); + api.delete(path, config, cb); + }, + get: function (data, config, cb) { + let path = api.getPath(baseURL, data, null); + api.get(path, config, cb); + }, + list: function (params, config, cb) { + var path = api.getPathWithListParams(baseURL, params); + api.get(path, config, cb) + }, + + getTimeline: function (identifier, params, config, cb) { + var path = api.getPathWithListParams(baseURL + identifier + timelineActionPath, params); + api.get(path, config, cb) + }, + + oncalls: function (identifier, config, cb) { + var path = api.getPath(baseURL, identifier + oncallActionPath); + api.get(path, config, cb) + }, + + export: function (params ,config, cb) { + throw (new Error('Not yet supported')); + }, + }; +} + +module.exports = schedulesV2; \ No newline at end of file diff --git a/lib/userV2/UserV2.js b/lib/userV2/UserV2.js index 889688f..9156fd3 100644 --- a/lib/userV2/UserV2.js +++ b/lib/userV2/UserV2.js @@ -13,7 +13,7 @@ var api = require('./../restApi'); function userV2() { var baseURL = '/v2/users/'; - + var contactsActionPath = "/contacts/"; return { /** * Gets a specific user from opsgenie based on id or email address @@ -48,6 +48,18 @@ function userV2() { var path = api.getPath(baseURL, identifier, null); api.delete(path, config, cb) }, + + /* + * This request is to get contacts of the user + * (ie. voice/sms/email) + * + * */ + contacts: function (identifier, data, config, cb) { + var path = api.getPath(baseURL, identifier + contactsActionPath); + api.get(path, data, config, cb) + }, + + }; } diff --git a/samples/schedulesV2/get.js b/samples/schedulesV2/get.js new file mode 100644 index 0000000..425529e --- /dev/null +++ b/samples/schedulesV2/get.js @@ -0,0 +1,15 @@ +"use strict"; + +var opsgenie = require('../../'); +require('../configure'); + +var schedule_identifier = '77caa918-3b8e-4aa8-86fb-b0bf3ef56a0f'; + +opsgenie.schedulesV2.get(schedule_identifier, {}, function (error, schedules) { + if (error) { + console.error(error); + } else { + console.log(schedules) + } +}) + diff --git a/samples/schedulesV2/getTimeline.js b/samples/schedulesV2/getTimeline.js new file mode 100644 index 0000000..ee8528c --- /dev/null +++ b/samples/schedulesV2/getTimeline.js @@ -0,0 +1,16 @@ +"use strict"; + +var opsgenie = require('../../'); +require('../configure'); + + +var schedule_identifier = '77caa918-3b8e-4aa8-86fb-b0bf3ef56a0f'; + +opsgenie.schedulesV2.getTimeline(schedule_identifier, {}, function (error, schedules) { + if (error) { + console.error(error); + } else { + console.log(schedules) + } +}) + diff --git a/samples/schedulesV2/list.js b/samples/schedulesV2/list.js new file mode 100644 index 0000000..4b3f22c --- /dev/null +++ b/samples/schedulesV2/list.js @@ -0,0 +1,13 @@ +"use strict"; + +var opsgenie = require('../../'); +require('../configure'); + +opsgenie.schedulesV2.list({}, {}, function (error, schedules) { + if (error) { + console.error(error); + } else { + console.log(schedules) + } +}) + diff --git a/samples/schedulesV2/oncalls.js b/samples/schedulesV2/oncalls.js new file mode 100644 index 0000000..55ded23 --- /dev/null +++ b/samples/schedulesV2/oncalls.js @@ -0,0 +1,15 @@ +"use strict"; + +var opsgenie = require('../../'); +require('../configure'); + +var schedule_identifier = '77caa918-3b8e-4aa8-86fb-b0bf3ef56a0f'; + +opsgenie.schedulesV2.oncalls(schedule_identifier, {}, function (error, schedules) { + if (error) { + console.error(error); + } else { + console.log(schedules) + } +}) + diff --git a/samples/userV2/contacts.js b/samples/userV2/contacts.js new file mode 100644 index 0000000..3b6927a --- /dev/null +++ b/samples/userV2/contacts.js @@ -0,0 +1,18 @@ +"use strict"; + +var opsgenie = require('../../'); +require('../configure'); + + +var user_identifier = 'eb387227-4d7c-4ceb-b970-c4ba728af5d0'; + +opsgenie.userV2.contacts(user_identifier, null , function (error, user) { + if (error) { + console.error(error); + } else { + console.log(user); + } +}); + + +