n8n-nodes-checkmob 0.1.0

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.
package/README.md ADDED
@@ -0,0 +1,33 @@
1
+ # n8n-nodes-checkmob
2
+
3
+ [![npm version](https://img.shields.io/npm/v/n8n-nodes-checkmob)](https://www.npmjs.com/package/n8n-nodes-checkmob)
4
+
5
+ Official n8n community node for **[Checkmob](https://checkmob.com)** — field service management platform.
6
+
7
+ ## Resources (v0.1.0)
8
+
9
+ | Resource | Operations |
10
+ |---|---|
11
+ | Category | List |
12
+
13
+ ## Credentials
14
+
15
+ 1. Get your Bearer Token via `POST /api/v1/auth/login`
16
+ 2. In n8n go to **Credentials → New → Checkmob API**
17
+ 3. Paste your **Bearer Token**
18
+
19
+ ## Installation (self-hosted n8n)
20
+
21
+ Go to **Settings → Community Nodes → Install** and enter:
22
+
23
+ ```
24
+ n8n-nodes-checkmob
25
+ ```
26
+
27
+ ## API Docs
28
+
29
+ [https://api-integration.checkmob.com/index.html](https://api-integration.checkmob.com/index.html)
30
+
31
+ ## License
32
+
33
+ MIT
@@ -0,0 +1,10 @@
1
+ import type { IAuthenticateGeneric, ICredentialTestRequest, ICredentialType, INodeProperties } from 'n8n-workflow';
2
+ export declare class CheckmobApi implements ICredentialType {
3
+ name: string;
4
+ displayName: string;
5
+ documentationUrl: string;
6
+ icon: "file:checkmob.svg";
7
+ properties: INodeProperties[];
8
+ authenticate: IAuthenticateGeneric;
9
+ test: ICredentialTestRequest;
10
+ }
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CheckmobApi = void 0;
4
+ class CheckmobApi {
5
+ constructor() {
6
+ this.name = 'checkmobApi';
7
+ this.displayName = 'Checkmob API';
8
+ this.documentationUrl = 'https://api-integration.checkmob.com/index.html';
9
+ this.icon = 'file:checkmob.svg';
10
+ this.properties = [
11
+ {
12
+ displayName: 'Base URL',
13
+ name: 'baseUrl',
14
+ type: 'string',
15
+ default: 'https://api-integration.checkmob.com',
16
+ required: true,
17
+ },
18
+ {
19
+ displayName: 'Bearer Token',
20
+ name: 'accessToken',
21
+ type: 'string',
22
+ typeOptions: { password: true },
23
+ default: '',
24
+ required: true,
25
+ description: 'Token obtido via POST /api/v1/auth/login',
26
+ },
27
+ ];
28
+ // Injeta Authorization: Bearer <token> em todos os requests
29
+ this.authenticate = {
30
+ type: 'generic',
31
+ properties: {
32
+ headers: {
33
+ Authorization: '=Bearer {{$credentials.accessToken}}',
34
+ },
35
+ },
36
+ };
37
+ // Testa a credencial chamando um endpoint leve
38
+ this.test = {
39
+ request: {
40
+ baseURL: '={{$credentials.baseUrl}}',
41
+ url: '/api/v1/category/list',
42
+ method: 'POST',
43
+ headers: {
44
+ 'Accept-Language': 'pt-BR',
45
+ 'Content-Type': 'application/json',
46
+ },
47
+ body: {
48
+ numberOfRows: 1,
49
+ numberOfRowsSkipped: 0,
50
+ search: '',
51
+ },
52
+ },
53
+ };
54
+ }
55
+ }
56
+ exports.CheckmobApi = CheckmobApi;
57
+ //# sourceMappingURL=CheckmobApi.credentials.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CheckmobApi.credentials.js","sourceRoot":"","sources":["../../credentials/CheckmobApi.credentials.ts"],"names":[],"mappings":";;;AAOA,MAAa,WAAW;IAAxB;QACC,SAAI,GAAG,aAAa,CAAC;QACrB,gBAAW,GAAG,cAAc,CAAC;QAC7B,qBAAgB,GAAG,iDAAiD,CAAC;QACrE,SAAI,GAAG,mBAA4B,CAAC;QAEpC,eAAU,GAAsB;YAC/B;gBACC,WAAW,EAAE,UAAU;gBACvB,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,sCAAsC;gBAC/C,QAAQ,EAAE,IAAI;aACd;YACD;gBACC,WAAW,EAAE,cAAc;gBAC3B,IAAI,EAAE,aAAa;gBACnB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC/B,OAAO,EAAE,EAAE;gBACX,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,0CAA0C;aACvD;SACD,CAAC;QAEF,4DAA4D;QAC5D,iBAAY,GAAyB;YACpC,IAAI,EAAE,SAAS;YACf,UAAU,EAAE;gBACX,OAAO,EAAE;oBACR,aAAa,EAAE,sCAAsC;iBACrD;aACD;SACD,CAAC;QAEF,+CAA+C;QAC/C,SAAI,GAA2B;YAC9B,OAAO,EAAE;gBACR,OAAO,EAAE,2BAA2B;gBACpC,GAAG,EAAE,uBAAuB;gBAC5B,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACR,iBAAiB,EAAE,OAAO;oBAC1B,cAAc,EAAE,kBAAkB;iBAClC;gBACD,IAAI,EAAE;oBACL,YAAY,EAAE,CAAC;oBACf,mBAAmB,EAAE,CAAC;oBACtB,MAAM,EAAE,EAAE;iBACV;aACD;SACD,CAAC;IACH,CAAC;CAAA;AApDD,kCAoDC"}
@@ -0,0 +1,4 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 60 60">
2
+ <rect width="60" height="60" rx="14" fill="#0052CC"/>
3
+ <path d="M30 12C20.06 12 12 20.06 12 30s8.06 18 18 18c5.25 0 9.97-2.24 13.27-5.82l-4.24-4.24A11.93 11.93 0 0 1 30 42c-6.63 0-12-5.37-12-12s5.37-12 12-12c3.15 0 6.01 1.22 8.15 3.2l4.18-4.18A17.93 17.93 0 0 0 30 12z" fill="white"/>
4
+ </svg>
@@ -0,0 +1,5 @@
1
+ import type { IExecuteFunctions, INodeExecutionData, INodeType, INodeTypeDescription } from 'n8n-workflow';
2
+ export declare class Checkmob implements INodeType {
3
+ description: INodeTypeDescription;
4
+ execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
5
+ }
@@ -0,0 +1,166 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Checkmob = void 0;
4
+ const n8n_workflow_1 = require("n8n-workflow");
5
+ class Checkmob {
6
+ constructor() {
7
+ this.description = {
8
+ displayName: 'Checkmob',
9
+ name: 'checkmob',
10
+ icon: 'file:checkmob.svg',
11
+ group: ['transform'],
12
+ version: 1,
13
+ subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}',
14
+ description: 'Interact with the Checkmob Field Service API',
15
+ defaults: { name: 'Checkmob' },
16
+ inputs: ['main'],
17
+ outputs: ['main'],
18
+ credentials: [
19
+ {
20
+ name: 'checkmobApi',
21
+ required: true,
22
+ },
23
+ ],
24
+ properties: [
25
+ // ── Resource ────────────────────────────────────────────────────────
26
+ {
27
+ displayName: 'Resource',
28
+ name: 'resource',
29
+ type: 'options',
30
+ noDataExpression: true,
31
+ options: [
32
+ {
33
+ name: 'Category',
34
+ value: 'category',
35
+ description: 'Manage categories',
36
+ },
37
+ ],
38
+ default: 'category',
39
+ },
40
+ // ── Category operations ─────────────────────────────────────────────
41
+ {
42
+ displayName: 'Operation',
43
+ name: 'operation',
44
+ type: 'options',
45
+ noDataExpression: true,
46
+ displayOptions: { show: { resource: ['category'] } },
47
+ options: [
48
+ {
49
+ name: 'List',
50
+ value: 'list',
51
+ description: 'List all categories',
52
+ action: 'List categories',
53
+ },
54
+ ],
55
+ default: 'list',
56
+ },
57
+ // ── Category › List — parâmetros ────────────────────────────────────
58
+ {
59
+ displayName: 'Return All',
60
+ name: 'returnAll',
61
+ type: 'boolean',
62
+ default: false,
63
+ displayOptions: {
64
+ show: { resource: ['category'], operation: ['list'] },
65
+ },
66
+ description: 'Whether to return all results or only up to a given limit',
67
+ },
68
+ {
69
+ displayName: 'Limit',
70
+ name: 'limit',
71
+ type: 'number',
72
+ default: 50,
73
+ typeOptions: { minValue: 1, maxValue: 500 },
74
+ displayOptions: {
75
+ show: {
76
+ resource: ['category'],
77
+ operation: ['list'],
78
+ returnAll: [false],
79
+ },
80
+ },
81
+ description: 'Max number of results to return',
82
+ },
83
+ {
84
+ displayName: 'Skip',
85
+ name: 'skip',
86
+ type: 'number',
87
+ default: 0,
88
+ typeOptions: { minValue: 0 },
89
+ displayOptions: {
90
+ show: { resource: ['category'], operation: ['list'] },
91
+ },
92
+ description: 'Number of rows to skip (for pagination)',
93
+ },
94
+ {
95
+ displayName: 'Search',
96
+ name: 'search',
97
+ type: 'string',
98
+ default: '',
99
+ displayOptions: {
100
+ show: { resource: ['category'], operation: ['list'] },
101
+ },
102
+ description: 'Filter categories by name or keyword',
103
+ },
104
+ ],
105
+ };
106
+ }
107
+ async execute() {
108
+ var _a;
109
+ const items = this.getInputData();
110
+ const returnData = [];
111
+ const credentials = await this.getCredentials('checkmobApi');
112
+ const baseUrl = credentials.baseUrl.replace(/\/$/, '');
113
+ for (let i = 0; i < items.length; i++) {
114
+ try {
115
+ const resource = this.getNodeParameter('resource', i);
116
+ const operation = this.getNodeParameter('operation', i);
117
+ // ── Category › List ──────────────────────────────────────────────
118
+ if (resource === 'category' && operation === 'list') {
119
+ const returnAll = this.getNodeParameter('returnAll', i);
120
+ const limit = returnAll ? 0 : this.getNodeParameter('limit', i, 50);
121
+ const skip = this.getNodeParameter('skip', i, 0);
122
+ const search = this.getNodeParameter('search', i, '');
123
+ const body = {
124
+ numberOfRows: limit,
125
+ numberOfRowsSkipped: skip,
126
+ search: search,
127
+ };
128
+ const response = await this.helpers.httpRequestWithAuthentication.call(this, 'checkmobApi', {
129
+ method: 'POST',
130
+ url: `${baseUrl}/api/v1/category/list`,
131
+ headers: {
132
+ 'Accept-Language': 'pt-BR',
133
+ 'Content-Type': 'application/json',
134
+ },
135
+ body,
136
+ json: true,
137
+ });
138
+ // A API Checkmob retorna { success, data: [...] } ou { success, data: { items: [...] } }
139
+ const raw = (_a = response === null || response === void 0 ? void 0 : response.data) !== null && _a !== void 0 ? _a : response;
140
+ const list = Array.isArray(raw)
141
+ ? raw
142
+ : Array.isArray(raw === null || raw === void 0 ? void 0 : raw.items)
143
+ ? raw.items
144
+ : [raw];
145
+ returnData.push(...this.helpers.returnJsonArray(list));
146
+ }
147
+ else {
148
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Unknown operation "${operation}" for resource "${resource}"`);
149
+ }
150
+ }
151
+ catch (error) {
152
+ if (this.continueOnFail()) {
153
+ returnData.push({
154
+ json: { error: error.message },
155
+ pairedItem: { item: i },
156
+ });
157
+ continue;
158
+ }
159
+ throw error;
160
+ }
161
+ }
162
+ return [returnData];
163
+ }
164
+ }
165
+ exports.Checkmob = Checkmob;
166
+ //# sourceMappingURL=Checkmob.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Checkmob.node.js","sourceRoot":"","sources":["../../../nodes/Checkmob/Checkmob.node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 60 60">
2
+ <rect width="60" height="60" rx="14" fill="#0052CC"/>
3
+ <path d="M30 12C20.06 12 12 20.06 12 30s8.06 18 18 18c5.25 0 9.97-2.24 13.27-5.82l-4.24-4.24A11.93 11.93 0 0 1 30 42c-6.63 0-12-5.37-12-12s5.37-12 12-12c3.15 0 6.01 1.22 8.15 3.2l4.18-4.18A17.93 17.93 0 0 0 30 12z" fill="white"/>
4
+ </svg>
package/package.json ADDED
@@ -0,0 +1,58 @@
1
+ {
2
+ "name": "n8n-nodes-checkmob",
3
+ "version": "0.1.0",
4
+ "description": "n8n community node for Checkmob — field service management platform",
5
+ "keywords": [
6
+ "n8n-community-node-package",
7
+ "n8n",
8
+ "checkmob",
9
+ "field-service",
10
+ "automation"
11
+ ],
12
+ "license": "MIT",
13
+ "homepage": "https://checkmob.com",
14
+ "author": {
15
+ "name": "Checkmob",
16
+ "email": "suporte@checkmob.com"
17
+ },
18
+ "repository": {
19
+ "type": "git",
20
+ "url": "https://github.com/checkmob/n8n-nodes-checkmob.git"
21
+ },
22
+ "main": "dist/index.js",
23
+ "scripts": {
24
+ "build": "tsc -p tsconfig.build.json && gulp build:icons",
25
+ "dev": "tsc --watch",
26
+ "format": "prettier \"nodes/**/*.{ts,js,json,md}\" \"credentials/**/*.{ts,js,json,md}\" --write",
27
+ "lint": "eslint nodes/ credentials/ --ext .ts,.js --max-warnings=0",
28
+ "lintfix": "eslint nodes/ credentials/ --ext .ts,.js --fix",
29
+ "prepublishOnly": "npm run build && npm run lint"
30
+ },
31
+ "files": [
32
+ "dist/",
33
+ "README.md",
34
+ "example-workflow.json",
35
+ "LICENSE.md"
36
+ ],
37
+ "n8n": {
38
+ "n8nNodesApiVersion": 1,
39
+ "credentials": [
40
+ "dist/credentials/CheckmobApi.credentials.js"
41
+ ],
42
+ "nodes": [
43
+ "dist/nodes/Checkmob/Checkmob.node.js"
44
+ ]
45
+ },
46
+ "devDependencies": {
47
+ "@n8n/node-cli": ">=0.23.0",
48
+ "@typescript-eslint/eslint-plugin": "^8.0.0",
49
+ "@typescript-eslint/parser": "^8.0.0",
50
+ "eslint": "^9.0.0",
51
+ "gulp": "^4.0.2",
52
+ "n8n-workflow": "^2.16.0",
53
+ "typescript": "^5.9.3"
54
+ },
55
+ "peerDependencies": {
56
+ "n8n-workflow": "*"
57
+ }
58
+ }