@thegraphitelab/n8n-nodes-servicetitan 0.7.1 → 0.8.1

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.
@@ -0,0 +1,20 @@
1
+ import { type INodeType, type INodeTypeDescription } from 'n8n-workflow';
2
+ /**
3
+ * Action node for ServiceTitan.
4
+ *
5
+ * Naming convention notes:
6
+ * - File basename `ServiceTitan.node.ts` must match the exported class name
7
+ * `ServiceTitan` — n8n's community-node loader does
8
+ * `new require(file)[fileBasename]()` to instantiate.
9
+ * - `description.name` is `'serviceTitan'` (camelCase of the file basename).
10
+ * n8n's picker merges trigger+action into one app tile iff
11
+ * `triggerName.replace('Trigger', '') === actionName`, so the trigger MUST
12
+ * be `'serviceTitanTrigger'` for them to render as a single ServiceTitan tile.
13
+ * - Collision risk with a future official n8n ServiceTitan node is handled by
14
+ * the npm scope: community packages are addressed as
15
+ * `<packageName>.<name>`, so `@thegraphitelab/n8n-nodes-servicetitan.serviceTitan`
16
+ * never collides with `n8n-nodes-base.serviceTitan` if n8n ever ships one.
17
+ */
18
+ export declare class ServiceTitan implements INodeType {
19
+ description: INodeTypeDescription;
20
+ }
@@ -1,23 +1,28 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TglServiceTitan = void 0;
3
+ exports.ServiceTitan = void 0;
4
4
  const n8n_workflow_1 = require("n8n-workflow");
5
5
  const resources_1 = require("./resources");
6
6
  /**
7
7
  * Action node for ServiceTitan.
8
8
  *
9
- * Naming note: n8n's community-node loader derives the exported class name from
10
- * the FILE BASENAME, not the n8n manifest path or the `name` field. It does
11
- * `new require(file)[fileBasename]()`. So this file MUST be named
12
- * `TglServiceTitan.node.ts` AND export a class named `TglServiceTitan`. The
13
- * `tgl` prefix is collision-safety against any future official n8n ServiceTitan
14
- * node. The display name in the n8n UI is "ServiceTitan" — users never see
15
- * "TglServiceTitan" in the picker.
9
+ * Naming convention notes:
10
+ * - File basename `ServiceTitan.node.ts` must match the exported class name
11
+ * `ServiceTitan` n8n's community-node loader does
12
+ * `new require(file)[fileBasename]()` to instantiate.
13
+ * - `description.name` is `'serviceTitan'` (camelCase of the file basename).
14
+ * n8n's picker merges trigger+action into one app tile iff
15
+ * `triggerName.replace('Trigger', '') === actionName`, so the trigger MUST
16
+ * be `'serviceTitanTrigger'` for them to render as a single ServiceTitan tile.
17
+ * - Collision risk with a future official n8n ServiceTitan node is handled by
18
+ * the npm scope: community packages are addressed as
19
+ * `<packageName>.<name>`, so `@thegraphitelab/n8n-nodes-servicetitan.serviceTitan`
20
+ * never collides with `n8n-nodes-base.serviceTitan` if n8n ever ships one.
16
21
  */
