Compare commits

..

25 Commits

Author SHA1 Message Date
Rıdvan Akca
c6a770c690 refactor(vtiger-crm): get full url for base url 2024-05-07 16:24:40 +02:00
Ali BARIN
43281bcbfe Merge pull request #1863 from automatisch/vtiger-fix
refactor(vtiger-crm): update field names and keys
2024-05-07 16:15:00 +02:00
Rıdvan Akca
8a35d47caf refactor(vtiger-crm): update field names and keys 2024-05-07 15:42:35 +02:00
Ali BARIN
759e8b6c42 fix(vtiger-crm/triggers): correct pagination 2024-05-07 11:33:55 +00:00
Ali BARIN
a8b01244af fix(vtiger-crm/create-case): mark contactName required 2024-05-07 11:33:37 +00:00
Ali BARIN
6ffb16ac67 fix(vtiger-crm): use DOCS_URL variable in authDocUrl 2024-05-07 11:33:17 +00:00
Ali BARIN
5b66cc6c8b Merge pull request #1527 from automatisch/AUT-521
feat(vtiger-crm): add create todo action
2024-05-07 13:23:49 +02:00
Rıdvan Akca
9a96258265 feat(vtiger-crm): add create case action 2024-05-07 11:22:51 +00:00
Rıdvan Akca
a6cc1566c7 feat(vtiger-crm): add create contact action 2024-05-07 11:22:51 +00:00
Rıdvan Akca
d8d6227125 feat(vtiger-crm): add create lead action 2024-05-07 11:22:51 +00:00
Rıdvan Akca
fbfa67e471 feat(vtiger-crm): add create todo action 2024-05-07 11:22:51 +00:00
Rıdvan Akca
ab897ada5a feat(vtiger-crm): add create opportunity action 2024-05-07 11:22:49 +00:00
Ali BARIN
3bcd3f3cb7 Merge pull request #1524 from automatisch/AUT-528
feat(vtiger-crm): add new todos trigger
2024-05-07 12:18:12 +02:00
Ali BARIN
acbede8631 Merge pull request #1523 from automatisch/AUT-530
feat(vtiger-crm): add new opportunities trigger
2024-05-07 12:16:40 +02:00
Ali BARIN
fa8c7571d7 Merge pull request #1522 from automatisch/AUT-531
feat(vtiger-crm): add new leads trigger
2024-05-07 12:14:52 +02:00
Ali BARIN
a58575c5a1 Merge pull request #1521 from automatisch/AUT-532
feat(vtiger-crm): add new invoices trigger
2024-05-07 12:13:44 +02:00
Ali BARIN
51f7009a80 Merge pull request #1520 from automatisch/AUT-533
feat(vtiger-crm): add new contacts trigger
2024-05-07 12:09:49 +02:00
Ali BARIN
ba24c77f06 Merge pull request #1519 from automatisch/AUT-534
feat(vtiger-crm): add new cases trigger
2024-05-07 11:41:57 +02:00
Rıdvan Akca
17a0c6123a feat(vtiger-crm): add new todos trigger 2024-01-17 10:47:52 +03:00
Rıdvan Akca
10edc5a8ad feat(vtiger-crm): add new opportunities trigger 2024-01-16 18:09:05 +03:00
Rıdvan Akca
bdf07d6bd5 feat(vtiger-crm): add new leads trigger 2024-01-16 18:05:13 +03:00
Rıdvan Akca
10ff65e71a feat(vtiger-crm): add new invoices trigger 2024-01-16 18:00:41 +03:00
Rıdvan Akca
9395097fda feat(vtiger-crm): add new contacts trigger 2024-01-16 17:55:48 +03:00
Rıdvan Akca
47eb0e00e3 feat(vtiger-crm): add new cases trigger 2024-01-16 17:48:24 +03:00
Rıdvan Akca
57d5f34ac5 feat(vtiger-crm): add vtiger crm integration 2024-01-16 17:42:34 +03:00
861 changed files with 15735 additions and 14480 deletions

View File

@@ -28,7 +28,7 @@ cd packages/web
rm -rf .env rm -rf .env
echo " echo "
PORT=$WEB_PORT PORT=$WEB_PORT
REACT_APP_BACKEND_URL=http://localhost:$BACKEND_PORT REACT_APP_GRAPHQL_URL=http://localhost:$BACKEND_PORT/graphql
" >> .env " >> .env
cd $CURRENT_DIR cd $CURRENT_DIR

View File

@@ -8,7 +8,7 @@
"version": "latest" "version": "latest"
}, },
"ghcr.io/devcontainers/features/node:1": { "ghcr.io/devcontainers/features/node:1": {
"version": 18 "version": 16
}, },
"ghcr.io/devcontainers/features/common-utils:1": { "ghcr.io/devcontainers/features/common-utils:1": {
"username": "vscode", "username": "vscode",

View File

@@ -4,9 +4,5 @@
**/.devcontainer **/.devcontainer
**/.github **/.github
**/.vscode **/.vscode
**/.env
**/.env.test
**/.env.production
**/yarn-error.log
packages/docs packages/docs
packages/e2e-test packages/e2e-test

18
.eslintrc.js Normal file
View File

@@ -0,0 +1,18 @@
module.exports = {
root: true,
parser: '@typescript-eslint/parser',
plugins: ['@typescript-eslint'],
extends: [
'eslint:recommended',
'plugin:@typescript-eslint/recommended',
'prettier',
],
overrides: [
{
files: ['**/*.test.ts', '**/test/**/*.ts'],
rules: {
'@typescript-eslint/ban-ts-comment': ['off'],
},
},
],
};

View File

@@ -22,7 +22,7 @@ jobs:
- run: echo "💡 The ${{ github.repository }} repository has been cloned to the runner." - run: echo "💡 The ${{ github.repository }} repository has been cloned to the runner."
- run: echo "🖥️ The workflow is now ready to test your code on the runner." - run: echo "🖥️ The workflow is now ready to test your code on the runner."
- run: yarn --frozen-lockfile - run: yarn --frozen-lockfile
- run: cd packages/backend && yarn lint - run: yarn lint
- run: echo "🍏 This job's status is ${{ job.status }}." - run: echo "🍏 This job's status is ${{ job.status }}."
start-backend-server: start-backend-server:
runs-on: ubuntu-latest runs-on: ubuntu-latest

View File

@@ -1,32 +0,0 @@
name: Automatisch Docs Change
on:
pull_request:
paths:
- 'packages/docs/**'
jobs:
label:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Label PR
uses: actions/github-script@v6
with:
script: |
const { pull_request } = context.payload;
const label = 'documentation-change';
const hasLabel = pull_request.labels.some(({ name }) => name === label);
if (!hasLabel) {
await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: pull_request.number,
labels: [label],
});
console.log(`Label "${label}" added to PR #${pull_request.number}`);
} else {
console.log(`Label "${label}" already exists on PR #${pull_request.number}`);
}

View File

@@ -62,9 +62,8 @@ jobs:
run: yarn && yarn lerna bootstrap run: yarn && yarn lerna bootstrap
- name: Install Playwright Browsers - name: Install Playwright Browsers
run: yarn playwright install --with-deps run: yarn playwright install --with-deps
- name: Build Automatisch web - name: Build Automatisch
working-directory: ./packages/web run: yarn lerna run --scope=@*/{web,cli} build
run: yarn build
env: env:
# Keep this until we clean up warnings in build processes # Keep this until we clean up warnings in build processes
CI: false CI: false

View File

@@ -1,25 +1,14 @@
# syntax=docker/dockerfile:1 # syntax=docker/dockerfile:1
FROM node:18-alpine FROM node:18-alpine
ENV PORT 3000
RUN \
apk --no-cache add --virtual build-dependencies python3 build-base git
WORKDIR /automatisch WORKDIR /automatisch
# copy the app, note .dockerignore
COPY . /automatisch
RUN yarn
RUN cd packages/web && yarn build
RUN \ RUN \
apk --no-cache add --virtual build-dependencies python3 build-base && \
yarn global add @automatisch/cli@0.10.0 --network-timeout 1000000 && \
rm -rf /usr/local/share/.cache/ && \ rm -rf /usr/local/share/.cache/ && \
apk del build-dependencies apk del build-dependencies
COPY ./docker/entrypoint.sh /entrypoint.sh COPY ./entrypoint.sh /entrypoint.sh
EXPOSE 3000 EXPOSE 3000
ENTRYPOINT ["sh", "/entrypoint.sh"] ENTRYPOINT ["sh", "/entrypoint.sh"]

View File

@@ -2,12 +2,8 @@
set -e set -e
cd packages/backend
if [ -n "$WORKER" ]; then if [ -n "$WORKER" ]; then
yarn start:worker automatisch start-worker
else else
yarn db:migrate automatisch start
yarn db:seed:user
yarn start
fi fi

View File

