@d19n/youfibre-odin-sdk 2.0.369 → 2.0.371

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 (44) hide show
  1. package/README.md +5 -2
  2. package/dist/actions-v2/CreateNoteForCaseSalesAppDto.d.ts +73 -0
  3. package/dist/actions-v2/CreateNoteForCaseSalesAppDto.js +59 -0
  4. package/dist/actions-v2/MoveCaseToSolvedWithNoteSalesAppDto.d.ts +171 -0
  5. package/dist/actions-v2/MoveCaseToSolvedWithNoteSalesAppDto.js +124 -0
  6. package/dist/actions-v2/UpdateContactAppPreferencesDto.d.ts +6 -6
  7. package/dist/actions-v2/UpdateContactAppPreferencesDto.js +2 -2
  8. package/dist/actions-v2/UpdateOutboundDialCampaignCaseDto.d.ts +15 -1
  9. package/dist/actions-v2/UpdateOutboundDialCampaignCaseOnDialEndDto.d.ts +15 -1
  10. package/dist/api-sdk-v2/QaBatchApi.d.ts +48 -0
  11. package/dist/api-sdk-v2/QaBatchApi.js +155 -0
  12. package/dist/api-sdk-v2/QaReportApi.d.ts +2 -0
  13. package/dist/api-sdk-v2/QaReportApi.js +6 -0
  14. package/dist/db-sdk-v2/QaBatchDb.d.ts +120 -0
  15. package/dist/db-sdk-v2/QaBatchDb.js +204 -0
  16. package/dist/db-sdk-v2/QaReportDb.d.ts +2 -0
  17. package/dist/db-sdk-v2/QaReportDb.js +6 -0
  18. package/dist/entities-v2/AiRouteRequest.d.ts +2 -0
  19. package/dist/entities-v2/AiRouteRequest.js +2 -0
  20. package/dist/entities-v2/Contact.d.ts +5 -19
  21. package/dist/entities-v2/Contact.js +4 -18
  22. package/dist/entities-v2/EquipmentReturnItem.d.ts +6 -6
  23. package/dist/entities-v2/EquipmentReturnItem.js +6 -6
  24. package/dist/entities-v2/HomeMove.d.ts +23 -1
  25. package/dist/entities-v2/HomeMove.js +17 -1
  26. package/dist/entities-v2/Note.d.ts +18 -9
  27. package/dist/entities-v2/Note.js +4 -2
  28. package/dist/entities-v2/Order.d.ts +9 -1
  29. package/dist/entities-v2/Order.js +2 -0
  30. package/dist/entities-v2/OutboundDialCampaignCase.d.ts +17 -1
  31. package/dist/entities-v2/OutboundDialCampaignCase.js +4 -0
  32. package/dist/entities-v2/QaBatch.d.ts +235 -0
  33. package/dist/entities-v2/QaBatch.js +122 -0
  34. package/dist/entities-v2/QaReport.d.ts +12 -1
  35. package/dist/entities-v2/QaReport.js +2 -0
  36. package/dist/entities-v2/Recontract.d.ts +17 -1
  37. package/dist/entities-v2/Recontract.js +4 -0
  38. package/dist/entities-v2/Returns.d.ts +30 -30
  39. package/dist/entities-v2/Returns.js +30 -30
  40. package/dist/records-v2/CaseRecord.d.ts +87 -0
  41. package/dist/records-v2/CaseRecord.js +133 -1
  42. package/dist/records-v2/NoteRecord.d.ts +29 -0
  43. package/dist/records-v2/NoteRecord.js +36 -0
  44. package/package.json +1 -1
@@ -13,6 +13,7 @@
13
13
  import { OdinRecord, OdinLink, LinkedOdinRecord } from '@d19n/odin-types/dist/core';
14
14
  import { CaseProperties } from './Case';
15
15
  import { QaReportAmendmentProperties } from './QaReportAmendment';
16
+ import { QaBatchProperties } from './QaBatch';
16
17
  /**
17
18
  * Available types for QaReport records
18
19
  */
@@ -161,7 +162,9 @@ export declare enum QaReportPropertyKeys {
161
162
  /** S3 URL of the amended result JSON: the same shape as QaResultUrl, with the amendment applied and recorded inside it. */
162
163
  AmendedResultUrl = "AmendedResultUrl",
163
164
  /** Optional note from the manager about the amendment as a whole. */
164
- AmendmentNote = "AmendmentNote"
165
+ AmendmentNote = "AmendmentNote",
166
+ /** The bulk QA run this report was generated by. Empty for a report generated from the case tab. */
167
+ BatchId = "BatchId"
165
168
  }
166
169
  /**
167
170
  * Properties for QaReport records
@@ -349,6 +352,12 @@ export interface QaReportProperties {
349
352
  * @default
350
353
  */
351
354
  AmendmentNote: string;
355
+ /** The bulk QA run this report was generated by. Empty for a report generated from the case tab.
356
+ *
357
+ * @type {LOOKUP}
358
+ * @default
359
+ */
360
+ BatchId: string;
352
361
  }
353
362
  /**
354
363
  * QaReport entity from SupportModule
@@ -370,6 +379,8 @@ export declare class QaReport extends OdinRecord<QaReportProperties> {
370
379
  Case: OdinLink<LinkedOdinRecord<CaseProperties>>;
371
380
  /** Linked QaReportAmendment records (QaReport__Amendment) */
372
381
  QaReportAmendment: OdinLink<LinkedOdinRecord<QaReportAmendmentProperties>>;
382
+ /** Linked QaBatch records (QaBatch__Report) */
383
+ QaBatch: OdinLink<LinkedOdinRecord<QaBatchProperties>>;
373
384
  }
374
385
  /**
375
386
  * RabbitMQ routing keys for QaReport events
@@ -170,6 +170,8 @@ var QaReportPropertyKeys;
170
170
  QaReportPropertyKeys["AmendedResultUrl"] = "AmendedResultUrl";
171
171
  /** Optional note from the manager about the amendment as a whole. */
172
172
  QaReportPropertyKeys["AmendmentNote"] = "AmendmentNote";
173
+ /** The bulk QA run this report was generated by. Empty for a report generated from the case tab. */
174
+ QaReportPropertyKeys["BatchId"] = "BatchId";
173
175
  })(QaReportPropertyKeys = exports.QaReportPropertyKeys || (exports.QaReportPropertyKeys = {}));
174
176
  /**
175
177
  * QaReport entity from SupportModule
@@ -125,7 +125,11 @@ export declare enum RecontractPropertyKeys {
125
125
  /** Whether the recontract required a mesh upgrade or not */
126
126
  RequiredMeshUpgrade = "RequiredMeshUpgrade",
127
127
  /** Why this recontract did not apply. Set on entry to Failed, and on an apply that threw and was left at Applying. Detail: ResolveDeferredRecontract process log. */
128
- FailureReason = "FailureReason"
128
+ FailureReason = "FailureReason",
129
+ /** Whether the server determined, at this recontract, that the customer could be offered the choice to skip the router/mesh upgrade (no ONT swap, not a mesh quantity increase). Caller-supplied, forwarded verbatim onto the Recontract record — recontracting itself derives no hardware requirement from this (ORD-493). */
130
+ RouterUpgradeDeclineEligible = "RouterUpgradeDeclineEligible",
131
+ /** What the customer chose at this recontract, when offered the choice above. Caller-supplied, forwarded verbatim — a permanent snapshot, unlike the live Order.RouterUpgradeDeclined, which an agent can flip back on reversal (ORD-493). */
132
+ RouterUpgradeDeclined = "RouterUpgradeDeclined"
129
133
  }
130
134
  /**
131
135
  * Properties for Recontract records
@@ -243,6 +247,18 @@ export interface RecontractProperties {
243
247
  * @enum {RecontractFailureReason}
244
248
  */
245
249
  FailureReason: RecontractFailureReason;
250
+ /** Whether the server determined, at this recontract, that the customer could be offered the choice to skip the router/mesh upgrade (no ONT swap, not a mesh quantity increase). Caller-supplied, forwarded verbatim onto the Recontract record — recontracting itself derives no hardware requirement from this (ORD-493).
251
+ *
252
+ * @type {BOOLEAN}
253
+ * @default
254
+ */
255
+ RouterUpgradeDeclineEligible: boolean;
256
+ /** What the customer chose at this recontract, when offered the choice above. Caller-supplied, forwarded verbatim — a permanent snapshot, unlike the live Order.RouterUpgradeDeclined, which an agent can flip back on reversal (ORD-493).
257
+ *
258
+ * @type {BOOLEAN}
259
+ * @default
260
+ */
261
+ RouterUpgradeDeclined: boolean;
246
262
  }
247
263
  /**
248
264
  * Recontract entity from OrderModule
@@ -133,6 +133,10 @@ var RecontractPropertyKeys;
133
133
  RecontractPropertyKeys["RequiredMeshUpgrade"] = "RequiredMeshUpgrade";
134
134
  /** Why this recontract did not apply. Set on entry to Failed, and on an apply that threw and was left at Applying. Detail: ResolveDeferredRecontract process log. */
135
135
  RecontractPropertyKeys["FailureReason"] = "FailureReason";
136
+ /** Whether the server determined, at this recontract, that the customer could be offered the choice to skip the router/mesh upgrade (no ONT swap, not a mesh quantity increase). Caller-supplied, forwarded verbatim onto the Recontract record — recontracting itself derives no hardware requirement from this (ORD-493). */
137
+ RecontractPropertyKeys["RouterUpgradeDeclineEligible"] = "RouterUpgradeDeclineEligible";
138
+ /** What the customer chose at this recontract, when offered the choice above. Caller-supplied, forwarded verbatim — a permanent snapshot, unlike the live Order.RouterUpgradeDeclined, which an agent can flip back on reversal (ORD-493). */
139
+ RecontractPropertyKeys["RouterUpgradeDeclined"] = "RouterUpgradeDeclined";
136
140
  })(RecontractPropertyKeys = exports.RecontractPropertyKeys || (exports.RecontractPropertyKeys = {}));
137
141
  /**
138
142
  * Recontract entity from OrderModule
@@ -218,14 +218,14 @@ export declare enum ReturnsCpe4Type {
218
218
  * Cpe 5 Grade (Field Operations - Returns)
219
219
  *
220
220
  * @remarks Available options:
221
- * - `A`
222
- * - `B`
223
- * - `C`
221
+ * - `B` - Fail - Cosmetic
222
+ * - `C` - Fail - Technical
223
+ * - `A` - Pass
224
224
  */
225
225
  export declare enum ReturnsCpe5Grade {
226
- 'A' = "A",
227
- 'B' = "B",
228
- 'C' = "C"
226
+ FAIL_COSMETIC = "B",
227
+ FAIL_TECHNICAL = "C",
228
+ PASS = "A"
229
229
  }
230
230
  /**
231
231
  * Valid values for Returns.Cpe3Model
@@ -283,14 +283,14 @@ export declare enum ReturnsCpe3Model {
283
283
  * Cpe 1 Grade (Field Operations - Returns)
284
284
  *
285
285
  * @remarks Available options:
286
- * - `A`
287
- * - `B`
288
- * - `C`
286
+ * - `B` - Fail - Cosmetic
287
+ * - `C` - Fail - Technical
288
+ * - `A` - Pass
289
289
  */
290
290
  export declare enum ReturnsCpe1Grade {
291
- 'A' = "A",
292
- 'B' = "B",
293
- 'C' = "C"
291
+ FAIL_COSMETIC = "B",
292
+ FAIL_TECHNICAL = "C",
293
+ PASS = "A"
294
294
  }
295
295
  /**
296
296
  * Valid values for Returns.Cpe2Type
@@ -473,14 +473,14 @@ export declare enum ReturnsCpe2Model {
473
473
  * Cpe 4 Grade (Field Operations - Returns)
474
474
  *
475
475
  * @remarks Available options:
476
- * - `A`
477
- * - `B`
478
- * - `C`
476
+ * - `B` - Fail - Cosmetic
477
+ * - `C` - Fail - Technical
478
+ * - `A` - Pass
479
479
  */
480
480
  export declare enum ReturnsCpe4Grade {
481
- 'A' = "A",
482
- 'B' = "B",
483
- 'C' = "C"
481
+ FAIL_COSMETIC = "B",
482
+ FAIL_TECHNICAL = "C",
483
+ PASS = "A"
484
484
  }
485
485
  /**
486
486
  * Valid values for Returns.InspectedBy
@@ -507,14 +507,14 @@ export declare enum ReturnsInspectedBy {
507
507
  * Cpe 3 Grade (Field Operations - Returns)
508
508
  *
509
509
  * @remarks Available options:
510
- * - `A`
511
- * - `B`
512
- * - `C`
510
+ * - `B` - Fail - Cosmetic
511
+ * - `C` - Fail - Technical
512
+ * - `A` - Pass
513
513
  */
514
514
  export declare enum ReturnsCpe3Grade {
515
- 'A' = "A",
516
- 'B' = "B",
517
- 'C' = "C"
515
+ FAIL_COSMETIC = "B",
516
+ FAIL_TECHNICAL = "C",
517
+ PASS = "A"
518
518
  }
519
519
  /**
520
520
  * Valid values for Returns.Tv1Type
@@ -535,14 +535,14 @@ export declare enum ReturnsTv1Type {
535
535
  * Cpe 2 Grade (Field Operations - Returns)
536
536
  *
537
537
  * @remarks Available options:
538
- * - `A`
539
- * - `B`
540
- * - `C`
538
+ * - `B` - Fail - Cosmetic
539
+ * - `C` - Fail - Technical
540
+ * - `A` - Pass
541
541
  */
542
542
  export declare enum ReturnsCpe2Grade {
543
- 'A' = "A",
544
- 'B' = "B",
545
- 'C' = "C"
543
+ FAIL_COSMETIC = "B",
544
+ FAIL_TECHNICAL = "C",
545
+ PASS = "A"
546
546
  }
547
547
  /**
548
548
  * Property keys for Returns
@@ -225,15 +225,15 @@ var ReturnsCpe4Type;
225
225
  * Cpe 5 Grade (Field Operations - Returns)
226
226
  *
227
227
  * @remarks Available options:
228
- * - `A`
229
- * - `B`
230
- * - `C`
228
+ * - `B` - Fail - Cosmetic
229
+ * - `C` - Fail - Technical
230
+ * - `A` - Pass
231
231
  */
232
232
  var ReturnsCpe5Grade;
233
233
  (function (ReturnsCpe5Grade) {
234
- ReturnsCpe5Grade["A"] = "A";
235
- ReturnsCpe5Grade["B"] = "B";
236
- ReturnsCpe5Grade["C"] = "C";
234
+ ReturnsCpe5Grade["FAIL_COSMETIC"] = "B";
235
+ ReturnsCpe5Grade["FAIL_TECHNICAL"] = "C";
236
+ ReturnsCpe5Grade["PASS"] = "A";
237
237
  })(ReturnsCpe5Grade = exports.ReturnsCpe5Grade || (exports.ReturnsCpe5Grade = {}));
238
238
  /**
239
239
  * Valid values for Returns.Cpe3Model
@@ -292,15 +292,15 @@ var ReturnsCpe3Model;
292
292
  * Cpe 1 Grade (Field Operations - Returns)
293
293
  *
294
294
  * @remarks Available options:
295
- * - `A`
296
- * - `B`
297
- * - `C`
295
+ * - `B` - Fail - Cosmetic
296
+ * - `C` - Fail - Technical
297
+ * - `A` - Pass
298
298
  */
299
299
  var ReturnsCpe1Grade;
300
300
  (function (ReturnsCpe1Grade) {
301
- ReturnsCpe1Grade["A"] = "A";
302
- ReturnsCpe1Grade["B"] = "B";
303
- ReturnsCpe1Grade["C"] = "C";
301
+ ReturnsCpe1Grade["FAIL_COSMETIC"] = "B";
302
+ ReturnsCpe1Grade["FAIL_TECHNICAL"] = "C";
303
+ ReturnsCpe1Grade["PASS"] = "A";
304
304
  })(ReturnsCpe1Grade = exports.ReturnsCpe1Grade || (exports.ReturnsCpe1Grade = {}));
305
305
  /**
306
306
  * Valid values for Returns.Cpe2Type
@@ -488,15 +488,15 @@ var ReturnsCpe2Model;
488
488
  * Cpe 4 Grade (Field Operations - Returns)
489
489
  *
490
490
  * @remarks Available options:
491
- * - `A`
492
- * - `B`
493
- * - `C`
491
+ * - `B` - Fail - Cosmetic
492
+ * - `C` - Fail - Technical
493
+ * - `A` - Pass
494
494
  */
495
495
  var ReturnsCpe4Grade;
496
496
  (function (ReturnsCpe4Grade) {
497
- ReturnsCpe4Grade["A"] = "A";
498
- ReturnsCpe4Grade["B"] = "B";
499
- ReturnsCpe4Grade["C"] = "C";
497
+ ReturnsCpe4Grade["FAIL_COSMETIC"] = "B";
498
+ ReturnsCpe4Grade["FAIL_TECHNICAL"] = "C";
499
+ ReturnsCpe4Grade["PASS"] = "A";
500
500
  })(ReturnsCpe4Grade = exports.ReturnsCpe4Grade || (exports.ReturnsCpe4Grade = {}));
501
501
  /**
502
502
  * Valid values for Returns.InspectedBy
@@ -524,15 +524,15 @@ var ReturnsInspectedBy;
524
524
  * Cpe 3 Grade (Field Operations - Returns)
525
525
  *
526
526
  * @remarks Available options:
527
- * - `A`
528
- * - `B`
529
- * - `C`
527
+ * - `B` - Fail - Cosmetic
528
+ * - `C` - Fail - Technical
529
+ * - `A` - Pass
530
530
  */
531
531
  var ReturnsCpe3Grade;
532
532
  (function (ReturnsCpe3Grade) {
533
- ReturnsCpe3Grade["A"] = "A";
534
- ReturnsCpe3Grade["B"] = "B";
535
- ReturnsCpe3Grade["C"] = "C";
533
+ ReturnsCpe3Grade["FAIL_COSMETIC"] = "B";
534
+ ReturnsCpe3Grade["FAIL_TECHNICAL"] = "C";
535
+ ReturnsCpe3Grade["PASS"] = "A";
536
536
  })(ReturnsCpe3Grade = exports.ReturnsCpe3Grade || (exports.ReturnsCpe3Grade = {}));
537
537
  /**
538
538
  * Valid values for Returns.Tv1Type
@@ -554,15 +554,15 @@ var ReturnsTv1Type;
554
554
  * Cpe 2 Grade (Field Operations - Returns)
555
555
  *
556
556
  * @remarks Available options:
557
- * - `A`
558
- * - `B`
559
- * - `C`
557
+ * - `B` - Fail - Cosmetic
558
+ * - `C` - Fail - Technical
559
+ * - `A` - Pass
560
560
  */
561
561
  var ReturnsCpe2Grade;
562
562
  (function (ReturnsCpe2Grade) {
563
- ReturnsCpe2Grade["A"] = "A";
564
- ReturnsCpe2Grade["B"] = "B";
565
- ReturnsCpe2Grade["C"] = "C";
563
+ ReturnsCpe2Grade["FAIL_COSMETIC"] = "B";
564
+ ReturnsCpe2Grade["FAIL_TECHNICAL"] = "C";
565
+ ReturnsCpe2Grade["PASS"] = "A";
566
566
  })(ReturnsCpe2Grade = exports.ReturnsCpe2Grade || (exports.ReturnsCpe2Grade = {}));
567
567
  /**
568
568
  * Property keys for Returns
@@ -48,6 +48,7 @@ import { MoveCaseOutageToSolvedAction2Properties } from '../actions-v2/MoveCaseO
48
48
  import { MoveCaseOutageToSolvedActionProperties } from '../actions-v2/MoveCaseOutageToSolvedActionDto';
49
49
  import { UpdateAdditionalNoteProperties } from '../actions-v2/MoveCaseToClosedWithAdditionalNoteDto';
50
50
  import { MoveCaseToSolvedActionProperties } from '../actions-v2/MoveCaseToSolvedActionDto';
51
+ import { CreateNoteForCaseSalesAppProperties } from '../actions-v2/MoveCaseToSolvedWithNoteSalesAppDto';
51
52
  import { RecordAiTagsAccuracyProperties } from '../actions-v2/RecordAiTagsAccuracyDto';
52
53
  import { RemoveAssignmentFromCaseProperties } from '../actions-v2/RemoveAssignmentFromCaseDto';
53
54
  import { ReturnCaseToAgentOnCustomerReplyProperties } from '../actions-v2/ReturnCaseToAgentOnCustomerReplyDto';
@@ -1184,6 +1185,68 @@ export declare class MoveCaseToClosedWithAdditionalNoteFlowBuilder {
1184
1185
  private _buildRequestPayload;
1185
1186
  }
1186
1187
  /** Options for a flow step */
1188
+ export interface MoveCaseToSolvedWithNoteSalesAppFlowBuilderStepOptions {
1189
+ /** Associations to create with this step */
1190
+ associations?: Array<{
1191
+ recordId?: string;
1192
+ entity?: string;
1193
+ }>;
1194
+ /** Groups for this step */
1195
+ groups?: string[];
1196
+ }
1197
+ /**
1198
+ * FlowBuilder for MoveCaseToSolvedWithNoteSalesApp multi-step action
1199
+ *
1200
+ * Use method chaining to add steps, then call execute() to run the flow.
1201
+ * This is a CREATE flow - no existing record required.
1202
+ * Transitions to stage: CaseDefaultStageSolved
1203
+ */
1204
+ export declare class MoveCaseToSolvedWithNoteSalesAppFlowBuilder {
1205
+ private _record;
1206
+ private _provider;
1207
+ private _pendingLinks;
1208
+ private _options?;
1209
+ private _groups;
1210
+ private _steps;
1211
+ constructor(record: CaseRecord<any>, provider: IOdinProvider, pendingLinks: OdinRecordLinkDto[], options?: {
1212
+ journeyId?: string;
1213
+ });
1214
+ /**
1215
+ * Add a group to the main action
1216
+ * @param group - Group name to add
1217
+ * @returns this (for method chaining)
1218
+ */
1219
+ addGroup(group: string): this;
1220
+ /**
1221
+ * Add CreateNoteForCaseSalesApp step to the flow
1222
+ * @param properties - Properties for this step
1223
+ * @param options - Optional step settings
1224
+ * @returns this (for method chaining)
1225
+ */
1226
+ createNoteForCaseSalesApp(properties: CreateNoteForCaseSalesAppProperties, options?: MoveCaseToSolvedWithNoteSalesAppFlowBuilderStepOptions): this;
1227
+ /**
1228
+ * Execute the flow
1229
+ * @returns The result from the API
1230
+ */
1231
+ execute(): Promise<IDbRecordCreateUpdateRes[]>;
1232
+ /**
1233
+ * Returns the request payload without executing (for debugging)
1234
+ * @returns The request payload that would be sent to the API
1235
+ */
1236
+ dryRun(): Record<string, any>;
1237
+ /**
1238
+ * Prevents accidental `await flowBuilder` without .execute()
1239
+ * Forces developers to explicitly call .execute()
1240
+ * @throws Error always - use .execute() or .dryRun() instead
1241
+ */
1242
+ then(): never;
1243
+ /**
1244
+ * Build the request payload for the action
1245
+ * @private
1246
+ */
1247
+ private _buildRequestPayload;
1248
+ }
1249
+ /** Options for a flow step */
1187
1250
  export interface MoveDefaultCaseFromOpenToClosedFlowBuilderStepOptions {
1188
1251
  /** Associations to create with this step */
1189
1252
  associations?: Array<{
@@ -2959,6 +3022,30 @@ export declare class CaseRecord<TProps = CaseProperties> {
2959
3022
  moveCaseToSolvedTransition(options?: {
2960
3023
  journeyId?: string;
2961
3024
  }): ActionBuilder;
3025
+ /**
3026
+ * MoveCaseToSolvedWithNoteSalesApp
3027
+ *
3028
+ * Starts a stage transition flow on this Case record.
3029
+ * Chain step methods and call .execute() to run the flow.
3030
+ *
3031
+ * @remarks Transitions to stage: CaseDefaultStageSolved
3032
+ *
3033
+ * @param options - Optional settings
3034
+ * @param options.journeyId - Associate with a journey
3035
+ * @returns FlowBuilder for chaining step methods
3036
+ * @throws Error if called on a new (unsaved) record
3037
+ *
3038
+ * @example
3039
+ * ```typescript
3040
+ * const record = await odinClient.cases.get(id);
3041
+ * await record.moveCaseToSolvedWithNoteSalesApp()
3042
+ * .createNoteForCaseSalesApp({ ... })
3043
+ * .execute();
3044
+ * ```
3045
+ */
3046
+ moveCaseToSolvedWithNoteSalesApp(options?: {
3047
+ journeyId?: string;
3048
+ }): MoveCaseToSolvedWithNoteSalesAppFlowBuilder;
2962
3049
  /**
2963
3050
  * MoveDefaultCaseFromAnyStageToPendingAgent
2964
3051
  *
@@ -28,7 +28,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
28
28
  });
29
29
  };
30
30
  Object.defineProperty(exports, "__esModule", { value: true });
31
- exports.isCaseRecord = exports.CaseRecord = exports.TestingCsatUpdateFlowFlowBuilder = exports.MoveDefaultCaseFromOpenToClosedFlowBuilder = exports.MoveCaseToClosedWithAdditionalNoteFlowBuilder = exports.MoveCaseToBlockedTransitionFlowBuilder = exports.EscalateCaseTransitionFlowBuilder = exports.CasteTransitionOpenToEscalatedFlowBuilder = exports.CasedefaultstageblockedFlowBuilder = exports.CaseTransitionSolvedToEscalatedFlowBuilder = exports.CaseTransitionPendingReplyToEscalatedFlowBuilder = exports.CaseTransitionPendingReplyToBlockedFlowBuilder = exports.CaseTransitionPendingAgentToEscalatedFlowBuilder = exports.CaseTransitionPendingAgentToBlockedFlowBuilder = exports.CaseTransitionOpenToBlockedFlowBuilder = exports.CaseTransitionEscalatedToEscalatedFlowBuilder = exports.CaseTransitionEscalatedToBlockedFlowBuilder = exports.CaseTransitionBlockedToEscalatedFlowBuilder = exports.CaseDefaultStageEscalatedFlowBuilder = exports.AssignCaseWithNoteFlowFlowBuilder = void 0;
31
+ exports.isCaseRecord = exports.CaseRecord = exports.TestingCsatUpdateFlowFlowBuilder = exports.MoveDefaultCaseFromOpenToClosedFlowBuilder = exports.MoveCaseToSolvedWithNoteSalesAppFlowBuilder = exports.MoveCaseToClosedWithAdditionalNoteFlowBuilder = exports.MoveCaseToBlockedTransitionFlowBuilder = exports.EscalateCaseTransitionFlowBuilder = exports.CasteTransitionOpenToEscalatedFlowBuilder = exports.CasedefaultstageblockedFlowBuilder = exports.CaseTransitionSolvedToEscalatedFlowBuilder = exports.CaseTransitionPendingReplyToEscalatedFlowBuilder = exports.CaseTransitionPendingReplyToBlockedFlowBuilder = exports.CaseTransitionPendingAgentToEscalatedFlowBuilder = exports.CaseTransitionPendingAgentToBlockedFlowBuilder = exports.CaseTransitionOpenToBlockedFlowBuilder = exports.CaseTransitionEscalatedToEscalatedFlowBuilder = exports.CaseTransitionEscalatedToBlockedFlowBuilder = exports.CaseTransitionBlockedToEscalatedFlowBuilder = exports.CaseDefaultStageEscalatedFlowBuilder = exports.AssignCaseWithNoteFlowFlowBuilder = void 0;
32
32
  const uuid_1 = require("uuid");
33
33
  const core_1 = require("@d19n/odin-types/dist/core");
34
34
  const record_link_manager_1 = require("@d19n/odin-sdk-generator/dist/record-link-manager");
@@ -1981,6 +1981,111 @@ class MoveCaseToClosedWithAdditionalNoteFlowBuilder {
1981
1981
  }
1982
1982
  }
1983
1983
  exports.MoveCaseToClosedWithAdditionalNoteFlowBuilder = MoveCaseToClosedWithAdditionalNoteFlowBuilder;
1984
+ /**
1985
+ * FlowBuilder for MoveCaseToSolvedWithNoteSalesApp multi-step action
1986
+ *
1987
+ * Use method chaining to add steps, then call execute() to run the flow.
1988
+ * This is a CREATE flow - no existing record required.
1989
+ * Transitions to stage: CaseDefaultStageSolved
1990
+ */
1991
+ class MoveCaseToSolvedWithNoteSalesAppFlowBuilder {
1992
+ constructor(record, provider, pendingLinks, options) {
1993
+ this._groups = [];
1994
+ this._steps = [];
1995
+ this._record = record;
1996
+ this._provider = provider;
1997
+ this._pendingLinks = pendingLinks;
1998
+ this._options = options;
1999
+ }
2000
+ /**
2001
+ * Add a group to the main action
2002
+ * @param group - Group name to add
2003
+ * @returns this (for method chaining)
2004
+ */
2005
+ addGroup(group) {
2006
+ this._groups.push(group);
2007
+ return this;
2008
+ }
2009
+ /**
2010
+ * Add CreateNoteForCaseSalesApp step to the flow
2011
+ * @param properties - Properties for this step
2012
+ * @param options - Optional step settings
2013
+ * @returns this (for method chaining)
2014
+ */
2015
+ createNoteForCaseSalesApp(properties, options) {
2016
+ var _a;
2017
+ this._steps.push({
2018
+ actionName: 'CreateNoteForCaseSalesApp',
2019
+ properties,
2020
+ entity: 'SupportModule:Note',
2021
+ type: 'DEFAULT',
2022
+ autoLinkParent: true,
2023
+ associations: (_a = options === null || options === void 0 ? void 0 : options.associations) === null || _a === void 0 ? void 0 : _a.map(a => (Object.assign(Object.assign({}, a), { linkType: null, relationType: undefined }))),
2024
+ groups: options === null || options === void 0 ? void 0 : options.groups,
2025
+ });
2026
+ return this;
2027
+ }
2028
+ /**
2029
+ * Execute the flow
2030
+ * @returns The result from the API
2031
+ */
2032
+ execute() {
2033
+ return __awaiter(this, void 0, void 0, function* () {
2034
+ const payload = this._buildRequestPayload();
2035
+ const result = yield this._provider._applyAction('SupportModule', 'Case', payload);
2036
+ // Clear pending links on the record after execution
2037
+ this._record.clearPendingLinks();
2038
+ return result;
2039
+ });
2040
+ }
2041
+ /**
2042
+ * Returns the request payload without executing (for debugging)
2043
+ * @returns The request payload that would be sent to the API
2044
+ */
2045
+ dryRun() {
2046
+ return this._buildRequestPayload();
2047
+ }
2048
+ /**
2049
+ * Prevents accidental `await flowBuilder` without .execute()
2050
+ * Forces developers to explicitly call .execute()
2051
+ * @throws Error always - use .execute() or .dryRun() instead
2052
+ */
2053
+ then() {
2054
+ throw new Error('FlowBuilder cannot be awaited directly. Call .execute() to run the flow or .dryRun() to get the payload.');
2055
+ }
2056
+ /**
2057
+ * Build the request payload for the action
2058
+ * @private
2059
+ */
2060
+ _buildRequestPayload() {
2061
+ const record = this._record.record;
2062
+ // Build steps with parent associations
2063
+ const stepsWithAssociations = this._steps.map(step => {
2064
+ const stepAssociations = [...(step.associations || [])];
2065
+ // Auto-add parent association if step requires it and we have a parent record
2066
+ if (step.autoLinkParent && (record === null || record === void 0 ? void 0 : record.id)) {
2067
+ stepAssociations.push({
2068
+ entity: record.entity,
2069
+ recordId: record.id,
2070
+ linkType: null,
2071
+ relationType: 'PARENT',
2072
+ });
2073
+ }
2074
+ return {
2075
+ entity: step.entity,
2076
+ type: step.type,
2077
+ actionName: step.actionName,
2078
+ properties: step.properties,
2079
+ title: step.title,
2080
+ id: step.id,
2081
+ associations: stepAssociations.length > 0 ? stepAssociations : undefined,
2082
+ groups: step.groups,
2083
+ };
2084
+ });
2085
+ return Object.assign(Object.assign(Object.assign({}, ((record === null || record === void 0 ? void 0 : record.id) && { id: record.id })), { entity: 'SupportModule:Case', actionName: 'MoveCaseToSolvedWithNoteSalesApp', steps: stepsWithAssociations, associations: this._pendingLinks.length > 0 ? this._pendingLinks : undefined, groups: this._groups.length > 0 ? this._groups : undefined, stageKey: 'CaseDefaultStageSolved' }), this._options);
2086
+ }
2087
+ }
2088
+ exports.MoveCaseToSolvedWithNoteSalesAppFlowBuilder = MoveCaseToSolvedWithNoteSalesAppFlowBuilder;
1984
2089
  /**
1985
2090
  * FlowBuilder for MoveDefaultCaseFromOpenToClosed multi-step action
1986
2091
  *
@@ -4337,6 +4442,33 @@ class CaseRecord {
4337
4442
  const payload = Object.assign({ id: this._record.id, entity: this._record.entity, type: this._record.type, actionName: 'MoveCaseToSolvedTransition', associations: this._pendingLinks.length > 0 ? this._pendingLinks : undefined, stageKey: 'CaseDefaultStageSolved' }, options);
4338
4443
  return new ActionBuilder(this._provider, 'SupportModule', 'Case', payload, () => { this._pendingLinks = []; });
4339
4444
  }
4445
+ /**
4446
+ * MoveCaseToSolvedWithNoteSalesApp
4447
+ *
4448
+ * Starts a stage transition flow on this Case record.
4449
+ * Chain step methods and call .execute() to run the flow.
4450
+ *
4451
+ * @remarks Transitions to stage: CaseDefaultStageSolved
4452
+ *
4453
+ * @param options - Optional settings
4454
+ * @param options.journeyId - Associate with a journey
4455
+ * @returns FlowBuilder for chaining step methods
4456
+ * @throws Error if called on a new (unsaved) record
4457
+ *
4458
+ * @example
4459
+ * ```typescript
4460
+ * const record = await odinClient.cases.get(id);
4461
+ * await record.moveCaseToSolvedWithNoteSalesApp()
4462
+ * .createNoteForCaseSalesApp({ ... })
4463
+ * .execute();
4464
+ * ```
4465
+ */
4466
+ moveCaseToSolvedWithNoteSalesApp(options) {
4467
+ var _a;
4468
+ if (!((_a = this._record) === null || _a === void 0 ? void 0 : _a.id))
4469
+ throw new Error('moveCaseToSolvedWithNoteSalesApp requires an existing record. Use accessor.get() first.');
4470
+ return new MoveCaseToSolvedWithNoteSalesAppFlowBuilder(this, this._provider, this._pendingLinks, options);
4471
+ }
4340
4472
  /**
4341
4473
  * MoveDefaultCaseFromAnyStageToPendingAgent
4342
4474
  *
@@ -26,6 +26,7 @@ import { NoteProperties } from '../entities-v2/Note';
26
26
  import { CreateNoteForCaseAssignmentProperties } from '../actions-v2/AssignCaseWithNoteFlowDto';
27
27
  import { CaseCreateNoteProperties } from '../actions-v2/CaseCreateNoteDto';
28
28
  import { CreateNoteProperties } from '../actions-v2/CreateNoteDto';
29
+ import { CreateNoteForCaseSalesAppProperties } from '../actions-v2/CreateNoteForCaseSalesAppDto';
29
30
  import { UpdateNoteProperties } from '../actions-v2/UpdateNoteDto';
30
31
  import { UgExternalAuditRecord } from './UgExternalAuditRecord';
31
32
  import { WorkOrderRecord } from './WorkOrderRecord';
@@ -1119,6 +1120,34 @@ export declare class NoteRecord<TProps = NoteProperties> {
1119
1120
  journeyId?: string;
1120
1121
  stageKey?: string;
1121
1122
  }): ActionBuilder;
1123
+ /**
1124
+ * CreateNoteForCaseSalesApp
1125
+ *
1126
+ * Creates a new Note record with the specified properties.
1127
+ * Returns an ActionBuilder - call .execute() to create or .dryRun() for debugging.
1128
+ *
1129
+ * @remarks Record type: DEFAULT
1130
+ *
1131
+ * @param properties - The properties for the new record
1132
+ * @param options - Optional settings
1133
+ * @param options.journeyId - Associate with a journey
1134
+ * @param options.stageKey - Set initial pipeline stage
1135
+ * @returns ActionBuilder - call .execute() to create or .dryRun() for payload
1136
+ *
1137
+ * @example
1138
+ * ```typescript
1139
+ * // Create with properties
1140
+ * const record = odinClient.notes.new();
1141
+ * await record.createNoteForCaseSalesApp({ ... }).execute();
1142
+ *
1143
+ * // Dry run (for debugging)
1144
+ * const payload = record.createNoteForCaseSalesApp({ ... }).dryRun();
1145
+ * ```
1146
+ */
1147
+ createNoteForCaseSalesApp(properties: CreateNoteForCaseSalesAppProperties, options?: {
1148
+ journeyId?: string;
1149
+ stageKey?: string;
1150
+ }): ActionBuilder;
1122
1151
  /**
1123
1152
  * UpdateNote
1124
1153
  *
@@ -1672,6 +1672,42 @@ class NoteRecord {
1672
1672
  };
1673
1673
  return new ActionBuilder(this._provider, 'SupportModule', 'Note', payload, () => { this._pendingLinks = []; });
1674
1674
  }
1675
+ /**
1676
+ * CreateNoteForCaseSalesApp
1677
+ *
1678
+ * Creates a new Note record with the specified properties.
1679
+ * Returns an ActionBuilder - call .execute() to create or .dryRun() for debugging.
1680
+ *
1681
+ * @remarks Record type: DEFAULT
1682
+ *
1683
+ * @param properties - The properties for the new record
1684
+ * @param options - Optional settings
1685
+ * @param options.journeyId - Associate with a journey
1686
+ * @param options.stageKey - Set initial pipeline stage
1687
+ * @returns ActionBuilder - call .execute() to create or .dryRun() for payload
1688
+ *
1689
+ * @example
1690
+ * ```typescript
1691
+ * // Create with properties
1692
+ * const record = odinClient.notes.new();
1693
+ * await record.createNoteForCaseSalesApp({ ... }).execute();
1694
+ *
1695
+ * // Dry run (for debugging)
1696
+ * const payload = record.createNoteForCaseSalesApp({ ... }).dryRun();
1697
+ * ```
1698
+ */
1699
+ createNoteForCaseSalesApp(properties, options) {
1700
+ const payload = {
1701
+ entity: 'SupportModule:Note',
1702
+ type: 'DEFAULT',
1703
+ actionName: 'CreateNoteForCaseSalesApp',
1704
+ properties: properties || {},
1705
+ associations: this._pendingLinks.length > 0 ? this._pendingLinks : undefined,
1706
+ journeyId: options === null || options === void 0 ? void 0 : options.journeyId,
1707
+ stageKey: options === null || options === void 0 ? void 0 : options.stageKey,
1708
+ };
1709
+ return new ActionBuilder(this._provider, 'SupportModule', 'Note', payload, () => { this._pendingLinks = []; });
1710
+ }
1675
1711
  // ============================================
1676
1712
  // UPDATE ACTIONS (require existing record)
1677
1713
  // ============================================
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@d19n/youfibre-odin-sdk",
3
- "version": "2.0.369",
3
+ "version": "2.0.371",
4
4
  "description": "",
5
5
  "author": "@d19n",
6
6
  "license": "UNLICENSED",