@artu-ai/compliance-sdk 0.5.4 → 0.6.1

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 (73) hide show
  1. package/dist/errors/validation.d.ts.map +1 -1
  2. package/dist/errors/validation.js +19 -1
  3. package/dist/resources/addresses.d.ts +29 -2
  4. package/dist/resources/addresses.d.ts.map +1 -1
  5. package/dist/resources/addresses.js +65 -4
  6. package/dist/resources/bank-accounts.d.ts +29 -2
  7. package/dist/resources/bank-accounts.d.ts.map +1 -1
  8. package/dist/resources/bank-accounts.js +65 -4
  9. package/dist/resources/clients.d.ts +59 -4
  10. package/dist/resources/clients.d.ts.map +1 -1
  11. package/dist/resources/clients.js +85 -8
  12. package/dist/resources/contact-methods.d.ts +29 -2
  13. package/dist/resources/contact-methods.d.ts.map +1 -1
  14. package/dist/resources/contact-methods.js +65 -4
  15. package/dist/resources/documents.d.ts +24 -19
  16. package/dist/resources/documents.d.ts.map +1 -1
  17. package/dist/resources/documents.js +51 -1
  18. package/dist/resources/mex/actividad-vulnerable/avi/clients.d.ts +31 -5
  19. package/dist/resources/mex/actividad-vulnerable/avi/clients.d.ts.map +1 -1
  20. package/dist/resources/mex/actividad-vulnerable/avi/clients.js +65 -9
  21. package/dist/resources/mex/actividad-vulnerable/avi/reports.d.ts +26 -2
  22. package/dist/resources/mex/actividad-vulnerable/avi/reports.d.ts.map +1 -1
  23. package/dist/resources/mex/actividad-vulnerable/avi/reports.js +58 -4
  24. package/dist/resources/mex/actividad-vulnerable/avi/transactions.d.ts +26 -2
  25. package/dist/resources/mex/actividad-vulnerable/avi/transactions.d.ts.map +1 -1
  26. package/dist/resources/mex/actividad-vulnerable/avi/transactions.js +58 -4
  27. package/dist/resources/mex/actividad-vulnerable/jys/clients.d.ts +26 -2
  28. package/dist/resources/mex/actividad-vulnerable/jys/clients.d.ts.map +1 -1
  29. package/dist/resources/mex/actividad-vulnerable/jys/clients.js +58 -4
  30. package/dist/resources/mex/actividad-vulnerable/jys/reports.d.ts +26 -2
  31. package/dist/resources/mex/actividad-vulnerable/jys/reports.d.ts.map +1 -1
  32. package/dist/resources/mex/actividad-vulnerable/jys/reports.js +58 -4
  33. package/dist/resources/mex/actividad-vulnerable/jys/transactions.d.ts +26 -2
  34. package/dist/resources/mex/actividad-vulnerable/jys/transactions.d.ts.map +1 -1
  35. package/dist/resources/mex/actividad-vulnerable/jys/transactions.js +58 -4
  36. package/dist/resources/mex/actividad-vulnerable/tsc/clients.d.ts +26 -2
  37. package/dist/resources/mex/actividad-vulnerable/tsc/clients.d.ts.map +1 -1
  38. package/dist/resources/mex/actividad-vulnerable/tsc/clients.js +58 -4
  39. package/dist/resources/mex/actividad-vulnerable/tsc/reports.d.ts +26 -2
  40. package/dist/resources/mex/actividad-vulnerable/tsc/reports.d.ts.map +1 -1
  41. package/dist/resources/mex/actividad-vulnerable/tsc/reports.js +58 -4
  42. package/dist/resources/mex/actividad-vulnerable/tsc/transactions.d.ts +26 -2
  43. package/dist/resources/mex/actividad-vulnerable/tsc/transactions.d.ts.map +1 -1
  44. package/dist/resources/mex/actividad-vulnerable/tsc/transactions.js +58 -4
  45. package/dist/resources/mex/addresses.d.ts +26 -2
  46. package/dist/resources/mex/addresses.d.ts.map +1 -1
  47. package/dist/resources/mex/addresses.js +66 -5
  48. package/dist/resources/mex/bank-accounts.d.ts +13 -2
  49. package/dist/resources/mex/bank-accounts.d.ts.map +1 -1
  50. package/dist/resources/mex/bank-accounts.js +17 -3
  51. package/dist/resources/mex/clients.d.ts +39 -11
  52. package/dist/resources/mex/clients.d.ts.map +1 -1
  53. package/dist/resources/mex/clients.js +82 -20
  54. package/dist/resources/mex/reports.d.ts +37 -12
  55. package/dist/resources/mex/reports.d.ts.map +1 -1
  56. package/dist/resources/mex/reports.js +71 -21
  57. package/dist/resources/mex/transactions.d.ts +38 -10
  58. package/dist/resources/mex/transactions.d.ts.map +1 -1
  59. package/dist/resources/mex/transactions.js +73 -20
  60. package/dist/resources/reports.d.ts +29 -2
  61. package/dist/resources/reports.d.ts.map +1 -1
  62. package/dist/resources/reports.js +57 -3
  63. package/dist/resources/transactions.d.ts +29 -2
  64. package/dist/resources/transactions.d.ts.map +1 -1
  65. package/dist/resources/transactions.js +57 -3
  66. package/dist/sdk/ComplianceSDK.d.ts.map +1 -1
  67. package/dist/sdk/ComplianceSDK.js +2 -0
  68. package/dist/utils/trpc-client.d.ts +1 -19879
  69. package/dist/utils/trpc-client.d.ts.map +1 -1
  70. package/dist/utils/upload.d.ts +6 -0
  71. package/dist/utils/upload.d.ts.map +1 -1
  72. package/dist/utils/upload.js +2 -1
  73. package/package.json +2 -2