@@ -6,6 +6,7 @@
"start": "lerna run --stream --parallel --scope=@*/{web,backend} dev", "start": "lerna run --stream --parallel --scope=@*/{web,backend} dev",
"start:web": "lerna run --stream --scope=@*/web dev", "start:web": "lerna run --stream --scope=@*/web dev",
"start:backend": "lerna run --stream --scope=@*/backend dev", "start:backend": "lerna run --stream --scope=@*/backend dev",
"lint": "lerna run --no-bail --stream --parallel --scope=@*/{web,backend} lint",
"build:docs": "cd ./packages/docs && yarn install && yarn build" "build:docs": "cd ./packages/docs && yarn install && yarn build"
}, },
"workspaces": { "workspaces": {
@@ -20,6 +21,8 @@
] ]
}, },
"devDependencies": { "devDependencies": {
"@typescript-eslint/eslint-plugin": "^5.9.1",
"@typescript-eslint/parser": "^5.9.1",
"eslint": "^8.13.0", "eslint": "^8.13.0",
"eslint-config-prettier": "^8.3.0", "eslint-config-prettier": "^8.3.0",
"eslint-plugin-prettier": "^4.0.0", "eslint-plugin-prettier": "^4.0.0",

View File

@@ -11,7 +11,7 @@
"start:worker": "node src/worker.js", "start:worker": "node src/worker.js",
"pretest": "APP_ENV=test node ./test/setup/prepare-test-env.js", "pretest": "APP_ENV=test node ./test/setup/prepare-test-env.js",
"test": "APP_ENV=test vitest run", "test": "APP_ENV=test vitest run",
"lint": "eslint .", "lint": "eslint . --ignore-path ../../.eslintignore",
"db:create": "node ./bin/database/create.js", "db:create": "node ./bin/database/create.js",
"db:seed:user": "node ./bin/database/seed-user.js", "db:seed:user": "node ./bin/database/seed-user.js",
"db:drop": "node ./bin/database/drop.js", "db:drop": "node ./bin/database/drop.js",
@@ -31,20 +31,21 @@
"accounting": "^0.4.1", "accounting": "^0.4.1",
"ajv-formats": "^2.1.1", "ajv-formats": "^2.1.1",
"axios": "1.6.0", "axios": "1.6.0",
"bcrypt": "^5.1.0", "bcrypt": "^5.0.1",
"bullmq": "^3.0.0", "bullmq": "^3.0.0",
"copyfiles": "^2.4.1",
"cors": "^2.8.5", "cors": "^2.8.5",
"crypto-js": "^4.1.1", "crypto-js": "^4.1.1",
"debug": "~2.6.9", "debug": "~2.6.9",
"dotenv": "^10.0.0", "dotenv": "^10.0.0",
"express": "~4.18.2", "express": "~4.18.2",
"express-async-handler": "^1.2.0",
"express-basic-auth": "^1.2.1", "express-basic-auth": "^1.2.1",
"express-graphql": "^0.12.0", "express-graphql": "^0.12.0",
"fast-xml-parser": "^4.0.11", "fast-xml-parser": "^4.0.11",
"graphql-middleware": "^6.1.15", "graphql-middleware": "^6.1.15",
"graphql-shield": "^7.5.0", "graphql-shield": "^7.5.0",
"graphql-tools": "^8.2.0", "graphql-tools": "^8.2.0",
"graphql-type-json": "^0.3.2",
"handlebars": "^4.7.7", "handlebars": "^4.7.7",
"http-errors": "~1.6.3", "http-errors": "~1.6.3",
"http-proxy-agent": "^7.0.0", "http-proxy-agent": "^7.0.0",
@@ -67,6 +68,7 @@
"pluralize": "^8.0.0", "pluralize": "^8.0.0",
"raw-body": "^2.5.2", "raw-body": "^2.5.2",
"showdown": "^2.1.0", "showdown": "^2.1.0",
"stripe": "^11.13.0",
"winston": "^3.7.1", "winston": "^3.7.1",
"xmlrpc": "^1.3.2" "xmlrpc": "^1.3.2"
}, },
@@ -95,7 +97,6 @@
"url": "https://github.com/automatisch/automatisch/issues" "url": "https://github.com/automatisch/automatisch/issues"
}, },
"devDependencies": { "devDependencies": {
"node-gyp": "^10.1.0",
"nodemon": "^2.0.13", "nodemon": "^2.0.13",
"supertest": "^6.3.3", "supertest": "^6.3.3",
"vitest": "^1.1.3" "vitest": "^1.1.3"

View File

@@ -11,7 +11,7 @@ export default defineApp({
'https://azure.microsoft.com/en-us/products/ai-services/openai-service', 'https://azure.microsoft.com/en-us/products/ai-services/openai-service',
apiBaseUrl: '', apiBaseUrl: '',
iconUrl: '{BASE_URL}/apps/azure-openai/assets/favicon.svg', iconUrl: '{BASE_URL}/apps/azure-openai/assets/favicon.svg',
authDocUrl: '{DOCS_URL}/apps/azure-openai/connection', authDocUrl: 'https://automatisch.io/docs/apps/azure-openai/connection',
primaryColor: '000000', primaryColor: '000000',
supportsConnections: true, supportsConnections: true,
beforeRequest: [setBaseUrl, addAuthHeader], beforeRequest: [setBaseUrl, addAuthHeader],

View File

@@ -7,7 +7,7 @@ export default defineApp({
name: 'Carbone', name: 'Carbone',
key: 'carbone', key: 'carbone',
iconUrl: '{BASE_URL}/apps/carbone/assets/favicon.svg', iconUrl: '{BASE_URL}/apps/carbone/assets/favicon.svg',
authDocUrl: '{DOCS_URL}/apps/carbone/connection', authDocUrl: 'https://automatisch.io/docs/apps/carbone/connection',
supportsConnections: true, supportsConnections: true,
baseUrl: 'https://carbone.io', baseUrl: 'https://carbone.io',
apiBaseUrl: 'https://api.carbone.io', apiBaseUrl: 'https://api.carbone.io',

View File

@@ -1,27 +0,0 @@
import defineAction from '../../../../helpers/define-action.js';
export default defineAction({
name: 'Get value',
key: 'getValue',
description: 'Get value from the persistent datastore.',
arguments: [
{
label: 'Key',
key: 'key',
type: 'string',
required: true,
description: 'The key of your value to get.',
variables: true,
},
],
async run($) {
const keyValuePair = await $.datastore.get({
key: $.step.parameters.key,
});
$.setActionItem({
raw: keyValuePair,
});
},
});

View File

@@ -1,4 +0,0 @@
import getValue from './get-value/index.js';
import setValue from './set-value/index.js';
export default [getValue, setValue];

View File

@@ -1,36 +0,0 @@
import defineAction from '../../../../helpers/define-action.js';
export default defineAction({
name: 'Set value',
key: 'setValue',
description: 'Set value to the persistent datastore.',
arguments: [
{
label: 'Key',
key: 'key',
type: 'string',
required: true,
description: 'The key of your value to set.',
variables: true,
},
{
label: 'Value',
key: 'value',
type: 'string',
required: true,
description: 'The value to set.',
variables: true,
},
],
async run($) {
const keyValuePair = await $.datastore.set({
key: $.step.parameters.key,
value: $.step.parameters.value,
});
$.setActionItem({
raw: keyValuePair,
});
},
});

View File

@@ -1,13 +0,0 @@
<?xml version="1.0"?>
<svg xmlns="http://www.w3.org/2000/svg" fill="#000000" width="800px" height="800px" viewBox="0 0 32 32" id="icon">
<defs>
<style>.cls-1{fill:none;}</style>
</defs>
<title>datastore</title>
<circle cx="23" cy="23" r="1"/>
<rect x="8" y="22" width="12" height="2"/>
<circle cx="23" cy="9" r="1"/>
<rect x="8" y="8" width="12" height="2"/>
<path d="M26,14a2,2,0,0,0,2-2V6a2,2,0,0,0-2-2H6A2,2,0,0,0,4,6v6a2,2,0,0,0,2,2H8v4H6a2,2,0,0,0-2,2v6a2,2,0,0,0,2,2H26a2,2,0,0,0,2-2V20a2,2,0,0,0-2-2H24V14ZM6,6H26v6H6ZM26,26H6V20H26Zm-4-8H10V14H22Z"/>
<rect id="_Transparent_Rectangle_" data-name="&lt;Transparent Rectangle&gt;" class="cls-1" width="32" height="32"/>
</svg>

Before

Width:  |  Height:  |  Size: 704 B

View File

@@ -1,14 +0,0 @@
import defineApp from '../../helpers/define-app.js';
import actions from './actions/index.js';
export default defineApp({
name: 'Datastore',
key: 'datastore',
iconUrl: '{BASE_URL}/apps/datastore/assets/favicon.svg',
authDocUrl: '{DOCS_URL}/apps/datastore/connection',
supportsConnections: false,
baseUrl: '',
apiBaseUrl: '',
primaryColor: '001F52',
actions,
});

View File

@@ -7,7 +7,7 @@ export default defineApp({
name: 'DeepL', name: 'DeepL',
key: 'deepl', key: 'deepl',
iconUrl: '{BASE_URL}/apps/deepl/assets/favicon.svg', iconUrl: '{BASE_URL}/apps/deepl/assets/favicon.svg',
authDocUrl: '{DOCS_URL}/apps/deepl/connection', authDocUrl: 'https://automatisch.io/docs/apps/deepl/connection',
supportsConnections: true, supportsConnections: true,
baseUrl: 'https://deepl.com', baseUrl: 'https://deepl.com',
apiBaseUrl: 'https://api.deepl.com', apiBaseUrl: 'https://api.deepl.com',

View File

@@ -5,7 +5,7 @@ export default defineApp({
name: 'Delay', name: 'Delay',
key: 'delay', key: 'delay',
iconUrl: '{BASE_URL}/apps/delay/assets/favicon.svg', iconUrl: '{BASE_URL}/apps/delay/assets/favicon.svg',
authDocUrl: '{DOCS_URL}/apps/delay/connection', authDocUrl: 'https://automatisch.io/docs/apps/delay/connection',
supportsConnections: false, supportsConnections: false,
baseUrl: '', baseUrl: '',
apiBaseUrl: '', apiBaseUrl: '',

View File

@@ -10,7 +10,7 @@ export default defineApp({
name: 'Discord', name: 'Discord',
key: 'discord', key: 'discord',
iconUrl: '{BASE_URL}/apps/discord/assets/favicon.svg', iconUrl: '{BASE_URL}/apps/discord/assets/favicon.svg',
authDocUrl: '{DOCS_URL}/apps/discord/connection', authDocUrl: 'https://automatisch.io/docs/apps/discord/connection',
supportsConnections: true, supportsConnections: true,
baseUrl: 'https://discord.com', baseUrl: 'https://discord.com',
apiBaseUrl: 'https://discord.com/api', apiBaseUrl: 'https://discord.com/api',

View File

@@ -7,7 +7,7 @@ export default defineApp({
name: 'Dropbox', name: 'Dropbox',
key: 'dropbox', key: 'dropbox',
iconUrl: '{BASE_URL}/apps/dropbox/assets/favicon.svg', iconUrl: '{BASE_URL}/apps/dropbox/assets/favicon.svg',
authDocUrl: '{DOCS_URL}/apps/dropbox/connection', authDocUrl: 'https://automatisch.io/docs/apps/dropbox/connection',
supportsConnections: true, supportsConnections: true,
baseUrl: 'https://dropbox.com', baseUrl: 'https://dropbox.com',
apiBaseUrl: 'https://api.dropboxapi.com', apiBaseUrl: 'https://api.dropboxapi.com',

View File

@@ -5,7 +5,7 @@ export default defineApp({
name: 'Filter', name: 'Filter',
key: 'filter', key: 'filter',
iconUrl: '{BASE_URL}/apps/filter/assets/favicon.svg', iconUrl: '{BASE_URL}/apps/filter/assets/favicon.svg',
authDocUrl: '{DOCS_URL}/apps/filter/connection', authDocUrl: 'https://automatisch.io/docs/apps/filter/connection',
supportsConnections: false, supportsConnections: false,
baseUrl: '', baseUrl: '',
apiBaseUrl: '', apiBaseUrl: '',

View File

@@ -8,7 +8,7 @@ export default defineApp({
name: 'Flickr', name: 'Flickr',
key: 'flickr', key: 'flickr',
iconUrl: '{BASE_URL}/apps/flickr/assets/favicon.svg', iconUrl: '{BASE_URL}/apps/flickr/assets/favicon.svg',
authDocUrl: '{DOCS_URL}/apps/flickr/connection', authDocUrl: 'https://automatisch.io/docs/apps/flickr/connection',
docUrl: 'https://automatisch.io/docs/flickr', docUrl: 'https://automatisch.io/docs/flickr',
primaryColor: '000000', primaryColor: '000000',
supportsConnections: true, supportsConnections: true,

View File

@@ -7,7 +7,7 @@ export default defineApp({
name: 'Flowers Software', name: 'Flowers Software',
key: 'flowers-software', key: 'flowers-software',
iconUrl: '{BASE_URL}/apps/flowers-software/assets/favicon.svg', iconUrl: '{BASE_URL}/apps/flowers-software/assets/favicon.svg',
authDocUrl: '{DOCS_URL}/apps/flowers-software/connection', authDocUrl: 'https://automatisch.io/docs/apps/flowers-software/connection',
supportsConnections: true, supportsConnections: true,
baseUrl: 'https://flowers-software.com', baseUrl: 'https://flowers-software.com',
apiBaseUrl: 'https://webapp.flowers-software.com/api', apiBaseUrl: 'https://webapp.flowers-software.com/api',

View File

@@ -1,6 +1,5 @@
import defineAction from '../../../../helpers/define-action.js'; import defineAction from '../../../../helpers/define-action.js';
import base64ToString from './transformers/base64-to-string.js';
import capitalize from './transformers/capitalize.js'; import capitalize from './transformers/capitalize.js';
import extractEmailAddress from './transformers/extract-email-address.js'; import extractEmailAddress from './transformers/extract-email-address.js';
import extractNumber from './transformers/extract-number.js'; import extractNumber from './transformers/extract-number.js';
@@ -9,12 +8,10 @@ import lowercase from './transformers/lowercase.js';
import markdownToHtml from './transformers/markdown-to-html.js'; import markdownToHtml from './transformers/markdown-to-html.js';
import pluralize from './transformers/pluralize.js'; import pluralize from './transformers/pluralize.js';
import replace from './transformers/replace.js'; import replace from './transformers/replace.js';
import stringToBase64 from './transformers/string-to-base64.js';
import trimWhitespace from './transformers/trim-whitespace.js'; import trimWhitespace from './transformers/trim-whitespace.js';
import useDefaultValue from './transformers/use-default-value.js'; import useDefaultValue from './transformers/use-default-value.js';
const transformers = { const transformers = {
base64ToString,
capitalize, capitalize,
extractEmailAddress, extractEmailAddress,
extractNumber, extractNumber,
@@ -23,7 +20,6 @@ const transformers = {
markdownToHtml, markdownToHtml,
pluralize, pluralize,
replace, replace,
stringToBase64,
trimWhitespace, trimWhitespace,
useDefaultValue, useDefaultValue,
}; };
@@ -41,7 +37,6 @@ export default defineAction({
required: true, required: true,
variables: true, variables: true,
options: [ options: [
{ label: 'Base64 to String', value: 'base64ToString' },
{ label: 'Capitalize', value: 'capitalize' }, { label: 'Capitalize', value: 'capitalize' },
{ label: 'Convert HTML to Markdown', value: 'htmlToMarkdown' }, { label: 'Convert HTML to Markdown', value: 'htmlToMarkdown' },
{ label: 'Convert Markdown to HTML', value: 'markdownToHtml' }, { label: 'Convert Markdown to HTML', value: 'markdownToHtml' },
@@ -50,7 +45,6 @@ export default defineAction({
{ label: 'Lowercase', value: 'lowercase' }, { label: 'Lowercase', value: 'lowercase' },
{ label: 'Pluralize', value: 'pluralize' }, { label: 'Pluralize', value: 'pluralize' },
{ label: 'Replace', value: 'replace' }, { label: 'Replace', value: 'replace' },
{ label: 'String to Base64', value: 'stringToBase64' },
{ label: 'Trim Whitespace', value: 'trimWhitespace' }, { label: 'Trim Whitespace', value: 'trimWhitespace' },
{ label: 'Use Default Value', value: 'useDefaultValue' }, { label: 'Use Default Value', value: 'useDefaultValue' },
], ],

View File

@@ -1,8 +0,0 @@
const base64ToString = ($) => {
const input = $.step.parameters.input;
const decodedString = Buffer.from(input, 'base64').toString('utf8');
return decodedString;
};
export default base64ToString;

View File

@@ -1,8 +0,0 @@
const stringtoBase64 = ($) => {
const input = $.step.parameters.input;
const base64String = Buffer.from(input).toString('base64');
return base64String;
};
export default stringtoBase64;

View File

@@ -1,4 +1,3 @@
import base64ToString from './text/base64-to-string.js';
import capitalize from './text/capitalize.js'; import capitalize from './text/capitalize.js';
import extractEmailAddress from './text/extract-email-address.js'; import extractEmailAddress from './text/extract-email-address.js';
import extractNumber from './text/extract-number.js'; import extractNumber from './text/extract-number.js';
@@ -7,7 +6,6 @@ import lowercase from './text/lowercase.js';
import markdownToHtml from './text/markdown-to-html.js'; import markdownToHtml from './text/markdown-to-html.js';
import pluralize from './text/pluralize.js'; import pluralize from './text/pluralize.js';
import replace from './text/replace.js'; import replace from './text/replace.js';
import stringToBase64 from './text/string-to-base64.js';
import trimWhitespace from './text/trim-whitespace.js'; import trimWhitespace from './text/trim-whitespace.js';
import useDefaultValue from './text/use-default-value.js'; import useDefaultValue from './text/use-default-value.js';
import performMathOperation from './numbers/perform-math-operation.js'; import performMathOperation from './numbers/perform-math-operation.js';
@@ -17,7 +15,6 @@ import formatPhoneNumber from './numbers/format-phone-number.js';
import formatDateTime from './date-time/format-date-time.js'; import formatDateTime from './date-time/format-date-time.js';
const options = { const options = {
base64ToString,
capitalize, capitalize,
extractEmailAddress, extractEmailAddress,
extractNumber, extractNumber,
@@ -26,7 +23,6 @@ const options = {
markdownToHtml, markdownToHtml,
pluralize, pluralize,
replace, replace,
stringToBase64,
trimWhitespace, trimWhitespace,
useDefaultValue, useDefaultValue,
performMathOperation, performMathOperation,

View File

@@ -1,12 +0,0 @@
const base64ToString = [
{
label: 'Input',
key: 'input',
type: 'string',
required: true,
description: 'Text that will be converted from Base64 to string.',
variables: true,
},
];
export default base64ToString;

View File

@@ -1,12 +0,0 @@
const stringToBase64 = [
{
label: 'Input',
key: 'input',
type: 'string',
required: true,
description: 'Text that will be converted to Base64.',
variables: true,
},
];
export default stringToBase64;

View File

@@ -6,7 +6,7 @@ export default defineApp({
name: 'Formatter', name: 'Formatter',
key: 'formatter', key: 'formatter',
iconUrl: '{BASE_URL}/apps/formatter/assets/favicon.svg', iconUrl: '{BASE_URL}/apps/formatter/assets/favicon.svg',
authDocUrl: '{DOCS_URL}/apps/formatter/connection', authDocUrl: 'https://automatisch.io/docs/apps/formatter/connection',
supportsConnections: false, supportsConnections: false,
baseUrl: '', baseUrl: '',
apiBaseUrl: '', apiBaseUrl: '',

View File

@@ -10,7 +10,7 @@ export default defineApp({
baseUrl: 'https://ghost.org', baseUrl: 'https://ghost.org',
apiBaseUrl: '', apiBaseUrl: '',
iconUrl: '{BASE_URL}/apps/ghost/assets/favicon.svg', iconUrl: '{BASE_URL}/apps/ghost/assets/favicon.svg',
authDocUrl: '{DOCS_URL}/apps/ghost/connection', authDocUrl: 'https://automatisch.io/docs/apps/ghost/connection',
primaryColor: '15171A', primaryColor: '15171A',
supportsConnections: true, supportsConnections: true,
beforeRequest: [setBaseUrl, addAuthHeader], beforeRequest: [setBaseUrl, addAuthHeader],

View File

@@ -11,7 +11,7 @@ export default defineApp({
baseUrl: 'https://github.com', baseUrl: 'https://github.com',
apiBaseUrl: 'https://api.github.com', apiBaseUrl: 'https://api.github.com',
iconUrl: '{BASE_URL}/apps/github/assets/favicon.svg', iconUrl: '{BASE_URL}/apps/github/assets/favicon.svg',
authDocUrl: '{DOCS_URL}/apps/github/connection', authDocUrl: 'https://automatisch.io/docs/apps/github/connection',
primaryColor: '000000', primaryColor: '000000',
supportsConnections: true, supportsConnections: true,
beforeRequest: [addAuthHeader], beforeRequest: [addAuthHeader],

View File

@@ -11,7 +11,7 @@ export default defineApp({
baseUrl: 'https://gitlab.com', baseUrl: 'https://gitlab.com',
apiBaseUrl: 'https://gitlab.com', apiBaseUrl: 'https://gitlab.com',
iconUrl: '{BASE_URL}/apps/gitlab/assets/favicon.svg', iconUrl: '{BASE_URL}/apps/gitlab/assets/favicon.svg',
authDocUrl: '{DOCS_URL}/apps/gitlab/connection', authDocUrl: 'https://automatisch.io/docs/apps/gitlab/connection',
primaryColor: 'FC6D26', primaryColor: 'FC6D26',
supportsConnections: true, supportsConnections: true,
beforeRequest: [setBaseUrl, addAuthHeader], beforeRequest: [setBaseUrl, addAuthHeader],

View File

@@ -10,7 +10,7 @@ export default defineApp({
baseUrl: 'https://calendar.google.com', baseUrl: 'https://calendar.google.com',
apiBaseUrl: 'https://www.googleapis.com/calendar', apiBaseUrl: 'https://www.googleapis.com/calendar',
iconUrl: '{BASE_URL}/apps/google-calendar/assets/favicon.svg', iconUrl: '{BASE_URL}/apps/google-calendar/assets/favicon.svg',
authDocUrl: '{DOCS_URL}/apps/google-calendar/connection', authDocUrl: 'https://automatisch.io/docs/apps/google-calendar/connection',
primaryColor: '448AFF', primaryColor: '448AFF',
supportsConnections: true, supportsConnections: true,
beforeRequest: [addAuthHeader], beforeRequest: [addAuthHeader],

View File

@@ -10,7 +10,7 @@ export default defineApp({
baseUrl: 'https://drive.google.com', baseUrl: 'https://drive.google.com',
apiBaseUrl: 'https://www.googleapis.com/drive', apiBaseUrl: 'https://www.googleapis.com/drive',
iconUrl: '{BASE_URL}/apps/google-drive/assets/favicon.svg', iconUrl: '{BASE_URL}/apps/google-drive/assets/favicon.svg',
authDocUrl: '{DOCS_URL}/apps/google-drive/connection', authDocUrl: 'https://automatisch.io/docs/apps/google-drive/connection',
primaryColor: '1FA463', primaryColor: '1FA463',
supportsConnections: true, supportsConnections: true,
beforeRequest: [addAuthHeader], beforeRequest: [addAuthHeader],

View File

@@ -10,7 +10,7 @@ export default defineApp({
baseUrl: 'https://docs.google.com/forms', baseUrl: 'https://docs.google.com/forms',
apiBaseUrl: 'https://forms.googleapis.com', apiBaseUrl: 'https://forms.googleapis.com',
iconUrl: '{BASE_URL}/apps/google-forms/assets/favicon.svg', iconUrl: '{BASE_URL}/apps/google-forms/assets/favicon.svg',
authDocUrl: '{DOCS_URL}/apps/google-forms/connection', authDocUrl: 'https://automatisch.io/docs/apps/google-forms/connection',
primaryColor: '673AB7', primaryColor: '673AB7',
supportsConnections: true, supportsConnections: true,
beforeRequest: [addAuthHeader], beforeRequest: [addAuthHeader],

View File

@@ -12,7 +12,7 @@ export default defineApp({
baseUrl: 'https://docs.google.com/spreadsheets', baseUrl: 'https://docs.google.com/spreadsheets',
apiBaseUrl: 'https://sheets.googleapis.com', apiBaseUrl: 'https://sheets.googleapis.com',
iconUrl: '{BASE_URL}/apps/google-sheets/assets/favicon.svg', iconUrl: '{BASE_URL}/apps/google-sheets/assets/favicon.svg',
authDocUrl: '{DOCS_URL}/apps/google-sheets/connection', authDocUrl: 'https://automatisch.io/docs/apps/google-sheets/connection',
primaryColor: '0F9D58', primaryColor: '0F9D58',
supportsConnections: true, supportsConnections: true,
beforeRequest: [addAuthHeader], beforeRequest: [addAuthHeader],

View File

@@ -1,3 +1,4 @@
import FormData from 'form-data';
import defineAction from '../../../../helpers/define-action.js'; import defineAction from '../../../../helpers/define-action.js';
export default defineAction({ export default defineAction({
@@ -5,51 +6,45 @@ export default defineAction({
key: 'newChat', key: 'newChat',
description: 'Create a new chat session for Helix AI.', description: 'Create a new chat session for Helix AI.',
arguments: [ arguments: [
{
label: 'Session ID',
key: 'sessionId',
type: 'string',
required: false,
description:
'ID of the chat session to continue. Leave empty to start a new chat.',
variables: true,
},
{
label: 'System Prompt',
key: 'systemPrompt',
type: 'string',
required: false,
description:
'Optional system prompt to start the chat with. It will be used only for new chat sessions.',
variables: true,
},
{ {
label: 'Input', label: 'Input',
key: 'input', key: 'input',
type: 'string', type: 'string',
required: true, required: true,
description: 'User input to start the chat with.', description: 'Prompt to start the chat with.',
variables: true, variables: true,
}, },
], ],
async run($) { async run($) {
const response = await $.http.post('/api/v1/sessions/chat', { const formData = new FormData();
session_id: $.step.parameters.sessionId, formData.append('input', $.step.parameters.input);
system: $.step.parameters.systemPrompt, formData.append('mode', 'inference');
messages: [ formData.append('type', 'text');
{
role: 'user', const sessionResponse = await $.http.post('/api/v1/sessions', formData, {
content: { headers: {
content_type: 'text', ...formData.getHeaders(),
parts: [$.step.parameters.input],
}, },
},
],
}); });
const sessionId = sessionResponse.data.id;
let chatGenerated = false;
while (!chatGenerated) {
const response = await $.http.get(`/api/v1/sessions/${sessionId}`);
const message =
response.data.interactions[response.data.interactions.length - 1];
if (message.creator === 'system' && message.state === 'complete') {
$.setActionItem({ $.setActionItem({
raw: response.data, raw: message,
}); });
chatGenerated = true;
}
}
}, },
}); });

View File

@@ -10,7 +10,7 @@ export default defineApp({
baseUrl: 'https://tryhelix.ai', baseUrl: 'https://tryhelix.ai',
apiBaseUrl: 'https://app.tryhelix.ai', apiBaseUrl: 'https://app.tryhelix.ai',
iconUrl: '{BASE_URL}/apps/helix/assets/favicon.svg', iconUrl: '{BASE_URL}/apps/helix/assets/favicon.svg',
authDocUrl: '{DOCS_URL}/apps/helix/connection', authDocUrl: 'https://automatisch.io/docs/apps/helix/connection',
primaryColor: '000000', primaryColor: '000000',
supportsConnections: true, supportsConnections: true,
beforeRequest: [setBaseUrl, addAuthHeader], beforeRequest: [setBaseUrl, addAuthHeader],

View File

@@ -90,7 +90,7 @@ export default defineAction({
async run($) { async run($) {
const method = $.step.parameters.method; const method = $.step.parameters.method;
const data = $.step.parameters.data || null; const data = $.step.parameters.data;
const url = $.step.parameters.url; const url = $.step.parameters.url;
const headers = $.step.parameters.headers; const headers = $.step.parameters.headers;
@@ -108,17 +108,14 @@ export default defineAction({
return result; return result;
}, {}); }, {});
let expectedResponseContentType = headersObject.accept; let contentType = headersObject['content-type'];
// in case HEAD request is not supported by the URL // in case HEAD request is not supported by the URL
try { try {
const metadataResponse = await $.http.head(url, { const metadataResponse = await $.http.head(url, {
headers: headersObject, headers: headersObject,
}); });
contentType = metadataResponse.headers['content-type'];
if (!expectedResponseContentType) {
expectedResponseContentType = metadataResponse.headers['content-type'];
}
throwIfFileSizeExceedsLimit(metadataResponse.headers['content-length']); throwIfFileSizeExceedsLimit(metadataResponse.headers['content-length']);
// eslint-disable-next-line no-empty // eslint-disable-next-line no-empty
@@ -131,7 +128,7 @@ export default defineAction({
headers: headersObject, headers: headersObject,
}; };
if (!isPossiblyTextBased(expectedResponseContentType)) { if (!isPossiblyTextBased(contentType)) {
requestData.responseType = 'arraybuffer'; requestData.responseType = 'arraybuffer';
} }
@@ -141,7 +138,7 @@ export default defineAction({
let responseData = response.data; let responseData = response.data;
if (!isPossiblyTextBased(expectedResponseContentType)) { if (!isPossiblyTextBased(contentType)) {
responseData = Buffer.from(responseData).toString('base64'); responseData = Buffer.from(responseData).toString('base64');
} }

View File

@@ -5,7 +5,7 @@ export default defineApp({
name: 'HTTP Request', name: 'HTTP Request',
key: 'http-request', key: 'http-request',
iconUrl: '{BASE_URL}/apps/http-request/assets/favicon.svg', iconUrl: '{BASE_URL}/apps/http-request/assets/favicon.svg',
authDocUrl: '{DOCS_URL}/apps/http-request/connection', authDocUrl: 'https://automatisch.io/docs/apps/http-request/connection',
supportsConnections: false, supportsConnections: false,
baseUrl: '', baseUrl: '',
apiBaseUrl: '', apiBaseUrl: '',

View File

@@ -7,7 +7,7 @@ export default defineApp({
name: 'HubSpot', name: 'HubSpot',
key: 'hubspot', key: 'hubspot',
iconUrl: '{BASE_URL}/apps/hubspot/assets/favicon.svg', iconUrl: '{BASE_URL}/apps/hubspot/assets/favicon.svg',
authDocUrl: '{DOCS_URL}/apps/hubspot/connection', authDocUrl: 'https://automatisch.io/docs/apps/hubspot/connection',
supportsConnections: true, supportsConnections: true,
baseUrl: 'https://www.hubspot.com', baseUrl: 'https://www.hubspot.com',
apiBaseUrl: 'https://api.hubapi.com', apiBaseUrl: 'https://api.hubapi.com',

View File

@@ -12,7 +12,7 @@ export default defineApp({
baseUrl: 'https://invoiceninja.com', baseUrl: 'https://invoiceninja.com',
apiBaseUrl: 'https://invoicing.co/api', apiBaseUrl: 'https://invoicing.co/api',
iconUrl: '{BASE_URL}/apps/invoice-ninja/assets/favicon.svg', iconUrl: '{BASE_URL}/apps/invoice-ninja/assets/favicon.svg',
authDocUrl: '{DOCS_URL}/apps/invoice-ninja/connection', authDocUrl: 'https://automatisch.io/docs/apps/invoice-ninja/connection',
primaryColor: '000000', primaryColor: '000000',
supportsConnections: true, supportsConnections: true,
beforeRequest: [setBaseUrl, addAuthHeader], beforeRequest: [setBaseUrl, addAuthHeader],

View File

@@ -10,7 +10,7 @@ export default defineApp({
name: 'Mattermost', name: 'Mattermost',
key: 'mattermost', key: 'mattermost',
iconUrl: '{BASE_URL}/apps/mattermost/assets/favicon.svg', iconUrl: '{BASE_URL}/apps/mattermost/assets/favicon.svg',
authDocUrl: '{DOCS_URL}/apps/mattermost/connection', authDocUrl: 'https://automatisch.io/docs/apps/mattermost/connection',
baseUrl: 'https://mattermost.com', baseUrl: 'https://mattermost.com',
apiBaseUrl: '', // there is no cloud version of this app, user always need to provide address of own instance when creating connection apiBaseUrl: '', // there is no cloud version of this app, user always need to provide address of own instance when creating connection
primaryColor: '4a154b', primaryColor: '4a154b',

View File

@@ -10,7 +10,7 @@ export default defineApp({
baseUrl: 'https://miro.com', baseUrl: 'https://miro.com',
apiBaseUrl: 'https://api.miro.com', apiBaseUrl: 'https://api.miro.com',
iconUrl: '{BASE_URL}/apps/miro/assets/favicon.svg', iconUrl: '{BASE_URL}/apps/miro/assets/favicon.svg',
authDocUrl: '{DOCS_URL}/apps/miro/connection', authDocUrl: 'https://automatisch.io/docs/apps/miro/connection',
primaryColor: 'F2CA02', primaryColor: 'F2CA02',
supportsConnections: true, supportsConnections: true,
beforeRequest: [addAuthHeader], beforeRequest: [addAuthHeader],

View File

@@ -1,70 +0,0 @@
import defineAction from '../../../../helpers/define-action.js';
export default defineAction({
name: 'Create board',
key: 'createBoard',
description: 'Creates a new board.',
arguments: [
{
label: 'Board Name',
key: 'boardName',
type: 'string',
required: true,
description: 'Title for the board.',
variables: true,
},
{
label: 'Board Kind',
key: 'boardKind',
type: 'dropdown',
required: true,
description: '',
variables: true,
options: [
{
label: 'Main',
value: 'public',
},
{
label: 'Private',
value: 'private',
},
{
label: 'Shareable',
value: 'share',
},
],
},
{
label: 'Template ID',
key: 'templateId',
type: 'string',
required: false,
description:
"When you switch on developer mode, you'll spot the template IDs in your template store. Additionally, you have the option to utilize the Board ID from any board you've saved as a template.",
variables: true,
},
],
async run($) {
const { boardName, boardKind, templateId } = $.step.parameters;
const body = {
query: `mutation {
create_board (board_name: "${boardName}", board_kind: ${boardKind}${
templateId ? `, template_id: ${templateId}` : ''
}) {
id
name
board_kind
}
}`,
};
const { data } = await $.http.post('/', body);
$.setActionItem({
raw: data,
});
},
});

View File

@@ -1,98 +0,0 @@
import defineAction from '../../../../helpers/define-action.js';
export default defineAction({
name: 'Create column',
key: 'createColumn',
description: 'Creates a new column in a board.',
arguments: [
{
label: 'Board',
key: 'boardId',
type: 'dropdown',
required: true,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listBoards',
},
],
},
},
{
label: 'Column Title',
key: 'columnTitle',
type: 'string',
required: true,
description: '',
variables: true,
},
{
label: 'Column Type',
key: 'columnType',
type: 'dropdown',
required: true,
description: '',
variables: true,
options: [
{ label: 'Button', value: 'button' },
{ label: 'Checkbox', value: 'checkbox' },
{ label: 'Color Picker', value: 'color_picker' },
{ label: 'Connect Boards', value: 'board_relation' },
{ label: 'Country', value: 'country' },
{ label: 'Creation Log', value: 'creation_log' },
{ label: 'Date', value: 'date' },
{ label: 'Dependency', value: 'dependency' },
{ label: 'Dropdown', value: 'dropdown' },
{ label: 'Email', value: 'email' },
{ label: 'Files', value: 'file' },
{ label: 'Formula', value: 'formula' },
{ label: 'Hour', value: 'hour' },
{ label: 'Item ID', value: 'item_id' },
{ label: 'Last Updated', value: 'last_updated' },
{ label: 'Link', value: 'link' },
{ label: 'Location', value: 'location' },
{ label: 'Long Text', value: 'long_text' },
{ label: 'Mirror', value: 'mirror' },
{ label: 'monday Doc', value: 'doc' },
{ label: 'Name', value: 'name' },
{ label: 'Numbers', value: 'numbers' },
{ label: 'People', value: 'people' },
{ label: 'Phone', value: 'phone' },
{ label: 'Rating', value: 'rating' },
{ label: 'Status', value: 'status' },
{ label: 'Tags', value: 'tags' },
{ label: 'Text', value: 'text' },
{ label: 'Timeline', value: 'timeline' },
{ label: 'Time Tracking', value: 'time_tracking' },
{ label: 'Vote', value: 'vote' },
{ label: 'Week', value: 'week' },
{ label: 'World Clock', value: 'world_clock' },
],
},
],
async run($) {
const { boardId, columnTitle, columnType } = $.step.parameters;
const body = {
query: `
mutation{
create_column (board_id: ${boardId}, title: "${columnTitle}", column_type: ${columnType}) {
id
title
}
}`,
};
const { data } = await $.http.post('/', body);
$.setActionItem({
raw: data,
});
},
});

View File

@@ -1,112 +0,0 @@
import defineAction from '../../../../helpers/define-action.js';
export default defineAction({
name: 'Create item',
key: 'createItem',
description: 'Creates a new item in a board.',
arguments: [
{
label: 'Board',
key: 'boardId',
type: 'dropdown',
required: true,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listBoards',
},
],
},
},
{
label: 'Group',
key: 'groupId',
type: 'dropdown',
required: false,
description: '',
dependsOn: ['parameters.boardId'],
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listGroups',
},
{
name: 'parameters.boardId',
value: '{parameters.boardId}',
},
],
},
},
{
label: 'Item Name',
key: 'itemName',
type: 'string',
required: true,
description: '',
variables: true,
},
{
label: 'Subitem Names',
key: 'subitemNames',
type: 'dynamic',
required: false,
description: '',
fields: [
{
label: 'Subitem Name',
key: 'subitemName',
type: 'string',
required: false,
description: '',
variables: true,
},
],
},
],
async run($) {
const { boardId, groupId, itemName, subitemNames } = $.step.parameters;
const allSubitems = subitemNames.map((entry) => entry.subitemName);
const body = {
query: `
mutation {
create_item (board_id: ${boardId}${
groupId ? `, group_id: "${groupId}"` : ''
}, item_name: "${itemName}") {
id
}
}`,
};
const { data } = await $.http.post('/', body);
const itemId = data.data.create_item.id;
for (let subitemName of allSubitems) {
let body = {
query: `
mutation {
create_subitem (parent_item_id:${itemId}, item_name:"${subitemName}") {
id
}
}`,
};
await $.http.post('/', body);
}
$.setActionItem({
raw: data,
});
},
});

View File

@@ -1,5 +0,0 @@
import createBoard from './create-board/index.js';
import createColumn from './create-column/index.js';
import createItem from './create-item/index.js';
export default [createBoard, createColumn, createItem];

View File

@@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="256px" height="156px" viewBox="0 0 256 156" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="xMidYMid">
<g>
<path d="M31.8458633,153.488694 C20.3244423,153.513586 9.68073708,147.337265 3.98575204,137.321731 C-1.62714067,127.367831 -1.29055839,115.129325 4.86093879,105.498969 L62.2342919,15.4033556 C68.2125882,5.54538256 79.032489,-0.333585033 90.5563073,0.0146553508 C102.071737,0.290611552 112.546041,6.74705604 117.96667,16.9106216 C123.315033,27.0238906 122.646488,39.1914174 116.240607,48.6847625 L58.9037201,138.780375 C52.9943022,147.988884 42.7873202,153.537154 31.8458633,153.488694 L31.8458633,153.488694 Z" fill="#F62B54"></path>
<path d="M130.25575,153.488484 C118.683837,153.488484 108.035731,147.301291 102.444261,137.358197 C96.8438154,127.431292 97.1804475,115.223704 103.319447,105.620522 L160.583402,15.7315506 C166.47539,5.73210989 177.327374,-0.284878136 188.929728,0.0146553508 C200.598885,0.269918151 211.174058,6.7973526 216.522421,17.0078646 C221.834319,27.2183766 221.056375,39.4588356 214.456008,48.9278699 L157.204209,138.816842 C151.313487,147.985468 141.153618,153.5168 130.25575,153.488484 Z" fill="#FFCC00"></path>
<ellipse fill="#00CA72" cx="226.465527" cy="125.324379" rx="29.5375538" ry="28.9176274"></ellipse>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.4 KiB

View File

@@ -1,21 +0,0 @@
import verifyCredentials from './verify-credentials.js';
import isStillVerified from './is-still-verified.js';
export default {
fields: [
{
key: 'apiToken',
label: 'API Token',
type: 'string',
required: true,
readOnly: false,
value: null,
placeholder: null,
description: 'Monday.com API token of your account.',
clickToCopy: false,
},
],
verifyCredentials,
isStillVerified,
};

View File

@@ -1,18 +0,0 @@
const verifyCredentials = async ($) => {
const body = {
query: 'query { me { name, email } }',
};
const { data } = await $.http.post('/', body);
const screenName = [data.data.me.name, data.data.me.email]
.filter(Boolean)
.join(' @ ');
await $.auth.set({
screenName,
apiToken: $.auth.data.apiToken,
});
};
export default verifyCredentials;

View File

@@ -1,9 +0,0 @@
const addAuthHeader = ($, requestConfig) => {
if ($.auth.data?.apiToken) {
requestConfig.headers.Authorization = $.auth.data.apiToken;
}
return requestConfig;
};
export default addAuthHeader;

View File

@@ -1,4 +0,0 @@
import listBoards from './list-boards/index.js';
import listGroups from './list-groups/index.js';
export default [listBoards, listGroups];

View File

@@ -1,34 +0,0 @@
export default {
name: 'List boards',
key: 'listBoards',
async run($) {
const boards = {
data: [],
};
const body = {
query: `
query {
boards {
id
name
}
}
`,
};
const { data } = await $.http.post('/', body);
if (data.data.boards?.length) {
for (const board of data.data.boards) {
boards.data.push({
value: board.id,
name: board.name,
});
}
}
return boards;
},
};

View File

@@ -1,40 +0,0 @@
export default {
name: 'List groups',
key: 'listGroups',
async run($) {
const groups = {
data: [],
};
const boardId = $.step.parameters.parameters.boardId;
if (!boardId) {
return groups;
}
const body = {
query: `query {
boards (ids: ${boardId}) {
groups {
title
id
}
}
}
`,
};
const { data } = await $.http.post('/', body);
if (data.data.boards[0].groups.length) {
for (const group of data.data.boards[0].groups) {
groups.data.push({
value: group.id,
name: group.title,
});
}
}
return groups;
},
};

View File

@@ -1,4 +0,0 @@
import newBoards from './new-boards/index.js';
import newUsers from './new-users/index.js';
export default [newBoards, newUsers];

View File

@@ -1,29 +0,0 @@
import defineTrigger from '../../../../helpers/define-trigger.js';
export default defineTrigger({
name: 'New board',
key: 'newBoard',
pollInterval: 15,
description: 'Triggers when a new board is created.',
async run($) {
const body = {
query: 'query { boards { id, name } }',
};
const { data } = await $.http.post('/', body);
if (!data?.data?.boards?.length) {
return;
}
for (const board of data.data.boards) {
$.pushTriggerItem({
raw: board,
meta: {
internalId: board.id,
},
});
}
},
});

View File

@@ -1,29 +0,0 @@
import defineTrigger from '../../../../helpers/define-trigger.js';
export default defineTrigger({
name: 'New users',
key: 'newUsers',
pollInterval: 15,
description: 'Triggers when a new user joins your account.',
async run($) {
const body = {
query: 'query { users { id name } }',
};
const { data } = await $.http.post('/', body);
if (!data.data?.users?.length) {
return;
}
for (const user of data.data.users.reverse()) {
$.pushTriggerItem({
raw: user,
meta: {
internalId: user.id,
},
});
}
},
});

View File

@@ -12,7 +12,7 @@ export default defineApp({
baseUrl: 'https://notion.com', baseUrl: 'https://notion.com',
apiBaseUrl: 'https://api.notion.com', apiBaseUrl: 'https://api.notion.com',
iconUrl: '{BASE_URL}/apps/notion/assets/favicon.svg', iconUrl: '{BASE_URL}/apps/notion/assets/favicon.svg',
authDocUrl: '{DOCS_URL}/apps/notion/connection', authDocUrl: 'https://automatisch.io/docs/apps/notion/connection',
primaryColor: '000000', primaryColor: '000000',
supportsConnections: true, supportsConnections: true,
beforeRequest: [addAuthHeader, addNotionVersionHeader], beforeRequest: [addAuthHeader, addNotionVersionHeader],

View File

@@ -7,7 +7,7 @@ export default defineApp({
name: 'Ntfy', name: 'Ntfy',
key: 'ntfy', key: 'ntfy',
iconUrl: '{BASE_URL}/apps/ntfy/assets/favicon.svg', iconUrl: '{BASE_URL}/apps/ntfy/assets/favicon.svg',
authDocUrl: '{DOCS_URL}/apps/ntfy/connection', authDocUrl: 'https://automatisch.io/docs/apps/ntfy/connection',
supportsConnections: true, supportsConnections: true,
baseUrl: 'https://ntfy.sh', baseUrl: 'https://ntfy.sh',
apiBaseUrl: 'https://ntfy.sh', apiBaseUrl: 'https://ntfy.sh',

View File

@@ -6,7 +6,7 @@ export default defineApp({
name: 'Odoo', name: 'Odoo',
key: 'odoo', key: 'odoo',
iconUrl: '{BASE_URL}/apps/odoo/assets/favicon.svg', iconUrl: '{BASE_URL}/apps/odoo/assets/favicon.svg',
authDocUrl: '{DOCS_URL}/apps/odoo/connection', authDocUrl: 'https://automatisch.io/docs/apps/odoo/connection',
supportsConnections: true, supportsConnections: true,
baseUrl: 'https://odoo.com', baseUrl: 'https://odoo.com',
apiBaseUrl: '', apiBaseUrl: '',

View File

@@ -10,7 +10,7 @@ export default defineApp({
baseUrl: 'https://openai.com', baseUrl: 'https://openai.com',
apiBaseUrl: 'https://api.openai.com', apiBaseUrl: 'https://api.openai.com',
iconUrl: '{BASE_URL}/apps/openai/assets/favicon.svg', iconUrl: '{BASE_URL}/apps/openai/assets/favicon.svg',
authDocUrl: '{DOCS_URL}/apps/openai/connection', authDocUrl: 'https://automatisch.io/docs/apps/openai/connection',
primaryColor: '000000', primaryColor: '000000',
supportsConnections: true, supportsConnections: true,
beforeRequest: [addAuthHeader], beforeRequest: [addAuthHeader],

View File

@@ -64,18 +64,33 @@ export default defineAction({
value: '1', value: '1',
description: description:
'The ID of the stage this deal will be added to. If omitted, the deal will be placed in the first stage of the default pipeline.', 'The ID of the stage this deal will be added to. If omitted, the deal will be placed in the first stage of the default pipeline.',
variables: true, options: [
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{ {
name: 'key', label: 'Qualified (Pipeline)',
value: 'listStages', value: 1,
},
{
label: 'Contact Made (Pipeline)',
value: 2,
},
{
label: 'Prospect Qualified (Pipeline)',
value: 3,
},
{
label: 'Needs Defined (Pipeline)',
value: 4,
},
{
label: 'Proposal Made (Pipeline)',
value: 5,
},
{
label: 'Negotiations Started (Pipeline)',
value: 6,
}, },
], ],
}, },
},
{ {
label: 'Owner', label: 'Owner',
key: 'userId', key: 'userId',

View File

@@ -1,25 +1,23 @@
import listActivityTypes from './list-activity-types/index.js'; import listActivityTypes from './list-activity-types/index.js';
import listCurrencies from './list-currencies/index.js'; import listCurrencies from './list-currencies/index.js';
import listDeals from './list-deals/index.js'; import listDeals from './list-deals/index.js';
import listLeadLabels from './list-lead-labels/index.js';
import listLeads from './list-leads/index.js'; import listLeads from './list-leads/index.js';
import listOrganizationLabelField from './list-organization-label-field/index.js'; import listLeadLabels from './list-lead-labels/index.js';
import listOrganizations from './list-organizations/index.js'; import listOrganizations from './list-organizations/index.js';
import listOrganizationLabelField from './list-organization-label-field/index.js';
import listPersonLabelField from './list-person-label-field/index.js'; import listPersonLabelField from './list-person-label-field/index.js';
import listPersons from './list-persons/index.js'; import listPersons from './list-persons/index.js';
import listStages from './list-stages/index.js';
import listUsers from './list-users/index.js'; import listUsers from './list-users/index.js';
export default [ export default [
listActivityTypes, listActivityTypes,
listCurrencies, listCurrencies,
listDeals, listDeals,
listLeadLabels,
listLeads, listLeads,
listOrganizationLabelField, listLeadLabels,
listOrganizations, listOrganizations,
listOrganizationLabelField,
listPersonLabelField, listPersonLabelField,
listPersons, listPersons,
listStages,
listUsers, listUsers,
]; ];

View File

@@ -1,23 +0,0 @@
export default {
name: 'List stages',
key: 'listStages',
async run($) {
const stages = {
data: [],
};
const { data } = await $.http.get('/api/v1/stages');
if (data.data?.length) {
for (const stage of data.data) {
stages.data.push({
value: stage.id,
name: stage.name,
});
}
}
return stages;
},
};

View File

@@ -12,7 +12,7 @@ export default defineApp({
baseUrl: '', baseUrl: '',
apiBaseUrl: '', apiBaseUrl: '',
iconUrl: '{BASE_URL}/apps/pipedrive/assets/favicon.svg', iconUrl: '{BASE_URL}/apps/pipedrive/assets/favicon.svg',
authDocUrl: '{DOCS_URL}/apps/pipedrive/connection', authDocUrl: 'https://automatisch.io/docs/apps/pipedrive/connection',
primaryColor: 'FFFFFF', primaryColor: 'FFFFFF',
supportsConnections: true, supportsConnections: true,
beforeRequest: [setBaseUrl, addAuthHeader], beforeRequest: [setBaseUrl, addAuthHeader],

View File

@@ -8,7 +8,7 @@ export default defineApp({
name: 'Placetel', name: 'Placetel',
key: 'placetel', key: 'placetel',
iconUrl: '{BASE_URL}/apps/placetel/assets/favicon.svg', iconUrl: '{BASE_URL}/apps/placetel/assets/favicon.svg',
authDocUrl: '{DOCS_URL}/apps/placetel/connection', authDocUrl: 'https://automatisch.io/docs/apps/placetel/connection',
supportsConnections: true, supportsConnections: true,
baseUrl: 'https://placetel.de', baseUrl: 'https://placetel.de',
apiBaseUrl: 'https://api.placetel.de', apiBaseUrl: 'https://api.placetel.de',

View File

@@ -6,7 +6,7 @@ export default defineApp({
name: 'PostgreSQL', name: 'PostgreSQL',
key: 'postgresql', key: 'postgresql',
iconUrl: '{BASE_URL}/apps/postgresql/assets/favicon.svg', iconUrl: '{BASE_URL}/apps/postgresql/assets/favicon.svg',
authDocUrl: '{DOCS_URL}/apps/postgresql/connection', authDocUrl: 'https://automatisch.io/docs/apps/postgresql/connection',
supportsConnections: true, supportsConnections: true,
baseUrl: '', baseUrl: '',
apiBaseUrl: '', apiBaseUrl: '',

View File

@@ -9,7 +9,7 @@ export default defineApp({
baseUrl: 'https://pushover.net', baseUrl: 'https://pushover.net',
apiBaseUrl: 'https://api.pushover.net', apiBaseUrl: 'https://api.pushover.net',
iconUrl: '{BASE_URL}/apps/pushover/assets/favicon.svg', iconUrl: '{BASE_URL}/apps/pushover/assets/favicon.svg',
authDocUrl: '{DOCS_URL}/apps/pushover/connection', authDocUrl: 'https://automatisch.io/docs/apps/pushover/connection',
primaryColor: '249DF1', primaryColor: '249DF1',
supportsConnections: true, supportsConnections: true,
auth, auth,

View File

@@ -10,7 +10,7 @@ export default defineApp({
baseUrl: 'https://www.reddit.com', baseUrl: 'https://www.reddit.com',
apiBaseUrl: 'https://oauth.reddit.com', apiBaseUrl: 'https://oauth.reddit.com',
iconUrl: '{BASE_URL}/apps/reddit/assets/favicon.svg', iconUrl: '{BASE_URL}/apps/reddit/assets/favicon.svg',
authDocUrl: '{DOCS_URL}/apps/reddit/connection', authDocUrl: 'https://automatisch.io/docs/apps/reddit/connection',
primaryColor: 'FF4500', primaryColor: 'FF4500',
supportsConnections: true, supportsConnections: true,
beforeRequest: [addAuthHeader], beforeRequest: [addAuthHeader],

View File

@@ -7,7 +7,7 @@ export default defineApp({
name: 'Remove.bg', name: 'Remove.bg',
key: 'removebg', key: 'removebg',
iconUrl: '{BASE_URL}/apps/removebg/assets/favicon.svg', iconUrl: '{BASE_URL}/apps/removebg/assets/favicon.svg',
authDocUrl: '{DOCS_URL}/apps/removebg/connection', authDocUrl: 'https://automatisch.io/docs/apps/removebg/connection',
supportsConnections: true, supportsConnections: true,
baseUrl: 'https://www.remove.bg', baseUrl: 'https://www.remove.bg',
apiBaseUrl: 'https://api.remove.bg/v1.0', apiBaseUrl: 'https://api.remove.bg/v1.0',

View File

@@ -5,7 +5,7 @@ export default defineApp({
name: 'RSS', name: 'RSS',
key: 'rss', key: 'rss',
iconUrl: '{BASE_URL}/apps/rss/assets/favicon.svg', iconUrl: '{BASE_URL}/apps/rss/assets/favicon.svg',
authDocUrl: '{DOCS_URL}/apps/rss/connection', authDocUrl: 'https://automatisch.io/docs/apps/rss/connection',
supportsConnections: false, supportsConnections: false,
baseUrl: '', baseUrl: '',
apiBaseUrl: '', apiBaseUrl: '',

View File

@@ -9,7 +9,7 @@ export default defineApp({
name: 'Salesforce', name: 'Salesforce',
key: 'salesforce', key: 'salesforce',
iconUrl: '{BASE_URL}/apps/salesforce/assets/favicon.svg', iconUrl: '{BASE_URL}/apps/salesforce/assets/favicon.svg',
authDocUrl: '{DOCS_URL}/connections/salesforce', authDocUrl: 'https://automatisch.io/docs/connections/salesforce',
supportsConnections: true, supportsConnections: true,
baseUrl: 'https://salesforce.com', baseUrl: 'https://salesforce.com',
apiBaseUrl: '', apiBaseUrl: '',

View File

@@ -6,7 +6,7 @@ export default defineApp({
key: 'scheduler', key: 'scheduler',
iconUrl: '{BASE_URL}/apps/scheduler/assets/favicon.svg', iconUrl: '{BASE_URL}/apps/scheduler/assets/favicon.svg',
docUrl: 'https://automatisch.io/docs/scheduler', docUrl: 'https://automatisch.io/docs/scheduler',
authDocUrl: '{DOCS_URL}/apps/scheduler/connection', authDocUrl: 'https://automatisch.io/docs/apps/scheduler/connection',
baseUrl: '', baseUrl: '',
apiBaseUrl: '', apiBaseUrl: '',
primaryColor: '0059F7', primaryColor: '0059F7',

View File

@@ -11,7 +11,7 @@ export default defineApp({
baseUrl: '', baseUrl: '',
apiBaseUrl: '', apiBaseUrl: '',
iconUrl: '{BASE_URL}/apps/self-hosted-llm/assets/favicon.svg', iconUrl: '{BASE_URL}/apps/self-hosted-llm/assets/favicon.svg',
authDocUrl: '{DOCS_URL}/apps/self-hosted-llm/connection', authDocUrl: 'https://automatisch.io/docs/apps/self-hosted-llm/connection',
primaryColor: '000000', primaryColor: '000000',
supportsConnections: true, supportsConnections: true,
beforeRequest: [setBaseUrl, addAuthHeader], beforeRequest: [setBaseUrl, addAuthHeader],

View File

@@ -9,7 +9,7 @@ export default defineApp({
name: 'SignalWire', name: 'SignalWire',
key: 'signalwire', key: 'signalwire',
iconUrl: '{BASE_URL}/apps/signalwire/assets/favicon.svg', iconUrl: '{BASE_URL}/apps/signalwire/assets/favicon.svg',
authDocUrl: '{DOCS_URL}/apps/signalwire/connection', authDocUrl: 'https://automatisch.io/docs/apps/signalwire/connection',
supportsConnections: true, supportsConnections: true,
baseUrl: 'https://signalwire.com', baseUrl: 'https://signalwire.com',
apiBaseUrl: '', apiBaseUrl: '',

View File

@@ -9,7 +9,7 @@ export default defineApp({
name: 'Slack', name: 'Slack',
key: 'slack', key: 'slack',
iconUrl: '{BASE_URL}/apps/slack/assets/favicon.svg', iconUrl: '{BASE_URL}/apps/slack/assets/favicon.svg',
authDocUrl: '{DOCS_URL}/apps/slack/connection', authDocUrl: 'https://automatisch.io/docs/apps/slack/connection',
supportsConnections: true, supportsConnections: true,
baseUrl: 'https://slack.com', baseUrl: 'https://slack.com',
apiBaseUrl: 'https://slack.com/api', apiBaseUrl: 'https://slack.com/api',

View File

@@ -6,7 +6,7 @@ export default defineApp({
name: 'SMTP', name: 'SMTP',
key: 'smtp', key: 'smtp',
iconUrl: '{BASE_URL}/apps/smtp/assets/favicon.svg', iconUrl: '{BASE_URL}/apps/smtp/assets/favicon.svg',
authDocUrl: '{DOCS_URL}/apps/smtp/connection', authDocUrl: 'https://automatisch.io/docs/apps/smtp/connection',
supportsConnections: true, supportsConnections: true,
baseUrl: '', baseUrl: '',
apiBaseUrl: '', apiBaseUrl: '',

View File

@@ -7,7 +7,7 @@ export default defineApp({
name: 'Spotify', name: 'Spotify',
key: 'spotify', key: 'spotify',
iconUrl: '{BASE_URL}/apps/spotify/assets/favicon.svg', iconUrl: '{BASE_URL}/apps/spotify/assets/favicon.svg',
authDocUrl: '{DOCS_URL}/apps/spotify/connection', authDocUrl: 'https://automatisch.io/docs/apps/spotify/connection',
supportsConnections: true, supportsConnections: true,
baseUrl: 'https://spotify.com', baseUrl: 'https://spotify.com',
apiBaseUrl: 'https://api.spotify.com', apiBaseUrl: 'https://api.spotify.com',

View File

@@ -7,7 +7,7 @@ export default defineApp({
name: 'Strava', name: 'Strava',
key: 'strava', key: 'strava',
iconUrl: '{BASE_URL}/apps/strava/assets/favicon.svg', iconUrl: '{BASE_URL}/apps/strava/assets/favicon.svg',
authDocUrl: '{DOCS_URL}/connections/strava', authDocUrl: 'https://automatisch.io/docs/connections/strava',
supportsConnections: true, supportsConnections: true,
baseUrl: 'https://www.strava.com', baseUrl: 'https://www.strava.com',
apiBaseUrl: 'https://www.strava.com/api', apiBaseUrl: 'https://www.strava.com/api',

View File

@@ -7,7 +7,7 @@ export default defineApp({
name: 'Stripe', name: 'Stripe',
key: 'stripe', key: 'stripe',
iconUrl: '{BASE_URL}/apps/stripe/assets/favicon.svg', iconUrl: '{BASE_URL}/apps/stripe/assets/favicon.svg',
authDocUrl: '{DOCS_URL}/apps/stripe/connection', authDocUrl: 'https://automatisch.io/docs/apps/stripe/connection',
supportsConnections: true, supportsConnections: true,
baseUrl: 'https://stripe.com', baseUrl: 'https://stripe.com',
apiBaseUrl: 'https://api.stripe.com', apiBaseUrl: 'https://api.stripe.com',

View File

@@ -7,7 +7,7 @@ export default defineApp({
name: 'Telegram', name: 'Telegram',
key: 'telegram-bot', key: 'telegram-bot',
iconUrl: '{BASE_URL}/apps/telegram-bot/assets/favicon.svg', iconUrl: '{BASE_URL}/apps/telegram-bot/assets/favicon.svg',
authDocUrl: '{DOCS_URL}/apps/telegram-bot/connection', authDocUrl: 'https://automatisch.io/docs/apps/telegram-bot/connection',
supportsConnections: true, supportsConnections: true,
baseUrl: 'https://telegram.org', baseUrl: 'https://telegram.org',
apiBaseUrl: 'https://api.telegram.org', apiBaseUrl: 'https://api.telegram.org',

View File

@@ -9,7 +9,7 @@ export default defineApp({
name: 'Todoist', name: 'Todoist',
key: 'todoist', key: 'todoist',
iconUrl: '{BASE_URL}/apps/todoist/assets/favicon.svg', iconUrl: '{BASE_URL}/apps/todoist/assets/favicon.svg',
authDocUrl: '{DOCS_URL}/apps/todoist/connection', authDocUrl: 'https://automatisch.io/docs/apps/todoist/connection',
supportsConnections: true, supportsConnections: true,
baseUrl: 'https://todoist.com', baseUrl: 'https://todoist.com',
apiBaseUrl: 'https://api.todoist.com/rest/v2', apiBaseUrl: 'https://api.todoist.com/rest/v2',

View File

@@ -10,7 +10,7 @@ export default defineApp({
baseUrl: 'https://trello.com/', baseUrl: 'https://trello.com/',
apiBaseUrl: 'https://api.trello.com', apiBaseUrl: 'https://api.trello.com',
iconUrl: '{BASE_URL}/apps/trello/assets/favicon.svg', iconUrl: '{BASE_URL}/apps/trello/assets/favicon.svg',
authDocUrl: '{DOCS_URL}/apps/trello/connection', authDocUrl: 'https://automatisch.io/docs/apps/trello/connection',
supportsConnections: true, supportsConnections: true,
primaryColor: '0079bf', primaryColor: '0079bf',
beforeRequest: [addAuthHeader], beforeRequest: [addAuthHeader],

View File

@@ -9,7 +9,7 @@ export default defineApp({
name: 'Twilio', name: 'Twilio',
key: 'twilio', key: 'twilio',
iconUrl: '{BASE_URL}/apps/twilio/assets/favicon.svg', iconUrl: '{BASE_URL}/apps/twilio/assets/favicon.svg',
authDocUrl: '{DOCS_URL}/apps/twilio/connection', authDocUrl: 'https://automatisch.io/docs/apps/twilio/connection',
supportsConnections: true, supportsConnections: true,
baseUrl: 'https://twilio.com', baseUrl: 'https://twilio.com',
apiBaseUrl: 'https://api.twilio.com', apiBaseUrl: 'https://api.twilio.com',

View File

@@ -8,7 +8,7 @@ export default defineApp({
name: 'Twitter', name: 'Twitter',
key: 'twitter', key: 'twitter',
iconUrl: '{BASE_URL}/apps/twitter/assets/favicon.svg', iconUrl: '{BASE_URL}/apps/twitter/assets/favicon.svg',
authDocUrl: '{DOCS_URL}/apps/twitter/connection', authDocUrl: 'https://automatisch.io/docs/apps/twitter/connection',
supportsConnections: true, supportsConnections: true,
baseUrl: 'https://twitter.com', baseUrl: 'https://twitter.com',
apiBaseUrl: 'https://api.twitter.com', apiBaseUrl: 'https://api.twitter.com',

View File

@@ -8,7 +8,7 @@ export default defineApp({
name: 'Typeform', name: 'Typeform',
key: 'typeform', key: 'typeform',
iconUrl: '{BASE_URL}/apps/typeform/assets/favicon.svg', iconUrl: '{BASE_URL}/apps/typeform/assets/favicon.svg',
authDocUrl: '{DOCS_URL}/apps/typeform/connection', authDocUrl: 'https://automatisch.io/docs/apps/typeform/connection',
supportsConnections: true, supportsConnections: true,
baseUrl: 'https://typeform.com', baseUrl: 'https://typeform.com',
apiBaseUrl: 'https://api.typeform.com', apiBaseUrl: 'https://api.typeform.com',

View File

@@ -0,0 +1,408 @@
export const fields = [
{
label: 'Summary',
key: 'summary',
type: 'string',
required: true,
description: '',
variables: true,
},
{
label: 'Record Currency',
key: 'recordCurrencyId',
type: 'dropdown',
required: false,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listRecordCurrencies',
},
],
},
},
{
label: 'Case Title',
key: 'caseTitle',
type: 'string',
required: true,
description: '',
variables: true,
},
{
label: 'Status',
key: 'status',
type: 'dropdown',
required: true,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listCaseOptions',
},
{
name: 'parameters.status',
value: 'casestatus',
},
],
},
},
{
label: 'Priority',
key: 'priority',
type: 'dropdown',
required: true,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listCaseOptions',
},
{
name: 'parameters.priority',
value: 'casepriority',
},
],
},
},
{
label: 'Contact',
key: 'contactId',
type: 'dropdown',
required: true,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listContacts',
},
],
},
},
{
label: 'Organization',
key: 'organizationId',
type: 'dropdown',
required: false,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listOrganizations',
},
],
},
},
{
label: 'Group',
key: 'groupId',
type: 'dropdown',
required: false,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listGroups',
},
],
},
},
{
label: 'Assigned To',
key: 'assignedTo',
type: 'string',
required: false,
description: '',
variables: true,
},
{
label: 'Product',
key: 'productId',
type: 'dropdown',
required: false,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listProducts',
},
],
},
},
{
label: 'Channel',
key: 'channel',
type: 'dropdown',
required: false,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listCaseOptions',
},
{
name: 'parameters.channel',
value: 'casechannel',
},
],
},
},
{
label: 'Resolution',
key: 'resolution',
type: 'string',
required: false,
description: '',
variables: true,
},
{
label: 'Category',
key: 'category',
type: 'dropdown',
required: false,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listCaseOptions',
},
{
name: 'parameters.category',
value: 'impact_type',
},
],
},
},
{
label: 'Sub Category',
key: 'subCategory',
type: 'dropdown',
required: false,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listCaseOptions',
},
{
name: 'parameters.subCategory',
value: 'impact_area',
},
],
},
},
{
label: 'Resolution Type',
key: 'resolutionType',
type: 'dropdown',
required: false,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listCaseOptions',
},
{
name: 'parameters.resolutionType',
value: 'resolution_type',
},
],
},
},
{
label: 'Deferred Date',
key: 'deferredDate',
type: 'string',
required: false,
description: 'format: yyyy-mm-dd',
variables: true,
},
{
label: 'Service Contract',
key: 'serviceContractId',
type: 'dropdown',
required: false,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listServiceContracts',
},
],
},
},
{
label: 'Asset',
key: 'assetId',
type: 'dropdown',
required: false,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listAssets',
},
],
},
},
{
label: 'SLA',
key: 'slaId',
type: 'dropdown',
required: false,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listSlaNames',
},
],
},
},
{
label: 'Is Billable',
key: 'isBillable',
type: 'dropdown',
required: false,
description: '',
variables: true,
options: [
{ label: 'True', value: '1' },
{ label: 'False', value: '-1' },
],
},
{
label: 'Service',
key: 'service',
type: 'dropdown',
required: false,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listServices',
},
],
},
},
{
label: 'Rate',
key: 'rate',
type: 'string',
required: false,
description: '',
variables: true,
},
{
label: 'Service Type',
key: 'serviceType',
type: 'dropdown',
required: false,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listCaseOptions',
},
{
name: 'parameters.serviceType',
value: 'servicetype',
},
],
},
},
{
label: 'Service Location',
key: 'serviceLocation',
type: 'dropdown',
required: false,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listCaseOptions',
},
{
name: 'parameters.serviceLocation',
value: 'servicelocation',
},
],
},
},
{
label: 'Work Location',
key: 'workLocation',
type: 'string',
required: false,
description: '',
variables: true,
},
];

View File

@@ -0,0 +1,78 @@
import defineAction from '../../../../helpers/define-action.js';
import { fields } from './fields.js';
export default defineAction({
name: 'Create case',
key: 'createCase',
description: 'Create a new case.',
arguments: fields,
async run($) {
const {
summary,
recordCurrencyId,
caseTitle,
status,
priority,
contactId,
organizationId,
groupId,
assignedTo,
productId,
channel,
resolution,
category,
subCategory,
resolutionType,
deferredDate,
serviceContractId,
assetId,
slaId,
isBillable,
service,
rate,
serviceType,
serviceLocation,
workLocation,
} = $.step.parameters;
const elementData = {
description: summary,
record_currency_id: recordCurrencyId,
title: caseTitle,
casestatus: status,
casepriority: priority,
contact_id: contactId,
parent_id: organizationId,
group_id: groupId,
assigned_user_id: assignedTo,
product_id: productId,
casechannel: channel,
resolution: resolution,
impact_type: category,
impact_area: subCategory,
resolution_type: resolutionType,
deferred_date: deferredDate,
servicecontract_id: serviceContractId,
asset_id: assetId,
slaid: slaId,
is_billable: isBillable,
billing_service: service,
rate: rate,
servicetype: serviceType,
servicelocation: serviceLocation,
work_location: workLocation,
};
const body = {
operation: 'create',
sessionName: $.auth.data.sessionName,
element: JSON.stringify(elementData),
elementType: 'Cases',
};
const response = await $.http.post('/webservice.php', body);
$.setActionItem({ raw: response.data });
},
});

View File

@@ -0,0 +1,649 @@
export const fields = [
{
label: 'Salutation',
key: 'salutation',
type: 'dropdown',
required: false,
description: '',
variables: true,
options: [
{ label: 'Mr.', value: 'Mr.' },
{ label: 'Ms.', value: 'Ms.' },
{ label: 'Mrs.', value: 'Mrs.' },
{ label: 'Dr.', value: 'Dr.' },
{ label: 'Prof.', value: 'Prof.' },
],
},
{
label: 'First Name',
key: 'firstName',
type: 'string',
required: false,
description: '',
variables: true,
},
{
label: 'Last Name',
key: 'lastName',
type: 'string',
required: true,
description: '',
variables: true,
},
{
label: 'Primary Email',
key: 'primaryEmail',
type: 'string',
required: false,
description: '',
variables: true,
},
{
label: 'Office Phone',
key: 'officePhone',
type: 'string',
required: false,
description: '',
variables: true,
},
{
label: 'Mobile Phone',
key: 'mobilePhone',
type: 'string',
required: false,
description: '',
variables: true,
},
{
label: 'Home Phone',
key: 'homePhone',
type: 'string',
required: false,
description: '',
variables: true,
},
{
label: 'Date of Birth',
key: 'dateOfBirth',
type: 'string',
required: false,
description: 'format: yyyy-mm-dd',
variables: true,
},
{
label: 'Fax',
key: 'fax',
type: 'string',
required: false,
description: '',
variables: true,
},
{
label: 'Organization',
key: 'organizationId',
type: 'dropdown',
required: false,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listOrganizations',
},
],
},
},
{
label: 'Title',
key: 'title',
type: 'dropdown',
required: false,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listContactOptions',
},
{
name: 'parameters.title',
value: 'listContactOptions',
},
],
},
},
{
label: 'Department',
key: 'department',
type: 'string',
required: false,
description: '',
variables: true,
},
{
label: 'Reports To',
key: 'reportsTo',
type: 'dropdown',
required: false,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listContacts',
},
],
},
},
{
label: 'Lead Source',
key: 'leadSource',
type: 'dropdown',
required: false,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listContactOptions',
},
{
name: 'parameters.leadSource',
value: 'leadsource',
},
],
},
},
{
label: 'Secondary Email',
key: 'secondaryEmail',
type: 'string',
required: false,
description: '',
variables: true,
},
{
label: 'Assigned To',
key: 'assignedTo',
type: 'string',
required: false,
description: '',
variables: true,
},
{
label: 'Do Not Call',
key: 'doNotCall',
type: 'dropdown',
required: false,
description: '',
variables: true,
options: [
{ label: 'True', value: '1' },
{ label: 'False', value: '-1' },
],
},
{
label: 'Notify Owner',
key: 'notifyOwner',
type: 'dropdown',
required: false,
description: '',
variables: true,
options: [
{ label: 'True', value: '1' },
{ label: 'False', value: '-1' },
],
},
{
label: 'Twitter Username',
key: 'twitterUsername',
type: 'string',
required: false,
description: '',
variables: true,
},
{
label: 'SLA',
key: 'slaId',
type: 'dropdown',
required: false,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listSlaNames',
},
],
},
},
{
label: 'Lifecycle Stage',
key: 'lifecycleStage',
type: 'dropdown',
required: false,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listContactOptions',
},
{
name: 'parameters.lifecycleStage',
value: 'contacttype',
},
],
},
},
{
label: 'Status',
key: 'status',
type: 'dropdown',
required: false,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listContactOptions',
},
{
name: 'parameters.status',
value: 'contactstatus',
},
],
},
},
{
label: 'Happiness Rating',
key: 'happinessRating',
type: 'dropdown',
required: false,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listContactOptions',
},
{
name: 'parameters.happinessRating',
value: 'happiness_rating',
},
],
},
},
{
label: 'Record Currency',
key: 'recordCurrencyId',
type: 'dropdown',
required: false,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listRecordCurrencies',
},
],
},
},
{
label: 'Referred By',
key: 'referredBy',
type: 'dropdown',
required: false,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listContacts',
},
],
},
},
{
label: 'Email Opt-in',
key: 'emailOptin',
type: 'dropdown',
required: false,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listContactOptions',
},
{
name: 'parameters.emailOptin',
value: 'emailoptin',
},
],
},
},
{
label: 'SMS Opt-in',
key: 'smsOptin',
type: 'dropdown',
required: false,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listContactOptions',
},
{
name: 'parameters.smsOptin',
value: 'smsoptin',
},
],
},
},
{
label: 'Language',
key: 'language',
type: 'dropdown',
required: false,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listContactOptions',
},
{
name: 'parameters.language',
value: 'language',
},
],
},
},
{
label: 'Source Campaign',
key: 'sourceCampaignId',
type: 'dropdown',
required: false,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listCampaignSources',
},
],
},
},
{
label: 'Portal User',
key: 'portalUser',
type: 'dropdown',
required: false,
description: '',
variables: true,
options: [
{ label: 'True', value: '1' },
{ label: 'False', value: '-1' },
],
},
{
label: 'Support Start Date',
key: 'supportStartDate',
type: 'string',
required: false,
description: 'format: yyyy-mm-dd',
variables: true,
},
{
label: 'Support End Date',
key: 'supportEndDate',
type: 'string',
required: false,
description: 'format: yyyy-mm-dd',
variables: true,
},
{
label: 'Other Country',
key: 'otherCountry',
type: 'dropdown',
required: false,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listContactOptions',
},
{
name: 'parameters.otherCountry',
value: 'othercountry',
},
],
},
},
{
label: 'Mailing Country',
key: 'mailingCountry',
type: 'dropdown',
required: false,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listContactOptions',
},
{
name: 'parameters.mailingCountry',
value: 'mailingcountry',
},
],
},
},
{
label: 'Mailing Street',
key: 'mailingStreet',
type: 'string',
required: false,
description: '',
variables: true,
},
{
label: 'Other Street',
key: 'otherStreet',
type: 'string',
required: false,
description: '',
variables: true,
},
{
label: 'Mailing PO Box',
key: 'mailingPoBox',
type: 'string',
required: false,
description: '',
variables: true,
},
{
label: 'Other PO Box',
key: 'otherPoBox',
type: 'string',
required: false,
description: '',
variables: true,
},
{
label: 'Mailing City',
key: 'mailingCity',
type: 'string',
required: false,
description: '',
variables: true,
},
{
label: 'Other City',
key: 'otherCity',
type: 'string',
required: false,
description: '',
variables: true,
},
{
label: 'Mailing State',
key: 'mailingState',
type: 'dropdown',
required: false,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listContactOptions',
},
{
name: 'parameters.mailingState',
value: 'mailingstate',
},
],
},
},
{
label: 'Other State',
key: 'otherState',
type: 'dropdown',
required: false,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listContactOptions',
},
{
name: 'parameters.otherState',
value: 'otherstate',
},
],
},
},
{
label: 'Mailing Zip',
key: 'mailingZip',
type: 'string',
required: false,
description: '',
variables: true,
},
{
label: 'Other Zip',
key: 'otherZip',
type: 'string',
required: false,
description: '',
variables: true,
},
{
label: 'Description',
key: 'description',
type: 'string',
required: false,
description: '',
variables: true,
},
{
label: 'Contact Image',
key: 'contactImage',
type: 'string',
required: false,
description: '',
variables: true,
},
{
label: 'Linkedin URL',
key: 'linkedinUrl',
type: 'string',
required: false,
description: '',
variables: true,
},
{
label: 'Linkedin Followers',
key: 'linkedinFollowers',
type: 'string',
required: false,
description: '',
variables: true,
},
{
label: 'Facebook URL',
key: 'facebookUrl',
type: 'string',
required: false,
description: '',
variables: true,
},
{
label: 'Facebook Followers',
key: 'facebookFollowers',
type: 'string',
required: false,
description: '',
variables: true,
},
];

View File

@@ -0,0 +1,129 @@
import defineAction from '../../../../helpers/define-action.js';
import { fields } from './fields.js';
export default defineAction({
name: 'Create contact',
key: 'createContact',
description: 'Create a new contact.',
arguments: fields,
async run($) {
const {
salutation,
firstName,
lastName,
primaryEmail,
officePhone,
mobilePhone,
homePhone,
dateOfBirth,
fax,
organizationId,
title,
department,
reportsTo,
leadSource,
secondaryEmail,
assignedTo,
doNotCall,
notifyOwner,
twitterUsername,
slaId,
lifecycleStage,
status,
happinessRating,
recordCurrencyId,
referredBy,
emailOptin,
smsOptin,
language,
sourceCampaignId,
portalUser,
supportStartDate,
supportEndDate,
otherCountry,
mailingCountry,
mailingStreet,
otherStreet,
mailingPoBox,
otherPoBox,
mailingCity,
otherCity,
mailingState,
otherState,
mailingZip,
otherZip,
description,
contactImage,
linkedinUrl,
linkedinFollowers,
facebookUrl,
facebookFollowers,
} = $.step.parameters;
const elementData = {
salutationtype: salutation,
firstname: firstName,
lastname: lastName,
email: primaryEmail,
phone: officePhone,
mobile: mobilePhone,
homephone: homePhone,
birthday: dateOfBirth,
fax: fax,
account_id: organizationId,
title: title,
department: department,
contact_id: reportsTo,
leadsource: leadSource,
secondaryemail: secondaryEmail,
assigned_user_id: assignedTo || $.auth.data.userId,
donotcall: doNotCall,
notify_owner: notifyOwner,
emailoptout: emailOptin,
primary_twitter: twitterUsername,
slaid: slaId,
contacttype: lifecycleStage,
contactstatus: status,
happiness_rating: happinessRating,
record_currency_id: recordCurrencyId,
referred_by: referredBy,
emailoptin: emailOptin,
smsoptin: smsOptin,
language: language,
source_campaign: sourceCampaignId,
portal: portalUser,
support_start_date: supportStartDate,
support_end_date: supportEndDate,
othercountry: otherCountry,
mailingcountry: mailingCountry,
mailingstreet: mailingStreet,
otherstreet: otherStreet,
mailingpobox: mailingPoBox,
otherpobox: otherPoBox,
mailingcity: mailingCity,
othercity: otherCity,
mailingstate: mailingState,
otherstate: otherState,
mailingzip: mailingZip,
otherzip: otherZip,
description: description,
imagename: contactImage,
primary_linkedin: linkedinUrl,
followers_linkedin: linkedinFollowers,
primary_facebook: facebookUrl,
followers_facebook: facebookFollowers,
};
const body = {
operation: 'create',
sessionName: $.auth.data.sessionName,
element: JSON.stringify(elementData),
elementType: 'Contacts',
};
const response = await $.http.post('/webservice.php', body);
$.setActionItem({ raw: response.data });
},
});

View File

@@ -0,0 +1,395 @@
export const fields = [
{
label: 'Salutation',
key: 'salutation',
type: 'dropdown',
required: false,
description: '',
variables: true,
options: [
{ label: 'Mr.', value: 'Mr.' },
{ label: 'Ms.', value: 'Ms.' },
{ label: 'Mrs.', value: 'Mrs.' },
{ label: 'Dr.', value: 'Dr.' },
{ label: 'Prof.', value: 'Prof.' },
],
},
{
label: 'First Name',
key: 'firstName',
type: 'string',
required: false,
description: '',
variables: true,
},
{
label: 'Last Name',
key: 'lastName',
type: 'string',
required: true,
description: '',
variables: true,
},
{
label: 'Company',
key: 'company',
type: 'string',
required: false,
description: '',
variables: true,
},
{
label: 'Primary Email',
key: 'primaryEmail',
type: 'string',
required: false,
description: '',
variables: true,
},
{
label: 'Office Phone',
key: 'officePhone',
type: 'string',
required: false,
description: '',
variables: true,
},
{
label: 'Designation',
key: 'designation',
type: 'dropdown',
required: false,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listLeadOptions',
},
{
name: 'parameters.designation',
value: 'designation',
},
],
},
},
{
label: 'Mobile Phone',
key: 'mobilePhone',
type: 'string',
required: false,
description: '',
variables: true,
},
{
label: 'Industry',
key: 'industry',
type: 'dropdown',
required: false,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listLeadOptions',
},
{
name: 'parameters.industry',
value: 'industry',
},
],
},
},
{
label: 'Website',
key: 'website',
type: 'string',
required: false,
description: '',
variables: true,
},
{
label: 'Annual Revenue',
key: 'annualRevenue',
type: 'string',
required: false,
description: '',
variables: true,
},
{
label: 'Lead Source',
key: 'leadSource',
type: 'dropdown',
required: false,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listLeadOptions',
},
{
name: 'parameters.leadSource',
value: 'leadsource',
},
],
},
},
{
label: 'Lead Status',
key: 'leadStatus',
type: 'dropdown',
required: false,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listLeadOptions',
},
{
name: 'parameters.leadStatus',
value: 'leadstatus',
},
],
},
},
{
label: 'Assigned To',
key: 'assignedTo',
type: 'string',
required: false,
description: '',
variables: true,
},
{
label: 'Fax',
key: 'fax',
type: 'string',
required: false,
description: '',
variables: true,
},
{
label: 'Number of Employees',
key: 'numberOfEmployees',
type: 'string',
required: false,
description: '',
variables: true,
},
{
label: 'Twitter Username',
key: 'twitterUsername',
type: 'string',
required: false,
description: '',
variables: true,
},
{
label: 'Record Currency',
key: 'recordCurrencyId',
type: 'dropdown',
required: false,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listRecordCurrencies',
},
],
},
},
{
label: 'Email Opt-in',
key: 'emailOptin',
type: 'dropdown',
required: false,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listLeadOptions',
},
{
name: 'parameters.emailOptin',
value: 'emailoptin',
},
],
},
},
{
label: 'SMS Opt-in',
key: 'smsOptin',
type: 'dropdown',
required: false,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listLeadOptions',
},
{
name: 'parameters.smsOptin',
value: 'smsoptin',
},
],
},
},
{
label: 'Language',
key: 'language',
type: 'dropdown',
required: false,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listLeadOptions',
},
{
name: 'parameters.language',
value: 'language',
},
],
},
},
{
label: 'Source Campaign',
key: 'sourceCampaignId',
type: 'dropdown',
required: false,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listCampaignSources',
},
],
},
},
{
label: 'Country',
key: 'country',
type: 'dropdown',
required: false,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listLeadOptions',
},
{
name: 'parameters.country',
value: 'country',
},
],
},
},
{
label: 'Street',
key: 'street',
type: 'string',
required: false,
description: '',
variables: true,
},
{
label: 'PO Box',
key: 'poBox',
type: 'string',
required: false,
description: '',
variables: true,
},
{
label: 'Postal Code',
key: 'postalCode',
type: 'string',
required: false,
description: '',
variables: true,
},
{
label: 'City',
key: 'city',
type: 'string',
required: false,
description: '',
variables: true,
},
{
label: 'State',
key: 'state',
type: 'dropdown',
required: false,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listLeadOptions',
},
{
name: 'parameters.state',
value: 'state',
},
],
},
},
{
label: 'Description',
key: 'description',
type: 'string',
required: false,
description: '',
variables: true,
},
{
label: 'Lead Image',
key: 'leadImage',
type: 'string',
required: false,
description: '',
variables: true,
},
];

View File

@@ -0,0 +1,88 @@
import defineAction from '../../../../helpers/define-action.js';
import { fields } from './fields.js';
export default defineAction({
name: 'Create lead',
key: 'createLead',
description: 'Create a new lead.',
arguments: fields,
async run($) {
const {
salutation,
firstName,
lastName,
company,
primaryEmail,
officePhone,
designation,
mobilePhone,
industry,
website,
annualRevenue,
leadSource,
leadStatus,
assignedTo,
fax,
numberOfEmployees,
twitterUsername,
recordCurrencyId,
emailOptin,
smsOptin,
language,
sourceCampaignId,
country,
street,
poBox,
postalCode,
city,
state,
description,
leadImage,
} = $.step.parameters;
const elementData = {
salutationtype: salutation,
firstname: firstName,
lastname: lastName,
company: company,
email: primaryEmail,
phone: officePhone,
designation: designation,
mobile: mobilePhone,
industry: industry,
website: website,
annualrevenue: annualRevenue,
leadsource: leadSource,
leadstatus: leadStatus,
assigned_user_id: assignedTo || $.auth.data.userId,
fax: fax,
noofemployees: numberOfEmployees,
primary_twitter: twitterUsername,
record_currency_id: recordCurrencyId,
emailoptin: emailOptin,
smsoptin: smsOptin,
language: language,
source_campaign: sourceCampaignId,
country: country,
lane: street,
pobox: poBox,
code: postalCode,
city: city,
state: state,
description: description,
imagename: leadImage,
};
const body = {
operation: 'create',
sessionName: $.auth.data.sessionName,
element: JSON.stringify(elementData),
elementType: 'Leads',
};
const response = await $.http.post('/webservice.php', body);
$.setActionItem({ raw: response.data });
},
});

View File

@@ -0,0 +1,244 @@
export const fields = [
{
label: 'Deal Name',
key: 'dealName',
type: 'string',
required: true,
description: '',
variables: true,
},
{
label: 'Amount',
key: 'amount',
type: 'string',
required: false,
description: '',
variables: true,
},
{
label: 'Organization',
key: 'organizationId',
type: 'dropdown',
required: false,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listOrganizations',
},
],
},
},
{
label: 'Contact',
key: 'contactId',
type: 'dropdown',
required: false,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listContacts',
},
],
},
},
{
label: 'Expected Close Date',
key: 'expectedCloseDate',
type: 'string',
required: true,
description: 'Format: yyyy-mm-dd',
variables: true,
},
{
label: 'Pipeline',
key: 'pipeline',
type: 'dropdown',
required: true,
value: 'Standart',
description: '',
variables: true,
options: [{ label: 'Standart', value: 'Standart' }],
},
{
label: 'Sales Stage',
key: 'salesStage',
type: 'dropdown',
required: false,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listOpportunityOptions',
},
{
name: 'parameters.salesStage',
value: 'sales_stage',
},
],
},
},
{
label: 'Assigned To',
key: 'assignedTo',
type: 'string',
required: false,
description: 'Default is the id of the account connected to Automatisch.',
variables: true,
},
{
label: 'Lead Source',
key: 'leadSource',
type: 'dropdown',
required: false,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listOpportunityOptions',
},
{
name: 'parameters.leadSource',
value: 'leadsource',
},
],
},
},
{
label: 'Next Step',
key: 'nextStep',
type: 'string',
required: false,
description: '',
variables: true,
},
{
label: 'Type',
key: 'type',
type: 'dropdown',
required: false,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listOpportunityOptions',
},
{
name: 'parameters.type',
value: 'opportunity_type',
},
],
},
},
{
label: 'Probability',
key: 'probability',
type: 'string',
required: false,
description: '',
variables: true,
},
{
label: 'Campaign Source',
key: 'campaignSourceId',
type: 'dropdown',
required: false,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listCampaignSources',
},
],
},
},
{
label: 'Weighted Revenue',
key: 'weightedRevenue',
type: 'string',
required: false,
description: '',
variables: true,
},
{
label: 'Adjusted Amount',
key: 'adjustedAmount',
type: 'string',
required: false,
description: '',
variables: true,
},
{
label: 'Lost Reason',
key: 'lostReason',
type: 'dropdown',
required: false,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listOpportunityOptions',
},
{
name: 'parameters.lostReason',
value: 'lost_reason',
},
],
},
},
{
label: 'Record Currency',
key: 'recordCurrencyId',
type: 'dropdown',
required: false,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listRecordCurrencies',
},
],
},
},
{
label: 'Description',
key: 'description',
type: 'string',
required: false,
description: '',
variables: true,
},
];

