@xapp/stentor-service-fieldroutes 1.90.0 → 1.90.2

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 CHANGED
@@ -4,17 +4,22 @@ Implementation of `CrmService` for [FieldRoutes](https://api.fieldroutes.com/ind
4
4
 
5
5
  ### Status
6
6
 
7
- Scaffold. The `CrmService` surface (`send`, `getAvailability`) is implemented, but the FieldRoutes
8
- API details (endpoint paths, request encoding, response envelope) are modeled from the documented
9
- conventions and **must be verified against the live API and a real office** before production use.
10
- Everything HTTP flows through the single `request()` method in `FieldRoutesService`, so confirming
11
- the transport is a localized change. Search the source for `TODO` and `NOTE:`.
7
+ Transport confirmed, write-side pending a live office. The `CrmService` surface (`send`,
8
+ `getAvailability`) is implemented, and the HTTP transport is verified against FieldRoutes' own
9
+ API-explorer client ([`APIModule.js`](https://api.fieldroutes.com/resources/APIModule.js)): every
10
+ call is `POST {base}/{entity}/{action}` with an `application/x-www-form-urlencoded` body carrying
11
+ `authenticationKey`/`authenticationToken`, and the response envelope is `{ success, errorMessage }`.
12
+ Still to confirm against a real office: the exact required fields for customer create/update and
13
+ appointment booking, and the API host (`fieldroutes.com` vs `pestroutes.com` — set `apiDomain`).
14
+ Everything HTTP flows through the single `request()` method in `FieldRoutesService`, so any remaining
15
+ adjustment is localized. See `FieldRoutesService.ftest.ts` for the live verification.
12
16
 
13
17
  ### Configuration
14
18
 
15
19
  `FieldRoutesService` is constructed with:
16
20
 
17
21
  - `subdomain` — the office subdomain, e.g. `acmepest` → `https://acmepest.fieldroutes.com/api`
22
+ - `apiDomain` (optional) — API host, defaults to `fieldroutes.com`; set to `pestroutes.com` for legacy offices
18
23
  - `authenticate()` — returns `{ authenticationKey, authenticationToken }` (office-scoped credentials)
19
24
  - `appId` — the Studio app id
20
25
  - `sourceID` (optional) — FieldRoutes lead source id to stamp on created customers
@@ -28,18 +33,30 @@ the transport is a localized change. Search the source for `TODO` and `NOTE:`.
28
33
  2. Updates the match or creates a new customer (`customer/update` / `customer/create`).
29
34
  3. If the lead carries a `DATETIME`, books an appointment (`appointment/create`) — non-fatal on failure.
30
35
 
31
- ### To verify against the FieldRoutes docs
36
+ ### Confirmed vs. still open
32
37
 
33
- - Auth: are `authenticationKey`/`authenticationToken` query params, form fields, or headers?
34
- - Search: does `customer/search` return `customerIDs`, and is it GET or POST?
35
- - Create/update: response envelope + the id field name (`customerID`?).
36
- - Appointment/subscription: the required fields for booking, and appointment-type ids.
37
- - Availability: whether `getAvailability` should be backed by route capacity / `appointment/search`.
38
+ Confirmed from the API-explorer client + a live probe of the sandbox host:
39
+
40
+ - Auth: `authenticationKey`/`authenticationToken` are **form fields** in the POST body.
41
+ - Search: `customer/search` is **POST** and returns an **id list** (conventionally `customerIDs`),
42
+ not full records — resolve records with a follow-up `{entity}/get` if ever needed.
43
+ - Envelope: failure is signaled by `success: false` **or** a populated `errorMessage`.
44
+
45
+ Still needs a live office (tracked in stentor-core #5247):
46
+
47
+ - Create/update/appointment: the exact **required fields** to create a customer and book an appointment
48
+ (appointment type, subscription/service, route/spot, duration?).
49
+ - Host: whether production offices resolve on `fieldroutes.com` or `pestroutes.com` (`apiDomain`).
50
+ - Availability: whether `getAvailability` should be backed by route capacity / `appointment/search`
51
+ instead of the current always-open default.
38
52
 
39
53
  ### Testing
40
54
 
41
55
  ```bash
42
- yarn workspace @xapp/stentor-service-fieldroutes local
43
- ```
56
+ # Mocked unit tests (no credentials required)
57
+ yarn workspace @xapp/stentor-service-fieldroutes test
44
58
 
45
- Tests mock the HTTP layer with `axios-mock-adapter`; no live credentials required.
59
+ # Live smoke test against a real office (skipped unless FIELDROUTES_* env is set)
60
+ FIELDROUTES_SUBDOMAIN=acmepest FIELDROUTES_KEY=… FIELDROUTES_TOKEN=… \
61
+ yarn workspace @xapp/stentor-service-fieldroutes local
62
+ ```
@@ -22,6 +22,12 @@ export interface FieldRoutesServiceProps extends BaseService, CrmServiceAvailabi
22
22
  * The office subdomain, e.g. "acmepest" -> https://acmepest.fieldroutes.com/api
23
23
  */
24
24
  subdomain: string;
25
+ /**
26
+ * API host domain. Defaults to "fieldroutes.com". Legacy/PestRoutes offices are served from
27
+ * "pestroutes.com" (the API explorer's sandbox is `stagingdemo.pestroutes.com`), so this is
28
+ * configurable per office until we confirm which host a given tenant resolves to.
29
+ */
30
+ apiDomain?: string;
25
31
  channel?: string;
26
32
  authenticate: FieldRoutesAuthenticator;
27
33
  openAI?: {
@@ -39,10 +45,13 @@ export interface FieldRoutesServiceProps extends BaseService, CrmServiceAvailabi
39
45
  /**
40
46
  * CrmService implementation for FieldRoutes.
41
47
  *
42
- * NOTE: The FieldRoutes API surface (endpoint paths, request encoding, response envelope) is
43
- * modeled here from the documented PestRoutes/FieldRoutes conventions and MUST be verified against
44
- * the live docs at https://api.fieldroutes.com/index and a real office before going to production.
45
- * The HTTP transport is centralized in {@link FieldRoutesService.request} to keep that easy to adjust.
48
+ * Transport is confirmed against FieldRoutes' own API-explorer client
49
+ * (https://api.fieldroutes.com/resources/APIModule.js): calls are `POST {base}/{entity}/{action}`
50
+ * with an `application/x-www-form-urlencoded` body carrying `authenticationKey`/`authenticationToken`,
51
+ * and the response envelope is `{ success, errorMessage }`. What still needs a live office to confirm:
52
+ * the exact write-side required fields (customer create/update, appointment booking) and the API host
53
+ * (fieldroutes.com vs pestroutes.com — see {@link FieldRoutesServiceProps.apiDomain}).
54
+ * All HTTP is centralized in {@link FieldRoutesService.request} to keep any remaining tweaks localized.
46
55
  */
47
56
  export declare class FieldRoutesService extends FetchService implements CrmService {
48
57
  private props;
@@ -19,14 +19,20 @@ const stentor_logger_1 = require("stentor-logger");
19
19
  const axios_1 = __importDefault(require("axios"));
20
20
  const addresser_1 = require("addresser");
21
21
  const util_1 = require("./util");
22
+ // Form-encoded transport: FieldRoutes' own API-explorer client posts every call as
23
+ // application/x-www-form-urlencoded and expects a JSON response.
24
+ const FORM_HEADERS = { Accept: "application/json", "Content-Type": "application/x-www-form-urlencoded" };
22
25
  const CRM_DEBUG = process.env.CRM_DEBUG === "true";
23
26
  /**
24
27
  * CrmService implementation for FieldRoutes.
25
28
  *
26
- * NOTE: The FieldRoutes API surface (endpoint paths, request encoding, response envelope) is
27
- * modeled here from the documented PestRoutes/FieldRoutes conventions and MUST be verified against
28
- * the live docs at https://api.fieldroutes.com/index and a real office before going to production.
29
- * The HTTP transport is centralized in {@link FieldRoutesService.request} to keep that easy to adjust.
29
+ * Transport is confirmed against FieldRoutes' own API-explorer client
30
+ * (https://api.fieldroutes.com/resources/APIModule.js): calls are `POST {base}/{entity}/{action}`
31
+ * with an `application/x-www-form-urlencoded` body carrying `authenticationKey`/`authenticationToken`,
32
+ * and the response envelope is `{ success, errorMessage }`. What still needs a live office to confirm:
33
+ * the exact write-side required fields (customer create/update, appointment booking) and the API host
34
+ * (fieldroutes.com vs pestroutes.com — see {@link FieldRoutesServiceProps.apiDomain}).
35
+ * All HTTP is centralized in {@link FieldRoutesService.request} to keep any remaining tweaks localized.
30
36
  */
31
37
  class FieldRoutesService extends stentor_service_fetch_1.FetchService {
32
38
  constructor(props) {
@@ -37,7 +43,7 @@ class FieldRoutesService extends stentor_service_fetch_1.FetchService {
37
43
  }
38
44
  }
39
45
  get baseUrl() {
40
- return `https://${this.props.subdomain}.fieldroutes.com/api`;
46
+ return `https://${this.props.subdomain}.${this.props.apiDomain || "fieldroutes.com"}/api`;
41
47
  }
42
48
  /**
43
49
  * getAvailability is not yet wired to FieldRoutes; returns full availability so the scheduler
@@ -170,15 +176,27 @@ class FieldRoutesService extends stentor_service_fetch_1.FetchService {
170
176
  params.phone = query.phone;
171
177
  }
172
178
  const config = {
173
- method: "get",
179
+ method: "post",
174
180
  url: `${this.baseUrl}/customer/search`,
175
- params
181
+ headers: Object.assign({}, FORM_HEADERS),
182
+ data: (0, util_1.toFormBody)(params)
176
183
  };
184
+ // search returns ID lists, not full records. The id array lives under a server-named
185
+ // `propertyName` (conventionally `customerIDs`); read that, falling back to the pointer.
177
186
  const response = yield this.request(config, "customer/search");
178
187
  if (response.status === "Failure") {
179
- return response;
188
+ return { status: "Failure", error: response.error };
189
+ }
190
+ const body = response.data;
191
+ const idList = (_a = body === null || body === void 0 ? void 0 : body.customerIDs) !== null && _a !== void 0 ? _a : ((body === null || body === void 0 ? void 0 : body.propertyName) ? body[body.propertyName] : undefined);
192
+ // Guard: the server could name a propertyName that isn't array-valued. Treat anything
193
+ // non-array as "no matches" rather than throwing out of this public method — but a
194
+ // present-but-non-array value is an unexpected shape, not a genuine empty result, and
195
+ // silently degrading to "no match" would create a duplicate customer. Log so it's visible.
196
+ if (idList !== undefined && idList !== null && !Array.isArray(idList)) {
197
+ (0, stentor_logger_1.log)().warn(`FieldRoutes: customer/search id list was not an array; treating as no matches: ${JSON.stringify(idList)}`);
180
198
  }
181
- const ids = (((_a = response.data) === null || _a === void 0 ? void 0 : _a.customerIDs) || []).map((id) => `${id}`);
199
+ const ids = Array.isArray(idList) ? idList.map((id) => `${id}`) : [];
182
200
  return { status: "Success", data: ids };
183
201
  });
184
202
  }
@@ -193,8 +211,8 @@ class FieldRoutesService extends stentor_service_fetch_1.FetchService {
193
211
  const config = {
194
212
  method: "post",
195
213
  url: `${this.baseUrl}/customer/create`,
196
- headers: { Accept: "application/json", "Content-Type": "application/json" },
197
- data: JSON.stringify(data)
214
+ headers: Object.assign({}, FORM_HEADERS),
215
+ data: (0, util_1.toFormBody)(data)
198
216
  };
199
217
  const response = yield this.request(config, "customer/create");
200
218
  if (response.status === "Failure") {
@@ -213,8 +231,8 @@ class FieldRoutesService extends stentor_service_fetch_1.FetchService {
213
231
  const config = {
214
232
  method: "post",
215
233
  url: `${this.baseUrl}/customer/update`,
216
- headers: { Accept: "application/json", "Content-Type": "application/json" },
217
- data: JSON.stringify(data)
234
+ headers: Object.assign({}, FORM_HEADERS),
235
+ data: (0, util_1.toFormBody)(data)
218
236
  };
219
237
  const response = yield this.request(config, "customer/update");
220
238
  if (response.status === "Failure") {
@@ -234,8 +252,8 @@ class FieldRoutesService extends stentor_service_fetch_1.FetchService {
234
252
  const config = {
235
253
  method: "post",
236
254
  url: `${this.baseUrl}/appointment/create`,
237
- headers: { Accept: "application/json", "Content-Type": "application/json" },
238
- data: JSON.stringify(data)
255
+ headers: Object.assign({}, FORM_HEADERS),
256
+ data: (0, util_1.toFormBody)(data)
239
257
  };
240
258
  const response = yield this.request(config, "appointment/create");
241
259
  if (response.status === "Failure") {
@@ -259,8 +277,10 @@ class FieldRoutesService extends stentor_service_fetch_1.FetchService {
259
277
  if (CRM_DEBUG) {
260
278
  (0, stentor_logger_1.log)().info(`[CRM_DEBUG] FieldRoutes ${apiCall} RESPONSE: ${JSON.stringify(response.data)}`);
261
279
  }
280
+ // FieldRoutes signals failure with `success: false` OR a populated `errorMessage`
281
+ // (the API-explorer client rejects on either), so we honor both.
262
282
  const body = response.data;
263
- if (body && body.success === false) {
283
+ if (body && (body.success === false || body.errorMessage)) {
264
284
  result.error = `[${apiCall}] ${body.errorMessage || (body.errors || []).join("; ") || "FieldRoutes API error"}`;
265
285
  (0, stentor_logger_1.log)().error(`FieldRoutes API Error ${result.error}`);
266
286
  return result;
@@ -1 +1 @@
1
- {"version":3,"file":"FieldRoutesService.js","sourceRoot":"","sources":["../src/FieldRoutesService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FieldRoutesService.js","sourceRoot":"","sources":["../src/FieldRoutesService.ts"],"names":[],"mappings":"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"}
package/lib/util.d.ts CHANGED
@@ -1,10 +1,22 @@
1
1
  /*! Copyright (c) 2025, XAPP AI */
2
2
  import { AxiosRequestConfig } from "axios";
3
3
  import { ExternalLead } from "stentor-models";
4
+ /**
5
+ * Serialize a params object into an `application/x-www-form-urlencoded` body.
6
+ *
7
+ * FieldRoutes (via the jQuery `$.post(...)` client its API explorer ships) expects form-encoded
8
+ * request bodies, not JSON. `undefined`/`null` values are dropped so we never send the literal
9
+ * strings "undefined"/"null".
10
+ *
11
+ * NOTE: values are expected to be flat scalars (every call site passes string fields). A non-primitive
12
+ * would coerce via `${value}` (e.g. an object → "[object Object]"); revisit with per-value handling
13
+ * (repeated fields / JSON) if FieldRoutes ever gains multi-value or nested custom fields.
14
+ */
15
+ export declare function toFormBody(params: Record<string, unknown>): string;
4
16
  /**
5
17
  * Returns a shallow copy of an Axios config with FieldRoutes credentials masked, for safe logging.
6
18
  *
7
- * Credentials ride in BOTH `params` (search) and the JSON-stringified `data` body (create/update),
19
+ * Credentials ride in `params` (legacy) and the form-encoded `data` body (search/create/update),
8
20
  * so both are scrubbed. Anything unparseable is dropped rather than logged raw.
9
21
  */
10
22
  export declare function redactConfig(config: AxiosRequestConfig): Record<string, unknown>;
package/lib/util.js CHANGED
@@ -1,13 +1,46 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toFormBody = toFormBody;
3
4
  exports.redactConfig = redactConfig;
4
5
  exports.getName = getName;
5
6
  exports.leadToTranscript = leadToTranscript;
6
7
  const SECRET_KEYS = ["authenticationKey", "authenticationToken"];
8
+ /**
9
+ * Serialize a params object into an `application/x-www-form-urlencoded` body.
10
+ *
11
+ * FieldRoutes (via the jQuery `$.post(...)` client its API explorer ships) expects form-encoded
12
+ * request bodies, not JSON. `undefined`/`null` values are dropped so we never send the literal
13
+ * strings "undefined"/"null".
14
+ *
15
+ * NOTE: values are expected to be flat scalars (every call site passes string fields). A non-primitive
16
+ * would coerce via `${value}` (e.g. an object → "[object Object]"); revisit with per-value handling
17
+ * (repeated fields / JSON) if FieldRoutes ever gains multi-value or nested custom fields.
18
+ */
19
+ function toFormBody(params) {
20
+ const search = new URLSearchParams();
21
+ for (const [key, value] of Object.entries(params)) {
22
+ if (value === undefined || value === null) {
23
+ continue;
24
+ }
25
+ search.append(key, typeof value === "string" ? value : `${value}`);
26
+ }
27
+ return search.toString();
28
+ }
29
+ /**
30
+ * Best-effort parse of a request body string into an object, for redacted logging only.
31
+ * Handles both form-encoded (our transport) and JSON payloads.
32
+ */
33
+ function parseBody(data) {
34
+ const trimmed = data.trim();
35
+ if (trimmed.startsWith("{") || trimmed.startsWith("[")) {
36
+ return JSON.parse(trimmed);
37
+ }
38
+ return Object.fromEntries(new URLSearchParams(data));
39
+ }
7
40
  /**
8
41
  * Returns a shallow copy of an Axios config with FieldRoutes credentials masked, for safe logging.
9
42
  *
10
- * Credentials ride in BOTH `params` (search) and the JSON-stringified `data` body (create/update),
43
+ * Credentials ride in `params` (legacy) and the form-encoded `data` body (search/create/update),
11
44
  * so both are scrubbed. Anything unparseable is dropped rather than logged raw.
12
45
  */
13
46
  function redactConfig(config) {
@@ -26,7 +59,7 @@ function redactConfig(config) {
26
59
  }
27
60
  if (typeof config.data === "string") {
28
61
  try {
29
- out.data = redact(JSON.parse(config.data));
62
+ out.data = redact(parseBody(config.data));
30
63
  }
31
64
  catch (_a) {
32
65
  out.data = "***unserializable***";
package/lib/util.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
7
- "version": "1.90.0",
7
+ "version": "1.90.2",
8
8
  "description": "Service to integrate with FieldRoutes",
9
9
  "types": "lib/index",
10
10
  "main": "lib/index",
@@ -21,9 +21,9 @@
21
21
  "axios-mock-adapter": "2.1.0",
22
22
  "chai": "4.5.0",
23
23
  "dotenv": "17.4.2",
24
- "mocha": "11.7.5",
24
+ "mocha": "11.7.6",
25
25
  "sinon": "21.0.0",
26
- "stentor-logger": "1.74.0",
26
+ "stentor-logger": "1.74.1",
27
27
  "stentor-models": "1.74.0",
28
28
  "stentor-service-fetch": "1.74.0",
29
29
  "ts-node": "10.9.2",