@@ -6,7 +6,7 @@
6
6
  * - Returns MexJYSTransaction models
7
7
  */
8
8
  import { z } from "zod";
9
- import { Jurisdiction, CodigoActividad, createJYSTransactionInputSchema, updateJYSTransactionInputSchema, transformSort, jysTransactionFieldMapping, } from "@artu-ai/shared";
9
+ import { Jurisdiction, CodigoActividad, createJYSTransactionInputSchema, updateJYSTransactionInputSchema, upsertJYSTransactionInputSchema, transformSort, jysTransactionFieldMapping, } from "@artu-ai/shared";
10
10
  import { MexTransactionsResource } from "../../transactions";
11
11
  import { MexJYSTransaction } from "../../../../models";
12
12
  // ===========================
@@ -90,9 +90,14 @@ export class JYSTransactionsResource extends MexTransactionsResource {
90
90
  *
91
91
  * Accepts flattened JYS filter (future JYS-specific transaction fields at root level).
92
92
  */
93
- iterate(filter) {
94
- const scopedFilter = this.applyScopeToFilter(filter);
95
- return this.createIterator({ filter: scopedFilter });
93
+ iterate(options) {
94
+ const scopedFilter = this.applyScopeToFilter(options?.filter);
95
+ // Note: sort is passed through - createIterator calls list() which handles transformation
96
+ return this.createIterator({
97
+ filter: scopedFilter,
98
+ sort: options?.sort,
99
+ pageSize: options?.pageSize,
100
+ });
96
101
  }
97
102
  // ─────────────────────────────────────────────────────────────────
98
103
  // Client Relationship Management (scoped returns)
@@ -181,6 +186,55 @@ export class JYSTransactionsResource extends MexTransactionsResource {
181
186
  }
182
187
  }
183
188
  // ─────────────────────────────────────────────────────────────────
189
+ // Upsert Operations
190
+ // ─────────────────────────────────────────────────────────────────
191
+ /**
192
+ * Creates or updates a JYS transaction by externalId.
193
+ *
194
+ * @param data - Transaction upsert data with JYS fields at root level (must include externalId)
195
+ * @returns The created or updated transaction with action indicator
196
+ */
197
+ async upsertByExternalId(data) {
198
+ const validated = this.validate(upsertJYSTransactionInputSchema, data);
199
+ const nestedData = this.transformToNested(validated);
200
+ const response = await this.execute(() => this.trpc.transactions.upsertByExternalId.mutate(nestedData));
201
+ return {
202
+ data: this.instantiate(response.data),
203
+ action: response.action,
204
+ };
205
+ }
206
+ async upsertManyByExternalId(transactions, options = {}) {
207
+ const atomic = options.atomic ?? true;
208
+ const validated = this.validate(z.array(upsertJYSTransactionInputSchema), transactions);
209
+ const nestedItems = validated.map((t) => this.transformToNested(t));
210
+ const response = await this.execute(() => this.trpc.transactions.upsertManyByExternalId.mutate({
211
+ items: nestedItems,
212
+ atomic,
213
+ }));
214
+ if (response.atomic) {
215
+ return {
216
+ atomic: true,
217
+ data: response.data.map((item) => ({
218
+ data: this.instantiate(item.data),
219
+ action: item.action,
220
+ })),
221
+ };
222
+ }
223
+ else {
224
+ return {
225
+ atomic: false,
226
+ succeeded: response.succeeded.map((item) => ({
227
+ index: item.index,
228
+ data: {
229
+ data: this.instantiate(item.data.data),
230
+ action: item.data.action,
231
+ },
232
+ })),
233
+ failed: response.failed,
234
+ };
235
+ }
236
+ }
237
+ // ─────────────────────────────────────────────────────────────────
184
238
  // Protected Helpers
185
239
  // ─────────────────────────────────────────────────────────────────
186
240
  /**
@@ -5,7 +5,7 @@
5
5
  * TSC clients have the same fields as Mexico clients (no additional activity fields).
6
6
  * Returns MexTSCClient models.
7
7
  */
8
- import type { CreateClientInput, UpdateClientInput, ListOptions, PaginatedResponse, CreateTSCClientInput, UpdateTSCClientInput, AtomicBatchResult, PartialBatchResult, ClientRelationshipType, LinkedClient as LinkedClientInput, CreateMexAddressInput, UpdateMexAddressInput, CreateContactMethodInput, UpdateContactMethodInput, CreateBankAccountInput, UpdateBankAccountInput, SyncItem, SyncResult, TSCClientFilter, TSCClientSort } from "@artu-ai/shared";
8
+ import type { CreateClientInput, UpdateClientInput, ListOptions, PaginatedResponse, CreateTSCClientInput, UpdateTSCClientInput, UpsertTSCClientInput, AtomicBatchResult, PartialBatchResult, ClientRelationshipType, LinkedClient as LinkedClientInput, CreateMexAddressInput, UpdateMexAddressInput, CreateContactMethodInput, UpdateContactMethodInput, CreateBankAccountInput, UpdateBankAccountInput, SyncItem, SyncResult, TSCClientFilter, TSCClientSort, UpsertResult } from "@artu-ai/shared";
9
9
  import type { ClientSort } from "@artu-ai/shared";
10
10
  import { MexClientsResource } from "../../clients";
11
11
  import { type ClientIncludeMap } from "../../../clients";
@@ -51,7 +51,11 @@ export declare class TSCClientsResource extends MexClientsResource<TSCClientSort
51
51
  * Accepts flattened TSC filter (MX fields at root level) and automatically
52
52
  * transforms to nested format before calling the API.
53
53
  */
54
- iterate(filter?: TSCClientFilter): AsyncGenerator<MexTSCClient, void, undefined>;
54
+ iterate(options?: {
55
+ filter?: TSCClientFilter;
56
+ sort?: TSCClientSort;
57
+ pageSize?: number;
58
+ }): AsyncGenerator<MexTSCClient, void, undefined>;
55
59
  createMany(clients: CreateTSCClientInput[], options?: {
56
60
  atomic?: true;
57
61
  }): Promise<AtomicBatchResult<MexTSCClient>>;
@@ -70,6 +74,26 @@ export declare class TSCClientsResource extends MexClientsResource<TSCClientSort
70
74
  }[], options: {
71
75
  atomic: false;
72
76
  }): Promise<PartialBatchResult<MexTSCClient>>;
