Compare commits
1 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
465dc8ba38 |
@@ -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
|
||||||
|
|
||||||
|
@@ -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",
|
||||||
|
@@ -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
18
.eslintrc.js
Normal 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'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
2
.github/workflows/ci.yml
vendored
2
.github/workflows/ci.yml
vendored
@@ -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
|
||||||
|
32
.github/workflows/docs-change.yml
vendored
32
.github/workflows/docs-change.yml
vendored
@@ -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}`);
|
|
||||||
}
|
|
5
.github/workflows/playwright.yml
vendored
5
.github/workflows/playwright.yml
vendored
@@ -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
|
||||||
|
@@ -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"]
|
||||||
|
@@ -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
|
||||||
|
@@ -6,6 +6,8 @@
|
|||||||
"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,cli} lint",
|
||||||
|
"build:watch": "lerna run --no-bail --stream --parallel --scope=@*/{web,backend,cli} build:watch",
|
||||||
"build:docs": "cd ./packages/docs && yarn install && yarn build"
|
"build:docs": "cd ./packages/docs && yarn install && yarn build"
|
||||||
},
|
},
|
||||||
"workspaces": {
|
"workspaces": {
|
||||||
@@ -20,6 +22,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",
|
||||||
|
@@ -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"
|
||||||
|
@@ -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],
|
||||||
|
@@ -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',
|
||||||
|
@@ -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,
|
|
||||||
});
|
|
||||||
},
|
|
||||||
});
|
|
@@ -1,4 +0,0 @@
|
|||||||
import getValue from './get-value/index.js';
|
|
||||||
import setValue from './set-value/index.js';
|
|
||||||
|
|
||||||
export default [getValue, setValue];
|
|
@@ -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,
|
|
||||||
});
|
|
||||||
},
|
|
||||||
});
|
|
@@ -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="<Transparent Rectangle>" class="cls-1" width="32" height="32"/>
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 704 B |
@@ -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,
|
|
||||||
});
|
|
@@ -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',
|
||||||
|
@@ -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: '',
|
||||||
|
@@ -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',
|
||||||
|
@@ -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',
|
||||||
|
@@ -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: '',
|
||||||
|
@@ -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,
|
||||||
|
@@ -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',
|
||||||
|
@@ -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' },
|
||||||
],
|
],
|
||||||
|
@@ -1,8 +0,0 @@
|
|||||||
const base64ToString = ($) => {
|
|
||||||
const input = $.step.parameters.input;
|
|
||||||
const decodedString = Buffer.from(input, 'base64').toString('utf8');
|
|
||||||
|
|
||||||
return decodedString;
|
|
||||||
};
|
|
||||||
|
|
||||||
export default base64ToString;
|
|
@@ -1,8 +0,0 @@
|
|||||||
const stringtoBase64 = ($) => {
|
|
||||||
const input = $.step.parameters.input;
|
|
||||||
const base64String = Buffer.from(input).toString('base64');
|
|
||||||
|
|
||||||
return base64String;
|
|
||||||
};
|
|
||||||
|
|
||||||
export default stringtoBase64;
|
|
@@ -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,
|
||||||
|
@@ -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;
|
|
@@ -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;
|
|
@@ -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: '',
|
||||||
|
@@ -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],
|
||||||
|
@@ -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],
|
||||||
|
@@ -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],
|
||||||
|
@@ -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],
|
||||||
|
@@ -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],
|
||||||
|
@@ -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],
|
||||||
|
@@ -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],
|
||||||
|
@@ -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],
|
},
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
|
||||||
});
|
});
|
||||||
|
|
||||||
$.setActionItem({
|
const sessionId = sessionResponse.data.id;
|
||||||
raw: response.data,
|
|
||||||
});
|
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({
|
||||||
|
raw: message,
|
||||||
|
});
|
||||||
|
|
||||||
|
chatGenerated = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
@@ -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],
|
||||||
|
@@ -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');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -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: '',
|
||||||
|
@@ -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',
|
||||||
|
@@ -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],
|
||||||
|
@@ -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',
|
||||||
|
@@ -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],
|
||||||
|
@@ -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,
|
|
||||||
});
|
|
||||||
},
|
|
||||||
});
|
|
@@ -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,
|
|
||||||
});
|
|
||||||
},
|
|
||||||
});
|
|
@@ -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,
|
|
||||||
});
|
|
||||||
},
|
|
||||||
});
|
|
@@ -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];
|
|
@@ -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 |
@@ -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,
|
|
||||||
};
|
|
@@ -1,8 +0,0 @@
|
|||||||
import verifyCredentials from './verify-credentials.js';
|
|
||||||
|
|
||||||
const isStillVerified = async ($) => {
|
|
||||||
await verifyCredentials($);
|
|
||||||
return true;
|
|
||||||
};
|
|
||||||
|
|
||||||
export default isStillVerified;
|
|
@@ -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;
|
|
@@ -1,9 +0,0 @@
|
|||||||
const addAuthHeader = ($, requestConfig) => {
|
|
||||||
if ($.auth.data?.apiToken) {
|
|
||||||
requestConfig.headers.Authorization = $.auth.data.apiToken;
|
|
||||||
}
|
|
||||||
|
|
||||||
return requestConfig;
|
|
||||||
};
|
|
||||||
|
|
||||||
export default addAuthHeader;
|
|
@@ -1,4 +0,0 @@
|
|||||||
import listBoards from './list-boards/index.js';
|
|
||||||
import listGroups from './list-groups/index.js';
|
|
||||||
|
|
||||||
export default [listBoards, listGroups];
|
|
@@ -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;
|
|
||||||
},
|
|
||||||
};
|
|
@@ -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;
|
|
||||||
},
|
|
||||||
};
|
|
@@ -1,22 +0,0 @@
|
|||||||
import defineApp from '../../helpers/define-app.js';
|
|
||||||
import addAuthHeader from './common/add-auth-header.js';
|
|
||||||
import auth from './auth/index.js';
|
|
||||||
import triggers from './triggers/index.js';
|
|
||||||
import actions from './actions/index.js';
|
|
||||||
import dynamicData from './dynamic-data/index.js';
|
|
||||||
|
|
||||||
export default defineApp({
|
|
||||||
name: 'Monday',
|
|
||||||
key: 'monday',
|
|
||||||
iconUrl: '{BASE_URL}/apps/monday/assets/favicon.svg',
|
|
||||||
authDocUrl: '{DOCS_URL}/apps/monday/connection',
|
|
||||||
supportsConnections: true,
|
|
||||||
baseUrl: 'https://monday.com',
|
|
||||||
apiBaseUrl: 'https://api.monday.com/v2',
|
|
||||||
primaryColor: 'F62B54',
|
|
||||||
beforeRequest: [addAuthHeader],
|
|
||||||
auth,
|
|
||||||
triggers,
|
|
||||||
actions,
|
|
||||||
dynamicData,
|
|
||||||
});
|
|
@@ -1,3 +0,0 @@
|
|||||||
import newBoards from './new-boards/index.js';
|
|
||||||
|
|
||||||
export default [newBoards];
|
|
@@ -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,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
}
|
|
||||||
},
|
|
||||||
});
|
|
@@ -1,5 +1,11 @@
|
|||||||
import createDatabaseItem from './create-database-item/index.js';
|
import createDatabaseItem from './create-database-item/index.js';
|
||||||
import createPage from './create-page/index.js';
|
import createPage from './create-page/index.js';
|
||||||
import findDatabaseItem from './find-database-item/index.js';
|
import findDatabaseItem from './find-database-item/index.js';
|
||||||
|
import updateDatabaseItem from './update-database-item/index.js';
|
||||||
|
|
||||||
export default [createDatabaseItem, createPage, findDatabaseItem];
|
export default [
|
||||||
|
createDatabaseItem,
|
||||||
|
createPage,
|
||||||
|
findDatabaseItem,
|
||||||
|
updateDatabaseItem,
|
||||||
|
];
|
||||||
|
@@ -0,0 +1,157 @@
|
|||||||
|
import defineAction from '../../../../helpers/define-action.js';
|
||||||
|
|
||||||
|
export default defineAction({
|
||||||
|
name: 'Update database item',
|
||||||
|
key: 'updateDatabaseItem',
|
||||||
|
description: 'Updates a database item.',
|
||||||
|
arguments: [
|
||||||
|
{
|
||||||
|
label: 'Database',
|
||||||
|
key: 'databaseId',
|
||||||
|
type: 'dropdown',
|
||||||
|
required: true,
|
||||||
|
variables: true,
|
||||||
|
source: {
|
||||||
|
type: 'query',
|
||||||
|
name: 'getDynamicData',
|
||||||
|
arguments: [
|
||||||
|
{
|
||||||
|
name: 'key',
|
||||||
|
value: 'listDatabases',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: 'Item',
|
||||||
|
key: 'itemId',
|
||||||
|
type: 'dropdown',
|
||||||
|
required: true,
|
||||||
|
variables: true,
|
||||||
|
dependsOn: ['parameters.databaseId'],
|
||||||
|
source: {
|
||||||
|
type: 'query',
|
||||||
|
name: 'getDynamicData',
|
||||||
|
arguments: [
|
||||||
|
{
|
||||||
|
name: 'key',
|
||||||
|
value: 'listDatabaseItems',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'parameters.databaseId',
|
||||||
|
value: '{parameters.databaseId}',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: 'Name',
|
||||||
|
key: 'name',
|
||||||
|
type: 'string',
|
||||||
|
required: false,
|
||||||
|
description:
|
||||||
|
'This field has a 2000 character limit. Any characters beyond 2000 will not be included.',
|
||||||
|
variables: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: 'Tags',
|
||||||
|
key: 'tags',
|
||||||
|
type: 'dynamic',
|
||||||
|
required: false,
|
||||||
|
description: '',
|
||||||
|
fields: [
|
||||||
|
{
|
||||||
|
label: 'Tag',
|
||||||
|
key: 'tag',
|
||||||
|
type: 'dropdown',
|
||||||
|
required: true,
|
||||||
|
variables: true,
|
||||||
|
dependsOn: ['parameters.databaseId'],
|
||||||
|
source: {
|
||||||
|
type: 'query',
|
||||||
|
name: 'getDynamicData',
|
||||||
|
arguments: [
|
||||||
|
{
|
||||||
|
name: 'key',
|
||||||
|
value: 'listTags',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'parameters.databaseId',
|
||||||
|
value: '{parameters.databaseId}',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: 'Content',
|
||||||
|
key: 'content',
|
||||||
|
type: 'string',
|
||||||
|
required: false,
|
||||||
|
description:
|
||||||
|
'You can choose to add extra text to the database item, with a limit of up to 2000 characters if desired.',
|
||||||
|
variables: true,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
|
||||||
|
async run($) {
|
||||||
|
const itemId = $.step.parameters.itemId;
|
||||||
|
const name = $.step.parameters.name;
|
||||||
|
const truncatedName = name.slice(0, 2000);
|
||||||
|
const content = $.step.parameters.content;
|
||||||
|
const truncatedContent = content.slice(0, 2000);
|
||||||
|
const tags = $.step.parameters.tags;
|
||||||
|
const formattedTags = tags
|
||||||
|
.filter((tag) => tag.tag !== '')
|
||||||
|
.map((tag) => tag.tag);
|
||||||
|
|
||||||
|
const body = {
|
||||||
|
properties: {},
|
||||||
|
};
|
||||||
|
|
||||||
|
if (truncatedName) {
|
||||||
|
body.properties.Name = {
|
||||||
|
title: [
|
||||||
|
{
|
||||||
|
text: {
|
||||||
|
content: truncatedName,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
if (formattedTags?.length) {
|
||||||
|
body.properties.Tags = {
|
||||||
|
multi_select: formattedTags.map((tag) => ({ name: tag })),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
if (truncatedContent) {
|
||||||
|
const response = await $.http.get(`/v1/blocks/${itemId}/children`);
|
||||||
|
const firstBlockId = response.data.results[0].id;
|
||||||
|
|
||||||
|
const body = {
|
||||||
|
paragraph: {
|
||||||
|
rich_text: [
|
||||||
|
{
|
||||||
|
type: 'text',
|
||||||
|
text: {
|
||||||
|
content: truncatedContent,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
await $.http.patch(`/v1/blocks/${firstBlockId}`, body);
|
||||||
|
}
|
||||||
|
|
||||||
|
const { data } = await $.http.patch(`/v1/pages/${itemId}`, body);
|
||||||
|
|
||||||
|
$.setActionItem({
|
||||||
|
raw: data,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
});
|
@@ -1,4 +1,6 @@
|
|||||||
|
import listDatabaseItems from './list-database-items/index.js';
|
||||||
import listDatabases from './list-databases/index.js';
|
import listDatabases from './list-databases/index.js';
|
||||||
import listParentPages from './list-parent-pages/index.js';
|
import listParentPages from './list-parent-pages/index.js';
|
||||||
|
import listTags from './list-tags/index.js';
|
||||||
|
|
||||||
export default [listDatabases, listParentPages];
|
export default [listDatabaseItems, listDatabases, listParentPages, listTags];
|
||||||
|
@@ -0,0 +1,38 @@
|
|||||||
|
export default {
|
||||||
|
name: 'List database items',
|
||||||
|
key: 'listDatabaseItems',
|
||||||
|
|
||||||
|
async run($) {
|
||||||
|
const databases = {
|
||||||
|
data: [],
|
||||||
|
error: null,
|
||||||
|
};
|
||||||
|
const payload = {
|
||||||
|
start_cursor: undefined,
|
||||||
|
};
|
||||||
|
const databaseId = $.step.parameters.databaseId;
|
||||||
|
|
||||||
|
if (!databaseId) {
|
||||||
|
return databases;
|
||||||
|
}
|
||||||
|
|
||||||
|
do {
|
||||||
|
const response = await $.http.post(
|
||||||
|
`/v1/databases/${databaseId}/query`,
|
||||||
|
payload
|
||||||
|
);
|
||||||
|
|
||||||
|
payload.start_cursor = response.data.next_cursor;
|
||||||
|
|
||||||
|
for (const database of response.data.results) {
|
||||||
|
databases.data.push({
|
||||||
|
value: database.id,
|
||||||
|
name:
|
||||||
|
database.properties.Name?.title?.[0]?.plain_text || 'Untitled Page',
|
||||||
|
});
|
||||||
|
}
|
||||||
|
} while (payload.start_cursor);
|
||||||
|
|
||||||
|
return databases;
|
||||||
|
},
|
||||||
|
};
|
@@ -22,7 +22,7 @@ export default {
|
|||||||
for (const database of response.data.results) {
|
for (const database of response.data.results) {
|
||||||
databases.data.push({
|
databases.data.push({
|
||||||
value: database.id,
|
value: database.id,
|
||||||
name: database.title[0].plain_text,
|
name: database.title?.[0]?.plain_text || 'Untitled Database',
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
} while (payload.start_cursor);
|
} while (payload.start_cursor);
|
||||||
|
@@ -0,0 +1,38 @@
|
|||||||
|
export default {
|
||||||
|
name: 'List tags',
|
||||||
|
key: 'listTags',
|
||||||
|
|
||||||
|
async run($) {
|
||||||
|
const tags = {
|
||||||
|
data: [],
|
||||||
|
error: null,
|
||||||
|
};
|
||||||
|
const databaseId = $.step.parameters.databaseId;
|
||||||
|
let allTags;
|
||||||
|
|
||||||
|
if (!databaseId) {
|
||||||
|
return tags;
|
||||||
|
}
|
||||||
|
|
||||||
|
const response = await $.http.get(`/v1/databases/${databaseId}`);
|
||||||
|
const tagsExist =
|
||||||
|
response.data.properties.Tags.multi_select.options.length !== 0;
|
||||||
|
|
||||||
|
if (tagsExist) {
|
||||||
|
allTags = response.data.properties.Tags.multi_select.options.map(
|
||||||
|
(tag) => tag.name
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
return tags;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const tag of allTags) {
|
||||||
|
tags.data.push({
|
||||||
|
value: tag,
|
||||||
|
name: tag,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return tags;
|
||||||
|
},
|
||||||
|
};
|
@@ -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],
|
||||||
|
@@ -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',
|
||||||
|
@@ -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: '',
|
||||||
|
@@ -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],
|
||||||
|
@@ -64,17 +64,32 @@ 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',
|
label: 'Qualified (Pipeline)',
|
||||||
name: 'getDynamicData',
|
value: 1,
|
||||||
arguments: [
|
},
|
||||||
{
|
{
|
||||||
name: 'key',
|
label: 'Contact Made (Pipeline)',
|
||||||
value: 'listStages',
|
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',
|
||||||
|
@@ -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,
|
||||||
];
|
];
|
||||||
|
@@ -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;
|
|
||||||
},
|
|
||||||
};
|
|
@@ -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],
|
||||||
|
@@ -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',
|
||||||
|
@@ -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: '',
|
||||||
|
@@ -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,
|
||||||
|
@@ -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],
|
||||||
|
@@ -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',
|
||||||
|
@@ -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: '',
|
||||||
|
@@ -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: '',
|
||||||
|
@@ -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',
|
||||||
|
@@ -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],
|
||||||
|
@@ -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: '',
|
||||||
|
@@ -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',
|
||||||
|
@@ -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: '',
|
||||||
|
@@ -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',
|
||||||
|
@@ -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',
|
||||||
|
@@ -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',
|
||||||
|
@@ -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',
|
||||||
|
@@ -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',
|
||||||
|
@@ -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],
|
||||||
|
@@ -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',
|
||||||
|
@@ -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',
|
||||||
|
@@ -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',
|
||||||
|
@@ -1,3 +0,0 @@
|
|||||||
import respondWith from './respond-with/index.js';
|
|
||||||
|
|
||||||
export default [respondWith];
|
|
@@ -1,69 +0,0 @@
|
|||||||
import defineAction from '../../../../helpers/define-action.js';
|
|
||||||
|
|
||||||
export default defineAction({
|
|
||||||
name: 'Respond with',
|
|
||||||
key: 'respondWith',
|
|
||||||
description: 'Respond with defined JSON body.',
|
|
||||||
arguments: [
|
|
||||||
{
|
|
||||||
label: 'Status code',
|
|
||||||
key: 'statusCode',
|
|
||||||
type: 'string',
|
|
||||||
required: true,
|
|
||||||
variables: true,
|
|
||||||
value: '200',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: 'Headers',
|
|
||||||
key: 'headers',
|
|
||||||
type: 'dynamic',
|
|
||||||
required: false,
|
|
||||||
description: 'Add or remove headers as needed',
|
|
||||||
fields: [
|
|
||||||
{
|
|
||||||
label: 'Key',
|
|
||||||
key: 'key',
|
|
||||||
type: 'string',
|
|
||||||
required: true,
|
|
||||||
description: 'Header key',
|
|
||||||
variables: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: 'Value',
|
|
||||||
key: 'value',
|
|
||||||
type: 'string',
|
|
||||||
required: true,
|
|
||||||
description: 'Header value',
|
|
||||||
variables: true,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: 'Body',
|
|
||||||
key: 'body',
|
|
||||||
type: 'string',
|
|
||||||
required: true,
|
|
||||||
description: 'The content of the response body.',
|
|
||||||
variables: true,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
|
|
||||||
async run($) {
|
|
||||||
const statusCode = parseInt($.step.parameters.statusCode, 10);
|
|
||||||
const body = $.step.parameters.body;
|
|
||||||
const headers = $.step.parameters.headers.reduce((result, entry) => {
|
|
||||||
return {
|
|
||||||
...result,
|
|
||||||
[entry.key]: entry.value,
|
|
||||||
};
|
|
||||||
}, {});
|
|
||||||
|
|
||||||
$.setActionItem({
|
|
||||||
raw: {
|
|
||||||
headers,
|
|
||||||
body,
|
|
||||||
statusCode,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
},
|
|
||||||
});
|
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user