Managed API for Opsgenie
Managed API for Opsgenie is an API Client for Opsgenie by Adaptavist primarily designed for the use in ScriptRunner Connect. You can read more about Managed APIs here.
This is a runtime agnostic version of the Managed API (with core
suffix) that makes it easy to port it to any runtime you may want to use this Managed API on.
Platform specific ports
Supported API calls
- fetch
- Alert
- acknowledgeAlert
- addResponder
- addTeam
- assignAlert
- closeAlert
- countAlerts
- createAlert
- deleteAlert
- escalateAlertToNext
- executeCustomAction
- getAlert
- getAlerts
- getLogs
- getRecipients
- getRequestStatus
- snoozeAlert
- unacknowledgeAlert
- updateDescription
- updateMessage
- updatePriority
- Attachment
- Details
- Note
- Saved
- Tags
- Incident
- addResponder
- closeIncident
- createIncident
- deleteIncident
- getIncident
- getIncidents
- getLogs
- getRequestStatus
- reopenIncident
- resolveIncident
- updateDescription
- updateMessage
- updatePriority
- Alert
- Details
- Note
- Tags
- Timeline
Porting to other runtimes
While the primary reason for creating Managed APIs was to use them in ScriptRunner Connect runtime, then you can easily port them to any runtime of your choosing.
You can do so by extending the *Core
Managed API class where you'll be asked to provide implementation for getPlatformImplementation
function. In this implementation you have to specify how to perform buffer encoding/decoding operations and how to perform HTTP calls:
{
buffer: {
encode(input: string): ArrayBuffer;
decode(input: ArrayBuffer): string;
},
performHttpCall(request: Request): Promise<Response>
}
Here is an example how to create a Node port of the Managed API:
import { OpsgenieApiCore } from "@managed-api/opsgenie-core";
import { PlatformImplementation, Request, Response, Headers } from "@managed-api/commons-core";
import fetch from "node-fetch";
export class OpsgenieApi extends OpsgenieApiCore {
constructor(private baseUrl: string, private authToken: string) {
super();
}
protected getPlatformImplementation(): PlatformImplementation {
return {
buffer: {
encode: (input) => Buffer.from(input, 'utf-8'),
decode: (input) => Buffer.from(input).toString('utf-8')
},
performHttpCall: (request) => this.performHttpCall(request)
};
}
private async performHttpCall(request: Request): Promise<Response> {
const requestUrl = `${this.baseUrl}${request.url}`; // Substitute base URL
request.headers.set('Authorization', `Basic ${this.authToken}`); // Substitute auth token
const response = await fetch(requestUrl, {
method: request.method,
headers: request.headers as any,
body: request.method.toLowerCase() !== 'get' ? Buffer.from((await request.arrayBuffer()) ?? new ArrayBuffer(0)) : undefined
});
const apiHeaders = new Headers();
response.headers.forEach((value, key) => apiHeaders.append(key, value));
const body = await response.arrayBuffer();
return super.buildResponse(response.url, response.status, response.statusText, apiHeaders, body);
}
}
Please note that the authentication handling details may not be accurate and serve as an example. If you wish to use these Managed APIs without having to concern yourself how to deal with and secure authentication details when working with APIs, then feel free to evaluate ScriptRunner Connect platform.
Contact
At this time Managed APIs are unlicensed and close sourced, but feel free to drop an email to eknoll@adaptavist.com for ideas, suggestions and improvements.
Changelog
2.0.0
-
Breaking change: URL and query string parameters are now URL encoded, meaning if you encoded them explicitly before you have to remove your own encoding, otherwise they will get double encoded.
0.2.0
-
Added support for the following Alert methods:
-
Acknowledge Alert that can be used as
Alert.acknowledgeAlert
orAll.acknowledgeAlert
. -
Add Responder to Alert that can be used as
Alert.addResponder
orAll.addResponderToAlert
. -
Add Team to Alert that can be used as
Alert.addTeam
orAll.addTeamToAlert
. -
Assign Alert that can be used as
Alert.assignAlert
orAll.assignAlert
. -
Close Alert that can be used as
Alert.closeAlert
orAll.closeAlert
. -
Count Alerts that can be used as
Alert.countAlerts
orAll.countAlerts
. -
Create Alert that can be used as
Alert.createAlert
orAll.createAlert
. -
Delete Alert that can be used as
Alert.deleteAlert
orAll.deleteAlert
. -
Escalate Alert to Next that can be used as
Alert.escalateAlertToNext
orAll.escalateAlertToNext
. -
Execute Custom Action that can be used as
Alert.executeCustomAction
orAll.executeCustomAlertAction
. -
Get Alert that can be used as
Alert.getAlert
orAll.getAlert
. -
List Alerts that can be used as
Alert.getAlerts
orAll.getAlerts
. -
List Alert Logs that can be used as
Alert.getLogs
orAll.getAlertLogs
. -
List Alert Recipients that can be used as
Alert.getRecipient
orAll.getAlertRecipients
. -
List Alert Recipients that can be used as
Alert.getRequestStatus
orAll.getRequestStatusforAlert
. -
Snooze Alert that can be used as
Alert.snoozeAlert
orAll.snoozeAlert
. -
Unacknowledge Alert that can be used as
Alert.unacknowledgeAlert
orAll.unacknowledgeAlert
. -
Update Alert Description that can be used as
Alert.updateDescription
orAll.updateAlertDescription
. -
Update Alert Message that can be used as
Alert.updateMessage
orAll.updateAlertMessage
. -
Update Alert Priority that can be used as
Alert.updatePriority
orAll.updateIncidentPriority
.
-
Acknowledge Alert that can be used as
-
Added support for the following Alert.Attachment methods:
-
Create Alert Attachment that can be used as
Alert.Attachment.createAttachment
orAll.createAlertAttachment
. -
Delete Alert Attachment that can be used as
Alert.Attachment.deleteAttachment
orAll.deleteAlertAttachment
. -
Get Alert Attachment that can be used as
Alert.Attachment.getAttachment
orAll.getAlertAttachment
. -
List Alert Attachments that can be used as
Alert.Attachment.getAttachments
orAll.getAlertAttachments
.
-
Create Alert Attachment that can be used as
-
Added support for the following Alert.Details methods:
-
Add Details (Custom Properties) to Alert that can be used as
Alert.Details.addDetails
orAll.addDetailsToAlert
. -
Remove Details (Custom Properties) from Alert that can be used as
Alert.Details.removeDetails
orAll.removeDetailsFromAlert
.
-
Add Details (Custom Properties) to Alert that can be used as
-
Added support for the following Alert.Note methods:
-
Add Note to Alert that can be used as
Alert.Note.addNote
orAll.addNoteToAlert
. -
List Alert Notes that can be used as
Alert.Note.getNote
orAll.getAlertNotes
.
-
Add Note to Alert that can be used as
-
Added support for the following Alert.Saved.Search methods:
-
Create a Saved Search that can be used as
Alert.Saved.Search.createSavedSearch
orAll.createSavedSearchForAlert
. -
Delete Saved Search that can be used as
Alert.Saved.Search.deleteSavedSearch
orAll.deleteSavedSearchForAlert
. -
Get Saved Search that can be used as
Alert.Saved.Search.getSavedSearch
orAll.getSavedSearchForAlert
. -
List Saved Searches that can be used as
Alert.Saved.Search.getSavedSearches
orAll.getSavedSearchesForAlert
. -
Update Saved Search that can be used as
Alert.Saved.Search.updateSavedSearch
orAll.updateSavedSearchForAlert
.
-
Create a Saved Search that can be used as
-
Added support for the following Alert.Tags methods:
-
Add Tags to Alert that can be used as
Alert.Tags.addTags
orAll.addTagsToAlert
. -
Remove Tags from Alert that can be used as
Alert.Tags.removeTags
orAll.removeTagsFromAlert
.
-
Add Tags to Alert that can be used as
-
Added support for the following Incident methods:
-
Add Responder to Incident that can be used as
Incident.addResponder
orAll.addResponderToIncident
. -
Close Incident that can be used as
Incident.closeIncident
orAll.closeIncident
. -
Create Incident that can be used as
Incident.createIncident
orAll.createIncident
. -
Delete Incident that can be used as
Incident.deleteIncident
orAll.deleteIncident
. -
Get Incident that can be used as
Incident.getIncident
orAll.getIncident
. -
List Incidents that can be used as
Incident.getIncidenst
orAll.getIncidents
. -
List Incident Logs that can be used as
Incident.getLogs
orAll.getIncidentLogs
. -
Get Request Status that can be used as
Incident.getRequestStatus
orAll.getRequestStatusForIncident
. -
Reopen Incident that can be used as
Incident.reopenIncident
orAll.reopenIncident
. -
Resolve Incident that can be used as
Incident.resolveIncident
orAll.resolveIncident
. -
Update Incident Description that can be used as
Incident.updateDescription
orAll.updateIncidentDescription
. -
Update Incident Message that can be used as
Incident.updateMessage
orAll.updateIncidentMessage
. -
Update Incident Priority that can be used as
Incident.updatePriority
orAll.updateIncidentPriority
.
-
Add Responder to Incident that can be used as
-
Added support for the following Incident.Alert methods:
-
Get Associated Alerts that can be used as
Incident.Alert.getAssociatedAlerts
orAll.getAssociatedAlertsForIncident
. -
Get Responder Alerts that can be used as
Incident.Alert.getResponderAlerts
orAll.getResponderAlertsForIncident
.
-
Get Associated Alerts that can be used as
-
Added support for the following Incident.Details methods:
-
Add Details(Custom Properties) to Incident that can be used as
Incident.Details.addDetails
orAll.addDetailsToIncident
. -
Remove Details(Custom Properties) from Incident that can be used as
Incident.Details.removeDetails
orAll.removeDetailsFromIncident
.
-
Add Details(Custom Properties) to Incident that can be used as
-
Added support for the following Incident.Note methods:
-
Add Note to Incident that can be used as
Incident.Note.addNote
orAll.addNoteToIncident
. -
List Incident Notes that can be used as
Incident.Note.getNotes
orAll.getIncidentNotes
.
-
Add Note to Incident that can be used as
-
Added support for the following Incident.Tags methods:
-
Add Tags to Incident that can be used as
Incident.Tags.addTags
orAll.addTagsToIncident
. -
Remove Tags from Incident that can be used as
Incident.Tags.removeTags
orAll.removeTagsFromIncident
.
-
Add Tags to Incident that can be used as
-
Added support for the following Incident.Timeline methods:
-
Add Incident Timeline Entry that can be used as
Incident.Timeline.addEntry
orAll.addIncidentTimelineEntry
. -
Delete Incident Timeline Entry that can be used as
Incident.Timeline.deleteEntry
orAll.deleteIncidentTimelineEntry
. -
List Incident Timeline Entries that can be used as
Incident.Timeline.getEntries
orAll.getIncidentTimelineEntries
. -
Get Incident Timeline Entrys that can be used as
Incident.Timeline.getEntry
orAll.getIncidentTimelineEntry
. -
Hide Incident Timeline Entry that can be used as
Incident.Timeline.hideEntry
orAll.hideIncidentTimelineEntry
. -
Unhide Incident Timeline Entry that can be used as
Incident.Timeline.unhideEntry
orAll.unhideIncidentTimelineEntry
. -
Update Incident Timeline Entry that can be used as
Incident.Timeline.updateEntry
orAll.updateIncidentTimelineEntry
.
-
Add Incident Timeline Entry that can be used as
Copyright Adaptavist 2024 (c) All rights reserved