UNPKG

n8n-nodes-innotes

Version:

N8N node for InNotes CRM API integration

95 lines (93 loc) 4.07 kB
"use strict"; /** * Author: Marco Visin * Date: 2025-06-02 * Updated to support Bearer token authentication */ Object.defineProperty(exports, "__esModule", { value: true }); exports.InNotesApi = void 0; class InNotesApi { constructor() { this.name = 'inNotesApi'; this.displayName = 'InNotes API'; this.documentationUrl = 'https://innotes.me'; this.icon = 'file:Logo_128.png'; this.properties = [ { displayName: 'Base URL', name: 'baseUrl', type: 'string', default: 'https://innotes.me', description: 'The base URL of your InNotes instance', required: true, }, { displayName: 'Bearer Token', name: 'token', type: 'string', typeOptions: { password: true, }, default: '', description: 'Your InNotes API Bearer token. Generate one in your dashboard settings.', required: true, }, { displayName: 'Callback Secret', name: 'callbackSecret', type: 'string', typeOptions: { password: true, }, default: '', // The old text said "Found in your InNotes dashboard automation // settings". That screen exists (app/dashboard/profile/AutomationSettings) // and renders no secret — the value is injected server-side when InNotes // provisions the credential, and the identifier appears nowhere under // app/ or components/. So the instruction could not be followed by // anyone setting this up by hand, which is the only case it addressed. // // It does NOT say "optional, leave it empty" either: the node throws // without it (InNotes.node.ts checks callbackSecret and raises // NodeApiError before building the request), so that advice would break // the very action the field exists for. // Author: Marco — 2026-08-03 // Nor does it say the VALUE has to be obtained from somewhere. Since the // callback started authenticating with the API token above, the server // compares this secret only when no token is present — and the node // always sends one. What still matters is that the field is non-empty, // because the node checks that locally before it builds the request. // Saying otherwise stranded anyone whose credential predates this field: // provisioning writes it once and there is no back-fill. description: 'Required for the "Report Job Created" action — the node refuses to run without a ' + 'value. InNotes fills it in automatically when it provisions your automation. If you ' + 'are setting this credential up by hand, any non-empty value will do: the callback ' + 'authenticates with the API token above.', }, { displayName: 'Allowed Domains', name: 'allowedDomains', type: 'string', default: '*', description: 'Domains allowed to use this credential (use * for all)', }, ]; this.authenticate = { type: 'generic', properties: { headers: { 'Authorization': '=Bearer {{$credentials.token}}', }, }, }; this.test = { request: { baseURL: '={{$credentials.baseUrl}}', url: '/api/user', method: 'GET', }, }; } } exports.InNotesApi = InNotesApi; //# sourceMappingURL=InNotesApi.credentials.js.map