Component Details
appmixer.slack.tasks.RequestApproval
1.0.0
Public
{ "name": "appmixer.slack.tasks.RequestApproval", "description": "Slack Task allows human approval inside workflows, with Slack user selection.", "author": "Appmixer <info@appmixer.com>", "version": "1.0.0", "webhook": true, "auth": { "service": "appmixer:slack", "scope": [ "channels:read", "chat:write" ] }, "quota": { "manager": "appmixer:slack:list", "resources": "postMessage", "maxWait": 30000, "scope": { "userId": "{{userId}}" } }, "inPorts": [ { "name": "task", "schema": { "type": "object", "properties": { "title": { "type": "string" }, "description": { "type": "string" }, "requester": { "type": "string" }, "approver": { "type": "string" }, "decisionBy": { "type": "string", "format": "date-time" }, "channel": { "type": "string" } }, "required": [ "title", "description", "requester", "approver", "decisionBy", "channel" ] }, "inspector": { "inputs": { "title": { "type": "text", "label": "Task title", "index": 1, "tooltip": "The title of the request." }, "description": { "type": "text", "label": "Description", "index": 2, "tooltip": "The description of the request." }, "requester": { "type": "text", "label": "Requester (Slack user)", "index": 3, "tooltip": "Select the Slack user who is the requester.", "source": { "url": "/component/appmixer/slack/list/ListUsers?outPort=out", "data": { "transform": "./transformers#usersToSelectArray", "messages": { "in/outputType": "array", "in/isSource": true } } } }, "approver": { "type": "text", "label": "Approver (Slack user)", "index": 4, "tooltip": "Select the Slack user who is the approver.", "source": { "url": "/component/appmixer/slack/list/ListUsers?outPort=out", "data": { "transform": "./transformers#usersToSelectArray", "messages": { "in/outputType": "array", "in/isSource": true } } } }, "decisionBy": { "type": "date-time", "label": "Decision by", "index": 5, "tooltip": "The time by which the request must be rejected or confirmed." }, "channel": { "type": "text", "label": "Channel", "index": 6, "tooltip": "Select the Slack channel where the approval request will be posted.", "source": { "url": "/component/appmixer/slack/list/ListChannels?outPort=channels", "data": { "messages": { "in/types": "private_channel,public_channel" }, "transform": "ListChannels#channelsToSelectArray" } } } } } } ], "outPorts": [ { "name": "created", "options": [ { "label": "Task ID", "value": "id" }, { "label": "Title", "value": "title" }, { "label": "Description", "value": "description" }, { "label": "Status", "value": "status" }, { "label": "Approver", "value": "approver" }, { "label": "Requester", "value": "requester" }, { "label": "Decision by", "value": "decisionBy" }, { "label": "Decision Made", "value": "decisionMade" } ] }, { "name": "approved", "options": [ { "label": "Task ID", "value": "id" }, { "label": "Title", "value": "title" }, { "label": "Description", "value": "description" }, { "label": "Status", "value": "status" }, { "label": "Approver", "value": "approver" }, { "label": "Requester", "value": "requester" }, { "label": "Decision by", "value": "decisionBy" }, { "label": "Decision Made", "value": "decisionMade" } ] }, { "name": "rejected", "options": [ { "label": "Task ID", "value": "id" }, { "label": "Title", "value": "title" }, { "label": "Description", "value": "description" }, { "label": "Status", "value": "status" }, { "label": "Approver", "value": "approver" }, { "label": "Requester", "value": "requester" }, { "label": "Decision by", "value": "decisionBy" }, { "label": "Decision Made", "value": "decisionMade" } ] }, { "name": "due", "options": [ { "label": "Task ID", "value": "id" }, { "label": "Title", "value": "title" }, { "label": "Description", "value": "description" }, { "label": "Status", "value": "status" }, { "label": "Approver", "value": "approver" }, { "label": "Requester", "value": "requester" }, { "label": "Decision by", "value": "decisionBy" }, { "label": "Decision Made", "value": "decisionMade" } ] } ], "icon": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBpZD0iR3JvdXBfNTQ2IiBkYXRhLW5hbWU9Ikdyb3VwIDU0NiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTM3NiAtMTA1KSI+CiAgICA8cmVjdCBpZD0iUmVjdGFuZ2xlXzMzMjgiIGRhdGEtbmFtZT0iUmVjdGFuZ2xlIDMzMjgiIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzc2IDEwNSkiIGZpbGw9IiNmZmYiLz4KICAgIDxnIGlkPSJTbGFja19NYXJrIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzMDUuNCAzNC40KSI+CiAgICAgIDxnIGlkPSJHcm91cF8xNzIiIGRhdGEtbmFtZT0iR3JvdXAgMTcyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg3My42IDgzLjA4NCkiPgogICAgICAgIDxwYXRoIGlkPSJQYXRoXzI2MCIgZGF0YS1uYW1lPSJQYXRoIDI2MCIgZD0iTTc3LjM4MiwxNDAuMTkxYTEuODkxLDEuODkxLDAsMSwxLTEuODkxLTEuODkxaDEuODkxWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTczLjYgLTEzOC4zKSIgZmlsbD0iI2UwMWU1YSIvPgogICAgICAgIDxwYXRoIGlkPSJQYXRoXzI2MSIgZGF0YS1uYW1lPSJQYXRoIDI2MSIgZD0iTTEwNS45LDE0MC4xOTFhMS44OTEsMS44OTEsMCwxLDEsMy43ODIsMHY0LjczNWExLjg5MSwxLjg5MSwwLDAsMS0zLjc4MiwwWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTEwMS4xNjUgLTEzOC4zKSIgZmlsbD0iI2UwMWU1YSIvPgogICAgICA8L2c+CiAgICAgIDxnIGlkPSJHcm91cF8xNzMiIGRhdGEtbmFtZT0iR3JvdXAgMTczIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg3My42IDczLjYpIj4KICAgICAgICA8cGF0aCBpZD0iUGF0aF8yNjIiIGRhdGEtbmFtZT0iUGF0aCAyNjIiIGQ9Ik0xMDcuNzkxLDc3LjM4MmExLjg5MSwxLjg5MSwwLDEsMSwxLjg5MS0xLjg5MXYxLjg5MVoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xMDEuMTY1IC03My42KSIgZmlsbD0iIzM2YzVmMCIvPgogICAgICAgIDxwYXRoIGlkPSJQYXRoXzI2MyIgZGF0YS1uYW1lPSJQYXRoIDI2MyIgZD0iTTgwLjIyNSwxMDUuOWExLjg5MSwxLjg5MSwwLDEsMSwwLDMuNzgySDc1LjQ5MWExLjg5MSwxLjg5MSwwLDEsMSwwLTMuNzgyWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTczLjYgLTEwMS4xNjUpIiBmaWxsPSIjMzZjNWYwIi8+CiAgICAgIDwvZz4KICAgICAgPGcgaWQ9Ikdyb3VwXzE3NCIgZGF0YS1uYW1lPSJHcm91cCAxNzQiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDgzLjA4NCA3My42KSI+CiAgICAgICAgPHBhdGggaWQ9IlBhdGhfMjY0IiBkYXRhLW5hbWU9IlBhdGggMjY0IiBkPSJNMTcwLjYsMTA3Ljc5MWExLjg5MSwxLjg5MSwwLDEsMSwxLjg5MSwxLjg5MUgxNzAuNloiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xNjUuODY1IC0xMDEuMTY1KSIgZmlsbD0iIzJlYjY3ZCIvPgogICAgICAgIDxwYXRoIGlkPSJQYXRoXzI2NSIgZGF0YS1uYW1lPSJQYXRoIDI2NSIgZD0iTTE0Mi4wODIsODAuMjI1YTEuODkxLDEuODkxLDAsMSwxLTMuNzgyLDBWNzUuNDkxYTEuODkxLDEuODkxLDAsMSwxLDMuNzgyLDBaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTM4LjMgLTczLjYpIiBmaWxsPSIjMmViNjdkIi8+CiAgICAgIDwvZz4KICAgICAgPGcgaWQ9Ikdyb3VwXzE3NSIgZGF0YS1uYW1lPSJHcm91cCAxNzUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDgzLjA4NCA4My4wODQpIj4KICAgICAgICA8cGF0aCBpZD0iUGF0aF8yNjYiIGRhdGEtbmFtZT0iUGF0aCAyNjYiIGQ9Ik0xNDAuMTkxLDE3MC42YTEuODkxLDEuODkxLDAsMSwxLTEuODkxLDEuODkxVjE3MC42WiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTEzOC4zIC0xNjUuODY1KSIgZmlsbD0iI2VjYjIyZSIvPgogICAgICAgIDxwYXRoIGlkPSJQYXRoXzI2NyIgZGF0YS1uYW1lPSJQYXRoIDI2NyIgZD0iTTE0MC4xOTEsMTQyLjA4MmExLjg5MSwxLjg5MSwwLDEsMSwwLTMuNzgyaDQuNzM1YTEuODkxLDEuODkxLDAsMCwxLDAsMy43ODJaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTM4LjMgLTEzOC4zKSIgZmlsbD0iI2VjYjIyZSIvPgogICAgICA8L2c+CiAgICA8L2c+CiAgPC9nPgo8L3N2Zz4K" }