n8n-nodes-innotes 2.0.3 → 2.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -52,10 +52,17 @@ class InNotesApi {
52
52
  // NodeApiError before building the request), so that advice would break
53
53
  // the very action the field exists for.
54
54
  // Author: Marco — 2026-08-03
55
- description: 'Required for the "Report Job Created" action that action fails without it. ' +
56
- 'InNotes fills this in automatically when it provisions your automation. The value ' +
57
- 'is not displayed anywhere in the dashboard, so a credential built by hand needs it ' +
58
- 'from whoever provisioned the workflow.',
55
+ // Nor does it say the VALUE has to be obtained from somewhere. Since the
56
+ // callback started authenticating with the API token above, the server
57
+ // compares this secret only when no token is present and the node
58
+ // always sends one. What still matters is that the field is non-empty,
59
+ // because the node checks that locally before it builds the request.
60
+ // Saying otherwise stranded anyone whose credential predates this field:
61
+ // provisioning writes it once and there is no back-fill.
62
+ description: 'Required for the "Report Job Created" action — the node refuses to run without a ' +
63
+ 'value. InNotes fills it in automatically when it provisions your automation. If you ' +
64
+ 'are setting this credential up by hand, any non-empty value will do: the callback ' +
65
+ 'authenticates with the API token above.',
59
66
  },
