Socket
Socket
Sign inDemoInstall

pagerduty-pdjs

Package Overview
Dependencies
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

pagerduty-pdjs

JavaScript wrapper for the PagerDuty API, maintained by PagerDuty


Version published
Weekly downloads
8
increased by300%
Maintainers
1
Weekly downloads
 
Created
Source

PDJS (PagerDuty base JavaScript API)

This is a simple JavaScript wrapper to the PagerDuty API

Include jQuery and pdjs.js

PDJS = new PDJSobj({
  token: "****************VDzA",
})

PDJS.api({
  res: 'services',
  data: {
    limit: 20,
  },
  success: function (data) {
    console.log(data)
  },
})

Making an API request

  1. Create a PDJSobj, with a token/api key
  2. Call an api request:
  • the res parameter is the URL path of the resource you want
  • the data parameter is optional
  1. Everything is asynchronous so you'll need:
  • a function to use on success
  • also optional is an error function

The res parameter may have an ID in it, here's the call to get the notes for incident PNCII2E

PDJS.api({
  res: 'incidents/PNCII2E/notes',
  success: function (data) {
    alert(JSON.stringify(data))
  },
})

POST and PUT requests are supported as well (although I can't give you any live examples, since the API key from webdemo is read-only, so go ahead and generate an API key from your own account)

For instance, here I'm adding a contact method for a user: test@example.com, and then adding a notification rule to alert that email address after 900 minutes:

add_contact_method = function(user_id) {
  PDJS.api({
    res: 'users/'+user_id+'/contact_methods',
    type: 'POST',
    data: {
      contact_method: {
        type:'email',
        address:'test4@example.com',
        label: 'Added from PDJS',
      }
    },
    success: function (data) {
      console.log('New contact method ID: ' + data.contact_method.id)
      add_notification_rule(user_id, data.contact_method.id, 900)
    }
  })
}

add_notification_rule = function(user_id, contact_method, start_delay_in_minutes) {
  PDJS.api({
    res: 'users/'+user_id+'/notification_rules',
    type: 'POST',
    data: {
      notification_rule: {
        contact_method_id: contact_method,
        start_delay_in_minutes: start_delay_in_minutes,
      }
    },
    success: function (data) {
      console.log(data)
      console.log('New notification rule ID: ' + data.notification_rule.id)
    }
  })
}

add_contact_method('PRJRF7T')

Triggering an incident (V2)

With Events API V2, alerts can be grouped with the same dedup_key.

PDJS.trigger({ routing_key: '', event_action: 'trigger', data: { summary: 'Server on Fire', source: 'pdjs', severity: 'info' } })

Triggering an incident (V2)

The integration API has its own function as well

PDJS.trigger({
  service_key: '5eb2b9dae1b2480abf59f58c78ba06e7',
  description: 'Server on Fire',
  incident_key: (new Date()).toString(),
  details: {
    cause: 'PEBKAC'
  }
})

Again, you can specify a success function that will get a JavaScript object representing the incident:

{
  status: 'success',
  message: 'Event processed',
  incident_key: '8a803874eda340a09928f2631a39378d'
}

The api_all helper

There's also a helper method that will handle limits and offsets for lists longer than 100 elements:

PDJS.api_all({
  res: 'incidents',
  data: {
    since: '2013-08-01T09:53:17-07:00',
    until: '2013-08-14T09:53:17-07:00',
    status: 'resolved',
    fields: 'incident_number,status,created_on,service'
  },
  final_success: function(data) {
    console.log(data.total + ' objects!');
    console.log(data);
  },
  incremental_success: function(data) {
    console.log('Got data');
  }
})

It works the same, except you'll need to specify one or more of:

  • a function to run on final_success at the end
  • a function to run on each incremental_success

That's kind of nifty.

Examples

There's an examples directory:

To compile the base script:

This is written in CoffeeScript, so you're going to have to compile it to get JavaScript

coffee --output js/ --compile --watch --join pdjs.js coffee/ &

More info

Are you using this? Let us know! @pagerduty or add it to our addons repo: https://github.com/PagerDuty/addons/

You might notice that PDJS sends along some extra parameters, nothing scary, we use those to track QoS across our language-specific libraries.

Possibly also of interest is node-pagerduty to trigger PagerDuty incidents from node.js.

Keywords

FAQs

Package last updated on 04 Jul 2018

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc