@thegraphitelab/n8n-nodes-servicetitan 0.14.0 → 0.15.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.
Files changed (169) hide show
  1. package/README.md +6 -5
  2. package/dist/credentials/ServiceTitanApi.credentials.js +74 -56
  3. package/dist/credentials/ServiceTitanApi.credentials.js.map +1 -1
  4. package/dist/nodes/ServiceTitan/ServiceTitan.node.js +14 -3
  5. package/dist/nodes/ServiceTitan/ServiceTitan.node.js.map +1 -1
  6. package/dist/nodes/ServiceTitan/ServiceTitanTrigger.node.js +14 -3
  7. package/dist/nodes/ServiceTitan/ServiceTitanTrigger.node.js.map +1 -1
  8. package/dist/nodes/ServiceTitan/v1/ServiceTitanTriggerV1.node.js +10 -6
  9. package/dist/nodes/ServiceTitan/v1/ServiceTitanTriggerV1.node.js.map +1 -1
  10. package/dist/nodes/ServiceTitan/v1/ServiceTitanV1.node.js +7 -6
  11. package/dist/nodes/ServiceTitan/v1/ServiceTitanV1.node.js.map +1 -1
  12. package/dist/nodes/ServiceTitan/v1/methods/methods.js +2 -2
  13. package/dist/nodes/ServiceTitan/v1/methods/methods.js.map +1 -1
  14. package/dist/nodes/ServiceTitan/v1/settings/description.d.ts +5 -0
  15. package/dist/nodes/ServiceTitan/v1/settings/description.js +94 -0
  16. package/dist/nodes/ServiceTitan/v1/settings/description.js.map +1 -0
  17. package/dist/nodes/ServiceTitan/v1/settings/index.d.ts +3 -0
  18. package/dist/nodes/ServiceTitan/v1/settings/index.js +14 -0
  19. package/dist/nodes/ServiceTitan/v1/settings/index.js.map +1 -0
  20. package/dist/nodes/ServiceTitan/v1/settings/manifest.d.ts +2 -0
  21. package/dist/nodes/ServiceTitan/v1/{manifest.js → settings/manifest.js} +1 -1
  22. package/dist/nodes/ServiceTitan/v1/settings/manifest.js.map +1 -0
  23. package/dist/nodes/ServiceTitan/v1/settings/transport.d.ts +3 -0
  24. package/dist/nodes/ServiceTitan/v1/settings/transport.js +31 -0
  25. package/dist/nodes/ServiceTitan/v1/settings/transport.js.map +1 -0
  26. package/dist/nodes/ServiceTitanHandwritten/ServiceTitanHandwrittenTrigger.node.d.ts +4 -0
  27. package/dist/nodes/ServiceTitanHandwritten/ServiceTitanHandwrittenTrigger.node.js +27 -0
  28. package/dist/nodes/ServiceTitanHandwritten/ServiceTitanHandwrittenTrigger.node.js.map +1 -0
  29. package/dist/nodes/ServiceTitanHandwritten/ServiceTitanHandwrittenTrigger.node.json +18 -0
  30. package/dist/nodes/ServiceTitanHandwritten/servicetitan.dark.svg +5 -0
  31. package/dist/nodes/ServiceTitanHandwritten/servicetitan.svg +5 -0
  32. package/dist/nodes/ServiceTitanHandwritten/v1/ServiceTitanHandwrittenTriggerV1.node.d.ts +13 -0
  33. package/dist/nodes/ServiceTitanHandwritten/v1/ServiceTitanHandwrittenTriggerV1.node.js +67 -0
  34. package/dist/nodes/ServiceTitanHandwritten/v1/ServiceTitanHandwrittenTriggerV1.node.js.map +1 -0
  35. package/dist/nodes/ServiceTitanHandwritten/v1/parameters/index.d.ts +3 -0
  36. package/dist/nodes/ServiceTitanHandwritten/v1/parameters/index.js +6 -0
  37. package/dist/nodes/ServiceTitanHandwritten/v1/parameters/index.js.map +1 -0
  38. package/dist/nodes/ServiceTitanHandwritten/v1/parameters/types.d.ts +1 -0
  39. package/dist/nodes/ServiceTitanHandwritten/v1/parameters/types.js.map +1 -0
  40. package/dist/nodes/ServiceTitanHandwritten/v1/triggers/index.d.ts +3 -0
  41. package/dist/nodes/ServiceTitanHandwritten/v1/triggers/index.js +18 -0
  42. package/dist/nodes/ServiceTitanHandwritten/v1/triggers/index.js.map +1 -0
  43. package/dist/nodes/ServiceTitanHandwritten/v1/triggers/webhook/onJobCompletion/description.d.ts +3 -0
  44. package/dist/nodes/ServiceTitanHandwritten/v1/triggers/webhook/onJobCompletion/description.js +15 -0
  45. package/dist/nodes/ServiceTitanHandwritten/v1/triggers/webhook/onJobCompletion/description.js.map +1 -0
  46. package/dist/nodes/ServiceTitanHandwritten/v1/triggers/webhook/onJobCompletion/webhookMethods.d.ts +7 -0
  47. package/dist/nodes/ServiceTitanHandwritten/v1/triggers/webhook/onJobCompletion/webhookMethods.js +12 -0
  48. package/dist/nodes/ServiceTitanHandwritten/v1/triggers/webhook/onJobCompletion/webhookMethods.js.map +1 -0
  49. package/dist/package.json +7 -2
  50. package/package.json +7 -2
  51. package/dist/nodes/ServiceTitan/descriptions/base.d.ts +0 -3
  52. package/dist/nodes/ServiceTitan/descriptions/base.js +0 -50
  53. package/dist/nodes/ServiceTitan/descriptions/base.js.map +0 -1
  54. package/dist/nodes/ServiceTitan/types/common.d.ts +0 -27
  55. package/dist/nodes/ServiceTitan/types/common.js +0 -9
  56. package/dist/nodes/ServiceTitan/types/common.js.map +0 -1
  57. package/dist/nodes/ServiceTitan/types/customer.d.ts +0 -15
  58. package/dist/nodes/ServiceTitan/types/customer.js +0 -3
  59. package/dist/nodes/ServiceTitan/types/customer.js.map +0 -1
  60. package/dist/nodes/ServiceTitan/types/index.d.ts +0 -3
  61. package/dist/nodes/ServiceTitan/types/index.js +0 -3
  62. package/dist/nodes/ServiceTitan/types/index.js.map +0 -1
  63. package/dist/nodes/ServiceTitan/types/job.d.ts +0 -21
  64. package/dist/nodes/ServiceTitan/types/job.js +0 -3
  65. package/dist/nodes/ServiceTitan/types/job.js.map +0 -1
  66. package/dist/nodes/ServiceTitan/v1/descriptions/node.description.d.ts +0 -2
  67. package/dist/nodes/ServiceTitan/v1/descriptions/node.description.js +0 -41
  68. package/dist/nodes/ServiceTitan/v1/descriptions/node.description.js.map +0 -1
  69. package/dist/nodes/ServiceTitan/v1/descriptions/trigger.description.d.ts +0 -2
  70. package/dist/nodes/ServiceTitan/v1/descriptions/trigger.description.js +0 -35
  71. package/dist/nodes/ServiceTitan/v1/descriptions/trigger.description.js.map +0 -1
  72. package/dist/nodes/ServiceTitan/v1/manifest.d.ts +0 -2
  73. package/dist/nodes/ServiceTitan/v1/manifest.js.map +0 -1
  74. package/dist/nodes/ServiceTitan/v1/transport/config.d.ts +0 -2
  75. package/dist/nodes/ServiceTitan/v1/transport/config.js +0 -20
  76. package/dist/nodes/ServiceTitan/v1/transport/config.js.map +0 -1
  77. package/dist/nodes/ServiceTitan/v1/transport/index.d.ts +0 -1
  78. package/dist/nodes/ServiceTitan/v1/transport/index.js +0 -9
  79. package/dist/nodes/ServiceTitan/v1/transport/index.js.map +0 -1
  80. package/dist/nodes/core/factories/read/export.d.ts +0 -6
  81. package/dist/nodes/core/factories/read/export.js +0 -26
  82. package/dist/nodes/core/factories/read/export.js.map +0 -1
  83. package/dist/nodes/core/factories/read/filters.d.ts +0 -2
  84. package/dist/nodes/core/factories/read/filters.js +0 -14
  85. package/dist/nodes/core/factories/read/filters.js.map +0 -1
  86. package/dist/nodes/core/factories/read/get.d.ts +0 -7
  87. package/dist/nodes/core/factories/read/get.js +0 -41
  88. package/dist/nodes/core/factories/read/get.js.map +0 -1
  89. package/dist/nodes/core/factories/read/getArray.d.ts +0 -7
  90. package/dist/nodes/core/factories/read/getArray.js +0 -30
  91. package/dist/nodes/core/factories/read/getArray.js.map +0 -1
  92. package/dist/nodes/core/factories/read/getMany.d.ts +0 -7
  93. package/dist/nodes/core/factories/read/getMany.js +0 -33
  94. package/dist/nodes/core/factories/read/getMany.js.map +0 -1
  95. package/dist/nodes/core/factories/read/properties.d.ts +0 -17
  96. package/dist/nodes/core/factories/read/properties.js +0 -123
  97. package/dist/nodes/core/factories/read/properties.js.map +0 -1
  98. package/dist/nodes/core/factories/read/read.d.ts +0 -18
  99. package/dist/nodes/core/factories/read/read.js +0 -21
  100. package/dist/nodes/core/factories/read/read.js.map +0 -1
  101. package/dist/nodes/core/factories/router.d.ts +0 -5
  102. package/dist/nodes/core/factories/router.js +0 -31
  103. package/dist/nodes/core/factories/router.js.map +0 -1
  104. package/dist/nodes/core/factories/write/action.d.ts +0 -7
  105. package/dist/nodes/core/factories/write/action.js +0 -22
  106. package/dist/nodes/core/factories/write/action.js.map +0 -1
  107. package/dist/nodes/core/factories/write/delete.d.ts +0 -7
  108. package/dist/nodes/core/factories/write/delete.js +0 -33
  109. package/dist/nodes/core/factories/write/delete.js.map +0 -1
  110. package/dist/nodes/core/factories/write/poll.d.ts +0 -11
  111. package/dist/nodes/core/factories/write/poll.js +0 -206
  112. package/dist/nodes/core/factories/write/poll.js.map +0 -1
  113. package/dist/nodes/core/factories/write/utils.d.ts +0 -6
  114. package/dist/nodes/core/factories/write/utils.js +0 -65
  115. package/dist/nodes/core/factories/write/utils.js.map +0 -1
  116. package/dist/nodes/core/factories/write/write.d.ts +0 -7
  117. package/dist/nodes/core/factories/write/write.js +0 -217
  118. package/dist/nodes/core/factories/write/write.js.map +0 -1
  119. package/dist/nodes/core/helpers/array.d.ts +0 -1
  120. package/dist/nodes/core/helpers/array.js +0 -7
  121. package/dist/nodes/core/helpers/array.js.map +0 -1
  122. package/dist/nodes/core/helpers/customFields.d.ts +0 -13
  123. package/dist/nodes/core/helpers/customFields.js +0 -36
  124. package/dist/nodes/core/helpers/customFields.js.map +0 -1
  125. package/dist/nodes/core/helpers/reduce.d.ts +0 -5
  126. package/dist/nodes/core/helpers/reduce.js +0 -20
  127. package/dist/nodes/core/helpers/reduce.js.map +0 -1
  128. package/dist/nodes/core/helpers/string.d.ts +0 -2
  129. package/dist/nodes/core/helpers/string.js +0 -21
  130. package/dist/nodes/core/helpers/string.js.map +0 -1
  131. package/dist/nodes/core/manifest/getDescription.d.ts +0 -5
  132. package/dist/nodes/core/manifest/getDescription.js +0 -92
  133. package/dist/nodes/core/manifest/getDescription.js.map +0 -1
  134. package/dist/nodes/core/manifest/getExecute.d.ts +0 -6
  135. package/dist/nodes/core/manifest/getExecute.js +0 -89
  136. package/dist/nodes/core/manifest/getExecute.js.map +0 -1
  137. package/dist/nodes/core/manifest/getPoll.d.ts +0 -4
  138. package/dist/nodes/core/manifest/getPoll.js +0 -40
  139. package/dist/nodes/core/manifest/getPoll.js.map +0 -1
  140. package/dist/nodes/core/manifest/types.d.ts +0 -23
  141. package/dist/nodes/core/manifest/types.js.map +0 -1
  142. package/dist/nodes/core/transport/constructRequest.d.ts +0 -2
  143. package/dist/nodes/core/transport/constructRequest.js +0 -21
  144. package/dist/nodes/core/transport/constructRequest.js.map +0 -1
  145. package/dist/nodes/core/transport/createTransport.d.ts +0 -21
  146. package/dist/nodes/core/transport/createTransport.js +0 -56
  147. package/dist/nodes/core/transport/createTransport.js.map +0 -1
  148. package/dist/nodes/core/types/separate.d.ts +0 -68
  149. package/dist/nodes/core/types/separate.js +0 -3
  150. package/dist/nodes/core/types/separate.js.map +0 -1
  151. package/dist/nodes/core/types/shared/dialect.d.ts +0 -16
  152. package/dist/nodes/core/types/shared/dialect.js +0 -3
  153. package/dist/nodes/core/types/shared/dialect.js.map +0 -1
  154. package/dist/nodes/core/types/shared/operation.d.ts +0 -76
  155. package/dist/nodes/core/types/shared/operation.js +0 -5
  156. package/dist/nodes/core/types/shared/operation.js.map +0 -1
  157. package/dist/nodes/core/types/shared/resource.d.ts +0 -19
  158. package/dist/nodes/core/types/shared/resource.js +0 -5
  159. package/dist/nodes/core/types/shared/resource.js.map +0 -1
  160. package/dist/nodes/core/types/shared/selection.d.ts +0 -9
  161. package/dist/nodes/core/types/shared/selection.js +0 -5
  162. package/dist/nodes/core/types/shared/selection.js.map +0 -1
  163. package/dist/nodes/core/types/shared/sourced.d.ts +0 -7
  164. package/dist/nodes/core/types/shared/sourced.js +0 -3
  165. package/dist/nodes/core/types/shared/sourced.js.map +0 -1
  166. package/dist/nodes/core/types/shared/trigger.d.ts +0 -21
  167. package/dist/nodes/core/types/shared/trigger.js +0 -5
  168. package/dist/nodes/core/types/shared/trigger.js.map +0 -1
  169. /package/dist/nodes/{core/manifest → ServiceTitanHandwritten/v1/parameters}/types.js +0 -0
package/README.md CHANGED
@@ -67,13 +67,14 @@ Polling-based with `modifiedOnOrAfter` cursor and a boundary-id dedup set to avo
67
67
 
68
68
  ## Architecture
69
69
 
70
- Resource-config table pattern. The trigger and action nodes share:
70
+ Manifest-driven. The shared engine lives in **[`@thegraphitelab/n8n-nodes-core`](../n8n-nodes-core/)** (a runtime dependency, pulled in automatically when n8n installs this package); this package supplies only ServiceTitan's specifics:
71
71
 
72
- - `GenericFunctions.ts` — `serviceTitanApiRequest`, pagination helpers, customFields flattening
73
- - `resources/<resource>/` — per-resource folder, one file per operation, declarative-style routing
74
- - `triggerResources.ts` — resource-config table that drives the trigger's two-level Resource + Event picker
72
+ - `nodes/ServiceTitan/v1/generated/manifests.ts` — the **generated** manifest: every resource/operation and trigger, each described declaratively by a `shape`. Build output from `n8n-codegen` — do not hand-edit.
73
+ - `nodes/ServiceTitan/v1/transport/config.ts` — the `TransportConfig` the engine reads: credential key, base URL, pagination/cursor rules, and `pathContext` (maps the credential's `tenantId` into the `{tenant}` path placeholder).
74
+ - `nodes/ServiceTitan/v1/*.node.ts` + `descriptions/` — the action and trigger node wrappers, which call the engine's `router` / `pollRouter` and `getActionProperties` / `getTriggerProperties`.
75
+ - `credentials/` — the ServiceTitan API credential.
75
76
 
76
- Adding a new resource or trigger event is a localized change — see [`CONTRIBUTING.md`](../../CONTRIBUTING.md) at the repo root.
77
+ The engine compiles the manifest into n8n operations, poll triggers, property descriptions, and the authenticated HTTP transport. Adding or refreshing coverage is a codegen regenerate + rebuild (see the [repo root README](../../README.md#how-the-nodes-are-generated)), not a hand-edit.
77
78
 
78
79
  ## Custom fields behavior
79
80
 
@@ -5,21 +5,78 @@ exports.getApiHost = getApiHost;
5
5
  const customAppSecrets_1 = require("./customAppSecrets");
6
6
  // Label of the TGL_CUSTOM_APP_SECRETS entry holding the TGL-owned ST-App-Key.
7
7
  const SERVICETITAN_APP_KEY_LABEL = "TGL_SERVICETITAN_API_KEY";
8
- /**
9
- * ServiceTitan auth hosts by environment.
10
- * Integration ("Sandbox") and Production are entirely separate ST environments —
11
- * different app registrations, different tenant IDs, different credentials.
12
- */
13
- function getAuthHost(environment) {
14
- return environment === "production"
15
- ? "auth.servicetitan.io"
16
- : "auth-integration.servicetitan.io";
17
- }
18
8
  function getApiHost(environment) {
19
9
  return environment === "production"
20
10
  ? "api.servicetitan.io"
21
11
  : "api-integration.servicetitan.io";
22
12
  }
13
+ function getCredentialInputs(credentials) {
14
+ function getCredentialFields(credentials) {
15
+ const clientId = credentials.clientId;
16
+ const clientSecret = credentials.clientSecret;
17
+ const tenantId = credentials.tenantId;
18
+ const missing = [];
19
+ if (!clientId)
20
+ missing.push("Client ID");
21
+ if (!clientSecret)
22
+ missing.push("Client Secret");
23
+ if (!tenantId)
24
+ missing.push("Tenant ID");
25
+ if (missing.length > 0) {
26
+ throw new Error(`[ServiceTitan auth] Missing required credential field(s): ${missing.join(", ")}. Fill them in on the n8n credential and save.`);
27
+ }
28
+ return { clientId, clientSecret, tenantId };
29
+ }
30
+ // The ST-App-Key is TGL-owned and identical across all clients, so it lives
31
+ // at the n8n instance level in the shared TGL_CUSTOM_APP_SECRETS array
32
+ // (keyed by label), not on every credential. Throws if unset/missing.
33
+ const appKey = (0, customAppSecrets_1.getCustomAppSecret)(SERVICETITAN_APP_KEY_LABEL);
34
+ const { clientId, clientSecret } = getCredentialFields.call(this, credentials);
35
+ const environment = credentials.environment ?? "integration";
36
+ return { appKey, clientId, clientSecret, environment };
37
+ }
38
+ function getRequestOptions(credentials) {
39
+ function getAuthHost(environment) {
40
+ return environment === "production"
41
+ ? "auth.servicetitan.io"
42
+ : "auth-integration.servicetitan.io";
43
+ }
44
+ function getBody(clientId, clientSecret) {
45
+ return new URLSearchParams({
46
+ grant_type: "client_credentials",
47
+ client_id: clientId,
48
+ client_secret: clientSecret,
49
+ }).toString();
50
+ }
51
+ const { environment, clientId, clientSecret } = getCredentialInputs.call(this, credentials);
52
+ const tokenUrl = `https://${getAuthHost(environment)}/connect/token`;
53
+ const body = getBody(clientId, clientSecret);
54
+ return {
55
+ method: "POST",
56
+ url: tokenUrl,
57
+ headers: {
58
+ "Content-Type": "application/x-www-form-urlencoded",
59
+ },
60
+ body,
61
+ };
62
+ }
63
+ function deriveErrorMessage(credentials, err) {
64
+ const { environment, clientId } = getCredentialInputs.call(this, credentials);
65
+ const requestOptions = getRequestOptions.call(this, credentials);
66
+ // Diagnostics — env, host, clientId prefix (NOT secret), App Key prefix
67
+ const clientIdPreview = `${clientId.slice(0, 6)}…${clientId.slice(-4)}`;
68
+ // Surface ServiceTitan's actual error response so users can fix it
69
+ const e = err;
70
+ const status = e.response?.status;
71
+ const statusText = e.response?.statusText;
72
+ const data = e.response?.data;
73
+ const bodyStr = typeof data === "string" ? data : JSON.stringify(data);
74
+ const detail = bodyStr ? ` body=${bodyStr.slice(0, 500)}` : "";
75
+ const { url: tokenUrl } = requestOptions;
76
+ return (`[ServiceTitan auth] Token fetch failed: ${status ?? "?"} ${statusText ?? ""}${detail}. ` +
77
+ `URL=${tokenUrl} env=${environment} clientId=${clientIdPreview}. ` +
78
+ `Verify Client ID/Secret are correct for the ${environment} environment.`);
79
+ }
23
80
  class ServiceTitanApi {
24
81
  name = "serviceTitanApi";
25
82
  displayName = "ServiceTitan API";
@@ -85,60 +142,21 @@ class ServiceTitanApi {
85
142
  },
86
143
  ];
87
144
  async preAuthentication(credentials) {
88
- // The ST-App-Key is TGL-owned and identical across all clients, so it lives
89
- // at the n8n instance level in the shared TGL_CUSTOM_APP_SECRETS array
90
- // (keyed by label), not on every credential. Throws if unset/missing.
91
- const appKey = (0, customAppSecrets_1.getCustomAppSecret)(SERVICETITAN_APP_KEY_LABEL);
92
- const environment = credentials.environment ?? "integration";
93
- const clientId = credentials.clientId;
94
- const clientSecret = credentials.clientSecret;
95
- const tenantId = credentials.tenantId;
96
- const missing = [];
97
- if (!clientId)
98
- missing.push("Client ID");
99
- if (!clientSecret)
100
- missing.push("Client Secret");
101
- if (!tenantId)
102
- missing.push("Tenant ID");
103
- if (missing.length > 0) {
104
- throw new Error(`[ServiceTitan auth] Missing required credential field(s): ${missing.join(", ")}. Fill them in on the n8n credential and save.`);
105
- }
106
- const authHost = getAuthHost(environment);
107
- const tokenUrl = `https://${authHost}/connect/token`;
108
- // Diagnostics — env, host, clientId prefix (NOT secret), App Key prefix
109
- const clientIdPreview = `${clientId.slice(0, 6)}…${clientId.slice(-4)}`;
110
- const body = new URLSearchParams({
111
- grant_type: "client_credentials",
112
- client_id: clientId,
113
- client_secret: clientSecret,
114
- }).toString();
145
+ const requestOptions = getRequestOptions.call(this, credentials);
115
146
  let response;
116
147
  try {
117
- response = (await this.helpers.httpRequest({
118
- method: "POST",
119
- url: tokenUrl,
120
- headers: {
121
- "Content-Type": "application/x-www-form-urlencoded",
122
- },
123
- body,
124
- }));
148
+ response = await this.helpers.httpRequest(requestOptions);
125
149
  }
126
150
  catch (err) {
127
- // Surface ServiceTitan's actual error response so users can fix it
128
- const e = err;
129
- const status = e.response?.status;
130
- const statusText = e.response?.statusText;
131
- const data = e.response?.data;
132
- const bodyStr = typeof data === "string" ? data : JSON.stringify(data);
133
- const detail = bodyStr ? ` body=${bodyStr.slice(0, 500)}` : "";
134
- throw new Error(`[ServiceTitan auth] Token fetch failed: ${status ?? "?"} ${statusText ?? ""}${detail}. ` +
135
- `URL=${tokenUrl} env=${environment} clientId=${clientIdPreview}. ` +
136
- `Verify Client ID/Secret are correct for the ${environment} environment.`);
151
+ throw new Error(deriveErrorMessage.call(this, credentials, err));
137
152
  }
138
153
  if (!response?.access_token) {
139
154
  throw new Error(`[ServiceTitan auth] Token endpoint returned 2xx but no access_token. Response: ${JSON.stringify(response).slice(0, 500)}`);
140
155
  }
141
- return { accessToken: response.access_token, appKey };
156
+ return {
157
+ accessToken: response.access_token,
158
+ appKey: getCredentialInputs.call(this, credentials).appKey,
159
+ };
142
160
  }
143
161
  authenticate = {
144
162
  type: "generic",
@@ -1 +1 @@
1
- {"version":3,"file":"ServiceTitanApi.credentials.js","sourceRoot":"","sources":["../../credentials/ServiceTitanApi.credentials.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ServiceTitanApi.credentials.js","sourceRoot":"","sources":["../../credentials/ServiceTitanApi.credentials.ts"],"names":[],"mappings":"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"}
@@ -2,14 +2,25 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ServiceTitan = void 0;
4
4
  const n8n_workflow_1 = require("n8n-workflow");
5
- const base_1 = require("./descriptions/base");
6
5
  const ServiceTitanV1_node_1 = require("./v1/ServiceTitanV1.node");
6
+ const baseDescription = {
7
+ displayName: "ServiceTitan (Generated)",
8
+ name: "serviceTitan",
9
+ group: ["transform"],
10
+ icon: {
11
+ light: "file:servicetitan.svg",
12
+ dark: "file:servicetitan.dark.svg",
13
+ },
14
+ subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}',
15
+ description: "Interact with ServiceTitan API via TGL's generated integration. Use ServiceTitan (Handwritten) for special triggers.",
16
+ defaultVersion: 1,
17
+ };
7
18
  class ServiceTitan extends n8n_workflow_1.VersionedNodeType {
8
19
  constructor() {
9
20
  const nodeVersions = {
10
- 1: new ServiceTitanV1_node_1.ServiceTitanV1(base_1.baseDescription),
21
+ 1: new ServiceTitanV1_node_1.ServiceTitanV1(baseDescription),
11
22
  };
12
- super(nodeVersions, base_1.baseDescription);
23
+ super(nodeVersions, baseDescription);
13
24
  }
14
25
  }
15
26
  exports.ServiceTitan = ServiceTitan;
@@ -1 +1 @@
1
- {"version":3,"file":"ServiceTitan.node.js","sourceRoot":"","sources":["../../../nodes/ServiceTitan/ServiceTitan.node.ts"],"names":[],"mappings":";;;AAAA,+CAAqE;AACrE,8CAAsD;AACtD,kEAA0D;AAE1D,MAAa,YAAa,SAAQ,gCAAiB;IACjD;QACE,MAAM,YAAY,GAAuC;YACvD,CAAC,EAAE,IAAI,oCAAc,CAAC,sBAAe,CAAC;SACvC,CAAC;QAEF,KAAK,CAAC,YAAY,EAAE,sBAAe,CAAC,CAAC;IACvC,CAAC;CACF;AARD,oCAQC"}
1
+ {"version":3,"file":"ServiceTitan.node.js","sourceRoot":"","sources":["../../../nodes/ServiceTitan/ServiceTitan.node.ts"],"names":[],"mappings":";;;AAAA,+CAIsB;AACtB,kEAA0D;AAE1D,MAAM,eAAe,GAA6B;IAC9C,WAAW,EAAE,0BAA0B;IACvC,IAAI,EAAE,cAAc;IACpB,KAAK,EAAE,CAAC,WAAW,CAAC;IACpB,IAAI,EAAE;QACF,KAAK,EAAE,uBAAuB;QAC9B,IAAI,EAAE,4BAA4B;KACrC;IACD,QAAQ,EAAE,8DAA8D;IACxE,WAAW,EACP,sHAAsH;IAC1H,cAAc,EAAE,CAAC;CACpB,CAAC;AAEF,MAAa,YAAa,SAAQ,gCAAiB;IAC/C;QACI,MAAM,YAAY,GAAuC;YACrD,CAAC,EAAE,IAAI,oCAAc,CAAC,eAAe,CAAC;SACzC,CAAC;QAEF,KAAK,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;IACzC,CAAC;CACJ;AARD,oCAQC"}
@@ -3,13 +3,24 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ServiceTitanTrigger = void 0;
4
4
  const n8n_workflow_1 = require("n8n-workflow");
5
5
  const ServiceTitanTriggerV1_node_1 = require("./v1/ServiceTitanTriggerV1.node");
6
- const base_1 = require("./descriptions/base");
6
+ const triggerBaseDescription = {
7
+ displayName: "ServiceTitan Trigger",
8
+ name: "serviceTitanTrigger",
9
+ group: ["trigger"],
10
+ icon: {
11
+ light: "file:servicetitan.svg",
12
+ dark: "file:servicetitan.dark.svg",
13
+ },
14
+ subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}',
15
+ description: "Starts a workflow on ServiceTitan events",
16
+ defaultVersion: 1,
17
+ };
7
18
  class ServiceTitanTrigger extends n8n_workflow_1.VersionedNodeType {
8
19
  constructor() {
9
20
  const nodeVersions = {
10
- 1: new ServiceTitanTriggerV1_node_1.ServiceTitanTriggerV1(base_1.triggerBaseDescription),
21
+ 1: new ServiceTitanTriggerV1_node_1.ServiceTitanTriggerV1(triggerBaseDescription),
11
22
  };
12
- super(nodeVersions, base_1.triggerBaseDescription);
23
+ super(nodeVersions, triggerBaseDescription);
13
24
  }
14
25
  }
15
26
  exports.ServiceTitanTrigger = ServiceTitanTrigger;
@@ -1 +1 @@
1
- {"version":3,"file":"ServiceTitanTrigger.node.js","sourceRoot":"","sources":["../../../nodes/ServiceTitan/ServiceTitanTrigger.node.ts"],"names":[],"mappings":";;;AAAA,+CAAqE;AACrE,gFAAwE;AACxE,8CAA6D;AAE7D,MAAa,mBAAoB,SAAQ,gCAAiB;IACtD;QACI,MAAM,YAAY,GAAuC;YACrD,CAAC,EAAE,IAAI,kDAAqB,CAAC,6BAAsB,CAAC;SACvD,CAAC;QAEF,KAAK,CAAC,YAAY,EAAE,6BAAsB,CAAC,CAAC;IAChD,CAAC;CACJ;AARD,kDAQC"}
1
+ {"version":3,"file":"ServiceTitanTrigger.node.js","sourceRoot":"","sources":["../../../nodes/ServiceTitan/ServiceTitanTrigger.node.ts"],"names":[],"mappings":";;;AAAA,+CAIsB;AACtB,gFAAwE;AAExE,MAAM,sBAAsB,GAA6B;IACrD,WAAW,EAAE,sBAAsB;IACnC,IAAI,EAAE,qBAAqB;IAC3B,KAAK,EAAE,CAAC,SAAS,CAAC;IAClB,IAAI,EAAE;QACF,KAAK,EAAE,uBAAuB;QAC9B,IAAI,EAAE,4BAA4B;KACrC;IACD,QAAQ,EAAE,8DAA8D;IACxE,WAAW,EAAE,0CAA0C;IACvD,cAAc,EAAE,CAAC;CACpB,CAAC;AAEF,MAAa,mBAAoB,SAAQ,gCAAiB;IACtD;QACI,MAAM,YAAY,GAAuC;YACrD,CAAC,EAAE,IAAI,kDAAqB,CAAC,sBAAsB,CAAC;SACvD,CAAC;QAEF,KAAK,CAAC,YAAY,EAAE,sBAAsB,CAAC,CAAC;IAChD,CAAC;CACJ;AARD,kDAQC"}
@@ -1,11 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ServiceTitanTriggerV1 = void 0;
4
- const router_1 = require("../../core/factories/router");
5
- const trigger_description_1 = require("./descriptions/trigger.description");
4
+ /* eslint-disable @n8n/community-nodes/no-restricted-imports --
5
+ * This is the best solution to share core functionality across integrations
6
+ */
7
+ const n8n_nodes_core_1 = require("@thegraphitelab/n8n-nodes-core");
8
+ const settings_1 = require("./settings");
6
9
  const methods_1 = require("./methods/methods");
7
- const transport_1 = require("./transport");
8
- const manifest_1 = require("./manifest");
9
10
  /* eslint-disable @n8n/community-nodes/icon-validation --
10
11
  Icon lives on the versioned wrapper's description/baseDescription and is merged
11
12
  in via the constructor; this static rule can't see spreads, so it false-positives. */
@@ -13,11 +14,14 @@ class ServiceTitanTriggerV1 {
13
14
  description;
14
15
  methods;
15
16
  constructor(baseDescription) {
16
- this.description = { ...baseDescription, ...trigger_description_1.triggerDescription };
17
+ this.description = {
18
+ ...baseDescription,
19
+ ...settings_1.serviceTitanTriggerV1Description,
20
+ };
17
21
  this.methods = methods_1.serviceTitanMethods;
18
22
  }
19
23
  async poll() {
20
- return (0, router_1.pollRouter)(this, manifest_1.serviceTitanV1Manifest, transport_1.serviceTitanTransport);
24
+ return (0, n8n_nodes_core_1.pollRouter)(this, settings_1.serviceTitanV1Manifest, settings_1.serviceTitanV1Transport);
21
25
  }
22
26
  }
23
27
  exports.ServiceTitanTriggerV1 = ServiceTitanTriggerV1;
@@ -1 +1 @@
1
- {"version":3,"file":"ServiceTitanTriggerV1.node.js","sourceRoot":"","sources":["../../../../nodes/ServiceTitan/v1/ServiceTitanTriggerV1.node.ts"],"names":[],"mappings":";;;AAOA,wDAAyD;AACzD,4EAAwE;AACxE,+CAAwD;AACxD,2CAAoD;AACpD,yCAAoD;AAEpD;;0FAE0F;AAC1F,MAAa,qBAAqB;IAC9B,WAAW,CAAuB;IAElC,OAAO,CAAC;IAER,YAAY,eAAyC;QACjD,IAAI,CAAC,WAAW,GAAG,EAAE,GAAG,eAAe,EAAE,GAAG,wCAAkB,EAAE,CAAC;QACjE,IAAI,CAAC,OAAO,GAAG,6BAAmB,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,IAAI;QACN,OAAO,IAAA,mBAAU,EAAC,IAAI,EAAE,iCAAsB,EAAE,iCAAqB,CAAC,CAAC;IAC3E,CAAC;CACJ;AAbD,sDAaC"}
1
+ {"version":3,"file":"ServiceTitanTriggerV1.node.js","sourceRoot":"","sources":["../../../../nodes/ServiceTitan/v1/ServiceTitanTriggerV1.node.ts"],"names":[],"mappings":";;;AAOA;;GAEG;AACH,mEAA4D;AAC5D,yCAIoB;AACpB,+CAAwD;AAExD;;0FAE0F;AAC1F,MAAa,qBAAqB;IAC9B,WAAW,CAAuB;IAElC,OAAO,CAAC;IAER,YAAY,eAAyC;QACjD,IAAI,CAAC,WAAW,GAAG;YACf,GAAG,eAAe;YAClB,GAAG,2CAAgC;SACtC,CAAC;QACF,IAAI,CAAC,OAAO,GAAG,6BAAmB,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,IAAI;QACN,OAAO,IAAA,2BAAU,EACb,IAAI,EACJ,iCAAsB,EACtB,kCAAuB,CAC1B,CAAC;IACN,CAAC;CACJ;AApBD,sDAoBC"}
@@ -1,20 +1,21 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ServiceTitanV1 = void 0;
4
- const node_description_1 = require("./descriptions/node.description");
5
- const router_1 = require("../../core/factories/router");
6
- const transport_1 = require("./transport");
7
- const manifest_1 = require("./manifest");
4
+ /* eslint-disable @n8n/community-nodes/no-restricted-imports --
5
+ * This is the best solution to share core functionality across integrations
6
+ */
7
+ const n8n_nodes_core_1 = require("@thegraphitelab/n8n-nodes-core");
8
+ const settings_1 = require("./settings");
8
9
  /* eslint-disable @n8n/community-nodes/icon-validation --
9
10
  Icon lives on the versioned wrapper's description/baseDescription and is merged
10
11
  in via the constructor; this static rule can't see spreads, so it false-positives. */
11
12
  class ServiceTitanV1 {
12
13
  description;
13
14
  constructor(baseDescription) {
14
- this.description = { ...baseDescription, ...node_description_1.description };
15
+ this.description = { ...baseDescription, ...settings_1.serviceTitanV1Description };
15
16
  }
16
17
  async execute() {
17
- return await (0, router_1.router)(this, manifest_1.serviceTitanV1Manifest, transport_1.serviceTitanTransport);
18
+ return await (0, n8n_nodes_core_1.router)(this, settings_1.serviceTitanV1Manifest, settings_1.serviceTitanV1Transport);
18
19
  }
19
20
  }
20
21
  exports.ServiceTitanV1 = ServiceTitanV1;
@@ -1 +1 @@
1
- {"version":3,"file":"ServiceTitanV1.node.js","sourceRoot":"","sources":["../../../../nodes/ServiceTitan/v1/ServiceTitanV1.node.ts"],"names":[],"mappings":";;;AAOA,sEAA8D;AAC9D,wDAAqD;AACrD,2CAAoD;AACpD,yCAAoD;AACpD;;0FAE0F;AAC1F,MAAa,cAAc;IACvB,WAAW,CAAuB;IAClC,YAAY,eAAyC;QACjD,IAAI,CAAC,WAAW,GAAG,EAAE,GAAG,eAAe,EAAE,GAAG,8BAAW,EAAE,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,OAAO;QACT,OAAO,MAAM,IAAA,eAAM,EAAC,IAAI,EAAE,iCAAsB,EAAE,iCAAqB,CAAC,CAAC;IAC7E,CAAC;CACJ;AATD,wCASC"}
1
+ {"version":3,"file":"ServiceTitanV1.node.js","sourceRoot":"","sources":["../../../../nodes/ServiceTitan/v1/ServiceTitanV1.node.ts"],"names":[],"mappings":";;;AAMA;;GAEG;AACH,mEAAwD;AAExD,yCAIoB;AACpB;;0FAE0F;AAC1F,MAAa,cAAc;IACvB,WAAW,CAAuB;IAClC,YAAY,eAAyC;QACjD,IAAI,CAAC,WAAW,GAAG,EAAE,GAAG,eAAe,EAAE,GAAG,oCAAyB,EAAE,CAAC;IAC5E,CAAC;IAED,KAAK,CAAC,OAAO;QACT,OAAO,MAAM,IAAA,uBAAM,EACf,IAAI,EACJ,iCAAsB,EACtB,kCAAuB,CAC1B,CAAC;IACN,CAAC;CACJ;AAbD,wCAaC"}
@@ -1,13 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.serviceTitanMethods = void 0;
4
- const transport_1 = require("../transport");
4
+ const transport_1 = require("../settings/transport");
5
5
  exports.serviceTitanMethods = {
6
6
  loadOptions: {
7
7
  async getBusinessUnits() {
8
8
  const credentials = await this.getCredentials("serviceTitanApi");
9
9
  const tenantId = credentials.tenantId;
10
- const response = (await transport_1.serviceTitanTransport.request(this, "GET", `/settings/v2/tenant/${tenantId}/business-units`, { pageSize: 200, active: true }));
10
+ const response = (await transport_1.serviceTitanV1Transport.request(this, "GET", `/settings/v2/tenant/${tenantId}/business-units`, { pageSize: 200, active: true }));
11
11
  const rows = Array.isArray(response.data) ? response.data : [];
12
12
  return rows
13
13
  .map((bu) => ({
@@ -1 +1 @@
1
- {"version":3,"file":"methods.js","sourceRoot":"","sources":["../../../../../nodes/ServiceTitan/v1/methods/methods.ts"],"names":[],"mappings":";;;AAMA,4CAAqD;AAExC,QAAA,mBAAmB,GAAG;IAC/B,WAAW,EAAE;QACT,KAAK,CAAC,gBAAgB;YAGlB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;YACjE,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAkB,CAAC;YAEhD,MAAM,QAAQ,GAAG,CAAC,MAAM,iCAAqB,CAAC,OAAO,CACjD,IAAI,EACJ,KAAK,EACL,uBAAuB,QAAQ,iBAAiB,EAChD,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAClC,CAAgC,CAAC;YAElC,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/D,OAAO,IAAI;iBACN,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACV,IAAI,EAAG,EAAE,CAAC,IAAe,IAAI,iBAAiB,EAAE,CAAC,EAAE,EAAE;gBACrD,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;aACvB,CAAC,CAAC;iBACF,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACtD,CAAC;KACJ;CACJ,CAAC"}
1
+ {"version":3,"file":"methods.js","sourceRoot":"","sources":["../../../../../nodes/ServiceTitan/v1/methods/methods.ts"],"names":[],"mappings":";;;AAKA,qDAAgE;AAUnD,QAAA,mBAAmB,GAAG;IAC/B,WAAW,EAAE;QACT,KAAK,CAAC,gBAAgB;YAGlB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;YACjE,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAkB,CAAC;YAEhD,MAAM,QAAQ,GAAG,CAAC,MAAM,mCAAuB,CAAC,OAAO,CACnD,IAAI,EACJ,KAAK,EACL,uBAAuB,QAAQ,iBAAiB,EAChD,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAClC,CAAgC,CAAC;YAElC,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/D,OAAO,IAAI;iBACN,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACV,IAAI,EAAG,EAAE,CAAC,IAAe,IAAI,iBAAiB,EAAE,CAAC,EAAE,EAAE;gBACrD,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;aACvB,CAAC,CAAC;iBACF,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACtD,CAAC;KACJ;CACJ,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { INodeTypeBaseDescription, INodeTypeDescription } from "n8n-workflow";
2
+ export declare const serviceTitanDescription: INodeTypeBaseDescription;
3
+ export declare const serviceTitanV1Description: INodeTypeDescription;
4
+ export declare const serviceTitanTriggerDescription: INodeTypeBaseDescription;
5
+ export declare const serviceTitanTriggerV1Description: INodeTypeDescription;
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.serviceTitanTriggerV1Description = exports.serviceTitanTriggerDescription = exports.serviceTitanV1Description = exports.serviceTitanDescription = void 0;
4
+ /* eslint-disable n8n-nodes-base/node-filename-against-convention */
5
+ /* eslint-disable @n8n/community-nodes/no-restricted-imports --
6
+ * This is the best solution to share core functionality across integrations
7
+ */
8
+ const n8n_nodes_core_1 = require("@thegraphitelab/n8n-nodes-core");
9
+ const n8n_workflow_1 = require("n8n-workflow");
10
+ const transport_1 = require("./transport");
11
+ const manifest_1 = require("./manifest");
12
+ exports.serviceTitanDescription = {
13
+ displayName: "ServiceTitan",
14
+ name: "serviceTitan",
15
+ group: ["transform"],
16
+ icon: {
17
+ light: "file:servicetitan.svg",
18
+ dark: "file:servicetitan.dark.svg",
19
+ },
20
+ subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}',
21
+ description: "Interact with ServiceTitan API",
22
+ defaultVersion: 1,
23
+ };
24
+ exports.serviceTitanV1Description = {
25
+ displayName: "ServiceTitan",
26
+ name: "serviceTitan",
27
+ icon: {
28
+ light: "file:servicetitan.svg",
29
+ dark: "file:servicetitan.dark.svg",
30
+ },
31
+ group: ["transform"],
32
+ version: 1,
33
+ subtitle: '={{$parameter["operation"] || $parameter["event"]}}: {{$parameter["resource"]}}',
34
+ description: "Interact with the ServiceTitan API",
35
+ defaults: {
36
+ name: "ServiceTitan",
37
+ },
38
+ usableAsTool: true,
39
+ inputs: [n8n_workflow_1.NodeConnectionTypes.Main],
40
+ outputs: [n8n_workflow_1.NodeConnectionTypes.Main],
41
+ credentials: [
42
+ {
43
+ name: "serviceTitanApi",
44
+ required: true,
45
+ },
46
+ ],
47
+ requestDefaults: {
48
+ baseURL: '=https://{{$credentials.environment === "production" ? "api.servicetitan.io" : "api-integration.servicetitan.io"}}',
49
+ headers: {
50
+ "Content-Type": "application/json",
51
+ Accept: "application/json",
52
+ },
53
+ },
54
+ properties: (0, n8n_nodes_core_1.getActionProperties)(manifest_1.serviceTitanV1Manifest, transport_1.serviceTitanV1Transport, "customer"),
55
+ };
56
+ exports.serviceTitanTriggerDescription = {
57
+ displayName: "ServiceTitan Trigger",
58
+ name: "serviceTitanTrigger",
59
+ group: ["trigger"],
60
+ icon: {
61
+ light: "file:servicetitan.svg",
62
+ dark: "file:servicetitan.dark.svg",
63
+ },
64
+ subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}',
65
+ description: "Starts a workflow on ServiceTitan events",
66
+ defaultVersion: 1,
67
+ };
68
+ exports.serviceTitanTriggerV1Description = {
69
+ displayName: "ServiceTitan Trigger",
70
+ name: "serviceTitanTrigger",
71
+ icon: {
72
+ light: "file:servicetitan.svg",
73
+ dark: "file:servicetitan.dark.svg",
74
+ },
75
+ group: ["trigger"],
76
+ version: 1,
77
+ description: "Interact with ServiceTitan or start workflows on ServiceTitan events",
78
+ subtitle: '={{$parameter["operation"] || $parameter["event"]}}: {{$parameter["resource"]}}',
79
+ defaults: {
80
+ name: "ServiceTitan Trigger",
81
+ },
82
+ polling: true,
83
+ usableAsTool: true,
84
+ inputs: [],
85
+ outputs: [n8n_workflow_1.NodeConnectionTypes.Main],
86
+ credentials: [
87
+ {
88
+ name: "serviceTitanApi",
89
+ required: true,
90
+ },
91
+ ],
92
+ properties: (0, n8n_nodes_core_1.getTriggerProperties)(manifest_1.serviceTitanV1Manifest, transport_1.serviceTitanV1Transport, "customer"),
93
+ };
94
+ //# sourceMappingURL=description.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"description.js","sourceRoot":"","sources":["../../../../../nodes/ServiceTitan/v1/settings/description.ts"],"names":[],"mappings":";;;AAAA,oEAAoE;AACpE;;GAEG;AACH,mEAGwC;AACxC,+CAIsB;AACtB,2CAAsD;AACtD,yCAAoD;AAEvC,QAAA,uBAAuB,GAA6B;IAC7D,WAAW,EAAE,cAAc;IAC3B,IAAI,EAAE,cAAc;IACpB,KAAK,EAAE,CAAC,WAAW,CAAC;IACpB,IAAI,EAAE;QACF,KAAK,EAAE,uBAAuB;QAC9B,IAAI,EAAE,4BAA4B;KACrC;IACD,QAAQ,EAAE,8DAA8D;IACxE,WAAW,EAAE,gCAAgC;IAC7C,cAAc,EAAE,CAAC;CACpB,CAAC;AAEW,QAAA,yBAAyB,GAAyB;IAC3D,WAAW,EAAE,cAAc;IAC3B,IAAI,EAAE,cAAc;IACpB,IAAI,EAAE;QACF,KAAK,EAAE,uBAAuB;QAC9B,IAAI,EAAE,4BAA4B;KACrC;IACD,KAAK,EAAE,CAAC,WAAW,CAAC;IACpB,OAAO,EAAE,CAAC;IACV,QAAQ,EACJ,iFAAiF;IACrF,WAAW,EAAE,oCAAoC;IACjD,QAAQ,EAAE;QACN,IAAI,EAAE,cAAc;KACvB;IACD,YAAY,EAAE,IAAI;IAClB,MAAM,EAAE,CAAC,kCAAmB,CAAC,IAAI,CAAC;IAClC,OAAO,EAAE,CAAC,kCAAmB,CAAC,IAAI,CAAC;IACnC,WAAW,EAAE;QACT;YACI,IAAI,EAAE,iBAAiB;YACvB,QAAQ,EAAE,IAAI;SACjB;KACJ;IACD,eAAe,EAAE;QACb,OAAO,EACH,oHAAoH;QACxH,OAAO,EAAE;YACL,cAAc,EAAE,kBAAkB;YAClC,MAAM,EAAE,kBAAkB;SAC7B;KACJ;IACD,UAAU,EAAE,IAAA,oCAAmB,EAC3B,iCAAsB,EACtB,mCAAuB,EACvB,UAAU,CACb;CACJ,CAAC;AAEW,QAAA,8BAA8B,GAA6B;IACpE,WAAW,EAAE,sBAAsB;IACnC,IAAI,EAAE,qBAAqB;IAC3B,KAAK,EAAE,CAAC,SAAS,CAAC;IAClB,IAAI,EAAE;QACF,KAAK,EAAE,uBAAuB;QAC9B,IAAI,EAAE,4BAA4B;KACrC;IACD,QAAQ,EAAE,8DAA8D;IACxE,WAAW,EAAE,0CAA0C;IACvD,cAAc,EAAE,CAAC;CACpB,CAAC;AAEW,QAAA,gCAAgC,GAAyB;IAClE,WAAW,EAAE,sBAAsB;IACnC,IAAI,EAAE,qBAAqB;IAC3B,IAAI,EAAE;QACF,KAAK,EAAE,uBAAuB;QAC9B,IAAI,EAAE,4BAA4B;KACrC;IACD,KAAK,EAAE,CAAC,SAAS,CAAC;IAClB,OAAO,EAAE,CAAC;IACV,WAAW,EACP,sEAAsE;IAC1E,QAAQ,EACJ,iFAAiF;IACrF,QAAQ,EAAE;QACN,IAAI,EAAE,sBAAsB;KAC/B;IACD,OAAO,EAAE,IAAI;IACb,YAAY,EAAE,IAAI;IAClB,MAAM,EAAE,EAAE;IACV,OAAO,EAAE,CAAC,kCAAmB,CAAC,IAAI,CAAC;IACnC,WAAW,EAAE;QACT;YACI,IAAI,EAAE,iBAAiB;YACvB,QAAQ,EAAE,IAAI;SACjB;KACJ;IACD,UAAU,EAAE,IAAA,qCAAoB,EAC5B,iCAAsB,EACtB,mCAAuB,EACvB,UAAU,CACb;CACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { serviceTitanV1TransportConfig, serviceTitanV1Transport, } from "./transport";
2
+ export { serviceTitanV1Manifest } from "./manifest";
3
+ export { serviceTitanDescription, serviceTitanV1Description, serviceTitanTriggerDescription, serviceTitanTriggerV1Description, } from "./description";
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.serviceTitanTriggerV1Description = exports.serviceTitanTriggerDescription = exports.serviceTitanV1Description = exports.serviceTitanDescription = exports.serviceTitanV1Manifest = exports.serviceTitanV1Transport = exports.serviceTitanV1TransportConfig = void 0;
4
+ var transport_1 = require("./transport");
5
+ Object.defineProperty(exports, "serviceTitanV1TransportConfig", { enumerable: true, get: function () { return transport_1.serviceTitanV1TransportConfig; } });
6
+ Object.defineProperty(exports, "serviceTitanV1Transport", { enumerable: true, get: function () { return transport_1.serviceTitanV1Transport; } });
7
+ var manifest_1 = require("./manifest");
8
+ Object.defineProperty(exports, "serviceTitanV1Manifest", { enumerable: true, get: function () { return manifest_1.serviceTitanV1Manifest; } });
9
+ var description_1 = require("./description");
10
+ Object.defineProperty(exports, "serviceTitanDescription", { enumerable: true, get: function () { return description_1.serviceTitanDescription; } });
11
+ Object.defineProperty(exports, "serviceTitanV1Description", { enumerable: true, get: function () { return description_1.serviceTitanV1Description; } });
12
+ Object.defineProperty(exports, "serviceTitanTriggerDescription", { enumerable: true, get: function () { return description_1.serviceTitanTriggerDescription; } });
13
+ Object.defineProperty(exports, "serviceTitanTriggerV1Description", { enumerable: true, get: function () { return description_1.serviceTitanTriggerV1Description; } });
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../nodes/ServiceTitan/v1/settings/index.ts"],"names":[],"mappings":";;;AAAA,yCAGqB;AAFjB,0HAAA,6BAA6B,OAAA;AAC7B,oHAAA,uBAAuB,OAAA;AAE3B,uCAAoD;AAA3C,kHAAA,sBAAsB,OAAA;AAC/B,6CAKuB;AAJnB,sHAAA,uBAAuB,OAAA;AACvB,wHAAA,yBAAyB,OAAA;AACzB,6HAAA,8BAA8B,OAAA;AAC9B,+HAAA,gCAAgC,OAAA"}
@@ -0,0 +1,2 @@
1
+ import type { IntegrationManifest } from "@thegraphitelab/n8n-nodes-core";
2
+ export declare const serviceTitanV1Manifest: IntegrationManifest;
@@ -4,6 +4,6 @@ exports.serviceTitanV1Manifest = void 0;
4
4
  // The FROZEN v1 manifest contract. Every v1 node instance resolves through
5
5
  // this. Do not regenerate over v1/generated/manifests.ts — a breaking change
6
6
  // gets a new vN/generated/ directory and its own vN/manifest.ts.
7
- const manifests_1 = require("./generated/manifests");
7
+ const manifests_1 = require("../generated/manifests");
8
8
  exports.serviceTitanV1Manifest = manifests_1.manifests;
9
9
  //# sourceMappingURL=manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../../../../nodes/ServiceTitan/v1/settings/manifest.ts"],"names":[],"mappings":";;;AAAA,2EAA2E;AAC3E,6EAA6E;AAC7E,iEAAiE;AACjE,sDAAmD;AAMtC,QAAA,sBAAsB,GAAG,qBAAgC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { TransportConfig } from "@thegraphitelab/n8n-nodes-core";
2
+ export declare const serviceTitanV1TransportConfig: TransportConfig;
3
+ export declare const serviceTitanV1Transport: import("@thegraphitelab/n8n-nodes-core/dist/transport/createTransport").Transport;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.serviceTitanV1Transport = exports.serviceTitanV1TransportConfig = void 0;
4
+ /* eslint-disable @n8n/community-nodes/no-restricted-imports --
5
+ * This is the best solution to share core functionality across integrations
6
+ */
7
+ const n8n_nodes_core_1 = require("@thegraphitelab/n8n-nodes-core");
8
+ const ServiceTitanApi_credentials_1 = require("../../../../credentials/ServiceTitanApi.credentials");
9
+ // The ServiceTitan business logic the generic transport reads.
10
+ exports.serviceTitanV1TransportConfig = {
11
+ credentialKey: "serviceTitanApi",
12
+ // Fills the `{tenant}` placeholder in generated paths from the credential.
13
+ pathContext: (credentials) => ({
14
+ tenant: String(credentials.tenantId),
15
+ }),
16
+ baseUrl: (credentials) => `https://${(0, ServiceTitanApi_credentials_1.getApiHost)(credentials.environment ?? "integration")}`,
17
+ itemsOf: (response) => {
18
+ const data = response.data;
19
+ return Array.isArray(data) ? data : [];
20
+ },
21
+ hasMore: (response) => Boolean(response.hasMore),
22
+ pageParam: "page",
23
+ maxPages: 50,
24
+ cursorParam: "from",
25
+ nextCursor: (response) => response.continueFrom,
26
+ maxExportIterations: 1,
27
+ };
28
+ // The ServiceTitan transport: the generic engine bound to ST's config. Factories
29
+ // and node methods consume this injected Transport (no per-call `this` wrappers).
30
+ exports.serviceTitanV1Transport = (0, n8n_nodes_core_1.createTransport)(exports.serviceTitanV1TransportConfig);
31
+ //# sourceMappingURL=transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../../../nodes/ServiceTitan/v1/settings/transport.ts"],"names":[],"mappings":";;;AACA;;GAEG;AACH,mEAAiE;AAGjE,qGAAiF;AAUjF,+DAA+D;AAClD,QAAA,6BAA6B,GAAoB;IAC1D,aAAa,EAAE,iBAAiB;IAChC,2EAA2E;IAC3E,WAAW,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QAC3B,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC;KACvC,CAAC;IACF,OAAO,EAAE,CAAC,WAAW,EAAE,EAAE,CACrB,WAAW,IAAA,wCAAU,EAAE,WAAW,CAAC,WAAsB,IAAI,aAAa,CAAC,EAAE;IACjF,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE;QAClB,MAAM,IAAI,GAAI,QAAwC,CAAC,IAAI,CAAC;QAC5D,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3C,CAAC;IACD,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,OAAO,CAAE,QAAkC,CAAC,OAAO,CAAC;IAC3E,SAAS,EAAE,MAAM;IACjB,QAAQ,EAAE,EAAE;IACZ,WAAW,EAAE,MAAM;IACnB,UAAU,EAAE,CAAC,QAAQ,EAAE,EAAE,CACpB,QAAsC,CAAC,YAAY;IACxD,mBAAmB,EAAE,CAAC;CACzB,CAAC;AAEF,iFAAiF;AACjF,kFAAkF;AACrE,QAAA,uBAAuB,GAAG,IAAA,gCAAe,EAClD,qCAA6B,CAChC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { VersionedNodeType } from "n8n-workflow";
2
+ export declare class ServiceTitanHandwrittenTrigger extends VersionedNodeType {
3
+ constructor();
4
+ }
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ServiceTitanHandwrittenTrigger = void 0;
4
+ const n8n_workflow_1 = require("n8n-workflow");
5
+ const ServiceTitanHandwrittenTriggerV1_node_1 = require("./v1/ServiceTitanHandwrittenTriggerV1.node");
6
+ const triggerBaseDescription = {
7
+ displayName: "ServiceTitan (Handwritten) Trigger",
8
+ name: "serviceTitanHandwrittenTrigger",
9
+ group: ["trigger"],
10
+ icon: {
11
+ light: "file:servicetitan.svg",
12
+ dark: "file:servicetitan.dark.svg",
13
+ },
14
+ subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}',
15
+ description: "Starts a workflow on ServiceTitan events",
16
+ defaultVersion: 1,
17
+ };
18
+ class ServiceTitanHandwrittenTrigger extends n8n_workflow_1.VersionedNodeType {
19
+ constructor() {
20
+ const nodeVersions = {
21
+ 1: new ServiceTitanHandwrittenTriggerV1_node_1.ServiceTitanHandwrittenTriggerV1(triggerBaseDescription),
22
+ };
23
+ super(nodeVersions, triggerBaseDescription);
24
+ }
25
+ }
26
+ exports.ServiceTitanHandwrittenTrigger = ServiceTitanHandwrittenTrigger;
27
+ //# sourceMappingURL=ServiceTitanHandwrittenTrigger.node.js.map