60
67
  {
61
68
  displayName: 'Allowed Domains',
@@ -1 +1 @@
1
- {"version":3,"sources":["../credentials/InNotesApi.credentials.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAUH,MAAa,UAAU;IAAvB;QACC,SAAI,GAAG,YAAY,CAAC;QACpB,gBAAW,GAAG,aAAa,CAAC;QAC5B,qBAAgB,GAAG,oBAAoB,CAAC;QACxC,SAAI,GAAS,mBAAmB,CAAC;QACjC,eAAU,GAAsB;YAC/B;gBACC,WAAW,EAAE,UAAU;gBACvB,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,oBAAoB;gBAC7B,WAAW,EAAE,uCAAuC;gBACpD,QAAQ,EAAE,IAAI;aACd;YACD;gBACC,WAAW,EAAE,cAAc;gBAC3B,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE;oBACZ,QAAQ,EAAE,IAAI;iBACd;gBACD,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,yEAAyE;gBACtF,QAAQ,EAAE,IAAI;aACd;YACD;gBACC,WAAW,EAAE,iBAAiB;gBAC9B,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE;oBACZ,QAAQ,EAAE,IAAI;iBACd;gBACD,OAAO,EAAE,EAAE;gBACX,gEAAgE;gBAChE,2EAA2E;gBAC3E,yEAAyE;gBACzE,sEAAsE;gBACtE,mEAAmE;gBACnE,uEAAuE;gBACvE,EAAE;gBACF,qEAAqE;gBACrE,+DAA+D;gBAC/D,wEAAwE;gBACxE,wCAAwC;gBACxC,6BAA6B;gBAC7B,WAAW,EACV,+EAA+E;oBAC/E,oFAAoF;oBACpF,qFAAqF;oBACrF,wCAAwC;aACzC;YACD;gBACC,WAAW,EAAE,iBAAiB;gBAC9B,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,GAAG;gBACZ,WAAW,EAAE,wDAAwD;aACrE;SACD,CAAC;QAEF,iBAAY,GAAyB;YACpC,IAAI,EAAE,SAAS;YACf,UAAU,EAAE;gBACX,OAAO,EAAE;oBACR,eAAe,EAAE,gCAAgC;iBACjD;aACD;SACD,CAAC;QAEF,SAAI,GAA2B;YAC9B,OAAO,EAAE;gBACR,OAAO,EAAE,2BAA2B;gBACpC,GAAG,EAAE,WAAW;gBAChB,MAAM,EAAE,KAAK;aACb;SACD,CAAC;IACH,CAAC;CAAA;AA5ED,gCA4EC","file":"InNotesApi.credentials.js","sourcesContent":["/**\n * Author: Marco Visin\n * Date: 2025-06-02\n * Updated to support Bearer token authentication\n */\n\nimport {\n\tIAuthenticateGeneric,\n\tICredentialTestRequest,\n\tICredentialType,\n\tINodeProperties,\n\tIcon,\n} from 'n8n-workflow';\n\nexport class InNotesApi implements ICredentialType {\n\tname = 'inNotesApi';\n\tdisplayName = 'InNotes API';\n\tdocumentationUrl = 'https://innotes.me';\n\ticon: Icon = 'file:Logo_128.png';\n\tproperties: INodeProperties[] = [\n\t\t{\n\t\t\tdisplayName: 'Base URL',\n\t\t\tname: 'baseUrl',\n\t\t\ttype: 'string',\n\t\t\tdefault: 'https://innotes.me',\n\t\t\tdescription: 'The base URL of your InNotes instance',\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tdisplayName: 'Bearer Token',\n\t\t\tname: 'token',\n\t\t\ttype: 'string',\n\t\t\ttypeOptions: {\n\t\t\t\tpassword: true,\n\t\t\t},\n\t\t\tdefault: '',\n\t\t\tdescription: 'Your InNotes API Bearer token. Generate one in your dashboard settings.',\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tdisplayName: 'Callback Secret',\n\t\t\tname: 'callbackSecret',\n\t\t\ttype: 'string',\n\t\t\ttypeOptions: {\n\t\t\t\tpassword: true,\n\t\t\t},\n\t\t\tdefault: '',\n\t\t\t// The old text said \"Found in your InNotes dashboard automation\n\t\t\t// settings\". That screen exists (app/dashboard/profile/AutomationSettings)\n\t\t\t// and renders no secret — the value is injected server-side when InNotes\n\t\t\t// provisions the credential, and the identifier appears nowhere under\n\t\t\t// app/ or components/. So the instruction could not be followed by\n\t\t\t// anyone setting this up by hand, which is the only case it addressed.\n\t\t\t//\n\t\t\t// It does NOT say \"optional, leave it empty\" either: the node throws\n\t\t\t// without it (InNotes.node.ts checks callbackSecret and raises\n\t\t\t// NodeApiError before building the request), so that advice would break\n\t\t\t// the very action the field exists for.\n\t\t\t// Author: Marco — 2026-08-03\n\t\t\tdescription:\n\t\t\t\t'Required for the \"Report Job Created\" action — that action fails without it. ' +\n\t\t\t\t'InNotes fills this in automatically when it provisions your automation. The value ' +\n\t\t\t\t'is not displayed anywhere in the dashboard, so a credential built by hand needs it ' +\n\t\t\t\t'from whoever provisioned the workflow.',\n\t\t},\n\t\t{\n\t\t\tdisplayName: 'Allowed Domains',\n\t\t\tname: 'allowedDomains',\n\t\t\ttype: 'string',\n\t\t\tdefault: '*',\n\t\t\tdescription: 'Domains allowed to use this credential (use * for all)',\n\t\t},\n\t];\n\n\tauthenticate: IAuthenticateGeneric = {\n\t\ttype: 'generic',\n\t\tproperties: {\n\t\t\theaders: {\n\t\t\t\t'Authorization': '=Bearer {{$credentials.token}}',\n\t\t\t},\n\t\t},\n\t};\n\n\ttest: ICredentialTestRequest = {\n\t\trequest: {\n\t\t\tbaseURL: '={{$credentials.baseUrl}}',\n\t\t\turl: '/api/user',\n\t\t\tmethod: 'GET',\n\t\t},\n\t};\n}\n"]}
1
+ {"version":3,"sources":["../credentials/InNotesApi.credentials.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAUH,MAAa,UAAU;IAAvB;QACC,SAAI,GAAG,YAAY,CAAC;QACpB,gBAAW,GAAG,aAAa,CAAC;QAC5B,qBAAgB,GAAG,oBAAoB,CAAC;QACxC,SAAI,GAAS,mBAAmB,CAAC;QACjC,eAAU,GAAsB;YAC/B;gBACC,WAAW,EAAE,UAAU;gBACvB,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,oBAAoB;gBAC7B,WAAW,EAAE,uCAAuC;gBACpD,QAAQ,EAAE,IAAI;aACd;YACD;gBACC,WAAW,EAAE,cAAc;gBAC3B,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE;oBACZ,QAAQ,EAAE,IAAI;iBACd;gBACD,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,yEAAyE;gBACtF,QAAQ,EAAE,IAAI;aACd;YACD;gBACC,WAAW,EAAE,iBAAiB;gBAC9B,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE;oBACZ,QAAQ,EAAE,IAAI;iBACd;gBACD,OAAO,EAAE,EAAE;gBACX,gEAAgE;gBAChE,2EAA2E;gBAC3E,yEAAyE;gBACzE,sEAAsE;gBACtE,mEAAmE;gBACnE,uEAAuE;gBACvE,EAAE;gBACF,qEAAqE;gBACrE,+DAA+D;gBAC/D,wEAAwE;gBACxE,wCAAwC;gBACxC,6BAA6B;gBAC7B,yEAAyE;gBACzE,uEAAuE;gBACvE,oEAAoE;gBACpE,uEAAuE;gBACvE,qEAAqE;gBACrE,yEAAyE;gBACzE,yDAAyD;gBACzD,WAAW,EACV,mFAAmF;oBACnF,sFAAsF;oBACtF,oFAAoF;oBACpF,yCAAyC;aAC1C;YACD;gBACC,WAAW,EAAE,iBAAiB;gBAC9B,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,GAAG;gBACZ,WAAW,EAAE,wDAAwD;aACrE;SACD,CAAC;QAEF,iBAAY,GAAyB;YACpC,IAAI,EAAE,SAAS;YACf,UAAU,EAAE;gBACX,OAAO,EAAE;oBACR,eAAe,EAAE,gCAAgC;iBACjD;aACD;SACD,CAAC;QAEF,SAAI,GAA2B;YAC9B,OAAO,EAAE;gBACR,OAAO,EAAE,2BAA2B;gBACpC,GAAG,EAAE,WAAW;gBAChB,MAAM,EAAE,KAAK;aACb;SACD,CAAC;IACH,CAAC;CAAA;AAnFD,gCAmFC","file":"InNotesApi.credentials.js","sourcesContent":["/**\n * Author: Marco Visin\n * Date: 2025-06-02\n * Updated to support Bearer token authentication\n */\n\nimport {\n\tIAuthenticateGeneric,\n\tICredentialTestRequest,\n\tICredentialType,\n\tINodeProperties,\n\tIcon,\n} from 'n8n-workflow';\n\nexport class InNotesApi implements ICredentialType {\n\tname = 'inNotesApi';\n\tdisplayName = 'InNotes API';\n\tdocumentationUrl = 'https://innotes.me';\n\ticon: Icon = 'file:Logo_128.png';\n\tproperties: INodeProperties[] = [\n\t\t{\n\t\t\tdisplayName: 'Base URL',\n\t\t\tname: 'baseUrl',\n\t\t\ttype: 'string',\n\t\t\tdefault: 'https://innotes.me',\n\t\t\tdescription: 'The base URL of your InNotes instance',\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tdisplayName: 'Bearer Token',\n\t\t\tname: 'token',\n\t\t\ttype: 'string',\n\t\t\ttypeOptions: {\n\t\t\t\tpassword: true,\n\t\t\t},\n\t\t\tdefault: '',\n\t\t\tdescription: 'Your InNotes API Bearer token. Generate one in your dashboard settings.',\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tdisplayName: 'Callback Secret',\n\t\t\tname: 'callbackSecret',\n\t\t\ttype: 'string',\n\t\t\ttypeOptions: {\n\t\t\t\tpassword: true,\n\t\t\t},\n\t\t\tdefault: '',\n\t\t\t// The old text said \"Found in your InNotes dashboard automation\n\t\t\t// settings\". That screen exists (app/dashboard/profile/AutomationSettings)\n\t\t\t// and renders no secret — the value is injected server-side when InNotes\n\t\t\t// provisions the credential, and the identifier appears nowhere under\n\t\t\t// app/ or components/. So the instruction could not be followed by\n\t\t\t// anyone setting this up by hand, which is the only case it addressed.\n\t\t\t//\n\t\t\t// It does NOT say \"optional, leave it empty\" either: the node throws\n\t\t\t// without it (InNotes.node.ts checks callbackSecret and raises\n\t\t\t// NodeApiError before building the request), so that advice would break\n\t\t\t// the very action the field exists for.\n\t\t\t// Author: Marco — 2026-08-03\n\t\t\t// Nor does it say the VALUE has to be obtained from somewhere. Since the\n\t\t\t// callback started authenticating with the API token above, the server\n\t\t\t// compares this secret only when no token is present — and the node\n\t\t\t// always sends one. What still matters is that the field is non-empty,\n\t\t\t// because the node checks that locally before it builds the request.\n\t\t\t// Saying otherwise stranded anyone whose credential predates this field:\n\t\t\t// provisioning writes it once and there is no back-fill.\n\t\t\tdescription:\n\t\t\t\t'Required for the \"Report Job Created\" action — the node refuses to run without a ' +\n\t\t\t\t'value. InNotes fills it in automatically when it provisions your automation. If you ' +\n\t\t\t\t'are setting this credential up by hand, any non-empty value will do: the callback ' +\n\t\t\t\t'authenticates with the API token above.',\n\t\t},\n\t\t{\n\t\t\tdisplayName: 'Allowed Domains',\n\t\t\tname: 'allowedDomains',\n\t\t\ttype: 'string',\n\t\t\tdefault: '*',\n\t\t\tdescription: 'Domains allowed to use this credential (use * for all)',\n\t\t},\n\t];\n\n\tauthenticate: IAuthenticateGeneric = {\n\t\ttype: 'generic',\n\t\tproperties: {\n\t\t\theaders: {\n\t\t\t\t'Authorization': '=Bearer {{$credentials.token}}',\n\t\t\t},\n\t\t},\n\t};\n\n\ttest: ICredentialTestRequest = {\n\t\trequest: {\n\t\t\tbaseURL: '={{$credentials.baseUrl}}',\n\t\t\turl: '/api/user',\n\t\t\tmethod: 'GET',\n\t\t},\n\t};\n}\n"]}
@@ -57,11 +57,18 @@ export class InNotesApi implements ICredentialType {
57
57
  // NodeApiError before building the request), so that advice would break
58
58
  // the very action the field exists for.
59
59
  // Author: Marco — 2026-08-03
60
+ // Nor does it say the VALUE has to be obtained from somewhere. Since the
61
+ // callback started authenticating with the API token above, the server
62
+ // compares this secret only when no token is present — and the node
63
+ // always sends one. What still matters is that the field is non-empty,
64
+ // because the node checks that locally before it builds the request.
65
+ // Saying otherwise stranded anyone whose credential predates this field:
66
+ // provisioning writes it once and there is no back-fill.
60
67
  description:
61
- 'Required for the "Report Job Created" action — that action fails without it. ' +
62
- 'InNotes fills this in automatically when it provisions your automation. The value ' +
63
- 'is not displayed anywhere in the dashboard, so a credential built by hand needs it ' +
64
- 'from whoever provisioned the workflow.',
68
+ 'Required for the "Report Job Created" action — the node refuses to run without a ' +
69
+ 'value. InNotes fills it in automatically when it provisions your automation. If you ' +
70
+ 'are setting this credential up by hand, any non-empty value will do: the callback ' +
71
+ 'authenticates with the API token above.',
65
72
  },
66
73
  {
67
74
  displayName: 'Allowed Domains',
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "n8n-nodes-innotes",
3
- "version": "2.0.3",
3
+ "version": "2.0.4",
4
4
  "description": "N8N node for InNotes CRM API integration",
5
5
  "keywords": [
6
6
  "n8n-community-node-package",
@@ -49,17 +49,17 @@
49
49
  ]
50
50
  },
51
51
  "devDependencies": {
52
- "@eslint/js": "^9.15.0",
53
- "@types/jest": "^29.5.5",
54
- "@types/node": "^18.16.16",
52
+ "@eslint/js": "^10.0.1",
53
+ "@types/jest": "^30.0.0",
54
+ "@types/node": "^26.1.1",
55
55
  "eslint": "^10.2.0",
56
56
  "gulp": "^5.0.1",
57
57
  "gulp-clean": "^0.4.0",
58
58
  "gulp-sourcemaps": "^3.0.0",
59
59
  "gulp-typescript": "^6.0.0-alpha.1",
60
- "jest": "^29.6.4",
61
- "n8n-core": "1.122.18",
62
- "n8n-workflow": "1.120.10",
60
+ "jest": "^30.4.2",
61
+ "n8n-core": "2.16.1",
62
+ "n8n-workflow": "2.16.0",
63
63
  "prettier": "^3.0.3",
64
64
  "ts-jest": "^29.1.1",
65
65
  "typescript": "^5.2.2",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "n8n-nodes-innotes",
3
- "version": "2.0.3",
3
+ "version": "2.0.4",
4
4
  "description": "N8N node for InNotes CRM API integration",
5
5
  "keywords": [
6
6
  "n8n-community-node-package",
@@ -49,17 +49,17 @@
49
49
  ]
50
50
  },
51
51
  "devDependencies": {
52
- "@eslint/js": "^9.15.0",
53
- "@types/jest": "^29.5.5",
54
- "@types/node": "^18.16.16",
52
+ "@eslint/js": "^10.0.1",
53
+ "@types/jest": "^30.0.0",
54
+ "@types/node": "^26.1.1",
55
55
  "eslint": "^10.2.0",
56
56
  "gulp": "^5.0.1",
57
57
  "gulp-clean": "^0.4.0",
58
58
  "gulp-sourcemaps": "^3.0.0",
59
59
  "gulp-typescript": "^6.0.0-alpha.1",
60
- "jest": "^29.6.4",
61
- "n8n-core": "1.122.18",
62
- "n8n-workflow": "1.120.10",
60
+ "jest": "^30.4.2",
61
+ "n8n-core": "2.16.1",
62
+ "n8n-workflow": "2.16.0",
63
63
  "prettier": "^3.0.3",
64
64
  "ts-jest": "^29.1.1",
65
65
  "typescript": "^5.2.2",