View File

@@ -0,0 +1,64 @@
import defineAction from '../../../../helpers/define-action.js';
import { fields } from './fields.js';
export default defineAction({
name: 'Create opportunity',
key: 'createOpportunity',
description: 'Create a new opportunity.',
arguments: fields,
async run($) {
const {
dealName,
amount,
organizationId,
contactId,
expectedCloseDate,
pipeline,
salesStage,
assignedTo,
leadSource,
nextStep,
type,
probability,
campaignSourceId,
weightedRevenue,
adjustedAmount,
lostReason,
recordCurrencyId,
description,
} = $.step.parameters;
const elementData = {
potentialname: dealName,
amount,
related_to: organizationId,
contact_id: contactId,
closingdate: expectedCloseDate,
pipeline,
sales_stage: salesStage,
assigned_user_id: assignedTo || $.auth.data.userId,
leadsource: leadSource,
nextstep: nextStep,
opportunity_type: type,
probability: probability,
campaignid: campaignSourceId,
forecast_amount: weightedRevenue,
adjusted_amount: adjustedAmount,
lost_reason: lostReason,
record_currency_id: recordCurrencyId,
description,
};
const body = {
operation: 'create',
sessionName: $.auth.data.sessionName,
element: JSON.stringify(elementData),
elementType: 'Potentials',
};
const response = await $.http.post('/webservice.php', body);
$.setActionItem({ raw: response.data });
},
});

