Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Empty file.
34 changes: 34 additions & 0 deletions packages/n8n-nodes-echo/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# @merit-systems/n8n-nodes-echo

This is an n8n community node. It lets you use Echo API and GitHub Issues in your n8n workflows.

[Installation](#installation)
[Operations](#operations)
[Credentials](#credentials)
[Compatibility](#compatibility)
[Resources](#resources)

## Installation

Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.

## Operations

### Echo

- Echo Chat Model
- Send a chat message to any AI model through Echo

## Credentials

### Echo API

To use the Echo node, you can either generate an API key from the Echo App Dashboard, or connect Echo with Oauth in the node.

## Compatibility

Compatible with [email protected] or later

## Resources

- [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
39 changes: 39 additions & 0 deletions packages/n8n-nodes-echo/credentials/EchoApi.credentials.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
import { ICredentialType, INodeProperties } from 'n8n-workflow';

export class EchoApi implements ICredentialType {
name = 'echoApi';
displayName = 'Echo API';
documentationUrl =
'https://echo.merit.systems/app/1cf92670-39b3-422f-8a9f-86ee7bee5556/keys?generate=true';
properties: INodeProperties[] = [
{
displayName: 'API Key',
name: 'apiKey',
type: 'string',
typeOptions: {
password: true,
},
default: '',
required: true,
description:
'Get your API key at https://echo.merit.systems/app/1cf92670-39b3-422f-8a9f-86ee7bee5556/keys?generate=true',
},
{
displayName: 'App ID',
name: 'appId',
type: 'string',
default: '1cf92670-39b3-422f-8a9f-86ee7bee5556',
required: false,
description: 'The Echo App ID for your application',
},
{
displayName: 'Base URL',
name: 'baseUrl',
type: 'string',
default: 'https://echo.router.merit.systems',
required: false,
description:
'The base URL for the Echo API (default: https://echo.router.merit.systems)',
},
];
}
84 changes: 84 additions & 0 deletions packages/n8n-nodes-echo/credentials/EchoOAuth2Api.credentials.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
import type { Icon, ICredentialType, INodeProperties } from 'n8n-workflow';

export class EchoOAuth2Api implements ICredentialType {
name = 'echoOAuth2Api';

extends = ['oAuth2Api'];

displayName = 'Echo OAuth2 API';

icon: Icon = 'file:../icons/github.svg';

documentationUrl = 'https://echo.merit.systems/docs';

properties: INodeProperties[] = [
{
displayName: 'Grant Type',
name: 'grantType',
type: 'hidden',
default: 'pkce',
},
{
displayName: 'Echo Base URL',
name: 'baseUrl',
type: 'hidden',
default: 'https://echo.router.merit.systems',
required: false,
description: 'The base URL for your Echo instance',
},
{
displayName: 'Authorization URL',
name: 'authUrl',
type: 'hidden',
default: 'https://echo.merit.systems/api/oauth/authorize',
required: true,
},
{
displayName: 'Access Token URL',
name: 'accessTokenUrl',
type: 'hidden',
default: 'https://echo.merit.systems/api/oauth/token',
required: true,
},
{
displayName: 'Scope',
name: 'scope',
type: 'hidden',
default: 'llm:invoke offline_access',
description:
'OAuth2 scopes separated by spaces. Default includes LLM invocation and refresh token access.',
},
{
displayName: 'Client ID',
name: 'clientId',
type: 'string',
default: '1cf92670-39b3-422f-8a9f-86ee7bee5556',
required: true,
description: 'The Echo App ID for your application',
},
{
displayName: 'Client Secret',
name: 'clientSecret',
type: 'hidden',
typeOptions: {
password: true,
},
default: '',
required: false,
description:
'Not required for Echo OAuth2. Echo uses PKCE (Proof Key for Code Exchange) for security instead of client secrets.',
},
{
displayName: 'Auth URI Query Parameters',
name: 'authQueryParameters',
type: 'hidden',
default: '',
},
{
displayName: 'Authentication',
name: 'authentication',
type: 'hidden',
default: 'header',
},
];
}
3 changes: 3 additions & 0 deletions packages/n8n-nodes-echo/eslint.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import { config } from '@n8n/node-cli/eslint';

export default config;
66 changes: 66 additions & 0 deletions packages/n8n-nodes-echo/icons/logo/dark.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
53 changes: 53 additions & 0 deletions packages/n8n-nodes-echo/icons/logo/dark_horizontal.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
66 changes: 66 additions & 0 deletions packages/n8n-nodes-echo/icons/logo/light.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading