@d19n/youfibre-odin-sdk 2.0.306 → 2.0.307

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 (34) hide show
  1. package/README.md +10 -9
  2. package/dist/actions-v2/CollectCustomerDeviceRouterDto.d.ts +63 -0
  3. package/dist/actions-v2/CollectCustomerDeviceRouterDto.js +56 -0
  4. package/dist/actions-v2/CompleteServiceWorkOrderFlowDto.d.ts +135 -96
  5. package/dist/api-sdk-v2/UserApi.d.ts +2 -0
  6. package/dist/api-sdk-v2/UserApi.js +6 -0
  7. package/dist/api-sdk-v2/YfFieldVisitOutcomeFormApi.d.ts +2 -0
  8. package/dist/api-sdk-v2/YfFieldVisitOutcomeFormApi.js +6 -0
  9. package/dist/db-sdk-v2/UserDb.d.ts +2 -0
  10. package/dist/db-sdk-v2/UserDb.js +6 -0
  11. package/dist/db-sdk-v2/YfFieldVisitOutcomeFormDb.d.ts +2 -0
  12. package/dist/db-sdk-v2/YfFieldVisitOutcomeFormDb.js +6 -0
  13. package/dist/entities-v2/BillingAdjustment.d.ts +1 -3
  14. package/dist/entities-v2/BillingAdjustment.js +1 -3
  15. package/dist/entities-v2/Case.d.ts +2 -1
  16. package/dist/entities-v2/Case.js +2 -1
  17. package/dist/entities-v2/CreditNote.d.ts +1 -2
  18. package/dist/entities-v2/CreditNote.js +1 -2
  19. package/dist/entities-v2/PgReportEvent.d.ts +5 -1
  20. package/dist/entities-v2/PgReportEvent.js +4 -0
  21. package/dist/entities-v2/User.d.ts +3 -0
  22. package/dist/entities-v2/VoiceConfiguration.d.ts +8 -0
  23. package/dist/entities-v2/VoiceConfiguration.js +2 -0
  24. package/dist/entities-v2/YfFieldVisitOutcomeForm.d.ts +149 -80
  25. package/dist/entities-v2/YfFieldVisitOutcomeForm.js +37 -31
  26. package/dist/records-v2/CustomerDeviceRouterRecord.d.ts +28 -0
  27. package/dist/records-v2/CustomerDeviceRouterRecord.js +37 -0
  28. package/dist/records-v2/UserRecord.d.ts +20 -0
  29. package/dist/records-v2/UserRecord.js +33 -0
  30. package/dist/records-v2/YfFieldVisitOutcomeFormRecord.d.ts +22 -18
  31. package/dist/records-v2/YfFieldVisitOutcomeFormRecord.js +34 -17
  32. package/dist/records-v2/index.d.ts +1 -1
  33. package/dist/records-v2/index.js +5 -5
  34. package/package.json +1 -1
@@ -428,7 +428,7 @@ export declare enum CaseCategory {
428
428
  * - `COPY_OF_INVOICE` - Copy of Invoice
429
429
  * - `CUSTOMER_DEVICE_ISSUE` - Customer Device Issue
430
430
  * - `DATA_SUBJECT_ACCESS_REQUEST` - Data Subject Access Request
431
- * - ... and 40 more
431
+ * - ... and 41 more
432
432
  */
433
433
  export declare enum CaseSubCategory {
434
434
  AMEND_BILLING_DATE = "AMEND_BILLING_DATE",
@@ -476,6 +476,7 @@ export declare enum CaseSubCategory {
476
476
  POSITIVE_REVIEWS = "POSITIVE_REVIEWS",
477
477
  PRE_LIVE_ORDER_QUERY = "PRE_LIVE_ORDER_QUERY",
478
478
  PRICE_MATCH = "PRICE_MATCH",
479
+ RECONTRACT_ROUTER_DISPATCH = "RECONTRACT_ROUTER_DISPATCH",
479
480
  RECONTRACT_UPGRADE = "RECONTRACT_UPGRADE",
480
481
  REFERRAL = "REFERRAL",
481
482
  SERVICE_VISIT = "SERVICE_VISIT",
@@ -425,7 +425,7 @@ var CaseCategory;
425
425
  * - `COPY_OF_INVOICE` - Copy of Invoice
426
426
  * - `CUSTOMER_DEVICE_ISSUE` - Customer Device Issue
427
427
  * - `DATA_SUBJECT_ACCESS_REQUEST` - Data Subject Access Request
428
- * - ... and 40 more
428
+ * - ... and 41 more
429
429
  */
430
430
  var CaseSubCategory;
431
431
  (function (CaseSubCategory) {
@@ -474,6 +474,7 @@ var CaseSubCategory;
474
474
  CaseSubCategory["POSITIVE_REVIEWS"] = "POSITIVE_REVIEWS";
475
475
  CaseSubCategory["PRE_LIVE_ORDER_QUERY"] = "PRE_LIVE_ORDER_QUERY";
476
476
  CaseSubCategory["PRICE_MATCH"] = "PRICE_MATCH";
477
+ CaseSubCategory["RECONTRACT_ROUTER_DISPATCH"] = "RECONTRACT_ROUTER_DISPATCH";
477
478
  CaseSubCategory["RECONTRACT_UPGRADE"] = "RECONTRACT_UPGRADE";
478
479
  CaseSubCategory["REFERRAL"] = "REFERRAL";
479
480
  CaseSubCategory["SERVICE_VISIT"] = "SERVICE_VISIT";
@@ -43,7 +43,7 @@ export declare enum CreditNoteEntityTypes {
43
43
  * - `OTS_ORDER_CANCELLATION` - OTS Order Cancellation
44
44
  * - `PAYMENT_ARRANGEMENT` - Payment Arrangement
45
45
  * - `PAYMENT_ERROR` - Payment Error
46
- * - ... and 6 more
46
+ * - ... and 5 more
47
47
  */
48
48
  export declare enum CreditNoteReason {
49
49
  BAD_DEBT_WRITE_OFF = "BAD_DEBT_WRITE_OFF",
@@ -61,7 +61,6 @@ export declare enum CreditNoteReason {
61
61
  OTS_ORDER_CANCELLATION = "OTS_ORDER_CANCELLATION",
62
62
  PAYMENT_ARRANGEMENT = "PAYMENT_ARRANGEMENT",
63
63
  PAYMENT_ERROR = "PAYMENT_ERROR",
64
- PAYMENT_PLAN = "PAYMENT_PLAN",
65
64
  REFERRAL_REWARD = "REFERRAL_REWARD",
66
65
  RETENTION = "RETENTION",
67
66
  SALES_MIS_SOLD = "SALES_MISSOLD",
@@ -43,7 +43,7 @@ var CreditNoteEntityTypes;
43
43
  * - `OTS_ORDER_CANCELLATION` - OTS Order Cancellation
44
44
  * - `PAYMENT_ARRANGEMENT` - Payment Arrangement
45
45
  * - `PAYMENT_ERROR` - Payment Error
46
- * - ... and 6 more
46
+ * - ... and 5 more
47
47
  */
48
48
  var CreditNoteReason;
49
49
  (function (CreditNoteReason) {
@@ -62,7 +62,6 @@ var CreditNoteReason;
62
62
  CreditNoteReason["OTS_ORDER_CANCELLATION"] = "OTS_ORDER_CANCELLATION";
63
63
  CreditNoteReason["PAYMENT_ARRANGEMENT"] = "PAYMENT_ARRANGEMENT";
64
64
  CreditNoteReason["PAYMENT_ERROR"] = "PAYMENT_ERROR";
65
- CreditNoteReason["PAYMENT_PLAN"] = "PAYMENT_PLAN";
66
65
  CreditNoteReason["REFERRAL_REWARD"] = "REFERRAL_REWARD";
67
66
  CreditNoteReason["RETENTION"] = "RETENTION";
68
67
  CreditNoteReason["SALES_MIS_SOLD"] = "SALES_MISSOLD";
@@ -57,17 +57,21 @@ export declare enum DefaultPgReportEventStageKeys {
57
57
  *
58
58
  * @remarks Available options:
59
59
  * - `ADDACS`
60
+ * - `ARUCS`
60
61
  * - `ARUDD`
61
62
  * - `AUDDIS_ADVICE` - AUDDIS Advice Report
62
63
  * - `AUDDIS_ACCEPTANCE` - AUDDIS File Acceptance Report
63
64
  * - `AUDDIS_INPUT` - AUDDIS Input Report
65
+ * - `INPUT` - PE Input Report
64
66
  */
65
67
  export declare enum PgReportEventReportType {
66
68
  ADDACS = "ADDACS",
69
+ ARUCS = "ARUCS",
67
70
  ARUDD = "ARUDD",
68
71
  AUDDIS_ADVICE_REPORT = "AUDDIS_ADVICE",
69
72
  AUDDIS_FILE_ACCEPTANCE_REPORT = "AUDDIS_ACCEPTANCE",
70
- AUDDIS_INPUT_REPORT = "AUDDIS_INPUT"
73
+ AUDDIS_INPUT_REPORT = "AUDDIS_INPUT",
74
+ PE_INPUT_REPORT = "INPUT"
71
75
  }
72
76
  /**
73
77
  * Property keys for PgReportEvent
@@ -60,18 +60,22 @@ var DefaultPgReportEventStageKeys;
60
60
  *
61
61
  * @remarks Available options:
62
62
  * - `ADDACS`
63
+ * - `ARUCS`
63
64
  * - `ARUDD`
64
65
  * - `AUDDIS_ADVICE` - AUDDIS Advice Report
65
66
  * - `AUDDIS_ACCEPTANCE` - AUDDIS File Acceptance Report
66
67
  * - `AUDDIS_INPUT` - AUDDIS Input Report
68
+ * - `INPUT` - PE Input Report
67
69
  */
68
70
  var PgReportEventReportType;
69
71
  (function (PgReportEventReportType) {
70
72
  PgReportEventReportType["ADDACS"] = "ADDACS";
73
+ PgReportEventReportType["ARUCS"] = "ARUCS";
71
74
  PgReportEventReportType["ARUDD"] = "ARUDD";
72
75
  PgReportEventReportType["AUDDIS_ADVICE_REPORT"] = "AUDDIS_ADVICE";
73
76
  PgReportEventReportType["AUDDIS_FILE_ACCEPTANCE_REPORT"] = "AUDDIS_ACCEPTANCE";
74
77
  PgReportEventReportType["AUDDIS_INPUT_REPORT"] = "AUDDIS_INPUT";
78
+ PgReportEventReportType["PE_INPUT_REPORT"] = "INPUT";
75
79
  })(PgReportEventReportType = exports.PgReportEventReportType || (exports.PgReportEventReportType = {}));
76
80
  /**
77
81
  * Property keys for PgReportEvent
@@ -36,6 +36,7 @@ import { OutboundDialCampaignProperties } from './OutboundDialCampaign';
36
36
  import { OutboundDialSessionProperties } from './OutboundDialSession';
37
37
  import { AgentStatusProperties } from './AgentStatus';
38
38
  import { AgentStatusHistoryProperties } from './AgentStatusHistory';
39
+ import { YfFieldVisitOutcomeFormProperties } from './YfFieldVisitOutcomeForm';
39
40
  /**
40
41
  * Available types for User records
41
42
  */
@@ -285,6 +286,8 @@ export declare class User extends OdinRecord<UserProperties> {
285
286
  AgentStatus: OdinLink<LinkedOdinRecord<AgentStatusProperties>>;
286
287
  /** Linked AgentStatusHistory records (AgentStatusHistory__User) */
287
288
  AgentStatusHistory: OdinLink<LinkedOdinRecord<AgentStatusHistoryProperties>>;
289
+ /** Linked YfFieldVisitOutcomeForm records (YfFieldVisitOutcomeForm__User) */
290
+ YfFieldVisitOutcomeForm: OdinLink<LinkedOdinRecord<YfFieldVisitOutcomeFormProperties>>;
288
291
  }
289
292
  /**
290
293
  * RabbitMQ routing keys for User events
@@ -130,6 +130,8 @@ export declare enum VoiceConfigurationPortFromProvider {
130
130
  * Use these constants instead of string literals for type safety
131
131
  */
132
132
  export declare enum VoiceConfigurationPropertyKeys {
133
+ /** When the Magrathea "port accepted" customer email was sent for this port. Checked before sending and stamped after -- the redelivery-dedup guard for an at-least-once RabbitMQ consumer whose only prior guard (prevStatus !== nextStatus) was built from message-carried fields and so could not survive a redelivery. Scoped per port (this VoiceConfiguration record), not per contact, so a genuine second port for the same customer still sends. */
134
+ PortingUpdateEmailSentAt = "PortingUpdateEmailSentAt",
133
135
  /** ExternalReference */
134
136
  ExternalReference = "ExternalReference",
135
137
  /** MagratheaOrderLastUpdate (Network Operations - VoiceConfiguration) */
@@ -193,6 +195,12 @@ export declare enum VoiceConfigurationPropertyKeys {
193
195
  * @see ServiceModule:VoiceConfiguration
194
196
  */
195
197
  export interface VoiceConfigurationProperties {
198
+ /** When the Magrathea "port accepted" customer email was sent for this port. Checked before sending and stamped after -- the redelivery-dedup guard for an at-least-once RabbitMQ consumer whose only prior guard (prevStatus !== nextStatus) was built from message-carried fields and so could not survive a redelivery. Scoped per port (this VoiceConfiguration record), not per contact, so a genuine second port for the same customer still sends.
199
+ *
200
+ * @type {DATE_TIME}
201
+ * @default
202
+ */
203
+ PortingUpdateEmailSentAt: string;
196
204
  /** ExternalReference
197
205
  *
198
206
  * @type {TEXT}
@@ -135,6 +135,8 @@ var VoiceConfigurationPortFromProvider;
135
135
  */
136
136
  var VoiceConfigurationPropertyKeys;
137
137
  (function (VoiceConfigurationPropertyKeys) {
138
+ /** When the Magrathea "port accepted" customer email was sent for this port. Checked before sending and stamped after -- the redelivery-dedup guard for an at-least-once RabbitMQ consumer whose only prior guard (prevStatus !== nextStatus) was built from message-carried fields and so could not survive a redelivery. Scoped per port (this VoiceConfiguration record), not per contact, so a genuine second port for the same customer still sends. */
139
+ VoiceConfigurationPropertyKeys["PortingUpdateEmailSentAt"] = "PortingUpdateEmailSentAt";
138
140
  /** ExternalReference */
139
141
  VoiceConfigurationPropertyKeys["ExternalReference"] = "ExternalReference";
140
142
  /** MagratheaOrderLastUpdate (Network Operations - VoiceConfiguration) */
@@ -15,12 +15,11 @@ import { WorkOrderProperties } from './WorkOrder';
15
15
  import { AddressProperties } from './Address';
16
16
  import { NoteProperties } from './Note';
17
17
  import { FileProperties } from './File';
18
+ import { UserProperties } from './User';
18
19
  /**
19
20
  * Available types for YfFieldVisitOutcomeForm records
20
21
  */
21
22
  export declare enum YfFieldVisitOutcomeFormEntityTypes {
22
- /** This is the default record type */
23
- DEFAULT = "DEFAULT",
24
23
  /** The single record type on this entity, named to match every sibling outcome form in FieldServiceModule. One type is why the form needs no record-type selector. */
25
24
  OUTCOME_FORM = "OUTCOME_FORM"
26
25
  }
@@ -130,19 +129,6 @@ export declare enum YfFieldVisitOutcomeFormCustomerAtInstall {
130
129
  NO = "NO",
131
130
  YES = "YES"
132
131
  }
133
- /**
134
- * Valid values for YfFieldVisitOutcomeForm.ONTChecksPassed
135
- *
136
- * The gate on the whole ONT branch: NO is what asks for a failure reason.
137
- *
138
- * @remarks Available options:
139
- * - `NO` - No
140
- * - `YES` - Yes
141
- */
142
- export declare enum YfFieldVisitOutcomeFormONTChecksPassed {
143
- NO = "NO",
144
- YES = "YES"
145
- }
146
132
  /**
147
133
  * Valid values for YfFieldVisitOutcomeForm.ONTCheckFailReason
148
134
  *
@@ -158,6 +144,19 @@ export declare enum YfFieldVisitOutcomeFormONTCheckFailReason {
158
144
  LIGHT_LEVEL_OUT_OF_SPEC = "LIGHT_LEVEL_OUT_OF_SPEC",
159
145
  NO_LIGHT_FIBRE_BREAK = "NO_LIGHT_FIBRE_BREAK"
160
146
  }
147
+ /**
148
+ * Valid values for YfFieldVisitOutcomeForm.ONTChecksPassed
149
+ *
150
+ * The gate on the whole ONT branch: NO is what asks for a failure reason.
151
+ *
152
+ * @remarks Available options:
153
+ * - `NO` - No
154
+ * - `YES` - Yes
155
+ */
156
+ export declare enum YfFieldVisitOutcomeFormONTChecksPassed {
157
+ NO = "NO",
158
+ YES = "YES"
159
+ }
161
160
  /**
162
161
  * Valid values for YfFieldVisitOutcomeForm.AbleToAchieveMinimumSpeed
163
162
  *
@@ -320,12 +319,22 @@ export declare enum YfFieldVisitOutcomeFormHappyWithOutcome {
320
319
  * Use these constants instead of string literals for type safety
321
320
  */
322
321
  export declare enum YfFieldVisitOutcomeFormPropertyKeys {
322
+ /** The attending engineer. Prefilled from the work order via the form field default; the engineer can correct it if the job was reassigned on the day. */
323
+ Engineer = "Engineer",
324
+ /** The ONT light level reading. Split out of the old combined ONT photo. */
325
+ OntLightLevelPhoto = "ONTLightLevelPhoto",
326
+ /** Mesh topology from the gateway GUI, showing every unit in spec after the work. */
327
+ PostFaultMeshTopologyEvidence = "PostFaultMeshTopologyEvidence",
328
+ /** The ONT status lights. Split out of the old combined ONT photo. */
329
+ OntStatusLightsPhoto = "ONTStatusLightsPhoto",
330
+ /** The post-fault EXFO report. Asked on every visit, not only where the standard was met. */
331
+ PostFaultSpeedDbmEvidence = "PostFaultSpeedDbmEvidence",
323
332
  /** When the visit started. Field Services asked whether this can auto-populate to now; prefill is a form-renderer capability and is tracked separately, so it is captured by hand until then. */
324
333
  ServiceVisitDateTime = "ServiceVisitDateTime",
325
- /** The attending engineer. Asked for as free text; auto-populating from the logged-in user is the same prefill question as ServiceVisitDateTime. */
326
- EngineerName = "EngineerName",
327
334
  /** The work order this visit was made against. Deliberately carries no UNIQUE validator: a repeat visit to the same work order is a second form, not an overwrite of the first. */
328
335
  WorkOrderNumber = "WorkOrderNumber",
336
+ /** RETIRED — replaced by the Engineer column, which is TEXT and prefills from the work order. Off the form; a NAME column cannot become TEXT in place. */
337
+ EngineerName = "EngineerName",
329
338
  /** The property visited, linked to the CRM address record. */
330
339
  Location = "Location",
331
340
  /** The picture the engineer confirms having taken on arrival. */
@@ -346,8 +355,6 @@ export declare enum YfFieldVisitOutcomeFormPropertyKeys {
346
355
  OntFixedToWall = "ONTFixedToWall",
347
356
  /** Evidence of how the ONT is fixed and powered. */
348
357
  OntFixedToWallPhoto = "ONTFixedToWallPhoto",
349
- /** The readings behind the ONT check answer. */
350
- OntChecksPhoto = "ONTChecksPhoto",
351
358
  /** What the engineer saw that produced the failure reason. */
352
359
  OntCheckFailReasonPhoto = "ONTCheckFailReasonPhoto",
353
360
  /** The engineer's diagnosis category. A clean 8-option list from the 2026-08-21 template; the legacy 16-option list stays on YfFieldServiceVisit with the records that used it. */
@@ -358,8 +365,6 @@ export declare enum YfFieldVisitOutcomeFormPropertyKeys {
358
365
  EngineerDiagnosisCustomerDevicePhoto = "EngineerDiagnosisCustomerDevicePhoto",
359
366
  /** Whether the person on site witnessed the original install — the difference between a first-hand account of what changed and a second-hand one. */
360
367
  CustomerAtInstall = "CustomerAtInstall",
361
- /** The gate on the whole ONT branch: NO is what asks for a failure reason. */
362
- OntChecksPassed = "ONTChecksPassed",
363
368
  /** Why the ONT check failed. Only asked when ONTChecksPassed is NO. */
364
369
  OntCheckFailReason = "ONTCheckFailReason",
365
370
  /** Evidence the node is not on the floor. */
@@ -372,12 +377,14 @@ export declare enum YfFieldVisitOutcomeFormPropertyKeys {
372
377
  PreFaultTestPhoto = "PreFaultTestPhoto",
373
378
  /** What the readings looked like where the standard could not be met. */
374
379
  NotAbleToAchieveSignalPhoto = "NotAbleToAchieveSignalPhoto",
375
- /** The proof behind a YES: a reading taken at the worst point in the property, not the best. */
376
- AbleToAchieveSignalEvidence = "AbleToAchieveSignalEvidence",
377
380
  /** The engineer's account of the visit. Deliberately carries no defaultValue: whether the template headings (Outcome / Fault Found / Checks Done / Action Taken / Status on Leave / Further Action / Customer Advised) are pre-filled or shown as guidance is open with Trevor, and adding a default later is a column PUT while removing one already written onto live records is not clean. */
378
381
  ResolutionNotes = "ResolutionNotes",
379
382
  /** Serial of the first device installed on this visit. The template repeated "first" on all four rows; first/second/third/fourth confirmed with the DRI 2026-08-25. */
380
383
  NewDeviceSerial1 = "NewDeviceSerial1",
384
+ /** The gate on the whole ONT branch: NO is what asks for a failure reason. */
385
+ OntChecksPassed = "ONTChecksPassed",
386
+ /** The proof behind a YES: a reading taken at the worst point in the property, not the best. */
387
+ AbleToAchieveSignalEvidence = "AbleToAchieveSignalEvidence",
381
388
  /** Where the router actually is — the answer text alone rarely settles a coverage argument. */
382
389
  RouterLocationPhoto = "RouterLocationPhoto",
383
390
  /** Serial of the first existing mesh node. */
@@ -433,7 +440,9 @@ export declare enum YfFieldVisitOutcomeFormPropertyKeys {
433
440
  /** Who signed on the customer side. */
434
441
  CustomerName = "CustomerName",
435
442
  /** The customer's signature against the declaration above. */
436
- CustomerSignature = "CustomerSignature"
443
+ CustomerSignature = "CustomerSignature",
444
+ /** RETIRED round 1 — replaced by ONTLightLevelPhoto + ONTStatusLightsPhoto. Off the form, column kept. */
445
+ OntChecksPhoto = "ONTChecksPhoto"
437
446
  }
438
447
  /**
439
448
  * Properties for YfFieldVisitOutcomeForm records
@@ -441,24 +450,54 @@ export declare enum YfFieldVisitOutcomeFormPropertyKeys {
441
450
  * @see FieldServiceModule:YfFieldVisitOutcomeForm
442
451
  */
443
452
  export interface YfFieldVisitOutcomeFormProperties {
444
- /** When the visit started. Field Services asked whether this can auto-populate to now; prefill is a form-renderer capability and is tracked separately, so it is captured by hand until then.
453
+ /** The attending engineer. Prefilled from the work order via the form field default; the engineer can correct it if the job was reassigned on the day.
445
454
  *
446
- * @type {DATE_TIME}
455
+ * @type {TEXT}
447
456
  * @default
448
457
  */
449
- ServiceVisitDateTime: string;
450
- /** The attending engineer. Asked for as free text; auto-populating from the logged-in user is the same prefill question as ServiceVisitDateTime.
458
+ Engineer: string;
459
+ /** The ONT light level reading. Split out of the old combined ONT photo.
451
460
  *
452
- * @type {NAME}
461
+ * @type {FILE_MULTIPLE}
453
462
  * @default
454
463
  */
455
- EngineerName: string;
464
+ OntLightLevelPhoto: string;
465
+ /** Mesh topology from the gateway GUI, showing every unit in spec after the work.
466
+ *
467
+ * @type {FILE_MULTIPLE}
468
+ * @default
469
+ */
470
+ PostFaultMeshTopologyEvidence: string;
471
+ /** The ONT status lights. Split out of the old combined ONT photo.
472
+ *
473
+ * @type {FILE_MULTIPLE}
474
+ * @default
475
+ */
476
+ OntStatusLightsPhoto: string;
477
+ /** The post-fault EXFO report. Asked on every visit, not only where the standard was met.
478
+ *
479
+ * @type {FILE_MULTIPLE}
480
+ * @default
481
+ */
482
+ PostFaultSpeedDbmEvidence: string;
483
+ /** When the visit started. Field Services asked whether this can auto-populate to now; prefill is a form-renderer capability and is tracked separately, so it is captured by hand until then.
484
+ *
485
+ * @type {DATE_TIME}
486
+ * @default
487
+ */
488
+ ServiceVisitDateTime: string;
456
489
  /** The work order this visit was made against. Deliberately carries no UNIQUE validator: a repeat visit to the same work order is a second form, not an overwrite of the first.
457
490
  *
458
491
  * @type {ALPHA_NUMERICAL}
459
492
  * @default
460
493
  */
461
494
  WorkOrderNumber: string;
495
+ /** RETIRED — replaced by the Engineer column, which is TEXT and prefills from the work order. Off the form; a NAME column cannot become TEXT in place.
496
+ *
497
+ * @type {NAME}
498
+ * @default
499
+ */
500
+ EngineerName: string;
462
501
  /** The property visited, linked to the CRM address record.
463
502
  *
464
503
  * @type {LOOKUP}
@@ -522,12 +561,6 @@ export interface YfFieldVisitOutcomeFormProperties {
522
561
  * @default
523
562
  */
524
563
  OntFixedToWallPhoto: string;
525
- /** The readings behind the ONT check answer.
526
- *
527
- * @type {FILE_MULTIPLE}
528
- * @default
529
- */
530
- OntChecksPhoto: string;
531
564
  /** What the engineer saw that produced the failure reason.
532
565
  *
533
566
  * @type {FILE_MULTIPLE}
@@ -561,13 +594,6 @@ export interface YfFieldVisitOutcomeFormProperties {
561
594
  * @enum {YfFieldVisitOutcomeFormCustomerAtInstall}
562
595
  */
563
596
  CustomerAtInstall: YfFieldVisitOutcomeFormCustomerAtInstall;
564
- /** The gate on the whole ONT branch: NO is what asks for a failure reason.
565
- *
566
- * @type {ENUM}
567
- * @default
568
- * @enum {YfFieldVisitOutcomeFormONTChecksPassed}
569
- */
570
- OntChecksPassed: YfFieldVisitOutcomeFormONTChecksPassed;
571
597
  /** Why the ONT check failed. Only asked when ONTChecksPassed is NO.
572
598
  *
573
599
  * @type {ENUM}
@@ -605,12 +631,6 @@ export interface YfFieldVisitOutcomeFormProperties {
605
631
  * @default
606
632
  */
607
633
  NotAbleToAchieveSignalPhoto: string;
608
- /** The proof behind a YES: a reading taken at the worst point in the property, not the best.
609
- *
610
- * @type {FILE_MULTIPLE}
611
- * @default
612
- */
613
- AbleToAchieveSignalEvidence: string;
614
634
  /** The engineer's account of the visit. Deliberately carries no defaultValue: whether the template headings (Outcome / Fault Found / Checks Done / Action Taken / Status on Leave / Further Action / Customer Advised) are pre-filled or shown as guidance is open with Trevor, and adding a default later is a column PUT while removing one already written onto live records is not clean.
615
635
  *
616
636
  * @type {TEXT_LONG}
@@ -623,6 +643,19 @@ export interface YfFieldVisitOutcomeFormProperties {
623
643
  * @default
624
644
  */
625
645
  NewDeviceSerial1: string;
646
+ /** The gate on the whole ONT branch: NO is what asks for a failure reason.
647
+ *
648
+ * @type {ENUM}
649
+ * @default
650
+ * @enum {YfFieldVisitOutcomeFormONTChecksPassed}
651
+ */
652
+ OntChecksPassed: YfFieldVisitOutcomeFormONTChecksPassed;
653
+ /** The proof behind a YES: a reading taken at the worst point in the property, not the best.
654
+ *
655
+ * @type {FILE_MULTIPLE}
656
+ * @default
657
+ */
658
+ AbleToAchieveSignalEvidence: string;
626
659
  /** Where the router actually is — the answer text alone rarely settles a coverage argument.
627
660
  *
628
661
  * @type {FILE_MULTIPLE}
@@ -798,6 +831,12 @@ export interface YfFieldVisitOutcomeFormProperties {
798
831
  * @default
799
832
  */
800
833
  CustomerSignature: string;
834
+ /** RETIRED round 1 — replaced by ONTLightLevelPhoto + ONTStatusLightsPhoto. Off the form, column kept.
835
+ *
836
+ * @type {FILE_MULTIPLE}
837
+ * @default
838
+ */
839
+ OntChecksPhoto: string;
801
840
  }
802
841
  /**
803
842
  * Properties for OUTCOME_FORM YfFieldVisitOutcomeForm records
@@ -805,24 +844,54 @@ export interface YfFieldVisitOutcomeFormProperties {
805
844
  * @see FieldServiceModule:YfFieldVisitOutcomeForm
806
845
  */
807
846
  export interface OutcomeFormYfFieldVisitOutcomeFormProperties {
808
- /** When the visit started. Field Services asked whether this can auto-populate to now; prefill is a form-renderer capability and is tracked separately, so it is captured by hand until then.
847
+ /** The attending engineer. Prefilled from the work order via the form field default; the engineer can correct it if the job was reassigned on the day.
809
848
  *
810
- * @type {DATE_TIME}
849
+ * @type {TEXT}
811
850
  * @default
812
851
  */
813
- ServiceVisitDateTime: string;
814
- /** The attending engineer. Asked for as free text; auto-populating from the logged-in user is the same prefill question as ServiceVisitDateTime.
852
+ Engineer: string;
853
+ /** The ONT light level reading. Split out of the old combined ONT photo.
815
854
  *
816
- * @type {NAME}
855
+ * @type {FILE_MULTIPLE}
817
856
  * @default
818
857
  */
819
- EngineerName: string;
858
+ OntLightLevelPhoto: string;
859
+ /** Mesh topology from the gateway GUI, showing every unit in spec after the work.
860
+ *
861
+ * @type {FILE_MULTIPLE}
862
+ * @default
863
+ */
864
+ PostFaultMeshTopologyEvidence: string;
865
+ /** The ONT status lights. Split out of the old combined ONT photo.
866
+ *
867
+ * @type {FILE_MULTIPLE}
868
+ * @default
869
+ */
870
+ OntStatusLightsPhoto: string;
871
+ /** The post-fault EXFO report. Asked on every visit, not only where the standard was met.
872
+ *
873
+ * @type {FILE_MULTIPLE}
874
+ * @default
875
+ */
876
+ PostFaultSpeedDbmEvidence: string;
877
+ /** When the visit started. Field Services asked whether this can auto-populate to now; prefill is a form-renderer capability and is tracked separately, so it is captured by hand until then.
878
+ *
879
+ * @type {DATE_TIME}
880
+ * @default
881
+ */
882
+ ServiceVisitDateTime: string;
820
883
  /** The work order this visit was made against. Deliberately carries no UNIQUE validator: a repeat visit to the same work order is a second form, not an overwrite of the first.
821
884
  *
822
885
  * @type {ALPHA_NUMERICAL}
823
886
  * @default
824
887
  */
825
888
  WorkOrderNumber: string;
889
+ /** RETIRED — replaced by the Engineer column, which is TEXT and prefills from the work order. Off the form; a NAME column cannot become TEXT in place.
890
+ *
891
+ * @type {NAME}
892
+ * @default
893
+ */
894
+ EngineerName: string;
826
895
  /** The property visited, linked to the CRM address record.
827
896
  *
828
897
  * @type {LOOKUP}
@@ -886,12 +955,6 @@ export interface OutcomeFormYfFieldVisitOutcomeFormProperties {
886
955
  * @default
887
956
  */
888
957
  OntFixedToWallPhoto: string;
889
- /** The readings behind the ONT check answer.
890
- *
891
- * @type {FILE_MULTIPLE}
892
- * @default
893
- */
894
- OntChecksPhoto: string;
895
958
  /** What the engineer saw that produced the failure reason.
896
959
  *
897
960
  * @type {FILE_MULTIPLE}
@@ -925,13 +988,6 @@ export interface OutcomeFormYfFieldVisitOutcomeFormProperties {
925
988
  * @enum {YfFieldVisitOutcomeFormCustomerAtInstall}
926
989
  */
927
990
  CustomerAtInstall: YfFieldVisitOutcomeFormCustomerAtInstall;
928
- /** The gate on the whole ONT branch: NO is what asks for a failure reason.
929
- *
930
- * @type {ENUM}
931
- * @default
932
- * @enum {YfFieldVisitOutcomeFormONTChecksPassed}
933
- */
934
- OntChecksPassed: YfFieldVisitOutcomeFormONTChecksPassed;
935
991
  /** Why the ONT check failed. Only asked when ONTChecksPassed is NO.
936
992
  *
937
993
  * @type {ENUM}
@@ -969,12 +1025,6 @@ export interface OutcomeFormYfFieldVisitOutcomeFormProperties {
969
1025
  * @default
970
1026
  */
971
1027
  NotAbleToAchieveSignalPhoto: string;
972
- /** The proof behind a YES: a reading taken at the worst point in the property, not the best.
973
- *
974
- * @type {FILE_MULTIPLE}
975
- * @default
976
- */
977
- AbleToAchieveSignalEvidence: string;
978
1028
  /** The engineer's account of the visit. Deliberately carries no defaultValue: whether the template headings (Outcome / Fault Found / Checks Done / Action Taken / Status on Leave / Further Action / Customer Advised) are pre-filled or shown as guidance is open with Trevor, and adding a default later is a column PUT while removing one already written onto live records is not clean.
979
1029
  *
980
1030
  * @type {TEXT_LONG}
@@ -987,6 +1037,19 @@ export interface OutcomeFormYfFieldVisitOutcomeFormProperties {
987
1037
  * @default
988
1038
  */
989
1039
  NewDeviceSerial1: string;
1040
+ /** The gate on the whole ONT branch: NO is what asks for a failure reason.
1041
+ *
1042
+ * @type {ENUM}
1043
+ * @default
1044
+ * @enum {YfFieldVisitOutcomeFormONTChecksPassed}
1045
+ */
1046
+ OntChecksPassed: YfFieldVisitOutcomeFormONTChecksPassed;
1047
+ /** The proof behind a YES: a reading taken at the worst point in the property, not the best.
1048
+ *
1049
+ * @type {FILE_MULTIPLE}
1050
+ * @default
1051
+ */
1052
+ AbleToAchieveSignalEvidence: string;
990
1053
  /** Where the router actually is — the answer text alone rarely settles a coverage argument.
991
1054
  *
992
1055
  * @type {FILE_MULTIPLE}
@@ -1162,6 +1225,12 @@ export interface OutcomeFormYfFieldVisitOutcomeFormProperties {
1162
1225
  * @default
1163
1226
  */
1164
1227
  CustomerSignature: string;
1228
+ /** RETIRED round 1 — replaced by ONTLightLevelPhoto + ONTStatusLightsPhoto. Off the form, column kept.
1229
+ *
1230
+ * @type {FILE_MULTIPLE}
1231
+ * @default
1232
+ */
1233
+ OntChecksPhoto: string;
1165
1234
  }
1166
1235
  /**
1167
1236
  * YfFieldVisitOutcomeForm entity from FieldServiceModule
@@ -1186,6 +1255,8 @@ export declare class YfFieldVisitOutcomeForm extends OdinRecord<YfFieldVisitOutc
1186
1255
  Note: OdinLink<LinkedOdinRecord<NoteProperties>>;
1187
1256
  /** Linked File records (YfFieldVisitOutcomeForm__File) */
1188
1257
  File: OdinLink<LinkedOdinRecord<FileProperties>>;
1258
+ /** Linked User records (YfFieldVisitOutcomeForm__User) */
1259
+ User: OdinLink<LinkedOdinRecord<UserProperties>>;
1189
1260
  }
1190
1261
  /**
1191
1262
  * RabbitMQ routing keys for YfFieldVisitOutcomeForm events
@@ -1197,12 +1268,6 @@ export declare const ROUTING_KEY_YF_FIELD_VISIT_OUTCOME_FORM_DELETED = "FieldSer
1197
1268
  * Type-specific routing keys for YfFieldVisitOutcomeForm events
1198
1269
  * Subscribe to these for events on specific entity types only
1199
1270
  */
1200
- /** This is the default record type created */
1201
- export declare const ROUTING_KEY_YF_FIELD_VISIT_OUTCOME_FORM_DEFAULT_CREATED = "FieldServiceModule.YfFieldVisitOutcomeForm.DEFAULT.SubDbRecordCreated";
1202
- /** This is the default record type updated */
1203
- export declare const ROUTING_KEY_YF_FIELD_VISIT_OUTCOME_FORM_DEFAULT_UPDATED = "FieldServiceModule.YfFieldVisitOutcomeForm.DEFAULT.SubDbRecordUpdated";
1204
- /** This is the default record type deleted */
1205
- export declare const ROUTING_KEY_YF_FIELD_VISIT_OUTCOME_FORM_DEFAULT_DELETED = "FieldServiceModule.YfFieldVisitOutcomeForm.DEFAULT.SubDbRecordDeleted";
1206
1271
  /** The single record type on this entity, named to match every sibling outcome form in FieldServiceModule. One type is why the form needs no record-type selector. created */
1207
1272
  export declare const ROUTING_KEY_YF_FIELD_VISIT_OUTCOME_FORM_OUTCOME_FORM_CREATED = "FieldServiceModule.YfFieldVisitOutcomeForm.OUTCOME_FORM.SubDbRecordCreated";
1208
1273
  /** The single record type on this entity, named to match every sibling outcome form in FieldServiceModule. One type is why the form needs no record-type selector. updated */
@@ -1221,3 +1286,7 @@ export declare const ROUTING_KEY_LINK_YF_FIELD_VISIT_OUTCOME_FORM_NOTE_DELETED =
1221
1286
  export declare const ROUTING_KEY_LINK_YF_FIELD_VISIT_OUTCOME_FORM_FILE_CREATED = "FieldServiceModule.YfFieldVisitOutcomeForm.File.SubDbRecordAssociationCreated";
1222
1287
  /** Event: YfFieldVisitOutcomeForm__File link deleted */
1223
1288
  export declare const ROUTING_KEY_LINK_YF_FIELD_VISIT_OUTCOME_FORM_FILE_DELETED = "FieldServiceModule.YfFieldVisitOutcomeForm.File.SubDbRecordAssociationDeleted";
1289
+ /** Event: YfFieldVisitOutcomeForm__User link created */
1290
+ export declare const ROUTING_KEY_LINK_YF_FIELD_VISIT_OUTCOME_FORM_USER_CREATED = "FieldServiceModule.YfFieldVisitOutcomeForm.User.SubDbRecordAssociationCreated";
1291
+ /** Event: YfFieldVisitOutcomeForm__User link deleted */
1292
+ export declare const ROUTING_KEY_LINK_YF_FIELD_VISIT_OUTCOME_FORM_USER_DELETED = "FieldServiceModule.YfFieldVisitOutcomeForm.User.SubDbRecordAssociationDeleted";