From 23c40c89ee997a1c93c22ebbe413eaf125469627 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C4=B1dvan=20Akca?= Date: Tue, 16 Jan 2024 12:45:00 +0300 Subject: [PATCH] feat(better-stack): add create incident action --- .../actions/create-incident/index.js | 120 ++++++++++++++++++ .../src/apps/better-stack/actions/index.js | 3 +- .../docs/pages/apps/better-stack/actions.md | 2 + 3 files changed, 124 insertions(+), 1 deletion(-) create mode 100644 packages/backend/src/apps/better-stack/actions/create-incident/index.js diff --git a/packages/backend/src/apps/better-stack/actions/create-incident/index.js b/packages/backend/src/apps/better-stack/actions/create-incident/index.js new file mode 100644 index 00000000..358be96f --- /dev/null +++ b/packages/backend/src/apps/better-stack/actions/create-incident/index.js @@ -0,0 +1,120 @@ +import defineAction from '../../../../helpers/define-action.js'; + +export default defineAction({ + name: 'Create incident', + key: 'createIncident', + description: 'Creates an incident that informs the team.', + arguments: [ + { + label: 'Brief Summary', + key: 'briefSummary', + type: 'string', + required: true, + variables: true, + description: 'A short description outlining the issue.', + }, + { + label: 'Description', + key: 'description', + type: 'string', + required: false, + variables: true, + description: + 'An elaborate description of the situation, offering insights into what is occurring, along with instructions to reproduce the problem.', + }, + { + label: 'Requester Email', + key: 'requesterEmail', + type: 'string', + required: true, + variables: true, + description: + 'This represents the email address of the individual who initiated the incident request.', + }, + { + label: 'Alert Settings - Call', + key: 'alertSettingsCall', + type: 'dropdown', + required: true, + description: 'Should we call the on-call person?', + variables: true, + options: [ + { label: 'Yes', value: 'true' }, + { label: 'No', value: 'false' }, + ], + }, + { + label: 'Alert Settings - Text', + key: 'alertSettingsText', + type: 'dropdown', + required: true, + description: 'Should we text the on-call person?', + variables: true, + options: [ + { label: 'Yes', value: 'true' }, + { label: 'No', value: 'false' }, + ], + }, + { + label: 'Alert Settings - Email', + key: 'alertSettingsEmail', + type: 'dropdown', + required: true, + description: 'Should we email the on-call person?', + variables: true, + options: [ + { label: 'Yes', value: 'true' }, + { label: 'No', value: 'false' }, + ], + }, + { + label: 'Alert Settings - Push Notification', + key: 'alertSettingsPushNotification', + type: 'dropdown', + required: true, + description: 'Should we send a push notification to the on-call person?', + variables: true, + options: [ + { label: 'Yes', value: 'true' }, + { label: 'No', value: 'false' }, + ], + }, + { + label: 'Team Alert Wait Time', + key: 'teamAlertWaitTime', + type: 'string', + required: true, + variables: true, + description: + "What is the time threshold for acknowledgment before escalating to the entire team? (Specify in seconds) - Use a negative value to indicate no team alert if the on-call person doesn't respond, and use 0 for an immediate alert to the entire team.", + }, + ], + + async run($) { + const { + briefSummary, + description, + requesterEmail, + alertSettingsCall, + alertSettingsText, + alertSettingsEmail, + alertSettingsPushNotification, + teamAlertWaitTime, + } = $.step.parameters; + + const body = { + summary: briefSummary, + description, + requester_email: requesterEmail, + call: alertSettingsCall, + sms: alertSettingsText, + email: alertSettingsEmail, + push: alertSettingsPushNotification, + team_wait: teamAlertWaitTime, + }; + + const response = await $.http.post('/v2/incidents', body); + + $.setActionItem({ raw: response.data.data }); + }, +}); diff --git a/packages/backend/src/apps/better-stack/actions/index.js b/packages/backend/src/apps/better-stack/actions/index.js index 39f4a03a..04e06fc6 100644 --- a/packages/backend/src/apps/better-stack/actions/index.js +++ b/packages/backend/src/apps/better-stack/actions/index.js @@ -1,3 +1,4 @@ import acknowledgeIncident from './acknowledge-incident/index.js'; +import createIncident from './create-incident/index.js'; -export default [acknowledgeIncident]; +export default [acknowledgeIncident, createIncident]; diff --git a/packages/docs/pages/apps/better-stack/actions.md b/packages/docs/pages/apps/better-stack/actions.md index d6d8092c..cf6f404b 100644 --- a/packages/docs/pages/apps/better-stack/actions.md +++ b/packages/docs/pages/apps/better-stack/actions.md @@ -3,6 +3,8 @@ favicon: /favicons/better-stack.svg items: - name: Acknowledge incident desc: Acknowledges an incident. + - name: Create incident + desc: Creates an incident that informs the team. ---