diff --git a/packages/backend/src/apps/http-request/actions/custom-request/index.ts b/packages/backend/src/apps/http-request/actions/custom-request/index.ts new file mode 100644 index 00000000..a7a88d76 --- /dev/null +++ b/packages/backend/src/apps/http-request/actions/custom-request/index.ts @@ -0,0 +1,62 @@ +import defineAction from '../../../../helpers/define-action'; + +type TMethod = 'GET' | 'POST' | 'PATCH' | 'PUT' | 'DELETE'; + +export default defineAction({ + name: 'Custom Request', + key: 'customRequest', + description: 'Makes a custom HTTP request by providing raw details.', + arguments: [ + { + label: 'Method', + key: 'method', + type: 'dropdown' as const, + required: true, + description: + `The HTTP method we'll use to perform the request.`, + value: 'GET', + options: [ + { label: 'DELETE', value: 'DELETE' }, + { label: 'GET', value: 'GET' }, + { label: 'PATCH', value: 'PATCH' }, + { label: 'POST', value: 'POST' }, + { label: 'PUT', value: 'PUT' }, + ] + }, + { + label: 'URL', + key: 'url', + type: 'string' as const, + required: true, + description: 'Any URL with a querystring will be re-encoded properly.', + variables: true, + }, + { + label: 'Data', + key: 'data', + type: 'string' as const, + required: true, + description: 'Place raw JSON data here.', + variables: true, + }, + ], + + async run($) { + const method = $.step.parameters.method as TMethod; + const data = $.step.parameters.data as string; + const url = $.step.parameters.url as string; + + const response = await $.http.request( + { + url, + method, + data, + headers: { + 'Content-Type': 'application/json' + } + } + ); + + $.setActionItem({ raw: response.data }); + }, +}); diff --git a/packages/backend/src/apps/http-request/actions/index.ts b/packages/backend/src/apps/http-request/actions/index.ts new file mode 100644 index 00000000..2bfac8fc --- /dev/null +++ b/packages/backend/src/apps/http-request/actions/index.ts @@ -0,0 +1,3 @@ +import customRequest from './custom-request'; + +export default [customRequest]; diff --git a/packages/backend/src/apps/http-request/assets/favicon.svg b/packages/backend/src/apps/http-request/assets/favicon.svg new file mode 100644 index 00000000..87c7dae5 --- /dev/null +++ b/packages/backend/src/apps/http-request/assets/favicon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/backend/src/apps/http-request/index.d.ts b/packages/backend/src/apps/http-request/index.d.ts new file mode 100644 index 00000000..e69de29b diff --git a/packages/backend/src/apps/http-request/index.ts b/packages/backend/src/apps/http-request/index.ts new file mode 100644 index 00000000..9b6cc169 --- /dev/null +++ b/packages/backend/src/apps/http-request/index.ts @@ -0,0 +1,14 @@ +import defineApp from '../../helpers/define-app'; +import actions from './actions'; + +export default defineApp({ + name: 'HTTP Request', + key: 'http-request', + iconUrl: '{BASE_URL}/apps/http-request/assets/favicon.svg', + authDocUrl: 'https://automatisch.io/docs/apps/http-request/connection', + supportsConnections: false, + baseUrl: '', + apiBaseUrl: '', + primaryColor: '000000', + actions, +}); diff --git a/packages/docs/pages/.vitepress/config.js b/packages/docs/pages/.vitepress/config.js index 94b9d11f..3a16f115 100644 --- a/packages/docs/pages/.vitepress/config.js +++ b/packages/docs/pages/.vitepress/config.js @@ -78,6 +78,15 @@ export default defineConfig({ { text: 'Connection', link: '/apps/github/connection' }, ], }, + { + text: 'HTTP Request', + collapsible: true, + collapsed: true, + items: [ + { text: 'Actions', link: '/apps/http-request/actions' }, + { text: 'Connection', link: '/apps/http-request/connection' }, + ], + }, { text: 'Ntfy', collapsible: true, diff --git a/packages/docs/pages/apps/http-request/actions.md b/packages/docs/pages/apps/http-request/actions.md new file mode 100644 index 00000000..4ecd45aa --- /dev/null +++ b/packages/docs/pages/apps/http-request/actions.md @@ -0,0 +1,12 @@ +--- +favicon: /favicons/http-request.svg +items: + - name: Custom Request + desc: Makes a custom HTTP request by providing raw details. +--- + + + + diff --git a/packages/docs/pages/apps/http-request/connection.md b/packages/docs/pages/apps/http-request/connection.md new file mode 100644 index 00000000..53c9974a --- /dev/null +++ b/packages/docs/pages/apps/http-request/connection.md @@ -0,0 +1,3 @@ +# HTTP Request + +HTTP Request is a built-in app shipped with Automatisch, and it doesn't need to talk with any other external service to run. So there are no additional steps to use the HTTP Request app. diff --git a/packages/docs/pages/guide/available-apps.md b/packages/docs/pages/guide/available-apps.md index 5c96ad79..5874ca0c 100644 --- a/packages/docs/pages/guide/available-apps.md +++ b/packages/docs/pages/guide/available-apps.md @@ -11,9 +11,10 @@ Following integrations are currently supported by Automatisch. - [Discord](/apps/discord/actions) - [Flickr](/apps/flickr/triggers) - [Github](/apps/github/triggers) -- [RSS](/apps/rss/triggers) +- [HTTP Request](/apps/http-request/actions) - [Ntfy](/apps/ntfy/actions) - [OpenAI](/apps/openai/actions) +- [RSS](/apps/rss/triggers) - [Salesforce](/apps/salesforce/triggers) - [Scheduler](/apps/scheduler/triggers) - [Slack](/apps/slack/actions) diff --git a/packages/docs/pages/public/favicons/http-request.svg b/packages/docs/pages/public/favicons/http-request.svg new file mode 100644 index 00000000..87c7dae5 --- /dev/null +++ b/packages/docs/pages/public/favicons/http-request.svg @@ -0,0 +1 @@ + \ No newline at end of file