Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ plugins/AutoTask/* @TimWheeler-SQUP
plugins/DattoRMM/* @TimWheeler-SQUP
plugins/DigiCert/* @shaswot77
plugins/Huntress/* @Deenk
plugins/IncidentIO/* @noorulkhan-n
Comment thread
coderabbitai[bot] marked this conversation as resolved.
Outdated
plugins/FantasyPremierLeague/* @TimWheeler-SQUP
plugins/GoogleSheets/* @kieranlangton
plugins/MetOffice/* @blackgrouse
Expand Down
11 changes: 11 additions & 0 deletions plugins/IncidentIO/v1/configValidation.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"steps": [
{
"displayName": "Authenticate",
"dataStream": { "name": "currentUser" },
"required": true,
"error": "Could not authenticate. Check your API key is valid and has not expired.",
"success": "Connected successfully."
}
]
}
37 changes: 37 additions & 0 deletions plugins/IncidentIO/v1/custom_types.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
[
{
"name": "Incident",
"sourceType": "Incident",
"icon": "triangle-exclamation",
"singular": "Incident",
"plural": "Incidents"
},
{
"name": "Alert",
"sourceType": "Alert",
"icon": "bell",
"singular": "Alert",
"plural": "Alerts"
},
{
"name": "Schedule",
"sourceType": "Schedule",
"icon": "calendar-days",
"singular": "Schedule",
"plural": "Schedules"
},
{
"name": "Team",
"sourceType": "Team",
"icon": "people-group",
"singular": "Team",
"plural": "Teams"
},
{
"name": "User",
"sourceType": "User",
"icon": "user",
"singular": "User",
"plural": "Users"
}
]
29 changes: 29 additions & 0 deletions plugins/IncidentIO/v1/dataStreams/alertProperties.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
{
"name": "alertProperties",
"displayName": "Alert Properties",
"description": "Current-state properties for an alert",
"tags": ["Alerts"],
"baseDataSourceName": "httpRequestScopedSingle",
"config": {
"httpMethod": "get",
"endpointPath": "v2/alerts/{{object.rawId}}",
"expandInnerObjects": true,
"pathToData": "alert"
},
"matches": { "sourceType": { "type": "oneOf", "values": ["Alert"] } },
"metadata": [
{ "name": "id", "displayName": "ID", "shape": "string", "visible": false },
{ "name": "title", "displayName": "Title", "shape": "string", "role": "label" },
{ "name": "status", "displayName": "Status", "shape": "string" },
{ "name": "description", "displayName": "Description", "shape": "string" },
{ "name": "alert_source_id", "displayName": "Alert Source ID", "shape": "string" },
{ "name": "deduplication_key", "displayName": "Deduplication Key", "shape": "string" },
{ "name": "created_at", "displayName": "Created At", "shape": "date" },
{ "name": "updated_at", "displayName": "Updated At", "shape": "date" },
{ "name": "resolved_at", "displayName": "Resolved At", "shape": "date" },
{ "name": "source_url", "displayName": "Source URL", "shape": "url" },
{ "name": "attributes", "displayName": "Attributes", "shape": "json", "visible": false },
{ "pattern": ".*" }
],
"timeframes": false
}
33 changes: 33 additions & 0 deletions plugins/IncidentIO/v1/dataStreams/alerts.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
{
"name": "alerts",
"displayName": "Alerts",
"description": "All alerts ingested by alert sources, one row per alert",
"tags": ["Alerts"],
"baseDataSourceName": "httpRequestUnscoped",
"config": {
"httpMethod": "get",
"endpointPath": "v2/alerts",
"pathToData": "alerts",
"paging": {
"mode": "token",
"pageSize": { "realm": "queryArg", "path": "page_size", "value": "50" },
"in": { "realm": "payload", "path": "pagination_meta.after" },
"out": { "realm": "queryArg", "path": "after" }
}
},
"matches": "none",
"visibility": { "type": "hidden" },
"metadata": [
{ "name": "id", "displayName": "ID", "shape": "string", "visible": false },
{ "name": "title", "displayName": "Title", "shape": "string", "role": "label" },
{ "name": "status", "displayName": "Status", "shape": "string" },
{ "name": "alert_source_id", "displayName": "Alert Source ID", "shape": "string" },
{ "name": "deduplication_key", "displayName": "Deduplication Key", "shape": "string" },
{ "name": "created_at", "displayName": "Created At", "shape": "date" },
{ "name": "updated_at", "displayName": "Updated At", "shape": "date" },
{ "name": "resolved_at", "displayName": "Resolved At", "shape": "date" },
{ "name": "source_url", "displayName": "Source URL", "shape": "url" },
{ "pattern": ".*" }
],
"timeframes": false
}
15 changes: 15 additions & 0 deletions plugins/IncidentIO/v1/dataStreams/currentUser.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"name": "currentUser",
"displayName": "Current User",
"description": "Identity and role details for the configured API key",
"tags": ["Users"],
"baseDataSourceName": "httpRequestUnscoped",
"config": {
Comment thread
coderabbitai[bot] marked this conversation as resolved.
"httpMethod": "get",
"endpointPath": "v1/identity"
},
"matches": "none",
"visibility": { "type": "hidden" },
"metadata": [{ "pattern": ".*" }],
"timeframes": false
}
32 changes: 32 additions & 0 deletions plugins/IncidentIO/v1/dataStreams/incidentAlerts.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
{
"name": "incidentAlerts",
"displayName": "Incident Alerts",
"description": "Alerts attached to an incident, one row per incident-alert connection",
"tags": ["Incidents", "Alerts"],
"baseDataSourceName": "httpRequestScopedSingle",
"config": {
"httpMethod": "get",
"endpointPath": "v2/incident_alerts",
"getArgs": [{ "key": "incident_id", "value": "{{object.rawId}}" }],
"expandInnerObjects": true,
"pathToData": "incident_alerts",
"paging": {
"mode": "token",
"pageSize": { "realm": "queryArg", "path": "page_size", "value": "50" },
"in": { "realm": "payload", "path": "pagination_meta.after" },
"out": { "realm": "queryArg", "path": "after" }
}
},
"matches": { "sourceType": { "type": "oneOf", "values": ["Incident"] } },
"metadata": [
{ "name": "id", "displayName": "ID", "shape": "string", "visible": false },
{ "name": "alert.title", "displayName": "Alert Title", "shape": "string", "role": "label" },
{ "name": "alert.status", "displayName": "Alert Status", "shape": "string" },
{ "name": "alert.id", "displayName": "Alert ID", "shape": "string", "visible": false },
{ "name": "alert.created_at", "displayName": "Alert Created At", "shape": "date" },
{ "name": "alert.deduplication_key", "displayName": "Deduplication Key", "shape": "string" },
{ "name": "alert_route_id", "displayName": "Alert Route ID", "shape": "string" },
{ "pattern": ".*" }
],
"timeframes": false
}
35 changes: 35 additions & 0 deletions plugins/IncidentIO/v1/dataStreams/incidentEscalations.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
{
"name": "incidentEscalations",
"displayName": "Incident Escalations",
"description": "Escalation timeline for an incident, one row per escalation",
"tags": ["Incidents", "On-Call"],
"baseDataSourceName": "httpRequestScopedSingle",
"config": {
"httpMethod": "get",
"endpointPath": "v2/escalations",
"getArgs": [
{ "key": "incident[one_of]", "value": "{{object.rawId}}" },
{ "key": "created_at[date_range]", "value": "{{timeframe.start}}~{{timeframe.end}}" }
],
"expandInnerObjects": true,
"pathToData": "escalations",
"paging": {
"mode": "token",
"pageSize": { "realm": "queryArg", "path": "page_size", "value": "50" },
"in": { "realm": "payload", "path": "pagination_meta.after" },
"out": { "realm": "queryArg", "path": "after" }
}
},
"matches": { "sourceType": { "type": "oneOf", "values": ["Incident"] } },
"metadata": [
{ "name": "id", "displayName": "ID", "shape": "string", "visible": false },
{ "name": "title", "displayName": "Title", "shape": "string", "role": "label" },
{ "name": "status", "displayName": "Status", "shape": "string" },
{ "name": "escalation_path_id", "displayName": "Escalation Path ID", "shape": "string" },
{ "name": "priority.name", "displayName": "Priority", "shape": "string" },
{ "name": "created_at", "displayName": "Created At", "shape": "date", "role": "timestamp" },
{ "name": "updated_at", "displayName": "Updated At", "shape": "date" },
{ "pattern": ".*" }
],
"timeframes": true
}
32 changes: 32 additions & 0 deletions plugins/IncidentIO/v1/dataStreams/incidentProperties.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
{
"name": "incidentProperties",
"displayName": "Incident Properties",
"description": "Current-state properties for an incident",
"tags": ["Incidents"],
"baseDataSourceName": "httpRequestScopedSingle",
"config": {
"httpMethod": "get",
"endpointPath": "v2/incidents/{{object.rawId}}",
"expandInnerObjects": true,
"pathToData": "incident"
},
"matches": { "sourceType": { "type": "oneOf", "values": ["Incident"] } },
"metadata": [
{ "name": "id", "displayName": "ID", "shape": "string", "visible": false },
{ "name": "name", "displayName": "Name", "shape": "string", "role": "label" },
{ "name": "reference", "displayName": "Reference", "shape": "string" },
{ "name": "mode", "displayName": "Mode", "shape": "string" },
{ "name": "visibility", "displayName": "Visibility", "shape": "string" },
{ "name": "incident_status.name", "displayName": "Status", "shape": "string" },
{ "name": "severity.name", "displayName": "Severity", "shape": "string" },
{ "name": "incident_type.name", "displayName": "Type", "shape": "string" },
{ "name": "created_at", "displayName": "Created At", "shape": "date" },
{ "name": "updated_at", "displayName": "Updated At", "shape": "date" },
{ "name": "last_activity_at", "displayName": "Last Activity At", "shape": "date" },
{ "name": "permalink", "displayName": "Permalink", "shape": "url" },
{ "name": "slack_channel_url", "displayName": "Slack Channel URL", "shape": "url" },
{ "name": "has_debrief", "displayName": "Has Debrief", "shape": "boolean" },
{ "pattern": ".*" }
],
"timeframes": false
}
31 changes: 31 additions & 0 deletions plugins/IncidentIO/v1/dataStreams/incidentUpdates.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
{
"name": "incidentUpdates",
"displayName": "Incident Updates",
"description": "Status and severity change history for an incident, one row per update",
"tags": ["Incidents"],
"baseDataSourceName": "httpRequestScopedSingle",
"config": {
"httpMethod": "get",
"endpointPath": "v2/incident_updates",
"getArgs": [{ "key": "incident_id", "value": "{{object.rawId}}" }],
"expandInnerObjects": true,
"pathToData": "incident_updates",
"paging": {
"mode": "token",
"pageSize": { "realm": "queryArg", "path": "page_size", "value": "100" },
"in": { "realm": "payload", "path": "pagination_meta.after" },
"out": { "realm": "queryArg", "path": "after" }
}
},
"matches": { "sourceType": { "type": "oneOf", "values": ["Incident"] } },
"metadata": [
{ "name": "id", "displayName": "ID", "shape": "string", "visible": false },
{ "name": "created_at", "displayName": "Created At", "shape": "date", "role": "timestamp" },
{ "name": "message", "displayName": "Message", "shape": "string" },
{ "name": "new_incident_status.name", "displayName": "New Status", "shape": "string" },
{ "name": "new_severity.name", "displayName": "New Severity", "shape": "string" },
{ "name": "merged_into_incident_id", "displayName": "Merged Into Incident ID", "shape": "string" },
{ "pattern": ".*" }
],
"timeframes": false
}
36 changes: 36 additions & 0 deletions plugins/IncidentIO/v1/dataStreams/incidents.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
{
"name": "incidents",
"displayName": "Incidents",
"description": "All incidents in the organization, one row per incident",
"tags": ["Incidents"],
"baseDataSourceName": "httpRequestUnscoped",
"config": {
"httpMethod": "get",
"endpointPath": "v2/incidents",
"expandInnerObjects": true,
"pathToData": "incidents",
"paging": {
"mode": "token",
"pageSize": { "realm": "queryArg", "path": "page_size", "value": "100" },
"in": { "realm": "payload", "path": "pagination_meta.after" },
"out": { "realm": "queryArg", "path": "after" }
}
},
"matches": "none",
"visibility": { "type": "hidden" },
"metadata": [
{ "name": "id", "displayName": "ID", "shape": "string", "visible": false },
{ "name": "name", "displayName": "Name", "shape": "string", "role": "label" },
{ "name": "reference", "displayName": "Reference", "shape": "string" },
{ "name": "mode", "displayName": "Mode", "shape": "string" },
{ "name": "visibility", "displayName": "Visibility", "shape": "string" },
{ "name": "incident_status.name", "displayName": "Status", "shape": "string" },
{ "name": "severity.name", "displayName": "Severity", "shape": "string" },
{ "name": "incident_type.name", "displayName": "Type", "shape": "string" },
{ "name": "created_at", "displayName": "Created At", "shape": "date" },
{ "name": "updated_at", "displayName": "Updated At", "shape": "date" },
{ "name": "permalink", "displayName": "Permalink", "shape": "url" },
{ "pattern": ".*" }
],
"timeframes": false
}
26 changes: 26 additions & 0 deletions plugins/IncidentIO/v1/dataStreams/scheduleOnCall.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"name": "scheduleOnCall",
"displayName": "Schedule On-Call",
"description": "Who is currently on-call for a schedule, one row per active shift/layer",
"tags": ["On-Call", "Schedules"],
"baseDataSourceName": "httpRequestScopedSingle",
"config": {
"httpMethod": "get",
"endpointPath": "v2/schedules/{{object.rawId}}",
"pathToData": "schedule.current_shifts",
"expandInnerObjects": true
},
"matches": { "sourceType": { "type": "oneOf", "values": ["Schedule"] } },
"metadata": [
{ "name": "user.name", "displayName": "On-Call User", "shape": "string", "role": "label" },
{ "name": "user.email", "displayName": "Email", "shape": "string" },
{ "name": "start_at", "displayName": "Start At", "shape": "date", "role": "timestamp" },
{ "name": "end_at", "displayName": "End At", "shape": "date" },
{ "name": "rotation_id", "displayName": "Rotation ID", "shape": "string" },
{ "name": "layer_id", "displayName": "Layer ID", "shape": "string" },
{ "name": "entry_id", "displayName": "Entry ID", "shape": "string", "visible": false },
{ "name": "fingerprint", "displayName": "Fingerprint", "shape": "string", "visible": false },
{ "pattern": ".*" }
],
"timeframes": false
}
32 changes: 32 additions & 0 deletions plugins/IncidentIO/v1/dataStreams/scheduleShifts.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
{
"name": "scheduleShifts",
"displayName": "Schedule Shifts",
"description": "The schedule's effective shifts across a time window, accounting for overrides",
"tags": ["On-Call", "Schedules"],
"baseDataSourceName": "httpRequestScopedSingle",
"config": {
"httpMethod": "get",
"endpointPath": "v2/schedule_entries",
"getArgs": [
{ "key": "schedule_id", "value": "{{object.rawId}}" },
{ "key": "entry_window_start", "value": "{{timeframe.start}}" },
{ "key": "entry_window_end", "value": "{{timeframe.end}}" }
],
"expandInnerObjects": true,
"pathToData": "schedule_entries.final",
"paging": { "mode": "none" }
},
"matches": { "sourceType": { "type": "oneOf", "values": ["Schedule"] } },
"metadata": [
{ "name": "user.name", "displayName": "On-Call User", "shape": "string", "role": "label" },
{ "name": "user.email", "displayName": "Email", "shape": "string" },
{ "name": "start_at", "displayName": "Start", "shape": "date", "role": "timestamp" },
{ "name": "end_at", "displayName": "End", "shape": "date" },
{ "name": "rotation_id", "displayName": "Rotation ID", "shape": "string" },
{ "name": "layer_id", "displayName": "Layer ID", "shape": "string" },
{ "name": "entry_id", "displayName": "Entry ID", "shape": "string", "visible": false },
{ "name": "fingerprint", "displayName": "Fingerprint", "shape": "string", "visible": false },
{ "pattern": ".*" }
],
"timeframes": true
}
30 changes: 30 additions & 0 deletions plugins/IncidentIO/v1/dataStreams/schedules.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
{
"name": "schedules",
"displayName": "Schedules",
"description": "All on-call schedules in the organization, one row per schedule",
"tags": ["On-Call", "Schedules"],
"baseDataSourceName": "httpRequestUnscoped",
"config": {
"httpMethod": "get",
"endpointPath": "v2/schedules",
"pathToData": "schedules",
"paging": {
"mode": "token",
"pageSize": { "realm": "queryArg", "path": "page_size", "value": "100" },
"in": { "realm": "payload", "path": "pagination_meta.after" },
"out": { "realm": "queryArg", "path": "after" }
}
},
"matches": "none",
"visibility": { "type": "hidden" },
"metadata": [
{ "name": "id", "displayName": "ID", "shape": "string", "visible": false },
{ "name": "name", "displayName": "Name", "shape": "string", "role": "label" },
{ "name": "timezone", "displayName": "Timezone", "shape": "string" },
{ "name": "created_at", "displayName": "Created At", "shape": "date" },
{ "name": "updated_at", "displayName": "Updated At", "shape": "date" },
Comment thread
clarkd marked this conversation as resolved.
{ "name": "permalink", "displayName": "Permalink", "shape": "url" },
{ "pattern": ".*" }
],
"timeframes": false
}
Loading
Loading