77
+ /**
78
+ * Creates or updates a TSC client by externalId.
79
+ *
80
+ * @param data - Client upsert data with TSC fields at root level (must include externalId)
81
+ * @returns The created or updated client with action indicator
82
+ */
83
+ upsertByExternalId(data: UpsertTSCClientInput): Promise<UpsertResult<MexTSCClient>>;
84
+ /**
85
+ * Creates or updates multiple TSC clients by externalId.
86
+ *
87
+ * @param clients - Array of client upsert data (each must include externalId)
88
+ * @param options - Batch options (atomic: true by default)
89
+ * @returns Atomic result with data array, or partial result with succeeded/failed
90
+ */
91
+ upsertManyByExternalId(clients: UpsertTSCClientInput[], options?: {
92
+ atomic?: true;
93
+ }): Promise<AtomicBatchResult<UpsertResult<MexTSCClient>>>;
94
+ upsertManyByExternalId(clients: UpsertTSCClientInput[], options: {
95
+ atomic: false;
96
+ }): Promise<PartialBatchResult<UpsertResult<MexTSCClient>>>;
73
97
  linkClient(parentClientId: string, childClientId: string, relationshipType: ClientRelationshipType, metadata?: Record<string, unknown>): Promise<MexTSCClient>;
74
98
  unlinkClient(parentClientId: string, childClientId: string, relationshipType: ClientRelationshipType): Promise<MexTSCClient>;