View File

@@ -0,0 +1,357 @@
export const fields = [
{
label: 'Name',
key: 'name',
type: 'string',
required: true,
description: '',
variables: true,
},
{
label: 'Assigned To',
key: 'assignedTo',
type: 'string',
required: false,
description: 'Default is the id of the account connected to Automatisch.',
variables: true,
},
{
label: 'Start Date & Time',
key: 'startDateAndTime',
type: 'string',
required: false,
description: 'Format: yyyy-mm-dd',
variables: true,
},
{
label: 'Due Date',
key: 'dueDate',
type: 'string',
required: false,
description: 'Format: yyyy-mm-dd',
variables: true,
},
{
label: 'Stage',
key: 'stage',
type: 'dropdown',
required: true,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listTodoOptions',
},
{
name: 'parameters.stage',
value: 'taskstatus',
},
],
},
},
{
label: 'Contact',
key: 'contactId',
type: 'dropdown',
required: false,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listContacts',
},
],
},
},
{
label: 'Priority',
key: 'priority',
type: 'dropdown',
required: true,
description: '',
variables: true,
options: [
{ label: 'High', value: 'High' },
{ label: 'Medium', value: 'Medium' },
{ label: 'Low', value: 'Low' },
],
},
{
label: 'Send Notification',
key: 'sendNotification',
type: 'dropdown',
required: false,
description: '',
variables: true,
options: [
{ label: 'True', value: 'true' },
{ label: 'False', value: 'false' },
],
},
{
label: 'Location',
key: 'location',
type: 'string',
required: false,
description: '',
variables: true,
},
{
label: 'Record Currency',
key: 'recordCurrencyId',
type: 'dropdown',
required: false,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listRecordCurrencies',
},
],
},
},
{
label: 'Milestone',
key: 'milestone',
type: 'dropdown',
required: false,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listMilestones',
},
],
},
},
{
label: 'Previous Task',
key: 'previousTask',
type: 'dropdown',
required: false,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listTasks',
},
],
},
},
{
label: 'Parent Task',
key: 'parentTask',
type: 'dropdown',
required: false,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listTasks',
},
],
},
},
{
label: 'Task Type',
key: 'taskType',
type: 'dropdown',
required: true,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listTodoOptions',
},
{
name: 'parameters.taskType',
value: 'tasktype',
},
],
},
},
{
label: 'Skipped Reason',
key: 'skippedReason',
type: 'dropdown',
required: false,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listTodoOptions',
},
{
name: 'parameters.skippedReason',
value: 'skipped_reason',
},
],
},
},
{
label: 'Estimate',
key: 'estimate',
type: 'string',
required: false,
description: '',
variables: true,
},
{
label: 'Related Task',
key: 'relatedTask',
type: 'dropdown',
required: false,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listTasks',
},
],
},
},
{
label: 'Project',
key: 'projectId',
type: 'dropdown',
required: false,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listProjects',
},
],
},
},
{
label: 'Organization',
key: 'organizationId',
type: 'dropdown',
required: false,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listOrganizations',
},
],
},
},
{
label: 'Send Email Reminder Before',
key: 'sendEmailReminderBefore',
type: 'string',
required: false,
description: '',
variables: true,
},
{
label: 'Description',
key: 'description',
type: 'string',
required: false,
description: '',
variables: true,
},
{
label: 'Is Billable',
key: 'isBillable',
type: 'dropdown',
required: false,
description: '',
variables: true,
options: [
{ label: 'True', value: '1' },
{ label: 'False', value: '-1' },
],
},
{
label: 'Service',
key: 'service',
type: 'dropdown',
required: false,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listServices',
},
],
},
},
{
label: 'Rate',
key: 'rate',
type: 'string',
required: false,
description: '',
variables: true,
},
{
label: 'SLA',
key: 'slaId',
type: 'dropdown',
required: false,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listSlaNames',
},
],
},
},
];

Some files were not shown because too many files have changed in this diff Show More