@managed-api/opsgenie-core
v2.2.0
Published
Adaptavist Managed API for Opsgenie
Keywords
Readme
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
- Incident
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 [email protected] for ideas, suggestions and improvements.
Changelog
2.1.0
- Removed non-empty body from HEAD requests.
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.acknowledgeAlertorAll.acknowledgeAlert. - Add Responder to Alert that can be used as
Alert.addResponderorAll.addResponderToAlert. - Add Team to Alert that can be used as
Alert.addTeamorAll.addTeamToAlert. - Assign Alert that can be used as
Alert.assignAlertorAll.assignAlert. - Close Alert that can be used as
Alert.closeAlertorAll.closeAlert. - Count Alerts that can be used as
Alert.countAlertsorAll.countAlerts. - Create Alert that can be used as
Alert.createAlertorAll.createAlert. - Delete Alert that can be used as
Alert.deleteAlertorAll.deleteAlert. - Escalate Alert to Next that can be used as
Alert.escalateAlertToNextorAll.escalateAlertToNext. - Execute Custom Action that can be used as
Alert.executeCustomActionorAll.executeCustomAlertAction. - Get Alert that can be used as
Alert.getAlertorAll.getAlert. - List Alerts that can be used as
Alert.getAlertsorAll.getAlerts. - List Alert Logs that can be used as
Alert.getLogsorAll.getAlertLogs. - List Alert Recipients that can be used as
Alert.getRecipientorAll.getAlertRecipients. - List Alert Recipients that can be used as
Alert.getRequestStatusorAll.getRequestStatusforAlert. - Snooze Alert that can be used as
Alert.snoozeAlertorAll.snoozeAlert. - Unacknowledge Alert that can be used as
Alert.unacknowledgeAlertorAll.unacknowledgeAlert. - Update Alert Description that can be used as
Alert.updateDescriptionorAll.updateAlertDescription. - Update Alert Message that can be used as
Alert.updateMessageorAll.updateAlertMessage. - Update Alert Priority that can be used as
Alert.updatePriorityorAll.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.createAttachmentorAll.createAlertAttachment. - Delete Alert Attachment that can be used as
Alert.Attachment.deleteAttachmentorAll.deleteAlertAttachment. - Get Alert Attachment that can be used as
Alert.Attachment.getAttachmentorAll.getAlertAttachment. - List Alert Attachments that can be used as
Alert.Attachment.getAttachmentsorAll.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.addDetailsorAll.addDetailsToAlert. - Remove Details (Custom Properties) from Alert that can be used as
Alert.Details.removeDetailsorAll.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.addNoteorAll.addNoteToAlert. - List Alert Notes that can be used as
Alert.Note.getNoteorAll.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.createSavedSearchorAll.createSavedSearchForAlert. - Delete Saved Search that can be used as
Alert.Saved.Search.deleteSavedSearchorAll.deleteSavedSearchForAlert. - Get Saved Search that can be used as
Alert.Saved.Search.getSavedSearchorAll.getSavedSearchForAlert. - List Saved Searches that can be used as
Alert.Saved.Search.getSavedSearchesorAll.getSavedSearchesForAlert. - Update Saved Search that can be used as
Alert.Saved.Search.updateSavedSearchorAll.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.addTagsorAll.addTagsToAlert. - Remove Tags from Alert that can be used as
Alert.Tags.removeTagsorAll.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.addResponderorAll.addResponderToIncident. - Close Incident that can be used as
Incident.closeIncidentorAll.closeIncident. - Create Incident that can be used as
Incident.createIncidentorAll.createIncident. - Delete Incident that can be used as
Incident.deleteIncidentorAll.deleteIncident. - Get Incident that can be used as
Incident.getIncidentorAll.getIncident. - List Incidents that can be used as
Incident.getIncidenstorAll.getIncidents. - List Incident Logs that can be used as
Incident.getLogsorAll.getIncidentLogs. - Get Request Status that can be used as
Incident.getRequestStatusorAll.getRequestStatusForIncident. - Reopen Incident that can be used as
Incident.reopenIncidentorAll.reopenIncident. - Resolve Incident that can be used as
Incident.resolveIncidentorAll.resolveIncident. - Update Incident Description that can be used as
Incident.updateDescriptionorAll.updateIncidentDescription. - Update Incident Message that can be used as
Incident.updateMessageorAll.updateIncidentMessage. - Update Incident Priority that can be used as
Incident.updatePriorityorAll.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.getAssociatedAlertsorAll.getAssociatedAlertsForIncident. - Get Responder Alerts that can be used as
Incident.Alert.getResponderAlertsorAll.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.addDetailsorAll.addDetailsToIncident. - Remove Details(Custom Properties) from Incident that can be used as
Incident.Details.removeDetailsorAll.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.addNoteorAll.addNoteToIncident. - List Incident Notes that can be used as
Incident.Note.getNotesorAll.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.addTagsorAll.addTagsToIncident. - Remove Tags from Incident that can be used as
Incident.Tags.removeTagsorAll.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.addEntryorAll.addIncidentTimelineEntry. - Delete Incident Timeline Entry that can be used as
Incident.Timeline.deleteEntryorAll.deleteIncidentTimelineEntry. - List Incident Timeline Entries that can be used as
Incident.Timeline.getEntriesorAll.getIncidentTimelineEntries. - Get Incident Timeline Entrys that can be used as
Incident.Timeline.getEntryorAll.getIncidentTimelineEntry. - Hide Incident Timeline Entry that can be used as
Incident.Timeline.hideEntryorAll.hideIncidentTimelineEntry. - Unhide Incident Timeline Entry that can be used as
Incident.Timeline.unhideEntryorAll.unhideIncidentTimelineEntry. - Update Incident Timeline Entry that can be used as
Incident.Timeline.updateEntryorAll.updateIncidentTimelineEntry.
- Add Incident Timeline Entry that can be used as
Copyright Adaptavist 2025 (c) All rights reserved
