Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

zapoj (new) #168

Draft
wants to merge 12 commits into
base: dev
Choose a base branch
from
76 changes: 76 additions & 0 deletions src/appmixer/zapoj/auth.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
'use strict';

module.exports = {

type: 'pwd',

definition: {

tokenType: 'authentication-token',

auth: {
subdomain: {
type: 'text',
name: 'Subdomain',
tooltip: 'Your Zapoj subdomain. For example, if your Zapoj URL is https://mycompany.zapoj.com, then the subdomain is mycompany.'
},
email: {
type: 'text',
name: 'Email'
},
password: {
type: 'password',
name: 'Password'
}
},

accountNameFromProfileInfo: async context => {

const { email, subdomain } = context;

return subdomain + ' - ' + email;
},

requestProfileInfo: async context => {

return {
email: context.email,
subdomain: context.subdomain
};
},

validate: async context => {

const { data, status, statusText } = await context.httpRequest({
method: 'POST',
url: `https://zapi.${context.subdomain}.zapoj.com/api/login`,
headers: {
'Content-Type': 'application/json'
},
data: {
email: context.email,
password: context.password
}
});

if (status === 200 && data?.authorization?.token) {

return {
token: data.authorization.token,
// number/string with seconds representing a token lifetime
expires: data.token_lifetime
};
}

// Currently POST to a URL with invalid domain returns 200 and HTML of the login page.
let error = {
subdomain: context.subdomain,
status,
statusText,
data
};

throw new Error(JSON.stringify(error, null, 2));
}
}
};
9 changes: 9 additions & 0 deletions src/appmixer/zapoj/bundle.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"name": "appmixer.zapoj",
"version": "1.0.0",
"changelog": {
"1.0.0": [
"Initial release"
]
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
'use strict';

module.exports = {

async receive(context) {

const { notificationId } = context.messages.in.content;

const { data } = await context.httpRequest({
url: `https://messagetemplate.${context.auth?.subdomain}.zapoj.com/api/incidentAlerts/details/${notificationId}`,
headers: {
authorization: `Bearer ${context.auth?.token}`
}
});

const metadata = data?.messages;

await context.sendJson(metadata, 'out');
}
};
149 changes: 149 additions & 0 deletions src/appmixer/zapoj/core/GetIncidentAlertDetails/component.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,149 @@
{
"name": "appmixer.zapoj.core.GetIncidentAlertDetails",
"author": "Appmixer <[email protected]>",
"label": "Get Incident Alert Details",
"description": "Get the IT incident alert details.",
"private": false,
"version": "1.0.0",
"auth": {
"service": "appmixer:zapoj"
},
"quota": {
"manager": "appmixer:zapoj",
"resources": "request",
"scope": {
"userId": "{{userId}}"
}
},
"inPorts": [
{
"name": "in",
"schema": {
"type": "object",
"properties": {
"notificationId": {
"type": "string"
}
},
"required": ["notificationId"]
},
"inspector": {
"inputs": {
"notificationId": {
"type": "text",
"label": "Incident ID",
"index": 1,
"tooltip": "Example: ITA240819103043424."
}
}
}
}
],
"outPorts": [
{
"name": "out",
"options": [
{
"label": "_id",
"value": "_id"
},
{
"label": "Organization ID",
"value": "organizationId"
},
{
"label": "It Alert Service ID",
"value": "ItAlertServiceId"
},
{
"label": "It Alert Summary",
"value": "ItAlertSummery"
},
{
"label": "It Alert Severity",
"value": "ItAlertSeverity"
},
{
"label": "It Alert Body",
"value": "ItAlertBody"
},
{
"label": "It Alert Integration Type",
"value": "ItAlertIntegrationType"
},
{
"label": "It Alert From",
"value": "ItAlertFrom"
},
{
"label": "It Alert To",
"value": "ItAlertTo"
},
{
"label": "It Incident ID",
"value": "ItIncidentId"
},
{
"label": "It Alert Generated By",
"value": "ItAlertGeneratedBy"
},
{
"label": "It Alert Integrated By",
"value": "ItAlertIntegratedBy"
},
{
"label": "It Alert Status",
"value": "ItAlertStatus"
},
{
"label": "Created By ID",
"value": "createdById"
},
{
"label": "Created By Name",
"value": "createdByName"
},
{
"label": "Last Modified ID",
"value": "lastModifiedId"
},
{
"label": "Last Modified Name",
"value": "lastModifiedName"
},
{
"label": "Is Master",
"value": "isMaster"
},
{
"label": "Updated At",
"value": "updated_at"
},
{
"label": "Created At",
"value": "created_at"
},
{
"label": "Siblings Count",
"value": "siblingsCount"
},
{
"label": "Severity",
"value": "severity"
},
{
"label": "Siblings",
"value": "siblings",
"schema": {
"type": "array",
"items": {
"type": "object",
"properties": {}
}
}
}
]
}
],
"icon": "data:image/svg+xml;base64,PHN2ZyBpZD0iQ29tcG9uZW50XzQ5XzEiIGRhdGEtbmFtZT0iQ29tcG9uZW50IDQ5IOKAkyAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMTcuNTIxIiBoZWlnaHQ9IjEzNi44MzUiIHZpZXdCb3g9IjAgMCAxMTcuNTIxIDEzNi44MzUiPg0KPGcgaWQ9Ikdyb3VwXzc0ODUiIGRhdGEtbmFtZT0iR3JvdXAgNzQ4NSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTAwLjExMSkiPg0KPGcgaWQ9Ikdyb3VwXzExMDYxIiBkYXRhLW5hbWU9Ikdyb3VwIDExMDYxIj4NCjxnIGlkPSJQYXRoXzk5OTUiIGRhdGEtbmFtZT0iUGF0aCA5OTk1IiBmaWxsPSJub25lIj4NCjxwYXRoIGQ9Ik04LjcsMEE4LjcsOC43LDAsMSwxLDAsOC43LDguNyw4LjcsMCwwLDEsOC43LDBaIiBzdHJva2U9Im5vbmUiLz4NCjxwYXRoIGQ9Ik0gOC43MDQ3Nzc3MTc1OTAzMzIgMS4wMDAwMDM4MTQ2OTcyNjYgQyA0LjQ1NjM0NzQ2NTUxNTEzNyAxLjAwMDAwMzgxNDY5NzI2NiAwLjk5OTk5ODA5MjY1MTM2NzIgNC40NTYzNjQ2MzE2NTI4MzIgMC45OTk5OTgwOTI2NTEzNjcyIDguNzA0ODA0NDIwNDcxMTkxIEMgMC45OTk5OTgwOTI2NTEzNjcyIDEyLjk1MzI0NDIwOTI4OTU1IDQuNDU2MzQ3NDY1NTE1MTM3IDE2LjQwOTYwNTAyNjI0NTEyIDguNzA0Nzc3NzE3NTkwMzMyIDE2LjQwOTYwNTAyNjI0NTEyIEMgMTIuOTUzMjA3MDE1OTkxMjEgMTYuNDA5NjA1MDI2MjQ1MTIgMTYuNDA5NTU3MzQyNTI5MyAxMi45NTMyNDQyMDkyODk1NSAxNi40MDk1NTczNDI1MjkzIDguNzA0ODA0NDIwNDcxMTkxIEMgMTYuNDA5NTU3MzQyNTI5MyA0LjQ1NjM2NDYzMTY1MjgzMiAxMi45NTMyMDcwMTU5OTEyMSAxLjAwMDAwMzgxNDY5NzI2NiA4LjcwNDc3NzcxNzU5MDMzMiAxLjAwMDAwMzgxNDY5NzI2NiBNIDguNzA0Nzc3NzE3NTkwMzMyIDMuODE0Njk3MjY1NjI1ZS0wNiBDIDEzLjUxMjI4NzEzOTg5MjU4IDMuODE0Njk3MjY1NjI1ZS0wNiAxNy40MDk1NTczNDI1MjkzIDMuODk3Mjc0MDE3MzMzOTg0IDE3LjQwOTU1NzM0MjUyOTMgOC43MDQ4MDQ0MjA0NzExOTEgQyAxNy40MDk1NTczNDI1MjkzIDEzLjUxMjMzNDgyMzYwODQgMTMuNTEyMjg3MTM5ODkyNTggMTcuNDA5NjA1MDI2MjQ1MTIgOC43MDQ3Nzc3MTc1OTAzMzIgMTcuNDA5NjA1MDI2MjQ1MTIgQyAzLjg5NzI1NzgwNDg3MDYwNSAxNy40MDk2MDUwMjYyNDUxMiAtMS45MDczNDg2MzI4MTI1ZS0wNiAxMy41MTIzMzQ4MjM2MDg0IC0xLjkwNzM0ODYzMjgxMjVlLTA2IDguNzA0ODA0NDIwNDcxMTkxIEMgLTEuOTA3MzQ4NjMyODEyNWUtMDYgMy44OTcyNzQwMTczMzM5ODQgMy44OTcyNTc4MDQ4NzA2MDUgMy44MTQ2OTcyNjU2MjVlLTA2IDguNzA0Nzc3NzE3NTkwMzMyIDMuODE0Njk3MjY1NjI1ZS0wNiBaIiBzdHJva2U9Im5vbmUiIGZpbGw9IiMzOTM5MzkiLz4NCjwvZz4NCjxwYXRoIGlkPSJQYXRoXzk5OTQiIGRhdGEtbmFtZT0iUGF0aCA5OTk0IiBkPSJNMy40MzMtMi44NzZIMS43NjNWMEguODJWLTcuMTA5SDMuMTc0YTIuNzg2LDIuNzg2LDAsMCwxLDEuODQ4LjU0NywxLjk2OCwxLjk2OCwwLDAsMSwuNjQ3LDEuNTkyQTEuOTE0LDEuOTE0LDAsMCwxLDUuMzEtMy44MTNhMi4xNDIsMi4xNDIsMCwwLDEtMSwuNzM3TDUuOTgxLS4wNTlWMEg0Ljk3NlptLTEuNjctLjc2N0gzLjJBMS42MjUsMS42MjUsMCwwLDAsNC4zMTQtNGExLjIyNCwxLjIyNCwwLDAsMCwuNDEzLS45NjksMS4yODksMS4yODksMCwwLDAtLjM5My0xLjAxM0ExLjY2NCwxLjY2NCwwLDAsMCwzLjItNi4zNDNIMS43NjNaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1LjgwNCAxMi4xNikiIGZpbGw9IiMzOTM5MzkiLz4NCjwvZz4NCjwvZz4NCjxnIGlkPSJHcm91cF8zODBfMV8iIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xLjg0NSA5LjU1MikiPg0KPHBhdGggaWQ9IlBhdGhfNjc0XzFfIiBkPSJNNjA0Ljk3OCw2ODIuMTVoMTguMTEzbC02Ny4zLDkwLjg3NEg1MzcuNjhaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtNTM0LjgzNSAtNjgyLjE1KSIgZmlsbD0iI2YwNjcyMyIvPg0KPHJlY3QgaWQ9IlJlY3RhbmdsZV8yODhfMV8iIHdpZHRoPSI0OCIgaGVpZ2h0PSIxMS41NzIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDM5Ljg0NSA3OS41ODkpIiBmaWxsPSIjMzJhMGJlIi8+DQo8cmVjdCBpZD0iUmVjdGFuZ2xlXzI4OV8xXyIgd2lkdGg9IjQ4IiBoZWlnaHQ9IjExLjU3MiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMy4yKSIgZmlsbD0iI2YwNjcyMyIvPg0KPHJlY3QgaWQ9IlJlY3RhbmdsZV8yOTBfMV8iIHdpZHRoPSIyNSIgaGVpZ2h0PSIxMS41NzIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIuODYzIDIwLjMyOSkiIGZpbGw9IiM0MmI5ZDQiLz4NCjxyZWN0IGlkPSJSZWN0YW5nbGVfMjkxXzFfIiB3aWR0aD0iMjUiIGhlaWdodD0iMTEuNTcyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg2Mi44NDUgNjAuMzQzKSIgZmlsbD0iI2E5ODdiZSIvPg0KPGcgaWQ9Ikdyb3VwXzM3OV8xXyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC44NDUgMTA2LjkzNSkiPg0KPGcgaWQ9Ikdyb3VwXzM3NF8xXyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMSAwLjMzNykiPg0KPHBhdGggaWQ9IlBhdGhfNjc1XzFfIiBkPSJNNTM1Ljc4LDc2Mi4zOTV2LTMuMDMybDEwLjk2MS0xNC4wNDhINTM1Ljc4di0zLjAzMmwxNC44NC4wMTd2My4wMTVsLTEwLjg4MSwxNC4wNDhoMTEuMDE2djMuMDQ5SDUzNS43OFoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC01MzUuNzggLTc0My4wMjQpIiBmaWxsPSIjMmIyOTI5Ii8+DQo8L2c+DQo8ZyBpZD0iR3JvdXBfMzc1XzFfIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxOS40MTggMC4zMzcpIj4NCjxwYXRoIGlkPSJQYXRoXzY3Nl8xXyIgZD0iTTU2MC4zNTEsNzYyLjRsLTIuMDM4LTYuMDNoLTYuMWwtMS45ODgsNi4wM0g1NDYuNjRsNi44NTYtMjAuMWgzLjY4OWw2Ljg3MiwyMC4xWm0tMi44OC04LjkyNy0xLjY1MS00Ljg1MWMtLjIxOS0uNjU3LS40MjEtMS4yNjMtLjU1Ni0xLjgzNi0uMTg1LjY0LS4zNTQsMS4yNDYtLjUzOSwxLjhsLTEuNjUxLDQuOVoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC01NDYuNjQgLTc0My4wMjQpIiBmaWxsPSIjMmIyOTI5Ii8+DQo8L2c+DQo8ZyBpZD0iR3JvdXBfMzc2XzFfIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0My41MjMgMC4xNDYpIj4NCjxwYXRoIGlkPSJQYXRoXzY3N18xXyIgZD0iTTU1OS42NSw3NjIuNDczVjc0Mi42NjRMNTYwLDc0Mi42YTMxLjY0OSwzMS42NDksMCwwLDEsNC44ODUtLjM4OCw4LjMwNyw4LjMwNywwLDAsMSw1LjcxLDEuNzE4LDUuNTgsNS41OCwwLDAsMSwxLjgzNiw0LjM2Myw2LjA3NSw2LjA3NSwwLDAsMS0xLjYzNCw0LjQzLDguMzcxLDguMzcxLDAsMCwxLTYuMjE1LDIuMjRjLS41MDUsMC0xLjAxMS0uMDE3LTEuNTE2LS4wNjd2Ny41OFptMy40NTMtMTAuNTYxYTcuOTk0LDcuOTk0LDAsMCwwLDEuNTUuMWMyLjc0NiwwLDQuMzI5LTEuMzE0LDQuMzI5LTMuNiwwLTIuMDcyLTEuNDY1LTMuMjY4LTQuMDQzLTMuMjY4YTE3LjEsMTcuMSwwLDAsMC0xLjg1My4xWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTU2MS42NSAtNzQyLjcxOSkiIGZpbGw9IiMyYjI5MjkiLz4NCjwvZz4NCjxnIGlkPSJHcm91cF8zNzdfMV8iIHRyYW5zZm9ybT0idHJhbnNsYXRlKDU3LjY3MykiPg0KPHBhdGggaWQ9IlBhdGhfNjc4XzFfIiBkPSJNNTc3Ljg1Myw3NjIuODM1Yy01LjM3MywwLTkuMTEzLTQuMTk0LTkuMTEzLTEwLjE5MSwwLTYuMiwzLjg1Ny0xMC41NDUsOS40LTEwLjU0NSw1LjQ0LDAsOS4xMTIsNC4wOTMsOS4xMTIsMTAuMTc0QzU4Ny4yNTIsNzU5LjU4NCw1ODIuNTM1LDc2Mi44MzUsNTc3Ljg1Myw3NjIuODM1Wm0uMTY4LTE3LjczN2MtMy45MDgsMC01LjY2LDMuNzU2LTUuNjYsNy41LDAsMy42LDEuOTM3LDcuMjYsNS42NDMsNy4yNiwzLjkwOCwwLDUuNjYtMy43NTYsNS42Ni03LjQ2MkM1ODMuNjY0LDc0OC44NzEsNTgxLjksNzQ1LjEsNTc4LjAyMSw3NDUuMVoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC01NjguNzQgLTc0Mi40ODcpIiBmaWxsPSIjMmIyOTI5Ii8+DQo8L2c+DQo8ZyBpZD0iR3JvdXBfMzc4XzFfIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg3Ny42NSAwLjMyKSI+DQo8cGF0aCBpZD0iUGF0aF82NzlfMV8iIGQ9Ik01ODMuNzY3LDc2Mi43YTguNTQ5LDguNTQ5LDAsMCwxLTIuODMtLjQ4OGwtLjA1MS0uMDE3LS4wNjctLjA1MS0uMDg0LS4wNjctLjEzNS0uMjM2LjUwNS0yLjc3OS41NTYuMjE5YTUuNTY5LDUuNTY5LDAsMCwwLDEuODg3LjMzN2MyLjIyMywwLDMuMDMyLTEuMTQ1LDMuMDMyLTQuMjQ0Vjc0Mi4yOWgzLjQ1M3YxMy4yOUM1OTAuMDUsNzYwLjM4MSw1ODcuOTk1LDc2Mi43LDU4My43NjcsNzYyLjdaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtNTgwLjYgLTc0Mi45OTcpIiBmaWxsPSIjMmIyOTI5Ii8+DQo8L2c+DQo8L2c+DQo8L2c+DQo8L3N2Zz4="
}
20 changes: 20 additions & 0 deletions src/appmixer/zapoj/core/GetIncidentMetadata/GetIncidentMetadata.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
'use strict';

module.exports = {

async receive(context) {

const { notificationId } = context.messages.in.content;

const { data } = await context.httpRequest({
url: `https://messagetemplate.${context.auth?.subdomain}.zapoj.com/api/notification/list/NE/details/${notificationId}`,
headers: {
authorization: `Bearer ${context.auth?.token}`
}
});

const metadata = data?.messages;

await context.sendJson(metadata, 'out');
}
};
Loading
Loading