17
- class TglServiceTitan {
22
+ class ServiceTitan {
18
23
  description = {
19
24
  displayName: 'ServiceTitan',
20
- name: 'tglServiceTitan',
25
+ name: 'serviceTitan',
21
26
  icon: {
22
27
  light: 'file:servicetitan.svg',
23
28
  dark: 'file:servicetitan.dark.svg',
@@ -59,5 +64,5 @@ class TglServiceTitan {
59
64
  ],
60
65
  };
61
66
  }
62
- exports.TglServiceTitan = TglServiceTitan;
63
- //# sourceMappingURL=TglServiceTitan.node.js.map
67
+ exports.ServiceTitan = ServiceTitan;
68
+ //# sourceMappingURL=ServiceTitan.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ServiceTitan.node.js","sourceRoot":"","sources":["../../../nodes/ServiceTitan/ServiceTitan.node.ts"],"names":[],"mappings":";;;AAAA,+CAIsB;AAEtB,2CAAkE;AAElE;;;;;;;;;;;;;;;GAeG;AACH,MAAa,YAAY;IACxB,WAAW,GAAyB;QACnC,WAAW,EAAE,cAAc;QAC3B,IAAI,EAAE,cAAc;QACpB,IAAI,EAAE;YACL,KAAK,EAAE,uBAAuB;YAC9B,IAAI,EAAE,4BAA4B;SAClC;QACD,KAAK,EAAE,CAAC,WAAW,CAAC;QACpB,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE,oDAAoD;QAC9D,WAAW,EAAE,oCAAoC;QACjD,QAAQ,EAAE;YACT,IAAI,EAAE,cAAc;SACpB;QACD,YAAY,EAAE,IAAI;QAClB,MAAM,EAAE,CAAC,kCAAmB,CAAC,IAAI,CAAC;QAClC,OAAO,EAAE,CAAC,kCAAmB,CAAC,IAAI,CAAC;QACnC,WAAW,EAAE;YACZ;gBACC,IAAI,EAAE,iBAAiB;gBACvB,QAAQ,EAAE,IAAI;aACd;SACD;QACD,eAAe,EAAE;YAChB,OAAO,EACN,oHAAoH;YACrH,OAAO,EAAE;gBACR,cAAc,EAAE,kBAAkB;gBAClC,MAAM,EAAE,kBAAkB;aAC1B;SACD;QACD,UAAU,EAAE;YACX;gBACC,WAAW,EAAE,UAAU;gBACvB,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,SAAS;gBACf,gBAAgB,EAAE,IAAI;gBACtB,OAAO,EAAE,iCAAqB;gBAC9B,OAAO,EAAE,UAAU;aACnB;YACD,GAAG,wBAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC;YACpD,GAAG,wBAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC;SAChD;KACD,CAAC;CACF;AA7CD,oCA6CC"}
@@ -1,5 +1,5 @@
1
1
  {
2
- "node": "n8n-nodes-base.tglServiceTitan",
2
+ "node": "@thegraphitelab/n8n-nodes-servicetitan.serviceTitan",
3
3
  "nodeVersion": "1.0",
4
4
  "codexVersion": "1.0",
5
5
  "categories": ["Sales", "Productivity"],
@@ -4,6 +4,45 @@ exports.ServiceTitanTrigger = void 0;
4
4
  const n8n_workflow_1 = require("n8n-workflow");
5
5
  const GenericFunctions_1 = require("./GenericFunctions");
6
6
  const JOB_STATUSES = ['Scheduled', 'InProgress', 'Hold', 'Completed', 'Canceled'];
7
+ const JOB_PAGE_SIZE = 100;
8
+ const MAX_PAGES_PER_POLL = 10; // 1,000 jobs catch-up per poll; uses ~17% of ST's 60req/s budget for one second
9
+ function emptyJobState(tenantId) {
10
+ return { tenantId, cursorCreatedOn: '', seenIdsAtCursor: [], needsSeeding: true };
11
+ }
12
+ function pickLatestIso(a, b) {
13
+ if (!a)
14
+ return b;
15
+ if (!b)
16
+ return a;
17
+ return a > b ? a : b; // ISO 8601 sorts lexicographically
18
+ }
19
+ /**
20
+ * Fetch a single sample job for "Fetch Test Event". Sorts descending by
21
+ * createdOn so the user sees the most recent job that matches their
22
+ * filters. Does NOT mutate staticData.
23
+ */
24
+ async function fetchManualSample(tenantId, baseQs, userFloorIso) {
25
+ const qs = {
26
+ ...baseQs,
27
+ pageSize: 1,
28
+ sort: '-createdOn',
29
+ };
30
+ if (userFloorIso)
31
+ qs.createdOnOrAfter = userFloorIso;
32
+ let response;
33
+ try {
34
+ response = (await GenericFunctions_1.serviceTitanApiRequest.call(this, 'GET', `/jpm/v2/tenant/${tenantId}/jobs`, qs));
35
+ }
36
+ catch (error) {
37
+ throw new n8n_workflow_1.NodeApiError(this.getNode(), error);
38
+ }
39
+ const rows = Array.isArray(response.data) ? response.data : [];
40
+ if (rows.length === 0)
41
+ return null;
42
+ return [
43
+ this.helpers.returnJsonArray([(0, GenericFunctions_1.flattenCustomFields)(rows[0])]),
44
+ ];
45
+ }
7
46
  class ServiceTitanTrigger {
8
47
  description = {
9
48
  displayName: 'ServiceTitan Trigger',
@@ -14,7 +53,7 @@ class ServiceTitanTrigger {
14
53
  },
15
54
  group: ['trigger'],
16
55
  version: 1,
17
- description: 'Fires for new ServiceTitan jobs',
56
+ description: 'Interact with ServiceTitan or start workflows on ServiceTitan events',
18
57
  subtitle: '={{$parameter.resource}}: {{$parameter.event}}',
19
58
  defaults: {
20
59
  name: 'ServiceTitan Trigger',
@@ -49,7 +88,7 @@ class ServiceTitanTrigger {
49
88
  {
50
89
  name: 'New Job',
51
90
  value: 'newJob',
52
- description: 'Fires for each new job created in ServiceTitan (mirrors the Zapier query_jobs trigger: latest 100 per poll, dedup by job ID)',
91
+ description: 'Fires once per newly created ServiceTitan job, ordered by createdOn ascending',
53
92
  },
54
93
  ],
55
94
  },
@@ -74,7 +113,7 @@ class ServiceTitanTrigger {
74
113
  name: 'createdOnOrAfter',
75
114
  type: 'dateTime',
76
115
  default: '',
77
- description: 'Only jobs created on or after this date/time',
116
+ description: 'Floor under the trigger\'s internal cursor. The trigger never polls earlier than this date/time. Useful for a one-time backfill or to skip very old jobs.',
78
117
  },
79
118
  {
80
119
  displayName: 'Customer ID',
@@ -136,70 +175,99 @@ class ServiceTitanTrigger {
136
175
  const credentials = await this.getCredentials('serviceTitanApi');
137
176
  const tenantId = credentials.tenantId;
138
177
  const staticData = this.getWorkflowStaticData('node');
139
- // Tenant-swap detection: if the credential's tenant changed, wipe the
140
- // dedup cursor so we don't reuse another tenant's ID watermark.
141
- if (staticData.tenantId && staticData.tenantId !== tenantId) {
178
+ // 0.8.0 → 0.8.1 migration: drop legacy root-level fields. The old id
179
+ // watermark was unreliable; we'd rather re-seed than carry it forward.
180
+ if (staticData.tenantId !== undefined || staticData.highestSeenId !== undefined) {
181
+ delete staticData.tenantId;
142
182
  delete staticData.highestSeenId;
143
183
  }
144
- staticData.tenantId = tenantId;
184
+ // Tenant-swap detection: wipe the dedup block on credential change.
185
+ if (!staticData.jobs || staticData.jobs.tenantId !== tenantId) {
186
+ staticData.jobs = emptyJobState(tenantId);
187
+ }
188
+ const state = staticData.jobs;
189
+ // Filter UI → API params
145
190
  const filters = this.getNodeParameter('filters', 0, {});
146
- // Mirror the Zapier query_jobs param shape: pageSize=100, active filter, plus user filters.
147
- const qs = {
148
- pageSize: 100,
191
+ const userFloorIso = filters.createdOnOrAfter ?? '';
192
+ const baseQs = {
193
+ pageSize: JOB_PAGE_SIZE,
149
194
  active: filters.includeInactive ? 'Any' : 'True',
195
+ sort: '+createdOn',
150
196
  };
151
197
  if (filters.businessUnitId)
152
- qs.businessUnitId = filters.businessUnitId;
153
- if (filters.createdOnOrAfter)
154
- qs.createdOnOrAfter = filters.createdOnOrAfter;
198
+ baseQs.businessUnitId = filters.businessUnitId;
155
199
  if (filters.customerId)
156
- qs.customerId = filters.customerId;
200
+ baseQs.customerId = filters.customerId;
157
201
  if (filters.jobStatus)
158
- qs.jobStatus = filters.jobStatus;
202
+ baseQs.jobStatus = filters.jobStatus;
159
203
  if (filters.jobTypeId)
160
- qs.jobTypeId = filters.jobTypeId;
204
+ baseQs.jobTypeId = filters.jobTypeId;
161
205
  if (filters.modifiedBefore)
162
- qs.modifiedBefore = filters.modifiedBefore;
163
- let response;
206
+ baseQs.modifiedBefore = filters.modifiedBefore;
207
+ // Manual mode (Fetch Test Event): return one sample. NO state mutation.
208
+ if (this.getMode() === 'manual') {
209
+ return await fetchManualSample.call(this, tenantId, baseQs, userFloorIso);
210
+ }
211
+ // First activation: seed cursor at "now" and emit nothing. Avoids
212
+ // draining historical jobs into n8n on activation.
213
+ if (state.needsSeeding) {
214
+ state.cursorCreatedOn = pickLatestIso(new Date().toISOString(), userFloorIso);
215
+ state.seenIdsAtCursor = [];
216
+ state.needsSeeding = false;
217
+ return null;
218
+ }
219
+ // Real poll: paginate forward from the cursor.
220
+ const effectiveCursorIso = pickLatestIso(state.cursorCreatedOn, userFloorIso);
221
+ const collected = [];
222
+ let page = 1;
223
+ let hasMore = true;
164
224
  try {
165
- response = (await GenericFunctions_1.serviceTitanApiRequest.call(this, 'GET', `/jpm/v2/tenant/${tenantId}/jobs`, qs));
225
+ while (hasMore && page <= MAX_PAGES_PER_POLL) {
226
+ const qs = { ...baseQs, page };
227
+ if (effectiveCursorIso)
228
+ qs.createdOnOrAfter = effectiveCursorIso;
229
+ const response = (await GenericFunctions_1.serviceTitanApiRequest.call(this, 'GET', `/jpm/v2/tenant/${tenantId}/jobs`, qs));
230
+ const rows = Array.isArray(response.data) ? response.data : [];
231
+ collected.push(...rows);
232
+ hasMore = Boolean(response.hasMore) && rows.length > 0;
233
+ page += 1;
234
+ }
166
235
  }
167
236
  catch (error) {
168
237
  throw new n8n_workflow_1.NodeApiError(this.getNode(), error);
169
238
  }
170
- const rows = Array.isArray(response.data) ? response.data : [];
171
- const previousHighest = staticData.highestSeenId;
172
- const maxIdSeen = rows.reduce((m, j) => Math.max(m, Number(j.id) || 0), 0);
173
- // First activation: seed the cursor at the current highest job ID and emit
174
- // nothing. Avoids draining the latest 100 jobs into n8n on activation.
175
- if (previousHighest === undefined) {
176
- staticData.highestSeenId = maxIdSeen;
177
- return null;
178
- }
179
- // Dedup: only jobs with ID > the watermark. ST job IDs are monotonically
180
- // increasing, so id > watermark === "newer than what we last saw".
181
- const newJobs = rows
182
- .filter((j) => Number.isFinite(Number(j.id)) && Number(j.id) > previousHighest)
183
- .sort((a, b) => Number(a.id) - Number(b.id)); // ascending — older-new before newer-new
184
- // Manual mode ("Fetch Test Event"): return one sample without burning the
185
- // watermark. If there are no new jobs, fall back to the most recent one
186
- // so the user can wire downstream nodes against a real row.
187
- if (this.getMode() === 'manual') {
188
- const sample = newJobs[0] ?? (rows.length > 0
189
- ? [...rows].sort((a, b) => Number(b.id) - Number(a.id))[0]
190
- : undefined);
191
- if (!sample)
192
- return null;
193
- return [
194
- this.helpers.returnJsonArray([
195
- (0, GenericFunctions_1.flattenCustomFields)(sample),
196
- ]),
197
- ];
239
+ // Dedup against the boundary-id set.
240
+ const seen = new Set(state.seenIdsAtCursor);
241
+ const newJobs = [];
242
+ for (const job of collected) {
243
+ if (!job || job.createdOn === undefined || job.id === undefined)
244
+ continue;
245
+ const idStr = String(job.id);
246
+ // Inclusive-window guard: drop boundary jobs we've already emitted.
247
+ if (job.createdOn === state.cursorCreatedOn && seen.has(idStr))
248
+ continue;
249
+ // Defensive: drop anything strictly older than the cursor (clock skew).
250
+ if (state.cursorCreatedOn && job.createdOn < state.cursorCreatedOn)
251
+ continue;
252
+ newJobs.push(job);
198
253
  }
199
254
  if (newJobs.length === 0)
200
255
  return null;
201
- // Advance cursor to the highest ID emitted.
202
- staticData.highestSeenId = Math.max(previousHighest, ...newJobs.map((j) => Number(j.id)));
256
+ // Compute the new cursor and rebuild the boundary set.
257
+ const newestCreatedOn = newJobs.reduce((max, j) => ((j.createdOn ?? '') > max ? (j.createdOn ?? '') : max), state.cursorCreatedOn);
258
+ const refreshedSeen = [];
259
+ if (newestCreatedOn === state.cursorCreatedOn) {
260
+ // Cursor didn't advance — preserve the existing set
261
+ for (const id of state.seenIdsAtCursor)
262
+ refreshedSeen.push(id);
263
+ }
264
+ for (const j of newJobs) {
265
+ if (j.createdOn === newestCreatedOn)
266
+ refreshedSeen.push(String(j.id));
267
+ }
268
+ // State mutation — only after we've successfully built the emission.
269
+ state.cursorCreatedOn = newestCreatedOn;
270
+ state.seenIdsAtCursor = Array.from(new Set(refreshedSeen));
203
271
  const enriched = newJobs.map((j) => (0, GenericFunctions_1.flattenCustomFields)(j));
204
272
  return [this.helpers.returnJsonArray(enriched)];
205
273
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ServiceTitanTrigger.node.js","sourceRoot":"","sources":["../../../nodes/ServiceTitan/ServiceTitanTrigger.node.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ServiceTitanTrigger.node.js","sourceRoot":"","sources":["../../../nodes/ServiceTitan/ServiceTitanTrigger.node.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  {
2
- "node": "n8n-nodes-base.serviceTitanTrigger",
2
+ "node": "@thegraphitelab/n8n-nodes-servicetitan.serviceTitanTrigger",
3
3
  "nodeVersion": "1.0",
4
4
  "codexVersion": "1.0",
5
5
  "categories": ["Sales", "Productivity"],
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thegraphitelab/n8n-nodes-servicetitan",
3
- "version": "0.7.1",
3
+ "version": "0.8.1",
4
4
  "description": "n8n custom node for ServiceTitan — TGL internal use.",
5
5
  "keywords": [
6
6
  "n8n-community-node-package",
@@ -44,7 +44,7 @@
44
44
  "dist/credentials/ServiceTitanApi.credentials.js"
45
45
  ],
46
46
  "nodes": [
47
- "dist/nodes/ServiceTitan/TglServiceTitan.node.js",
47
+ "dist/nodes/ServiceTitan/ServiceTitan.node.js",
48
48
  "dist/nodes/ServiceTitan/ServiceTitanTrigger.node.js"
49
49
  ]
50
50
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thegraphitelab/n8n-nodes-servicetitan",
3
- "version": "0.7.1",
3
+ "version": "0.8.1",
4
4
  "description": "n8n custom node for ServiceTitan — TGL internal use.",
5
5
  "keywords": [
6
6
  "n8n-community-node-package",
@@ -37,7 +37,7 @@
37
37
  "dist/credentials/ServiceTitanApi.credentials.js"
38
38
  ],
39
39
  "nodes": [
40
- "dist/nodes/ServiceTitan/TglServiceTitan.node.js",
40
+ "dist/nodes/ServiceTitan/ServiceTitan.node.js",
41
41
  "dist/nodes/ServiceTitan/ServiceTitanTrigger.node.js"
42
42
  ]
43
43
  },
@@ -1,15 +0,0 @@
1
- import { type INodeType, type INodeTypeDescription } from 'n8n-workflow';
2
- /**
3
- * Action node for ServiceTitan.
4
- *
5
- * Naming note: n8n's community-node loader derives the exported class name from
6
- * the FILE BASENAME, not the n8n manifest path or the `name` field. It does
7
- * `new require(file)[fileBasename]()`. So this file MUST be named
8
- * `TglServiceTitan.node.ts` AND export a class named `TglServiceTitan`. The
9
- * `tgl` prefix is collision-safety against any future official n8n ServiceTitan
10
- * node. The display name in the n8n UI is "ServiceTitan" — users never see
11
- * "TglServiceTitan" in the picker.
12
- */
13
- export declare class TglServiceTitan implements INodeType {
14
- description: INodeTypeDescription;
15
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"TglServiceTitan.node.js","sourceRoot":"","sources":["../../../nodes/ServiceTitan/TglServiceTitan.node.ts"],"names":[],"mappings":";;;AAAA,+CAIsB;AAEtB,2CAAkE;AAElE;;;;;;;;;;GAUG;AACH,MAAa,eAAe;IAC3B,WAAW,GAAyB;QACnC,WAAW,EAAE,cAAc;QAC3B,IAAI,EAAE,iBAAiB;QACvB,IAAI,EAAE;YACL,KAAK,EAAE,uBAAuB;YAC9B,IAAI,EAAE,4BAA4B;SAClC;QACD,KAAK,EAAE,CAAC,WAAW,CAAC;QACpB,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE,oDAAoD;QAC9D,WAAW,EAAE,oCAAoC;QACjD,QAAQ,EAAE;YACT,IAAI,EAAE,cAAc;SACpB;QACD,YAAY,EAAE,IAAI;QAClB,MAAM,EAAE,CAAC,kCAAmB,CAAC,IAAI,CAAC;QAClC,OAAO,EAAE,CAAC,kCAAmB,CAAC,IAAI,CAAC;QACnC,WAAW,EAAE;YACZ;gBACC,IAAI,EAAE,iBAAiB;gBACvB,QAAQ,EAAE,IAAI;aACd;SACD;QACD,eAAe,EAAE;YAChB,OAAO,EACN,oHAAoH;YACrH,OAAO,EAAE;gBACR,cAAc,EAAE,kBAAkB;gBAClC,MAAM,EAAE,kBAAkB;aAC1B;SACD;QACD,UAAU,EAAE;YACX;gBACC,WAAW,EAAE,UAAU;gBACvB,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,SAAS;gBACf,gBAAgB,EAAE,IAAI;gBACtB,OAAO,EAAE,iCAAqB;gBAC9B,OAAO,EAAE,UAAU;aACnB;YACD,GAAG,wBAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC;YACpD,GAAG,wBAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC;SAChD;KACD,CAAC;CACF;AA7CD,0CA6CC"}