# PagerdutyEx
A simple client library for PagerDuty API v2.
## Getting Started
Find the integration key for your PagerDuty account and add it to your app's `config.exs`:
```ex
# Using the literal key
config :pagerduty_ex,
integration_key: abc123
# If you're using environment variables
config :pagerduty_ex,
integration_key: {:system, "PAGERDUTY_INTEGRATION_KEY"}
```
The `PagerDutyEx` API has three exposed functions:
```ex
def trigger_event(%PagerDutyEx.Event{} = event) do ...
def acknowledge_event(%PagerDutyEx.Event{} = event) do ...
def resolve_event(%PagerDutyEx.Event{} = event) do ...
```
These do what you would expect, and they take an `Event` struct of the following form:
```ex
defmodule PagerDutyEx.Event do
defstruct [
routing_key: nil, # Required: "Integration Key" listed on the Events API V2 integration's detail page
event_action: nil, # Required: Supported values are "trigger", "acknowledge", and "resolve"
dedup_key: nil, # Deduplication key for correlating triggers and resolves
payload: nil, # The event details. See the Event.Payload struct below.
images: [], # List of images to include
links: [], # List of links to include
]
end
defmodule PagerDutyEx.Event.Payload do
@enforce_keys [:summary, :source, :severity]
defstruct [
summary: nil, # A brief text summary of the event
source: nil, # Hostname or FQDN
severity: nil, # Supported values: "critical", "error", "warning", or "info"
timestamp: nil, # The time at which the event was generated, e.g. 2015-07-17T08:42:58.315+0000
component: nil, # Component that is responsible for the event, e.g. "mysql" or "eth0"
group: nil, # Logical grouping of components of a service, e.g. "app-stack"
class: nil, # The class/type of the event, e.g. "ping failure" or "cpu load"
custom_details: nil, # Additional details about the event
]
end
```
## Contributing
Contributions are welcome. If you're having trouble or have a feature request, please open an issue. If you have a bug fix or a feature to add, please fork this repository and open a pull request.
## License
MIT