@d19n/youfibre-odin-sdk 1.0.331 → 1.0.332

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 (211) hide show
  1. package/dist/entities-v2/Email.d.ts +17 -0
  2. package/dist/entities-v2/Email.js +2 -0
  3. package/dist/records-v2/AccountRecord.d.ts +306 -2
  4. package/dist/records-v2/AccountRecord.js +451 -0
  5. package/dist/records-v2/ActivityLogRecord.d.ts +122 -1
  6. package/dist/records-v2/ActivityLogRecord.js +190 -0
  7. package/dist/records-v2/ActivityRecord.d.ts +255 -2
  8. package/dist/records-v2/ActivityRecord.js +387 -0
  9. package/dist/records-v2/AddressRecord.d.ts +321 -0
  10. package/dist/records-v2/AddressRecord.js +532 -0
  11. package/dist/records-v2/AffiliateCodeRecord.d.ts +102 -1
  12. package/dist/records-v2/AffiliateCodeRecord.js +157 -0
  13. package/dist/records-v2/AppointmentRecord.d.ts +141 -0
  14. package/dist/records-v2/AppointmentRecord.js +235 -0
  15. package/dist/records-v2/BillingAdjustmentRecord.d.ts +81 -0
  16. package/dist/records-v2/BillingAdjustmentRecord.js +136 -0
  17. package/dist/records-v2/BillingRequestRecord.d.ts +178 -2
  18. package/dist/records-v2/BillingRequestRecord.js +271 -0
  19. package/dist/records-v2/BlockageA55Record.d.ts +103 -2
  20. package/dist/records-v2/BlockageA55Record.js +157 -0
  21. package/dist/records-v2/CallEventRecord.d.ts +82 -1
  22. package/dist/records-v2/CallEventRecord.js +124 -0
  23. package/dist/records-v2/CallLegRecord.d.ts +82 -1
  24. package/dist/records-v2/CallLegRecord.js +124 -0
  25. package/dist/records-v2/CallRecord.d.ts +202 -1
  26. package/dist/records-v2/CallRecord.js +322 -0
  27. package/dist/records-v2/CallTransferRecord.d.ts +102 -1
  28. package/dist/records-v2/CallTransferRecord.js +157 -0
  29. package/dist/records-v2/CampaignRecord.d.ts +83 -2
  30. package/dist/records-v2/CampaignRecord.js +124 -0
  31. package/dist/records-v2/CaseRecord.d.ts +358 -2
  32. package/dist/records-v2/CaseRecord.js +568 -0
  33. package/dist/records-v2/ChangeReasonRecord.d.ts +171 -2
  34. package/dist/records-v2/ChangeReasonRecord.js +238 -0
  35. package/dist/records-v2/ChurnRequestRecord.d.ts +62 -1
  36. package/dist/records-v2/ChurnRequestRecord.js +91 -0
  37. package/dist/records-v2/ContactRecord.d.ts +460 -0
  38. package/dist/records-v2/ContactRecord.js +762 -0
  39. package/dist/records-v2/ContractBuyOutRecord.d.ts +162 -1
  40. package/dist/records-v2/ContractBuyOutRecord.js +256 -0
  41. package/dist/records-v2/ConversationRecord.d.ts +62 -1
  42. package/dist/records-v2/ConversationRecord.js +91 -0
  43. package/dist/records-v2/CreditNoteRecord.d.ts +81 -0
  44. package/dist/records-v2/CreditNoteRecord.js +136 -0
  45. package/dist/records-v2/CrmDatasetRecord.d.ts +191 -2
  46. package/dist/records-v2/CrmDatasetRecord.js +271 -0
  47. package/dist/records-v2/CustomerDeviceAtaRecord.d.ts +21 -0
  48. package/dist/records-v2/CustomerDeviceAtaRecord.js +37 -0
  49. package/dist/records-v2/CustomerDeviceOntRecord.d.ts +181 -0
  50. package/dist/records-v2/CustomerDeviceOntRecord.js +301 -0
  51. package/dist/records-v2/CustomerDeviceRouterRecord.d.ts +141 -0
  52. package/dist/records-v2/CustomerDeviceRouterRecord.js +235 -0
  53. package/dist/records-v2/CustomerPhonePortingRecord.d.ts +21 -0
  54. package/dist/records-v2/CustomerPhonePortingRecord.js +37 -0
  55. package/dist/records-v2/DiscountRecord.d.ts +121 -0
  56. package/dist/records-v2/DiscountRecord.js +202 -0
  57. package/dist/records-v2/EmailRecord.d.ts +174 -2
  58. package/dist/records-v2/EmailRecord.js +254 -0
  59. package/dist/records-v2/EmailTemplateRecord.d.ts +21 -1
  60. package/dist/records-v2/EmailTemplateRecord.js +21 -0
  61. package/dist/records-v2/FieldServiceDispatchedProductRecord.d.ts +135 -2
  62. package/dist/records-v2/FieldServiceDispatchedProductRecord.js +189 -0
  63. package/dist/records-v2/FieldServiceProductRecord.d.ts +115 -2
  64. package/dist/records-v2/FieldServiceProductRecord.js +156 -0
  65. package/dist/records-v2/FileRecord.d.ts +1191 -2
  66. package/dist/records-v2/FileRecord.js +1869 -0
  67. package/dist/records-v2/ImpersonationTrackerRecord.d.ts +62 -1
  68. package/dist/records-v2/ImpersonationTrackerRecord.js +91 -0
  69. package/dist/records-v2/InternalInstallAuditRecord.d.ts +83 -2
  70. package/dist/records-v2/InternalInstallAuditRecord.js +124 -0
  71. package/dist/records-v2/InvoiceItemRecord.d.ts +40 -0
  72. package/dist/records-v2/InvoiceItemRecord.js +69 -0
  73. package/dist/records-v2/InvoiceRecord.d.ts +359 -2
  74. package/dist/records-v2/InvoiceRecord.js +569 -0
  75. package/dist/records-v2/KnowledgeArticleRecord.d.ts +98 -2
  76. package/dist/records-v2/KnowledgeArticleRecord.js +139 -0
  77. package/dist/records-v2/LeadRecord.d.ts +261 -0
  78. package/dist/records-v2/LeadRecord.js +433 -0
  79. package/dist/records-v2/MessageRecord.d.ts +79 -2
  80. package/dist/records-v2/MessageRecord.js +107 -0
  81. package/dist/records-v2/NetworkDeviceRecord.d.ts +43 -2
  82. package/dist/records-v2/NetworkDeviceRecord.js +58 -0
  83. package/dist/records-v2/NoteRecord.d.ts +1101 -1
  84. package/dist/records-v2/NoteRecord.js +1806 -0
  85. package/dist/records-v2/OfferRecord.d.ts +154 -2
  86. package/dist/records-v2/OfferRecord.js +221 -0
  87. package/dist/records-v2/OhAuditOfInstallationRecord.d.ts +83 -2
  88. package/dist/records-v2/OhAuditOfInstallationRecord.js +124 -0
  89. package/dist/records-v2/OhExternalAuditRecord.d.ts +83 -2
  90. package/dist/records-v2/OhExternalAuditRecord.js +124 -0
  91. package/dist/records-v2/OhInProgressAuditRecord.d.ts +83 -2
  92. package/dist/records-v2/OhInProgressAuditRecord.js +124 -0
  93. package/dist/records-v2/OhInstallationAuditRecord.d.ts +83 -2
  94. package/dist/records-v2/OhInstallationAuditRecord.js +124 -0
  95. package/dist/records-v2/OhRetroAuditRecord.d.ts +83 -2
  96. package/dist/records-v2/OhRetroAuditRecord.js +124 -0
  97. package/dist/records-v2/OneTouchSwitchRecord.d.ts +255 -2
  98. package/dist/records-v2/OneTouchSwitchRecord.js +387 -0
  99. package/dist/records-v2/OntReplacementApprovalRecord.d.ts +62 -1
  100. package/dist/records-v2/OntReplacementApprovalRecord.js +91 -0
  101. package/dist/records-v2/OrderCheckRecord.d.ts +21 -0
  102. package/dist/records-v2/OrderCheckRecord.js +37 -0
  103. package/dist/records-v2/OrderItemRecord.d.ts +280 -0
  104. package/dist/records-v2/OrderItemRecord.js +465 -0
  105. package/dist/records-v2/OrderRecord.d.ts +540 -0
  106. package/dist/records-v2/OrderRecord.js +894 -0
  107. package/dist/records-v2/OutageRecord.d.ts +42 -1
  108. package/dist/records-v2/OutageRecord.js +58 -0
  109. package/dist/records-v2/OverlayRealA55Record.d.ts +83 -2
  110. package/dist/records-v2/OverlayRealA55Record.js +124 -0
  111. package/dist/records-v2/PICRequestRecord.d.ts +62 -1
  112. package/dist/records-v2/PICRequestRecord.js +91 -0
  113. package/dist/records-v2/PaymentMethodRecord.d.ts +121 -0
  114. package/dist/records-v2/PaymentMethodRecord.js +202 -0
  115. package/dist/records-v2/PaymentMethodRefundRecord.d.ts +181 -0
  116. package/dist/records-v2/PaymentMethodRefundRecord.js +301 -0
  117. package/dist/records-v2/PaymentRecord.d.ts +82 -1
  118. package/dist/records-v2/PaymentRecord.js +124 -0
  119. package/dist/records-v2/PermissionToFailRecord.d.ts +61 -0
  120. package/dist/records-v2/PermissionToFailRecord.js +103 -0
  121. package/dist/records-v2/PgAccountValidationRecord.d.ts +21 -1
  122. package/dist/records-v2/PgAccountValidationRecord.js +21 -0
  123. package/dist/records-v2/PgContactRecord.d.ts +62 -1
  124. package/dist/records-v2/PgContactRecord.js +91 -0
  125. package/dist/records-v2/PgDirectDebitFileRecord.d.ts +95 -2
  126. package/dist/records-v2/PgDirectDebitFileRecord.js +123 -0
  127. package/dist/records-v2/PgDisputeRecord.d.ts +62 -1
  128. package/dist/records-v2/PgDisputeRecord.js +91 -0
  129. package/dist/records-v2/PgFileAllocationRecord.d.ts +115 -2
  130. package/dist/records-v2/PgFileAllocationRecord.js +156 -0
  131. package/dist/records-v2/PgLogRecord.d.ts +21 -1
  132. package/dist/records-v2/PgLogRecord.js +21 -0
  133. package/dist/records-v2/PgPaymentMethodRecord.d.ts +102 -1
  134. package/dist/records-v2/PgPaymentMethodRecord.js +157 -0
  135. package/dist/records-v2/PgSortCodeSubstitutionRecord.d.ts +21 -1
  136. package/dist/records-v2/PgSortCodeSubstitutionRecord.js +21 -0
  137. package/dist/records-v2/PgTransactionRecord.d.ts +135 -2
  138. package/dist/records-v2/PgTransactionRecord.js +189 -0
  139. package/dist/records-v2/PgVocalinkRecord.d.ts +21 -1
  140. package/dist/records-v2/PgVocalinkRecord.js +21 -0
  141. package/dist/records-v2/PgWebhookAttemptRecord.d.ts +42 -1
  142. package/dist/records-v2/PgWebhookAttemptRecord.js +58 -0
  143. package/dist/records-v2/PgWebhookRecord.d.ts +122 -1
  144. package/dist/records-v2/PgWebhookRecord.js +190 -0
  145. package/dist/records-v2/PriceBookRecord.d.ts +21 -0
  146. package/dist/records-v2/PriceBookRecord.js +37 -0
  147. package/dist/records-v2/ProductRecord.d.ts +242 -2
  148. package/dist/records-v2/ProductRecord.js +335 -0
  149. package/dist/records-v2/PushNotificationRecord.d.ts +42 -1
  150. package/dist/records-v2/PushNotificationRecord.js +58 -0
  151. package/dist/records-v2/ReferralRecord.d.ts +103 -2
  152. package/dist/records-v2/ReferralRecord.js +157 -0
  153. package/dist/records-v2/RemediationOutcomeFormRecord.d.ts +83 -2
  154. package/dist/records-v2/RemediationOutcomeFormRecord.js +124 -0
  155. package/dist/records-v2/RemediationRequiredReasonRecord.d.ts +103 -2
  156. package/dist/records-v2/RemediationRequiredReasonRecord.js +157 -0
  157. package/dist/records-v2/ReturnsRecord.d.ts +62 -1
  158. package/dist/records-v2/ReturnsRecord.js +91 -0
  159. package/dist/records-v2/RewardRecord.d.ts +103 -2
  160. package/dist/records-v2/RewardRecord.js +157 -0
  161. package/dist/records-v2/SalesTerritoryRecord.d.ts +79 -2
  162. package/dist/records-v2/SalesTerritoryRecord.js +107 -0
  163. package/dist/records-v2/ScheduleSlotRecord.d.ts +42 -1
  164. package/dist/records-v2/ScheduleSlotRecord.js +58 -0
  165. package/dist/records-v2/ServiceAppointmentConfigRecord.d.ts +287 -2
  166. package/dist/records-v2/ServiceAppointmentConfigRecord.js +367 -0
  167. package/dist/records-v2/ServiceAppointmentRecord.d.ts +81 -0
  168. package/dist/records-v2/ServiceAppointmentRecord.js +136 -0
  169. package/dist/records-v2/ServiceRecord.d.ts +40 -0
  170. package/dist/records-v2/ServiceRecord.js +69 -0
  171. package/dist/records-v2/ServiceVisitAuditRecord.d.ts +83 -2
  172. package/dist/records-v2/ServiceVisitAuditRecord.js +124 -0
  173. package/dist/records-v2/SiteSpecificRiskAssessmentOutcomeFormRecord.d.ts +83 -2
  174. package/dist/records-v2/SiteSpecificRiskAssessmentOutcomeFormRecord.js +124 -0
  175. package/dist/records-v2/SweeperMaintenanceAuditRecord.d.ts +83 -2
  176. package/dist/records-v2/SweeperMaintenanceAuditRecord.js +124 -0
  177. package/dist/records-v2/TeamRecord.d.ts +81 -0
  178. package/dist/records-v2/TeamRecord.js +136 -0
  179. package/dist/records-v2/TimeSlotRecord.d.ts +21 -0
  180. package/dist/records-v2/TimeSlotRecord.js +37 -0
  181. package/dist/records-v2/TransactionRecord.d.ts +181 -1
  182. package/dist/records-v2/TransactionRecord.js +288 -0
  183. package/dist/records-v2/TwilioUserUpdateRecord.d.ts +42 -1
  184. package/dist/records-v2/TwilioUserUpdateRecord.js +58 -0
  185. package/dist/records-v2/UgAuditOfInstallationRecord.d.ts +83 -2
  186. package/dist/records-v2/UgAuditOfInstallationRecord.js +124 -0
  187. package/dist/records-v2/UgExternalAuditRecord.d.ts +83 -2
  188. package/dist/records-v2/UgExternalAuditRecord.js +124 -0
  189. package/dist/records-v2/UgInProgressAuditRecord.d.ts +83 -2
  190. package/dist/records-v2/UgInProgressAuditRecord.js +124 -0
  191. package/dist/records-v2/UgInstallationAuditRecord.d.ts +83 -2
  192. package/dist/records-v2/UgInstallationAuditRecord.js +124 -0
  193. package/dist/records-v2/UgRetroAuditRecord.d.ts +83 -2
  194. package/dist/records-v2/UgRetroAuditRecord.js +124 -0
  195. package/dist/records-v2/UserRecord.d.ts +360 -0
  196. package/dist/records-v2/UserRecord.js +597 -0
  197. package/dist/records-v2/VisitRecord.d.ts +121 -0
  198. package/dist/records-v2/VisitRecord.js +202 -0
  199. package/dist/records-v2/VoiceConfigurationRecord.d.ts +21 -0
  200. package/dist/records-v2/VoiceConfigurationRecord.js +37 -0
  201. package/dist/records-v2/WayleaveAuditRecord.d.ts +83 -2
  202. package/dist/records-v2/WayleaveAuditRecord.js +124 -0
  203. package/dist/records-v2/WorkOrderRecord.d.ts +1206 -2
  204. package/dist/records-v2/WorkOrderRecord.js +1832 -0
  205. package/dist/records-v2/WorkOrderStatusUpdateRecord.d.ts +75 -2
  206. package/dist/records-v2/WorkOrderStatusUpdateRecord.js +90 -0
  207. package/dist/records-v2/YfFieldServiceVisitRecord.d.ts +83 -2
  208. package/dist/records-v2/YfFieldServiceVisitRecord.js +124 -0
  209. package/dist/records-v2/YfStockAuditRecord.d.ts +83 -2
  210. package/dist/records-v2/YfStockAuditRecord.js +124 -0
  211. package/package.json +1 -1
@@ -14,6 +14,8 @@
14
14
  * await record.createAccount({ ... }).execute();
15
15
  * ```
16
16
  *
17
+ * Entity Types: BUSINESS, MULTIPLE, PRIMARY, RESELLER, SERVICE
18
+ *
17
19
  * AUTO-GENERATED - DO NOT EDIT DIRECTLY
18
20
  */
19
21
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
@@ -29,6 +31,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
29
31
  exports.isAccountRecord = exports.AccountRecord = void 0;
30
32
  const uuid_1 = require("uuid");
31
33
  const core_1 = require("@d19n/odin-types/dist/core");
34
+ const record_link_manager_1 = require("@d19n/odin-sdk-generator/dist/record-link-manager");
35
+ const WorkOrderRecord_1 = require("./WorkOrderRecord");
36
+ const NoteRecord_1 = require("./NoteRecord");
37
+ const OneTouchSwitchRecord_1 = require("./OneTouchSwitchRecord");
38
+ const OrderRecord_1 = require("./OrderRecord");
39
+ const InvoiceRecord_1 = require("./InvoiceRecord");
40
+ const AddressRecord_1 = require("./AddressRecord");
41
+ const CaseRecord_1 = require("./CaseRecord");
42
+ const PaymentRecord_1 = require("./PaymentRecord");
43
+ const ContactRecord_1 = require("./ContactRecord");
44
+ const FileRecord_1 = require("./FileRecord");
32
45
  /**
33
46
  * Builder for action execution with dryRun support
34
47
  *
@@ -103,6 +116,419 @@ class AccountRecord {
103
116
  /** Access the underlying OdinRecord (null for new records) */
104
117
  get record() { return this._record; }
105
118
  // ============================================
119
+ // TYPE GUARDS (with TypeScript type predicates)
120
+ // ============================================
121
+ /**
122
+ * Type guard: check if this record is of type BUSINESS
123
+ *
124
+ * When this returns true, TypeScript automatically narrows the type,
125
+ * giving you access to BUSINESS-specific properties.
126
+ *
127
+ * @example
128
+ * ```typescript
129
+ * if (record.isBusiness()) {
130
+ * // TypeScript knows record.properties is BusinessAccountProperties
131
+ * console.log(record.properties.SomeTypeSpecificField);
132
+ * }
133
+ * ```
134
+ * @remarks Business accounts
135
+ */
136
+ isBusiness() { var _a; return ((_a = this._record) === null || _a === void 0 ? void 0 : _a.type) === 'BUSINESS'; }
137
+ /**
138
+ * Type guard: check if this record is of type MULTIPLE
139
+ *
140
+ * When this returns true, TypeScript automatically narrows the type,
141
+ * giving you access to MULTIPLE-specific properties.
142
+ *
143
+ * @example
144
+ * ```typescript
145
+ * if (record.isMultiple()) {
146
+ * // TypeScript knows record.properties is MultipleAccountProperties
147
+ * console.log(record.properties.SomeTypeSpecificField);
148
+ * }
149
+ * ```
150
+ * @remarks Multiple accounts are for customers who want to purchase multiple services at many addresses
151
+ */
152
+ isMultiple() { var _a; return ((_a = this._record) === null || _a === void 0 ? void 0 : _a.type) === 'MULTIPLE'; }
153
+ /**
154
+ * Type guard: check if this record is of type PRIMARY
155
+ *
156
+ * When this returns true, TypeScript automatically narrows the type,
157
+ * giving you access to PRIMARY-specific properties.
158
+ *
159
+ * @example
160
+ * ```typescript
161
+ * if (record.isPrimary()) {
162
+ * // TypeScript knows record.properties is PrimaryAccountProperties
163
+ * console.log(record.properties.SomeTypeSpecificField);
164
+ * }
165
+ * ```
166
+ * @remarks Primary account
167
+ */
168
+ isPrimary() { var _a; return ((_a = this._record) === null || _a === void 0 ? void 0 : _a.type) === 'PRIMARY'; }
169
+ /**
170
+ * Type guard: check if this record is of type RESELLER
171
+ *
172
+ * When this returns true, TypeScript automatically narrows the type,
173
+ * giving you access to RESELLER-specific properties.
174
+ *
175
+ * @example
176
+ * ```typescript
177
+ * if (record.isReseller()) {
178
+ * // TypeScript knows record.properties is ResellerAccountProperties
179
+ * console.log(record.properties.SomeTypeSpecificField);
180
+ * }
181
+ * ```
182
+ * @remarks Reseller
183
+ */
184
+ isReseller() { var _a; return ((_a = this._record) === null || _a === void 0 ? void 0 : _a.type) === 'RESELLER'; }
185
+ /**
186
+ * Type guard: check if this record is of type SERVICE
187
+ *
188
+ * When this returns true, TypeScript automatically narrows the type,
189
+ * giving you access to SERVICE-specific properties.
190
+ *
191
+ * @example
192
+ * ```typescript
193
+ * if (record.isService()) {
194
+ * // TypeScript knows record.properties is ServiceAccountProperties
195
+ * console.log(record.properties.SomeTypeSpecificField);
196
+ * }
197
+ * ```
198
+ * @remarks This is the account where service is being delivered
199
+ */
200
+ isService() { var _a; return ((_a = this._record) === null || _a === void 0 ? void 0 : _a.type) === 'SERVICE'; }
201
+ /**
202
+ * Access linked WorkOrder records
203
+ * @remarks Available labels: Account__WorkOrder
204
+ * @throws Error if called on a new (unsaved) record
205
+ *
206
+ * @example
207
+ * ```typescript
208
+ * // Get all linked WorkOrder records
209
+ * const items = await record.workOrders.list();
210
+ * const first = await record.workOrders.first();
211
+ *
212
+ * // Filter by label
213
+ * const specific = await record.workOrders.first({ label: 'Account__WorkOrder' });
214
+ * ```
215
+ */
216
+ get workOrders() {
217
+ var _a;
218
+ if (!((_a = this._record) === null || _a === void 0 ? void 0 : _a.id))
219
+ throw new Error('Cannot access links on a new (unsaved) record');
220
+ if (!this._workOrders) {
221
+ this._workOrders = new record_link_manager_1.RecordLinkManager(this._provider, this._record, {
222
+ sourceEntity: 'CrmModule:Account',
223
+ targetEntity: 'FieldServiceModule:WorkOrder',
224
+ targetModuleName: 'FieldServiceModule',
225
+ targetEntityName: 'WorkOrder',
226
+ labels: ['Account__WorkOrder'],
227
+ }, WorkOrderRecord_1.WorkOrderRecord);
228
+ }
229
+ return this._workOrders;
230
+ }
231
+ /**
232
+ * Access linked Note records
233
+ * @remarks Available labels: Account__Note
234
+ * @throws Error if called on a new (unsaved) record
235
+ *
236
+ * @example
237
+ * ```typescript
238
+ * // Get all linked Note records
239
+ * const items = await record.notes.list();
240
+ * const first = await record.notes.first();
241
+ *
242
+ * // Filter by label
243
+ * const specific = await record.notes.first({ label: 'Account__Note' });
244
+ * ```
245
+ */
246
+ get notes() {
247
+ var _a;
248
+ if (!((_a = this._record) === null || _a === void 0 ? void 0 : _a.id))
249
+ throw new Error('Cannot access links on a new (unsaved) record');
250
+ if (!this._notes) {
251
+ this._notes = new record_link_manager_1.RecordLinkManager(this._provider, this._record, {
252
+ sourceEntity: 'CrmModule:Account',
253
+ targetEntity: 'SupportModule:Note',
254
+ targetModuleName: 'SupportModule',
255
+ targetEntityName: 'Note',
256
+ labels: ['Account__Note'],
257
+ }, NoteRecord_1.NoteRecord);
258
+ }
259
+ return this._notes;
260
+ }
261
+ /**
262
+ * Access linked OneTouchSwitch records
263
+ * @remarks Available labels: Account__OneTouchSwitch
264
+ * @throws Error if called on a new (unsaved) record
265
+ *
266
+ * @example
267
+ * ```typescript
268
+ * // Get all linked OneTouchSwitch records
269
+ * const items = await record.oneTouchSwitches.list();
270
+ * const first = await record.oneTouchSwitches.first();
271
+ *
272
+ * // Filter by label
273
+ * const specific = await record.oneTouchSwitches.first({ label: 'Account__OneTouchSwitch' });
274
+ * ```
275
+ */
276
+ get oneTouchSwitches() {
277
+ var _a;
278
+ if (!((_a = this._record) === null || _a === void 0 ? void 0 : _a.id))
279
+ throw new Error('Cannot access links on a new (unsaved) record');
280
+ if (!this._oneTouchSwitches) {
281
+ this._oneTouchSwitches = new record_link_manager_1.RecordLinkManager(this._provider, this._record, {
282
+ sourceEntity: 'CrmModule:Account',
283
+ targetEntity: 'OrderModule:OneTouchSwitch',
284
+ targetModuleName: 'OrderModule',
285
+ targetEntityName: 'OneTouchSwitch',
286
+ labels: ['Account__OneTouchSwitch'],
287
+ }, OneTouchSwitchRecord_1.OneTouchSwitchRecord);
288
+ }
289
+ return this._oneTouchSwitches;
290
+ }
291
+ /**
292
+ * Access linked Order records
293
+ * @remarks Available labels: Account__Order
294
+ * @throws Error if called on a new (unsaved) record
295
+ *
296
+ * @example
297
+ * ```typescript
298
+ * // Get all linked Order records
299
+ * const items = await record.orders.list();
300
+ * const first = await record.orders.first();
301
+ *
302
+ * // Filter by label
303
+ * const specific = await record.orders.first({ label: 'Account__Order' });
304
+ * ```
305
+ */
306
+ get orders() {
307
+ var _a;
308
+ if (!((_a = this._record) === null || _a === void 0 ? void 0 : _a.id))
309
+ throw new Error('Cannot access links on a new (unsaved) record');
310
+ if (!this._orders) {
311
+ this._orders = new record_link_manager_1.RecordLinkManager(this._provider, this._record, {
312
+ sourceEntity: 'CrmModule:Account',
313
+ targetEntity: 'OrderModule:Order',
314
+ targetModuleName: 'OrderModule',
315
+ targetEntityName: 'Order',
316
+ labels: ['Account__Order'],
317
+ }, OrderRecord_1.OrderRecord);
318
+ }
319
+ return this._orders;
320
+ }
321
+ /**
322
+ * Access linked Invoice records
323
+ * @remarks Available labels: Account__Invoice
324
+ * @throws Error if called on a new (unsaved) record
325
+ *
326
+ * @example
327
+ * ```typescript
328
+ * // Get all linked Invoice records
329
+ * const items = await record.invoices.list();
330
+ * const first = await record.invoices.first();
331
+ *
332
+ * // Filter by label
333
+ * const specific = await record.invoices.first({ label: 'Account__Invoice' });
334
+ * ```
335
+ */
336
+ get invoices() {
337
+ var _a;
338
+ if (!((_a = this._record) === null || _a === void 0 ? void 0 : _a.id))
339
+ throw new Error('Cannot access links on a new (unsaved) record');
340
+ if (!this._invoices) {
341
+ this._invoices = new record_link_manager_1.RecordLinkManager(this._provider, this._record, {
342
+ sourceEntity: 'CrmModule:Account',
343
+ targetEntity: 'BillingModule:Invoice',
344
+ targetModuleName: 'BillingModule',
345
+ targetEntityName: 'Invoice',
346
+ labels: ['Account__Invoice'],
347
+ }, InvoiceRecord_1.InvoiceRecord);
348
+ }
349
+ return this._invoices;
350
+ }
351
+ /**
352
+ * Access linked Account records
353
+ * @remarks Available labels: Account_Account
354
+ * @throws Error if called on a new (unsaved) record
355
+ *
356
+ * @example
357
+ * ```typescript
358
+ * // Get all linked Account records
359
+ * const items = await record.accounts.list();
360
+ * const first = await record.accounts.first();
361
+ *
362
+ * // Filter by label
363
+ * const specific = await record.accounts.first({ label: 'Account_Account' });
364
+ * ```
365
+ */
366
+ get accounts() {
367
+ var _a;
368
+ if (!((_a = this._record) === null || _a === void 0 ? void 0 : _a.id))
369
+ throw new Error('Cannot access links on a new (unsaved) record');
370
+ if (!this._accounts) {
371
+ this._accounts = new record_link_manager_1.RecordLinkManager(this._provider, this._record, {
372
+ sourceEntity: 'CrmModule:Account',
373
+ targetEntity: 'CrmModule:Account',
374
+ targetModuleName: 'CrmModule',
375
+ targetEntityName: 'Account',
376
+ labels: ['Account_Account'],
377
+ }, AccountRecord);
378
+ }
379
+ return this._accounts;
380
+ }
381
+ /**
382
+ * Access linked Address records
383
+ * @remarks Available labels: BillingAddress
384
+ * @throws Error if called on a new (unsaved) record
385
+ *
386
+ * @example
387
+ * ```typescript
388
+ * // Get all linked Address records
389
+ * const items = await record.addresses.list();
390
+ * const first = await record.addresses.first();
391
+ *
392
+ * // Filter by label
393
+ * const specific = await record.addresses.first({ label: 'BillingAddress' });
394
+ * ```
395
+ */
396
+ get addresses() {
397
+ var _a;
398
+ if (!((_a = this._record) === null || _a === void 0 ? void 0 : _a.id))
399
+ throw new Error('Cannot access links on a new (unsaved) record');
400
+ if (!this._addresses) {
401
+ this._addresses = new record_link_manager_1.RecordLinkManager(this._provider, this._record, {
402
+ sourceEntity: 'CrmModule:Account',
403
+ targetEntity: 'CrmModule:Address',
404
+ targetModuleName: 'CrmModule',
405
+ targetEntityName: 'Address',
406
+ labels: ['BillingAddress'],
407
+ }, AddressRecord_1.AddressRecord);
408
+ }
409
+ return this._addresses;
410
+ }
411
+ /**
412
+ * Access linked Case records
413
+ * @remarks Available labels: Account__Case
414
+ * @throws Error if called on a new (unsaved) record
415
+ *
416
+ * @example
417
+ * ```typescript
418
+ * // Get all linked Case records
419
+ * const items = await record.cases.list();
420
+ * const first = await record.cases.first();
421
+ *
422
+ * // Filter by label
423
+ * const specific = await record.cases.first({ label: 'Account__Case' });
424
+ * ```
425
+ */
426
+ get cases() {
427
+ var _a;
428
+ if (!((_a = this._record) === null || _a === void 0 ? void 0 : _a.id))
429
+ throw new Error('Cannot access links on a new (unsaved) record');
430
+ if (!this._cases) {
431
+ this._cases = new record_link_manager_1.RecordLinkManager(this._provider, this._record, {
432
+ sourceEntity: 'CrmModule:Account',
433
+ targetEntity: 'SupportModule:Case',
434
+ targetModuleName: 'SupportModule',
435
+ targetEntityName: 'Case',
436
+ labels: ['Account__Case'],
437
+ }, CaseRecord_1.CaseRecord);
438
+ }
439
+ return this._cases;
440
+ }
441
+ /**
442
+ * Access linked Payment records
443
+ * @remarks Available labels: Account_Payment
444
+ * @throws Error if called on a new (unsaved) record
445
+ *
446
+ * @example
447
+ * ```typescript
448
+ * // Get all linked Payment records
449
+ * const items = await record.payments.list();
450
+ * const first = await record.payments.first();
451
+ *
452
+ * // Filter by label
453
+ * const specific = await record.payments.first({ label: 'Account_Payment' });
454
+ * ```
455
+ */
456
+ get payments() {
457
+ var _a;
458
+ if (!((_a = this._record) === null || _a === void 0 ? void 0 : _a.id))
459
+ throw new Error('Cannot access links on a new (unsaved) record');
460
+ if (!this._payments) {
461
+ this._payments = new record_link_manager_1.RecordLinkManager(this._provider, this._record, {
462
+ sourceEntity: 'CrmModule:Account',
463
+ targetEntity: 'BillingModule:Payment',
464
+ targetModuleName: 'BillingModule',
465
+ targetEntityName: 'Payment',
466
+ labels: ['Account_Payment'],
467
+ }, PaymentRecord_1.PaymentRecord);
468
+ }
469
+ return this._payments;
470
+ }
471
+ /**
472
+ * Access linked Contact records
473
+ * @remarks Available labels: BillingContact
474
+ * @throws Error if called on a new (unsaved) record
475
+ *
476
+ * @example
477
+ * ```typescript
478
+ * // Get all linked Contact records
479
+ * const items = await record.contacts.list();
480
+ * const first = await record.contacts.first();
481
+ *
482
+ * // Filter by label
483
+ * const specific = await record.contacts.first({ label: 'BillingContact' });
484
+ * ```
485
+ */
486
+ get contacts() {
487
+ var _a;
488
+ if (!((_a = this._record) === null || _a === void 0 ? void 0 : _a.id))
489
+ throw new Error('Cannot access links on a new (unsaved) record');
490
+ if (!this._contacts) {
491
+ this._contacts = new record_link_manager_1.RecordLinkManager(this._provider, this._record, {
492
+ sourceEntity: 'CrmModule:Account',
493
+ targetEntity: 'CrmModule:Contact',
494
+ targetModuleName: 'CrmModule',
495
+ targetEntityName: 'Contact',
496
+ labels: ['BillingContact'],
497
+ }, ContactRecord_1.ContactRecord);
498
+ }
499
+ return this._contacts;
500
+ }
501
+ /**
502
+ * Access linked File records
503
+ * @remarks Available labels: Account__File
504
+ * @throws Error if called on a new (unsaved) record
505
+ *
506
+ * @example
507
+ * ```typescript
508
+ * // Get all linked File records
509
+ * const items = await record.files.list();
510
+ * const first = await record.files.first();
511
+ *
512
+ * // Filter by label
513
+ * const specific = await record.files.first({ label: 'Account__File' });
514
+ * ```
515
+ */
516
+ get files() {
517
+ var _a;
518
+ if (!((_a = this._record) === null || _a === void 0 ? void 0 : _a.id))
519
+ throw new Error('Cannot access links on a new (unsaved) record');
520
+ if (!this._files) {
521
+ this._files = new record_link_manager_1.RecordLinkManager(this._provider, this._record, {
522
+ sourceEntity: 'CrmModule:Account',
523
+ targetEntity: 'SchemaModule:File',
524
+ targetModuleName: 'SchemaModule',
525
+ targetEntityName: 'File',
526
+ labels: ['Account__File'],
527
+ }, FileRecord_1.FileRecord);
528
+ }
529
+ return this._files;
530
+ }
531
+ // ============================================
106
532
  // LINK MANAGEMENT
107
533
  // ============================================
108
534
  /**
@@ -393,6 +819,31 @@ class AccountRecord {
393
819
  }
394
820
  }
395
821
  exports.AccountRecord = AccountRecord;
822
+ // ============================================
823
+ // TYPED LINK ACCESSORS
824
+ // ============================================
825
+ /** Valid labels for WorkOrder associations */
826
+ AccountRecord.workOrdersLabels = ['Account__WorkOrder'];
827
+ /** Valid labels for Note associations */
828
+ AccountRecord.notesLabels = ['Account__Note'];
829
+ /** Valid labels for OneTouchSwitch associations */
830
+ AccountRecord.oneTouchSwitchesLabels = ['Account__OneTouchSwitch'];
831
+ /** Valid labels for Order associations */
832
+ AccountRecord.ordersLabels = ['Account__Order'];
833
+ /** Valid labels for Invoice associations */
834
+ AccountRecord.invoicesLabels = ['Account__Invoice'];
835
+ /** Valid labels for Account associations */
836
+ AccountRecord.accountsLabels = ['Account_Account'];
837
+ /** Valid labels for Address associations */
838
+ AccountRecord.addressesLabels = ['BillingAddress'];
839
+ /** Valid labels for Case associations */
840
+ AccountRecord.casesLabels = ['Account__Case'];
841
+ /** Valid labels for Payment associations */
842
+ AccountRecord.paymentsLabels = ['Account_Payment'];
843
+ /** Valid labels for Contact associations */
844
+ AccountRecord.contactsLabels = ['BillingContact'];
845
+ /** Valid labels for File associations */
846
+ AccountRecord.filesLabels = ['Account__File'];
396
847
  /** Type guard to check if an object is a AccountRecord */
397
848
  function isAccountRecord(obj) {
398
849
  return obj instanceof AccountRecord;
@@ -13,14 +13,24 @@
13
13
  * await record.createActivityLog({ ... }).execute();
14
14
  * ```
15
15
  *
16
+ * Entity Types: DEFAULT
17
+ *
16
18
  * AUTO-GENERATED - DO NOT EDIT DIRECTLY
17
19
  */
18
20
  import { OdinRecord, OdinRecordLinkDto } from '@d19n/odin-types/dist/core';
19
21
  import { PipelineStageEntity } from '@d19n/odin-types/dist/core';
20
22
  import { IDbRecordCreateUpdateRes } from '@d19n/odin-types/dist/core/interfaces/v1.db.interfaces';
21
23
  import { IOdinProvider } from '@d19n/odin-sdk-generator/dist/odin-sdk-types';
24
+ import { RecordLinkManager } from '@d19n/odin-sdk-generator/dist/record-link-manager';
22
25
  import { ActivityLogProperties } from '../entities-v2/ActivityLog';
23
26
  import { CreateActivityLogEntryProperties } from '../actions-v2/CreateActivityLogEntryDto';
27
+ import { OrderRecord } from './OrderRecord';
28
+ import { CaseRecord } from './CaseRecord';
29
+ import { OneTouchSwitchRecord } from './OneTouchSwitchRecord';
30
+ import { CallRecord } from './CallRecord';
31
+ import { WorkOrderRecord } from './WorkOrderRecord';
32
+ /** Valid entity types for ActivityLog */
33
+ export declare type ActivityLogType = 'DEFAULT';
24
34
  /**
25
35
  * Builder for action execution with dryRun support
26
36
  *
@@ -57,6 +67,11 @@ export declare class ActivityLogRecord<TProps = ActivityLogProperties> {
57
67
  private _provider;
58
68
  private _pendingLinks;
59
69
  private _preGeneratedId;
70
+ private _orders?;
71
+ private _cases?;
72
+ private _oneTouchSwitches?;
73
+ private _calls?;
74
+ private _workOrders?;
60
75
  /**
61
76
  * Create a record wrapper.
62
77
  * @param record - The underlying record, or null for create operations
@@ -69,7 +84,7 @@ export declare class ActivityLogRecord<TProps = ActivityLogProperties> {
69
84
  /** Record ID - always available (pre-generated for new records) */
70
85
  get id(): string;
71
86
  get entity(): string;
72
- get type(): string | undefined;
87
+ get type(): ActivityLogType | undefined;
73
88
  /** Record properties - empty object for new (unsaved) records */
74
89
  get properties(): TProps;
75
90
  get title(): string | undefined;
@@ -79,6 +94,112 @@ export declare class ActivityLogRecord<TProps = ActivityLogProperties> {
79
94
  get updatedAt(): string | undefined;
80
95
  /** Access the underlying OdinRecord (null for new records) */
81
96
  get record(): OdinRecord<TProps> | null;
97
+ /**
98
+ * Type guard: check if this record is of type DEFAULT
99
+ *
100
+ * When this returns true, TypeScript automatically narrows the type,
101
+ * giving you access to DEFAULT-specific properties.
102
+ *
103
+ * @example
104
+ * ```typescript
105
+ * if (record.isDefault()) {
106
+ * // TypeScript knows record.properties is ActivityLogProperties
107
+ * console.log(record.properties.SomeTypeSpecificField);
108
+ * }
109
+ * ```
110
+ * @remarks This is the default record type
111
+ */
112
+ isDefault(): this is ActivityLogRecord<ActivityLogProperties>;
113
+ /** Valid labels for Order associations */
114
+ static readonly ordersLabels: readonly ["Order__ActivityLog"];
115
+ /**
116
+ * Access linked Order records
117
+ * @remarks Available labels: Order__ActivityLog
118
+ * @throws Error if called on a new (unsaved) record
119
+ *
120
+ * @example
121
+ * ```typescript
122
+ * // Get all linked Order records
123
+ * const items = await record.orders.list();
124
+ * const first = await record.orders.first();
125
+ *
126
+ * // Filter by label
127
+ * const specific = await record.orders.first({ label: 'Order__ActivityLog' });
128
+ * ```
129
+ */
130
+ get orders(): RecordLinkManager<OrderRecord, typeof ActivityLogRecord['ordersLabels'][number]>;
131
+ /** Valid labels for Case associations */
132
+ static readonly casesLabels: readonly ["Case__ActivityLog"];
133
+ /**
134
+ * Access linked Case records
135
+ * @remarks Available labels: Case__ActivityLog
136
+ * @throws Error if called on a new (unsaved) record
137
+ *
138
+ * @example
139
+ * ```typescript
140
+ * // Get all linked Case records
141
+ * const items = await record.cases.list();
142
+ * const first = await record.cases.first();
143
+ *
144
+ * // Filter by label
145
+ * const specific = await record.cases.first({ label: 'Case__ActivityLog' });
146
+ * ```
147
+ */
148
+ get cases(): RecordLinkManager<CaseRecord, typeof ActivityLogRecord['casesLabels'][number]>;
149
+ /** Valid labels for OneTouchSwitch associations */
150
+ static readonly oneTouchSwitchesLabels: readonly ["OneTouchSwitch_ActivityLog"];
151
+ /**
152
+ * Access linked OneTouchSwitch records
153
+ * @remarks Available labels: OneTouchSwitch_ActivityLog
154
+ * @throws Error if called on a new (unsaved) record
155
+ *
156
+ * @example
157
+ * ```typescript
158
+ * // Get all linked OneTouchSwitch records
159
+ * const items = await record.oneTouchSwitches.list();
160
+ * const first = await record.oneTouchSwitches.first();
161
+ *
162
+ * // Filter by label
163
+ * const specific = await record.oneTouchSwitches.first({ label: 'OneTouchSwitch_ActivityLog' });
164
+ * ```
165
+ */
166
+ get oneTouchSwitches(): RecordLinkManager<OneTouchSwitchRecord, typeof ActivityLogRecord['oneTouchSwitchesLabels'][number]>;
167
+ /** Valid labels for Call associations */
168
+ static readonly callsLabels: readonly ["CallActivity"];
169
+ /**
170
+ * Access linked Call records
171
+ * @remarks Available labels: CallActivity
172
+ * @throws Error if called on a new (unsaved) record
173
+ *
174
+ * @example
175
+ * ```typescript
176
+ * // Get all linked Call records
177
+ * const items = await record.calls.list();
178
+ * const first = await record.calls.first();
179
+ *
180
+ * // Filter by label
181
+ * const specific = await record.calls.first({ label: 'CallActivity' });
182
+ * ```
183
+ */
184
+ get calls(): RecordLinkManager<CallRecord, typeof ActivityLogRecord['callsLabels'][number]>;
185
+ /** Valid labels for WorkOrder associations */
186
+ static readonly workOrdersLabels: readonly ["WorkOrder_ActivityLog"];
187
+ /**
188
+ * Access linked WorkOrder records
189
+ * @remarks Available labels: WorkOrder_ActivityLog
190
+ * @throws Error if called on a new (unsaved) record
191
+ *
192
+ * @example
193
+ * ```typescript
194
+ * // Get all linked WorkOrder records
195
+ * const items = await record.workOrders.list();
196
+ * const first = await record.workOrders.first();
197
+ *
198
+ * // Filter by label
199
+ * const specific = await record.workOrders.first({ label: 'WorkOrder_ActivityLog' });
200
+ * ```
201
+ */
202
+ get workOrders(): RecordLinkManager<WorkOrderRecord, typeof ActivityLogRecord['workOrdersLabels'][number]>;
82
203
  /**
83
204
  * Queue a link to be created with the next action.
84
205
  * Works for both create and update actions.