75
99
  listLinkedClients(parentClientId: string, relationshipType?: ClientRelationshipType): Promise<LinkedClient[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"clients.d.ts","sourceRoot":"","sources":["../../../../../src/resources/mex/actividad-vulnerable/tsc/clients.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"clients.d.ts","sourceRoot":"","sources":["../../../../../src/resources/mex/actividad-vulnerable/tsc/clients.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@
6
6
  * Returns MexTSCClient models.
7
7
  */
8
8
  import { z } from "zod";
9
- import { CodigoActividad, createTSCClientInputSchema, updateTSCClientInputSchema, linkedClientSchema, transformSort, tscClientFieldMapping, } from "@artu-ai/shared";
9
+ import { CodigoActividad, createTSCClientInputSchema, updateTSCClientInputSchema, upsertTSCClientInputSchema, linkedClientSchema, transformSort, tscClientFieldMapping, } from "@artu-ai/shared";
10
10
  import { MexClientsResource } from "../../clients";
11
11
  import { MexTSCClient, } from "../../../../models";
12
12
  // ===========================
@@ -85,9 +85,14 @@ export class TSCClientsResource extends MexClientsResource {
85
85
  * Accepts flattened TSC filter (MX fields at root level) and automatically
86
86
  * transforms to nested format before calling the API.
87
87
  */
88
- iterate(filter) {
89
- const scopedFilter = this.applyScopeToFilter(filter);
90
- return this.createIterator({ filter: scopedFilter });
88
+ iterate(options) {
89
+ const scopedFilter = this.applyScopeToFilter(options?.filter);
90
+ // Note: sort is passed through - createIterator calls list() which handles transformation
91
+ return this.createIterator({
92
+ filter: scopedFilter,
93
+ sort: options?.sort,
94
+ pageSize: options?.pageSize,
95
+ });
91
96
  }
92
97
  async createMany(clients, options = {}) {
93
98
  const atomic = options.atomic ?? true;
@@ -141,6 +146,55 @@ export class TSCClientsResource extends MexClientsResource {
141
146
  }
142
147
  }
143
148
  // ─────────────────────────────────────────────────────────────────
149
+ // Upsert Operations
150
+ // ─────────────────────────────────────────────────────────────────
151
+ /**
152
+ * Creates or updates a TSC client by externalId.
153
+ *
154
+ * @param data - Client upsert data with TSC fields at root level (must include externalId)
155
+ * @returns The created or updated client with action indicator
156
+ */
157
+ async upsertByExternalId(data) {
158
+ const validated = this.validate(upsertTSCClientInputSchema, data);
159
+ const nestedData = this.transformToNested(validated);
160
+ const response = await this.execute(() => this.trpc.clients.upsertByExternalId.mutate(nestedData));
161
+ return {
162
+ data: this.instantiate(response.data),
163
+ action: response.action,
164
+ };
165
+ }
166
+ async upsertManyByExternalId(clients, options = {}) {
167
+ const atomic = options.atomic ?? true;
168
+ const validated = this.validate(z.array(upsertTSCClientInputSchema), clients);
169
+ const nestedItems = validated.map((c) => this.transformToNested(c));
170
+ const response = await this.execute(() => this.trpc.clients.upsertManyByExternalId.mutate({
171
+ items: nestedItems,
172
+ atomic,
173
+ }));
174
+ if (response.atomic) {
175
+ return {
176
+ atomic: true,
177
+ data: response.data.map((item) => ({
178
+ data: this.instantiate(item.data),
179
+ action: item.action,
180
+ })),
181
+ };
182
+ }
183
+ else {
184
+ return {
185
+ atomic: false,
186
+ succeeded: response.succeeded.map((item) => ({
187
+ index: item.index,
188
+ data: {
189
+ data: this.instantiate(item.data.data),
190
+ action: item.data.action,
191
+ },
192
+ })),
193
+ failed: response.failed,
194
+ };
195
+ }
196
+ }
197
+ // ─────────────────────────────────────────────────────────────────
144
198
  // Client-to-Client Relationship Management (scoped returns)
145
199
  // ─────────────────────────────────────────────────────────────────
146
200
  async linkClient(parentClientId, childClientId, relationshipType, metadata) {
@@ -5,7 +5,7 @@
5
5
  * - Accepts flattened CreateTSCReportInput (TSC fields at root level)
6
6
  * - Returns MexTSCReport models
7
7
  */
8
- import type { CreateReportInput, UpdateReportInput, CreateReportItemInput, UpdateReportItemInput, CreateTSCReportInput, UpdateTSCReportInput, CreateTSCReportItemInput, UpdateTSCReportItemInput, ListOptions, PaginatedResponse, AtomicBatchResult, PartialBatchResult, TscReportDefaultsInput, ValidationResult, GenerateResult, SubmissionResult, SubmitTSCSubmissionInput } from "@artu-ai/shared";
8
+ import type { CreateReportInput, UpdateReportInput, CreateReportItemInput, UpdateReportItemInput, CreateTSCReportInput, UpdateTSCReportInput, UpsertTSCReportInput, CreateTSCReportItemInput, UpdateTSCReportItemInput, ListOptions, PaginatedResponse, AtomicBatchResult, PartialBatchResult, TscReportDefaultsInput, ValidationResult, GenerateResult, SubmissionResult, SubmitTSCSubmissionInput, UpsertResult } from "@artu-ai/shared";
9
9
  import type { TSCReportFilter, TSCReportSort, TSCReportItemFilter, ReportSort, ReportItemFilter, ReportItemSort } from "@artu-ai/shared";
10
10
  import { MexReportsResource } from "../../reports";
11
11
  import { MexTSCReport, MexTSCReportItem, type ReportData, type ReportItemData } from "../../../../models";
@@ -46,7 +46,11 @@ export declare class TSCReportsResource extends MexReportsResource<TSCReportSort
46
46
  *
47
47
  * Accepts flattened TSC filter (future TSC-specific report fields at root level).
48
48
  */
49
- iterate(filter?: TSCReportFilter): AsyncGenerator<MexTSCReport, void, undefined>;
49
+ iterate(options?: {
50
+ filter?: TSCReportFilter;
51
+ sort?: TSCReportSort;
52
+ pageSize?: number;
53
+ }): AsyncGenerator<MexTSCReport, void, undefined>;
50
54
  createMany(reports: CreateTSCReportInput[], options?: {
51
55
  atomic?: true;
52
56
  }): Promise<AtomicBatchResult<MexTSCReport>>;
@@ -65,6 +69,26 @@ export declare class TSCReportsResource extends MexReportsResource<TSCReportSort
65
69
  }[], options: {
66
70
  atomic: false;
67
71
  }): Promise<PartialBatchResult<MexTSCReport>>;
72
+ /**
73
+ * Creates or updates a TSC report by externalId.
74
+ *
75
+ * @param data - Report upsert data with TSC fields at root level (must include externalId)
76
+ * @returns The created or updated report with action indicator
77
+ */
78
+ upsertByExternalId(data: UpsertTSCReportInput): Promise<UpsertResult<MexTSCReport>>;
79
+ /**
80
+ * Creates or updates multiple TSC reports by externalId.
81
+ *
82
+ * @param reports - Array of report upsert data (each must include externalId)
83
+ * @param options - Batch options (atomic: true by default)
84
+ * @returns Atomic result with data array, or partial result with succeeded/failed
85
+ */
86
+ upsertManyByExternalId(reports: UpsertTSCReportInput[], options?: {
87
+ atomic?: true;
88
+ }): Promise<AtomicBatchResult<UpsertResult<MexTSCReport>>>;
89
+ upsertManyByExternalId(reports: UpsertTSCReportInput[], options: {
90
+ atomic: false;
91
+ }): Promise<PartialBatchResult<UpsertResult<MexTSCReport>>>;
68
92
  addItem(reportId: string, data: CreateTSCReportItemInput): Promise<MexTSCReportItem>;
69
93
  getItem(reportId: string, itemId: string): Promise<MexTSCReportItem>;
70
94
  updateItem(reportId: string, itemId: string, data: UpdateTSCReportItemInput): Promise<MexTSCReportItem>;
@@ -1 +1 @@
1
- {"version":3,"file":"reports.d.ts","sourceRoot":"","sources":["../../../../../src/resources/mex/actividad-vulnerable/tsc/reports.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reports.d.ts","sourceRoot":"","sources":["../../../../../src/resources/mex/actividad-vulnerable/tsc/reports.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@
6
6
  * - Returns MexTSCReport models
7
7
  */
8
8
  import { z } from "zod";
9
- import { CodigoActividad, createTSCReportInputSchema, updateTSCReportInputSchema, createTSCReportItemInputSchema, updateTSCReportItemInputSchema, tscDefaultsInputSchema, submitTSCSubmissionInputSchema, transformSort, tscReportFieldMapping, } from "@artu-ai/shared";
9
+ import { CodigoActividad, createTSCReportInputSchema, updateTSCReportInputSchema, upsertTSCReportInputSchema, createTSCReportItemInputSchema, updateTSCReportItemInputSchema, tscDefaultsInputSchema, submitTSCSubmissionInputSchema, transformSort, tscReportFieldMapping, } from "@artu-ai/shared";
10
10
  import { MexReportsResource } from "../../reports";
11
11
  import { MexTSCReport, MexTSCReportItem, } from "../../../../models";
12
12
  // ===========================
@@ -86,9 +86,14 @@ export class TSCReportsResource extends MexReportsResource {
86
86
  *
87
87
  * Accepts flattened TSC filter (future TSC-specific report fields at root level).
88
88
  */
89
- iterate(filter) {
90
- const scopedFilter = this.applyScopeToFilter(filter);
91
- return this.createIterator({ filter: scopedFilter });
89
+ iterate(options) {
90
+ const scopedFilter = this.applyScopeToFilter(options?.filter);
91
+ // Note: sort is passed through - createIterator calls list() which handles transformation
92
+ return this.createIterator({
93
+ filter: scopedFilter,
94
+ sort: options?.sort,
95
+ pageSize: options?.pageSize,
96
+ });
92
97
  }
93
98
  async createMany(reports, options = {}) {
94
99
  const atomic = options.atomic ?? true;
@@ -142,6 +147,55 @@ export class TSCReportsResource extends MexReportsResource {
142
147
  }
143
148
  }
144
149
  // ─────────────────────────────────────────────────────────────────
150
+ // Upsert Operations
151
+ // ─────────────────────────────────────────────────────────────────
152
+ /**
153
+ * Creates or updates a TSC report by externalId.
154
+ *
155
+ * @param data - Report upsert data with TSC fields at root level (must include externalId)
156
+ * @returns The created or updated report with action indicator
157
+ */
158
+ async upsertByExternalId(data) {
159
+ const validated = this.validate(upsertTSCReportInputSchema, data);
160
+ const nestedData = this.transformToNested(validated);
161
+ const response = await this.execute(() => this.trpc.reports.upsertByExternalId.mutate(nestedData));
162
+ return {
163
+ data: this.instantiate(response.data),
164
+ action: response.action,
165
+ };
166
+ }
167
+ async upsertManyByExternalId(reports, options = {}) {
168
+ const atomic = options.atomic ?? true;
169
+ const validated = this.validate(z.array(upsertTSCReportInputSchema), reports);
170
+ const nestedItems = validated.map((r) => this.transformToNested(r));
171
+ const response = await this.execute(() => this.trpc.reports.upsertManyByExternalId.mutate({
172
+ items: nestedItems,
173
+ atomic,
174
+ }));
175
+ if (response.atomic) {
176
+ return {
177
+ atomic: true,
178
+ data: response.data.map((item) => ({
179
+ data: this.instantiate(item.data),
180
+ action: item.action,
181
+ })),
182
+ };
183
+ }
184
+ else {
185
+ return {
186
+ atomic: false,
187
+ succeeded: response.succeeded.map((item) => ({
188
+ index: item.index,
189
+ data: {
190
+ data: this.instantiate(item.data.data),
191
+ action: item.data.action,
192
+ },
193
+ })),
194
+ failed: response.failed,
195
+ };
196
+ }
197
+ }
198
+ // ─────────────────────────────────────────────────────────────────
145
199
  // Report Items
146
200
  // ─────────────────────────────────────────────────────────────────
147
201
  async addItem(reportId, data) {
@@ -5,7 +5,7 @@
5
5
  * - Accepts flattened CreateTSCTransactionInput (TSC fields at root level)
6
6
  * - Returns MexTSCTransaction models
7
7
  */
8
- import type { CreateTransactionInput, UpdateTransactionInput, ListOptions, PaginatedResponse, CreateTSCTransactionInput, UpdateTSCTransactionInput, AtomicBatchResult, PartialBatchResult, RelatedClient, TSCTransactionFilter, TSCTransactionSort } from "@artu-ai/shared";
8
+ import type { CreateTransactionInput, UpdateTransactionInput, ListOptions, PaginatedResponse, CreateTSCTransactionInput, UpdateTSCTransactionInput, UpsertTSCTransactionInput, AtomicBatchResult, PartialBatchResult, RelatedClient, TSCTransactionFilter, TSCTransactionSort, UpsertResult } from "@artu-ai/shared";
9
9
  import { ClientRole } from "@artu-ai/shared";
10
10
  import type { TransactionSort } from "@artu-ai/shared";
11
11
  import { MexTransactionsResource } from "../../transactions";
@@ -51,7 +51,11 @@ export declare class TSCTransactionsResource extends MexTransactionsResource<TSC
51
51
  *
52
52
  * Accepts flattened TSC filter (future TSC-specific transaction fields at root level).
53
53
  */
54
- iterate(filter?: TSCTransactionFilter): AsyncGenerator<MexTSCTransaction, void, undefined>;
54
+ iterate(options?: {
55
+ filter?: TSCTransactionFilter;
56
+ sort?: TSCTransactionSort;
57
+ pageSize?: number;
58
+ }): AsyncGenerator<MexTSCTransaction, void, undefined>;
55
59
  listByClient(clientId: string, options?: {
56
60
  cursor?: string;
57
61
  limit?: number;
@@ -77,6 +81,26 @@ export declare class TSCTransactionsResource extends MexTransactionsResource<TSC
77
81
  }[], options: {
78
82
  atomic: false;
79
83
  }): Promise<PartialBatchResult<MexTSCTransaction>>;
84
+ /**
85
+ * Creates or updates a TSC transaction by externalId.
86
+ *
87
+ * @param data - Transaction upsert data with TSC fields at root level (must include externalId)
88
+ * @returns The created or updated transaction with action indicator
89
+ */
90
+ upsertByExternalId(data: UpsertTSCTransactionInput): Promise<UpsertResult<MexTSCTransaction>>;
91
+ /**
92
+ * Creates or updates multiple TSC transactions by externalId.
93
+ *
94
+ * @param transactions - Array of transaction upsert data (each must include externalId)
95
+ * @param options - Batch options (atomic: true by default)
96
+ * @returns Atomic result with data array, or partial result with succeeded/failed
97
+ */
98
+ upsertManyByExternalId(transactions: UpsertTSCTransactionInput[], options?: {
99
+ atomic?: true;
100
+ }): Promise<AtomicBatchResult<UpsertResult<MexTSCTransaction>>>;
101
+ upsertManyByExternalId(transactions: UpsertTSCTransactionInput[], options: {
102
+ atomic: false;
103
+ }): Promise<PartialBatchResult<UpsertResult<MexTSCTransaction>>>;
80
104
  protected transformToNested(data: CreateTSCTransactionInput): CreateTransactionInput;
81
105
  protected transformUpdateToNested(data: UpdateTSCTransactionInput): UpdateTransactionInput;
82
106
  protected instantiate(data: TransactionData): MexTSCTransaction;
@@ -1 +1 @@
1
- {"version":3,"file":"transactions.d.ts","sourceRoot":"","sources":["../../../../../src/resources/mex/actividad-vulnerable/tsc/transactions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transactions.d.ts","sourceRoot":"","sources":["../../../../../src/resources/mex/actividad-vulnerable/tsc/transactions.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@
6
6
  * - Returns MexTSCTransaction models
7
7
  */
8
8
  import { z } from "zod";
9
- import { Jurisdiction, CodigoActividad, createTSCTransactionInputSchema, updateTSCTransactionInputSchema, transformSort, tscTransactionFieldMapping, } from "@artu-ai/shared";
9
+ import { Jurisdiction, CodigoActividad, createTSCTransactionInputSchema, updateTSCTransactionInputSchema, upsertTSCTransactionInputSchema, transformSort, tscTransactionFieldMapping, } from "@artu-ai/shared";
10
10
  import { MexTransactionsResource } from "../../transactions";
11
11
  import { MexTSCTransaction } from "../../../../models";
12
12
  // ===========================
@@ -87,9 +87,14 @@ export class TSCTransactionsResource extends MexTransactionsResource {
87
87
  *
88
88
  * Accepts flattened TSC filter (future TSC-specific transaction fields at root level).
89
89
  */
90
- iterate(filter) {
91
- const scopedFilter = this.applyScopeToFilter(filter);
92
- return this.createIterator({ filter: scopedFilter });
90
+ iterate(options) {
91
+ const scopedFilter = this.applyScopeToFilter(options?.filter);
92
+ // Note: sort is passed through - createIterator calls list() which handles transformation
93
+ return this.createIterator({
94
+ filter: scopedFilter,
95
+ sort: options?.sort,
96
+ pageSize: options?.pageSize,
97
+ });
93
98
  }
94
99
  // ─────────────────────────────────────────────────────────────────
95
100
  // Client Relationship Management (scoped returns)
@@ -178,6 +183,55 @@ export class TSCTransactionsResource extends MexTransactionsResource {
178
183
  }
179
184
  }
180
185
  // ─────────────────────────────────────────────────────────────────
186
+ // Upsert Operations
187
+ // ─────────────────────────────────────────────────────────────────
188
+ /**
189
+ * Creates or updates a TSC transaction by externalId.
190
+ *
191
+ * @param data - Transaction upsert data with TSC fields at root level (must include externalId)
192
+ * @returns The created or updated transaction with action indicator
193
+ */
194
+ async upsertByExternalId(data) {
195
+ const validated = this.validate(upsertTSCTransactionInputSchema, data);
196
+ const nestedData = this.transformToNested(validated);
197
+ const response = await this.execute(() => this.trpc.transactions.upsertByExternalId.mutate(nestedData));
198
+ return {
199
+ data: this.instantiate(response.data),
200
+ action: response.action,
201
+ };
202
+ }
203
+ async upsertManyByExternalId(transactions, options = {}) {
204
+ const atomic = options.atomic ?? true;
205
+ const validated = this.validate(z.array(upsertTSCTransactionInputSchema), transactions);
206
+ const nestedItems = validated.map((t) => this.transformToNested(t));
207
+ const response = await this.execute(() => this.trpc.transactions.upsertManyByExternalId.mutate({
208
+ items: nestedItems,
209
+ atomic,
210
+ }));
211
+ if (response.atomic) {
212
+ return {
213
+ atomic: true,
214
+ data: response.data.map((item) => ({
215
+ data: this.instantiate(item.data),
216
+ action: item.action,
217
+ })),
218
+ };
219
+ }
220
+ else {
221
+ return {
222
+ atomic: false,
223
+ succeeded: response.succeeded.map((item) => ({
224
+ index: item.index,
225
+ data: {
226
+ data: this.instantiate(item.data.data),
227
+ action: item.data.action,
228
+ },
229
+ })),
230
+ failed: response.failed,
231
+ };
232
+ }
233
+ }
234
+ // ─────────────────────────────────────────────────────────────────
181
235
  // Protected Helpers
182
236
  // ─────────────────────────────────────────────────────────────────
183
237
  transformToNested(data) {
@@ -7,7 +7,7 @@
7
7
  *
8
8
  * Note: Mexican address format can be used for addresses in any country.
9
9
  */
10
- import type { CreateAddressInput, UpdateAddressInput, AddressFilter, AddressSort, AddressType, ListOptions, PaginatedResponse, CreateMexAddressInput, UpdateMexAddressInput, AtomicBatchResult, PartialBatchResult, SyncItem, SyncResult, MexAddressFilter, MexAddressSort } from "@artu-ai/shared";
10
+ import type { CreateAddressInput, UpdateAddressInput, AddressFilter, AddressSort, AddressType, ListOptions, PaginatedResponse, CreateMexAddressInput, UpdateMexAddressInput, UpsertMexAddressInput, AtomicBatchResult, PartialBatchResult, SyncItem, SyncResult, MexAddressFilter, MexAddressSort, UpsertResult } from "@artu-ai/shared";
11
11
  import { AddressesResource } from "../addresses";
12
12
  import { MexAddress, type AddressData } from "../../models";
13
13
  /**
@@ -81,7 +81,11 @@ export declare class MexAddressesResource<TSort = MexAddressSort> extends Addres
81
81
  *
82
82
  * Accepts flattened MX filter (MX-specific fields at root level).
83
83
  */
84
- iterate(filter?: MexAddressFilter): AsyncGenerator<MexAddress, void, undefined>;
84
+ iterate(options?: {
85
+ filter?: MexAddressFilter;
86
+ sort?: TSort;
87
+ pageSize?: number;
88
+ }): AsyncGenerator<MexAddress, void, undefined>;
85
89
  createMany(addresses: CreateMexAddressInput[], options?: {
86
90
  atomic?: true;
87
91
  }): Promise<AtomicBatchResult<MexAddress>>;
@@ -100,6 +104,26 @@ export declare class MexAddressesResource<TSort = MexAddressSort> extends Addres
100
104
  }[], options: {
101
105
  atomic: false;
102
106
  }): Promise<PartialBatchResult<MexAddress>>;
107
+ /**
108
+ * Creates or updates a Mexico address by externalId.
109
+ *
110
+ * @param data - Address upsert data with MX fields at root level (must include externalId)
111
+ * @returns The created or updated address with action indicator
112
+ */
113
+ upsertByExternalId(data: UpsertMexAddressInput): Promise<UpsertResult<MexAddress>>;
114
+ /**
115
+ * Creates or updates multiple Mexico addresses by externalId.
116
+ *
117
+ * @param addresses - Array of address upsert data (each must include externalId)
118
+ * @param options - Batch options (atomic: true by default)
119
+ * @returns Atomic result with data array, or partial result with succeeded/failed
120
+ */
121
+ upsertManyByExternalId(addresses: UpsertMexAddressInput[], options?: {
122
+ atomic?: true;
123
+ }): Promise<AtomicBatchResult<UpsertResult<MexAddress>>>;
124
+ upsertManyByExternalId(addresses: UpsertMexAddressInput[], options: {
125
+ atomic: false;
126
+ }): Promise<PartialBatchResult<UpsertResult<MexAddress>>>;
103
127
  /**
104
128
  * Syncs addresses for a client with Mexico-format flattened input.
105
129
  */
@@ -1 +1 @@
1
- {"version":3,"file":"addresses.d.ts","sourceRoot":"","sources":["../../../src/resources/mex/addresses.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"addresses.d.ts","sourceRoot":"","sources":["../../../src/resources/mex/addresses.ts"],"names":[],"mappings":"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"}