@vqnguyen1/piece-fis-horizon 0.0.2 → 0.0.4

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 (31) hide show
  1. package/package.json +2 -2
  2. package/project.json +22 -0
  3. package/src/index.ts +534 -0
  4. package/src/lib/actions/account-aggregation.ts +360 -0
  5. package/src/lib/actions/account-restrictions.ts +2427 -0
  6. package/src/lib/actions/bank-controls.ts +2328 -0
  7. package/src/lib/actions/card.ts +488 -0
  8. package/src/lib/actions/collateral.ts +696 -0
  9. package/src/lib/actions/customer.ts +1691 -0
  10. package/src/lib/actions/demand-deposit-savings.ts +731 -0
  11. package/src/lib/actions/get-authorization-token.ts +73 -0
  12. package/src/lib/actions/loans.ts +902 -0
  13. package/src/lib/actions/mortgage-loan.ts +1426 -0
  14. package/src/lib/actions/ready-reserve.ts +818 -0
  15. package/src/lib/actions/safe-deposit.ts +1506 -0
  16. package/src/lib/actions/search-customer-relationship-summary.ts +140 -0
  17. package/src/lib/actions/time-deposit.ts +2922 -0
  18. package/src/lib/actions/transactions.ts +1310 -0
  19. package/src/lib/actions/transfers.ts +1581 -0
  20. package/src/lib/actions/user-security.ts +1032 -0
  21. package/tsconfig.json +19 -0
  22. package/tsconfig.lib.json +10 -0
  23. package/src/index.d.ts +0 -12
  24. package/src/index.js +0 -62
  25. package/src/index.js.map +0 -1
  26. package/src/lib/actions/get-authorization-token.d.ts +0 -10
  27. package/src/lib/actions/get-authorization-token.js +0 -68
  28. package/src/lib/actions/get-authorization-token.js.map +0 -1
  29. package/src/lib/actions/search-customer-relationship-summary.d.ts +0 -15
  30. package/src/lib/actions/search-customer-relationship-summary.js +0 -122
  31. package/src/lib/actions/search-customer-relationship-summary.js.map +0 -1
@@ -0,0 +1,2328 @@
1
+ import {
2
+ createAction,
3
+ Property,
4
+ } from '@activepieces/pieces-framework';
5
+ import { httpClient, HttpMethod } from '@activepieces/pieces-common';
6
+ import { fisHorizonAuth } from '../..';
7
+
8
+ // ============================================================================
9
+ // HELPER FUNCTIONS
10
+ // ============================================================================
11
+
12
+ function buildHeaders(auth: any, xAuthorization: string, sourceId?: string): Record<string, string> {
13
+ const uuid = crypto.randomUUID();
14
+ const headers: Record<string, string> = {
15
+ 'accept': 'application/json',
16
+ 'Content-Type': 'application/json',
17
+ 'organization-id': auth.organizationId,
18
+ 'uuid': uuid,
19
+ 'horizon-authorization': xAuthorization,
20
+ };
21
+ if (sourceId) {
22
+ headers['source-id'] = sourceId;
23
+ }
24
+ return headers;
25
+ }
26
+
27
+ // ============================================================================
28
+ // CUSTOMER ID ENDPOINTS
29
+ // ============================================================================
30
+
31
+ export const bank_controls_customer_id_personal_identifiers_list = createAction({
32
+ name: 'bank_controls_customer_id_personal_identifiers_list',
33
+ auth: fisHorizonAuth,
34
+ displayName: 'Bank Controls - Customer ID - Personal Identifiers List',
35
+ description: 'Retrieve a list of valid Identification Types defined for the customer Personal Identifiers.',
36
+ props: {
37
+ xAuthorization: Property.ShortText({
38
+ displayName: 'Authorization Token',
39
+ description: 'JWT token for authorization (Bearer token from Get Token action)',
40
+ required: true,
41
+ }),
42
+ sourceId: Property.ShortText({
43
+ displayName: 'Source ID',
44
+ description: 'Optional: 6 character ID provided by FIS',
45
+ required: false,
46
+ }),
47
+ returnNumber: Property.Number({
48
+ displayName: 'Return Number',
49
+ description: 'Number from 1-99 that indicates how many records to return at one time',
50
+ required: true,
51
+ defaultValue: 99,
52
+ }),
53
+ firstNext: Property.StaticDropdown({
54
+ displayName: 'First/Next',
55
+ description: 'First or Next request flag',
56
+ required: true,
57
+ defaultValue: 'F',
58
+ options: {
59
+ options: [
60
+ { label: 'First Request', value: 'F' },
61
+ { label: 'Next Request', value: 'N' },
62
+ ],
63
+ },
64
+ }),
65
+ },
66
+ async run(context) {
67
+ const auth = context.auth as any;
68
+ const { xAuthorization, sourceId, returnNumber, firstNext } = context.propsValue;
69
+
70
+ const response = await httpClient.sendRequest({
71
+ method: HttpMethod.GET,
72
+ url: `${auth.baseUrl}/bank-controls/v1/personal-identifiers-list`,
73
+ headers: buildHeaders(auth, xAuthorization, sourceId),
74
+ queryParams: {
75
+ returnNumber: String(returnNumber),
76
+ firstNext: firstNext,
77
+ },
78
+ });
79
+
80
+ return response.body;
81
+ },
82
+ });
83
+
84
+ // ============================================================================
85
+ // DEMAND DEPOSIT DOWNLOADS
86
+ // ============================================================================
87
+
88
+ export const bank_controls_demand_deposits_fee_table = createAction({
89
+ name: 'bank_controls_demand_deposits_fee_table',
90
+ auth: fisHorizonAuth,
91
+ displayName: 'Bank Controls - Demand Deposits - Fee Table',
92
+ description: 'Retrieve Demand Deposit cycle based recurring fees.',
93
+ props: {
94
+ xAuthorization: Property.ShortText({
95
+ displayName: 'Authorization Token',
96
+ description: 'JWT token for authorization',
97
+ required: true,
98
+ }),
99
+ sourceId: Property.ShortText({
100
+ displayName: 'Source ID',
101
+ description: 'Optional: 6 character ID provided by FIS',
102
+ required: false,
103
+ }),
104
+ miscellaneousFeeTable: Property.ShortText({
105
+ displayName: 'Miscellaneous Fee Table',
106
+ description: 'Either the miscellaneousFeeTable or the ProductType is required',
107
+ required: false,
108
+ }),
109
+ productType: Property.ShortText({
110
+ displayName: 'Product Type',
111
+ description: 'Either the miscellaneousFeeTable or the ProductType is required',
112
+ required: false,
113
+ }),
114
+ },
115
+ async run(context) {
116
+ const auth = context.auth as any;
117
+ const { xAuthorization, sourceId, miscellaneousFeeTable, productType } = context.propsValue;
118
+
119
+ const queryParams: Record<string, string> = {};
120
+ if (miscellaneousFeeTable) queryParams['miscellaneousFeeTable'] = miscellaneousFeeTable;
121
+ if (productType) queryParams['productType'] = productType;
122
+
123
+ const response = await httpClient.sendRequest({
124
+ method: HttpMethod.GET,
125
+ url: `${auth.baseUrl}/bank-controls/v1/demand-deposits/fee-table`,
126
+ headers: buildHeaders(auth, xAuthorization, sourceId),
127
+ queryParams,
128
+ });
129
+
130
+ return response.body;
131
+ },
132
+ });
133
+
134
+ export const bank_controls_demand_deposits_promotional_rates_detail = createAction({
135
+ name: 'bank_controls_demand_deposits_promotional_rates_detail',
136
+ auth: fisHorizonAuth,
137
+ displayName: 'Bank Controls - Demand Deposits - Promotional Rates Detail',
138
+ description: 'Retrieve the details for a demand deposits promotional rate.',
139
+ props: {
140
+ xAuthorization: Property.ShortText({
141
+ displayName: 'Authorization Token',
142
+ description: 'JWT token for authorization',
143
+ required: true,
144
+ }),
145
+ sourceId: Property.ShortText({
146
+ displayName: 'Source ID',
147
+ description: 'Optional: 6 character ID provided by FIS',
148
+ required: false,
149
+ }),
150
+ branchNumber: Property.Number({
151
+ displayName: 'Branch Number',
152
+ description: 'Branch Number (up to 4 numeric digits)',
153
+ required: true,
154
+ }),
155
+ promotionalCode: Property.ShortText({
156
+ displayName: 'Promotional Code',
157
+ description: 'Promotional code (up to 5 characters)',
158
+ required: true,
159
+ }),
160
+ },
161
+ async run(context) {
162
+ const auth = context.auth as any;
163
+ const { xAuthorization, sourceId, branchNumber, promotionalCode } = context.propsValue;
164
+
165
+ const response = await httpClient.sendRequest({
166
+ method: HttpMethod.GET,
167
+ url: `${auth.baseUrl}/bank-controls/v1/demand-deposits/promotional-rates/${branchNumber}/${promotionalCode}`,
168
+ headers: buildHeaders(auth, xAuthorization, sourceId),
169
+ });
170
+
171
+ return response.body;
172
+ },
173
+ });
174
+
175
+ export const bank_controls_demand_deposits_promotional_codes_list = createAction({
176
+ name: 'bank_controls_demand_deposits_promotional_codes_list',
177
+ auth: fisHorizonAuth,
178
+ displayName: 'Bank Controls - Demand Deposits - Promotional Codes List',
179
+ description: 'Retrieve a list of promotional rates for a demand deposits product type.',
180
+ props: {
181
+ xAuthorization: Property.ShortText({
182
+ displayName: 'Authorization Token',
183
+ description: 'JWT token for authorization',
184
+ required: true,
185
+ }),
186
+ sourceId: Property.ShortText({
187
+ displayName: 'Source ID',
188
+ description: 'Optional: 6 character ID provided by FIS',
189
+ required: false,
190
+ }),
191
+ branchNumber: Property.Number({
192
+ displayName: 'Branch Number',
193
+ description: 'Branch Number (up to 4 numeric digits)',
194
+ required: true,
195
+ }),
196
+ applicationCode: Property.StaticDropdown({
197
+ displayName: 'Application Code',
198
+ description: 'Application code',
199
+ required: true,
200
+ options: {
201
+ options: [
202
+ { label: 'Demand Deposit', value: 'DD' },
203
+ { label: 'Certificate of Deposit', value: 'CD' },
204
+ { label: 'Collections', value: 'CO' },
205
+ { label: 'Collateral Tracking', value: 'CT' },
206
+ { label: 'Individual Retirement', value: 'IR' },
207
+ { label: 'Loan System', value: 'LN' },
208
+ { label: 'Mortgage Loans', value: 'ML' },
209
+ { label: 'Relationship Management', value: 'RM' },
210
+ { label: 'Savings', value: 'SV' },
211
+ ],
212
+ },
213
+ }),
214
+ productType: Property.ShortText({
215
+ displayName: 'Product Type',
216
+ description: 'Product type (up to 3 characters)',
217
+ required: true,
218
+ }),
219
+ },
220
+ async run(context) {
221
+ const auth = context.auth as any;
222
+ const { xAuthorization, sourceId, branchNumber, applicationCode, productType } = context.propsValue;
223
+
224
+ const response = await httpClient.sendRequest({
225
+ method: HttpMethod.GET,
226
+ url: `${auth.baseUrl}/bank-controls/v1/demand-deposits/promotional-codes/${branchNumber}/${applicationCode}/${productType}`,
227
+ headers: buildHeaders(auth, xAuthorization, sourceId),
228
+ });
229
+
230
+ return response.body;
231
+ },
232
+ });
233
+
234
+ export const bank_controls_demand_deposits_product_types_detail = createAction({
235
+ name: 'bank_controls_demand_deposits_product_types_detail',
236
+ auth: fisHorizonAuth,
237
+ displayName: 'Bank Controls - Demand Deposits - Product Types Detail',
238
+ description: 'Retrieve details of demand deposit product types.',
239
+ props: {
240
+ xAuthorization: Property.ShortText({
241
+ displayName: 'Authorization Token',
242
+ description: 'JWT token for authorization',
243
+ required: true,
244
+ }),
245
+ sourceId: Property.ShortText({
246
+ displayName: 'Source ID',
247
+ description: 'Optional: 6 character ID provided by FIS',
248
+ required: false,
249
+ }),
250
+ productType: Property.ShortText({
251
+ displayName: 'Product Type',
252
+ description: 'Product type (up to 3 characters)',
253
+ required: true,
254
+ }),
255
+ },
256
+ async run(context) {
257
+ const auth = context.auth as any;
258
+ const { xAuthorization, sourceId, productType } = context.propsValue;
259
+
260
+ const response = await httpClient.sendRequest({
261
+ method: HttpMethod.GET,
262
+ url: `${auth.baseUrl}/bank-controls/v1/demand-deposits/product-types/${productType}`,
263
+ headers: buildHeaders(auth, xAuthorization, sourceId),
264
+ });
265
+
266
+ return response.body;
267
+ },
268
+ });
269
+
270
+ export const bank_controls_demand_deposits_product_types_list = createAction({
271
+ name: 'bank_controls_demand_deposits_product_types_list',
272
+ auth: fisHorizonAuth,
273
+ displayName: 'Bank Controls - Demand Deposits - Product Types List',
274
+ description: 'Retrieve a list of demand deposit product types.',
275
+ props: {
276
+ xAuthorization: Property.ShortText({
277
+ displayName: 'Authorization Token',
278
+ description: 'JWT token for authorization',
279
+ required: true,
280
+ }),
281
+ sourceId: Property.ShortText({
282
+ displayName: 'Source ID',
283
+ description: 'Optional: 6 character ID provided by FIS',
284
+ required: false,
285
+ }),
286
+ },
287
+ async run(context) {
288
+ const auth = context.auth as any;
289
+ const { xAuthorization, sourceId } = context.propsValue;
290
+
291
+ const response = await httpClient.sendRequest({
292
+ method: HttpMethod.GET,
293
+ url: `${auth.baseUrl}/bank-controls/v1/demand-deposits/product-types/list`,
294
+ headers: buildHeaders(auth, xAuthorization, sourceId),
295
+ });
296
+
297
+ return response.body;
298
+ },
299
+ });
300
+
301
+ export const bank_controls_demand_deposits_interest_types_detail = createAction({
302
+ name: 'bank_controls_demand_deposits_interest_types_detail',
303
+ auth: fisHorizonAuth,
304
+ displayName: 'Bank Controls - Demand Deposits - Interest Types Detail',
305
+ description: 'Retrieve details of a demand deposit interest types.',
306
+ props: {
307
+ xAuthorization: Property.ShortText({
308
+ displayName: 'Authorization Token',
309
+ description: 'JWT token for authorization',
310
+ required: true,
311
+ }),
312
+ sourceId: Property.ShortText({
313
+ displayName: 'Source ID',
314
+ description: 'Optional: 6 character ID provided by FIS',
315
+ required: false,
316
+ }),
317
+ interestType: Property.Number({
318
+ displayName: 'Interest Type',
319
+ description: 'Interest Rate Type (up to 2 numeric digits)',
320
+ required: true,
321
+ }),
322
+ },
323
+ async run(context) {
324
+ const auth = context.auth as any;
325
+ const { xAuthorization, sourceId, interestType } = context.propsValue;
326
+
327
+ const response = await httpClient.sendRequest({
328
+ method: HttpMethod.GET,
329
+ url: `${auth.baseUrl}/bank-controls/v1/demand-deposits/interest-types/${interestType}`,
330
+ headers: buildHeaders(auth, xAuthorization, sourceId),
331
+ });
332
+
333
+ return response.body;
334
+ },
335
+ });
336
+
337
+ export const bank_controls_demand_deposits_interest_types_list = createAction({
338
+ name: 'bank_controls_demand_deposits_interest_types_list',
339
+ auth: fisHorizonAuth,
340
+ displayName: 'Bank Controls - Demand Deposits - Interest Types List',
341
+ description: 'Retrieve a list of demand deposit interest types.',
342
+ props: {
343
+ xAuthorization: Property.ShortText({
344
+ displayName: 'Authorization Token',
345
+ description: 'JWT token for authorization',
346
+ required: true,
347
+ }),
348
+ sourceId: Property.ShortText({
349
+ displayName: 'Source ID',
350
+ description: 'Optional: 6 character ID provided by FIS',
351
+ required: false,
352
+ }),
353
+ },
354
+ async run(context) {
355
+ const auth = context.auth as any;
356
+ const { xAuthorization, sourceId } = context.propsValue;
357
+
358
+ const response = await httpClient.sendRequest({
359
+ method: HttpMethod.GET,
360
+ url: `${auth.baseUrl}/bank-controls/v1/demand-deposits/interest-types/list`,
361
+ headers: buildHeaders(auth, xAuthorization, sourceId),
362
+ });
363
+
364
+ return response.body;
365
+ },
366
+ });
367
+
368
+ export const bank_controls_demand_deposits_service_charge_types_detail = createAction({
369
+ name: 'bank_controls_demand_deposits_service_charge_types_detail',
370
+ auth: fisHorizonAuth,
371
+ displayName: 'Bank Controls - Demand Deposits - Service Charge Types Detail',
372
+ description: 'Retrieve details of demand deposit service charge types.',
373
+ props: {
374
+ xAuthorization: Property.ShortText({
375
+ displayName: 'Authorization Token',
376
+ description: 'JWT token for authorization',
377
+ required: true,
378
+ }),
379
+ sourceId: Property.ShortText({
380
+ displayName: 'Source ID',
381
+ description: 'Optional: 6 character ID provided by FIS',
382
+ required: false,
383
+ }),
384
+ chargeType: Property.ShortText({
385
+ displayName: 'Charge Type',
386
+ description: 'Service Charge Type',
387
+ required: true,
388
+ }),
389
+ },
390
+ async run(context) {
391
+ const auth = context.auth as any;
392
+ const { xAuthorization, sourceId, chargeType } = context.propsValue;
393
+
394
+ const response = await httpClient.sendRequest({
395
+ method: HttpMethod.GET,
396
+ url: `${auth.baseUrl}/bank-controls/v1/demand-deposits/service-charge-types/${chargeType}`,
397
+ headers: buildHeaders(auth, xAuthorization, sourceId),
398
+ });
399
+
400
+ return response.body;
401
+ },
402
+ });
403
+
404
+ export const bank_controls_demand_deposits_service_charge_types_list = createAction({
405
+ name: 'bank_controls_demand_deposits_service_charge_types_list',
406
+ auth: fisHorizonAuth,
407
+ displayName: 'Bank Controls - Demand Deposits - Service Charge Types List',
408
+ description: 'Retrieve a list of demand deposit charge types.',
409
+ props: {
410
+ xAuthorization: Property.ShortText({
411
+ displayName: 'Authorization Token',
412
+ description: 'JWT token for authorization',
413
+ required: true,
414
+ }),
415
+ sourceId: Property.ShortText({
416
+ displayName: 'Source ID',
417
+ description: 'Optional: 6 character ID provided by FIS',
418
+ required: false,
419
+ }),
420
+ },
421
+ async run(context) {
422
+ const auth = context.auth as any;
423
+ const { xAuthorization, sourceId } = context.propsValue;
424
+
425
+ const response = await httpClient.sendRequest({
426
+ method: HttpMethod.GET,
427
+ url: `${auth.baseUrl}/bank-controls/v1/demand-deposits/service-charge-types/list`,
428
+ headers: buildHeaders(auth, xAuthorization, sourceId),
429
+ });
430
+
431
+ return response.body;
432
+ },
433
+ });
434
+
435
+ // ============================================================================
436
+ // SAVINGS DOWNLOADS
437
+ // ============================================================================
438
+
439
+ export const bank_controls_savings_fee_table = createAction({
440
+ name: 'bank_controls_savings_fee_table',
441
+ auth: fisHorizonAuth,
442
+ displayName: 'Bank Controls - Savings - Fee Table',
443
+ description: 'Retrieve savings cycle based recurring fees.',
444
+ props: {
445
+ xAuthorization: Property.ShortText({
446
+ displayName: 'Authorization Token',
447
+ description: 'JWT token for authorization',
448
+ required: true,
449
+ }),
450
+ sourceId: Property.ShortText({
451
+ displayName: 'Source ID',
452
+ description: 'Optional: 6 character ID provided by FIS',
453
+ required: false,
454
+ }),
455
+ miscellaneousFeeTable: Property.ShortText({
456
+ displayName: 'Miscellaneous Fee Table',
457
+ description: 'Either the miscellaneousFeeTable or the ProductType is required',
458
+ required: false,
459
+ }),
460
+ productType: Property.ShortText({
461
+ displayName: 'Product Type',
462
+ description: 'Either the miscellaneousFeeTable or the ProductType is required',
463
+ required: false,
464
+ }),
465
+ },
466
+ async run(context) {
467
+ const auth = context.auth as any;
468
+ const { xAuthorization, sourceId, miscellaneousFeeTable, productType } = context.propsValue;
469
+
470
+ const queryParams: Record<string, string> = {};
471
+ if (miscellaneousFeeTable) queryParams['miscellaneousFeeTable'] = miscellaneousFeeTable;
472
+ if (productType) queryParams['productType'] = productType;
473
+
474
+ const response = await httpClient.sendRequest({
475
+ method: HttpMethod.GET,
476
+ url: `${auth.baseUrl}/bank-controls/v1/savings/fee-table`,
477
+ headers: buildHeaders(auth, xAuthorization, sourceId),
478
+ queryParams,
479
+ });
480
+
481
+ return response.body;
482
+ },
483
+ });
484
+
485
+ export const bank_controls_savings_promotional_rates_detail = createAction({
486
+ name: 'bank_controls_savings_promotional_rates_detail',
487
+ auth: fisHorizonAuth,
488
+ displayName: 'Bank Controls - Savings - Promotional Rates Detail',
489
+ description: 'Retrieve the details for a savings promotional rate.',
490
+ props: {
491
+ xAuthorization: Property.ShortText({
492
+ displayName: 'Authorization Token',
493
+ description: 'JWT token for authorization',
494
+ required: true,
495
+ }),
496
+ sourceId: Property.ShortText({
497
+ displayName: 'Source ID',
498
+ description: 'Optional: 6 character ID provided by FIS',
499
+ required: false,
500
+ }),
501
+ branchNumber: Property.Number({
502
+ displayName: 'Branch Number',
503
+ description: 'Branch Number (up to 4 numeric digits)',
504
+ required: true,
505
+ }),
506
+ promotionalCode: Property.ShortText({
507
+ displayName: 'Promotional Code',
508
+ description: 'Promotional code (up to 5 characters)',
509
+ required: true,
510
+ }),
511
+ },
512
+ async run(context) {
513
+ const auth = context.auth as any;
514
+ const { xAuthorization, sourceId, branchNumber, promotionalCode } = context.propsValue;
515
+
516
+ const response = await httpClient.sendRequest({
517
+ method: HttpMethod.GET,
518
+ url: `${auth.baseUrl}/bank-controls/v1/savings/promotional-rates/${branchNumber}/${promotionalCode}`,
519
+ headers: buildHeaders(auth, xAuthorization, sourceId),
520
+ });
521
+
522
+ return response.body;
523
+ },
524
+ });
525
+
526
+ export const bank_controls_savings_promotional_codes_list = createAction({
527
+ name: 'bank_controls_savings_promotional_codes_list',
528
+ auth: fisHorizonAuth,
529
+ displayName: 'Bank Controls - Savings - Promotional Codes List',
530
+ description: 'Retrieve a list of promotional rates for a savings product type.',
531
+ props: {
532
+ xAuthorization: Property.ShortText({
533
+ displayName: 'Authorization Token',
534
+ description: 'JWT token for authorization',
535
+ required: true,
536
+ }),
537
+ sourceId: Property.ShortText({
538
+ displayName: 'Source ID',
539
+ description: 'Optional: 6 character ID provided by FIS',
540
+ required: false,
541
+ }),
542
+ branchNumber: Property.Number({
543
+ displayName: 'Branch Number',
544
+ description: 'Branch Number (up to 4 numeric digits)',
545
+ required: true,
546
+ }),
547
+ applicationCode: Property.StaticDropdown({
548
+ displayName: 'Application Code',
549
+ description: 'Application code',
550
+ required: true,
551
+ options: {
552
+ options: [
553
+ { label: 'Demand Deposit', value: 'DD' },
554
+ { label: 'Certificate of Deposit', value: 'CD' },
555
+ { label: 'Collections', value: 'CO' },
556
+ { label: 'Collateral Tracking', value: 'CT' },
557
+ { label: 'Individual Retirement', value: 'IR' },
558
+ { label: 'Loan System', value: 'LN' },
559
+ { label: 'Mortgage Loans', value: 'ML' },
560
+ { label: 'Relationship Management', value: 'RM' },
561
+ { label: 'Savings', value: 'SV' },
562
+ ],
563
+ },
564
+ }),
565
+ productType: Property.ShortText({
566
+ displayName: 'Product Type',
567
+ description: 'Product type (up to 3 characters)',
568
+ required: true,
569
+ }),
570
+ },
571
+ async run(context) {
572
+ const auth = context.auth as any;
573
+ const { xAuthorization, sourceId, branchNumber, applicationCode, productType } = context.propsValue;
574
+
575
+ const response = await httpClient.sendRequest({
576
+ method: HttpMethod.GET,
577
+ url: `${auth.baseUrl}/bank-controls/v1/savings/promotional-codes/${branchNumber}/${applicationCode}/${productType}`,
578
+ headers: buildHeaders(auth, xAuthorization, sourceId),
579
+ });
580
+
581
+ return response.body;
582
+ },
583
+ });
584
+
585
+ export const bank_controls_savings_product_types_detail = createAction({
586
+ name: 'bank_controls_savings_product_types_detail',
587
+ auth: fisHorizonAuth,
588
+ displayName: 'Bank Controls - Savings - Product Types Detail',
589
+ description: 'Retrieve details of savings product types.',
590
+ props: {
591
+ xAuthorization: Property.ShortText({
592
+ displayName: 'Authorization Token',
593
+ description: 'JWT token for authorization',
594
+ required: true,
595
+ }),
596
+ sourceId: Property.ShortText({
597
+ displayName: 'Source ID',
598
+ description: 'Optional: 6 character ID provided by FIS',
599
+ required: false,
600
+ }),
601
+ productType: Property.ShortText({
602
+ displayName: 'Product Type',
603
+ description: 'Valid Savings Account Type (up to 3 characters)',
604
+ required: true,
605
+ }),
606
+ },
607
+ async run(context) {
608
+ const auth = context.auth as any;
609
+ const { xAuthorization, sourceId, productType } = context.propsValue;
610
+
611
+ const response = await httpClient.sendRequest({
612
+ method: HttpMethod.GET,
613
+ url: `${auth.baseUrl}/bank-controls/v1/savings/product-types/${productType}`,
614
+ headers: buildHeaders(auth, xAuthorization, sourceId),
615
+ });
616
+
617
+ return response.body;
618
+ },
619
+ });
620
+
621
+ export const bank_controls_savings_product_types_list = createAction({
622
+ name: 'bank_controls_savings_product_types_list',
623
+ auth: fisHorizonAuth,
624
+ displayName: 'Bank Controls - Savings - Product Types List',
625
+ description: 'Retrieve a list of savings product types.',
626
+ props: {
627
+ xAuthorization: Property.ShortText({
628
+ displayName: 'Authorization Token',
629
+ description: 'JWT token for authorization',
630
+ required: true,
631
+ }),
632
+ sourceId: Property.ShortText({
633
+ displayName: 'Source ID',
634
+ description: 'Optional: 6 character ID provided by FIS',
635
+ required: false,
636
+ }),
637
+ },
638
+ async run(context) {
639
+ const auth = context.auth as any;
640
+ const { xAuthorization, sourceId } = context.propsValue;
641
+
642
+ const response = await httpClient.sendRequest({
643
+ method: HttpMethod.GET,
644
+ url: `${auth.baseUrl}/bank-controls/v1/savings/product-types/list`,
645
+ headers: buildHeaders(auth, xAuthorization, sourceId),
646
+ });
647
+
648
+ return response.body;
649
+ },
650
+ });
651
+
652
+ export const bank_controls_savings_interest_types_detail = createAction({
653
+ name: 'bank_controls_savings_interest_types_detail',
654
+ auth: fisHorizonAuth,
655
+ displayName: 'Bank Controls - Savings - Interest Types Detail',
656
+ description: 'Retrieve details of savings interest types.',
657
+ props: {
658
+ xAuthorization: Property.ShortText({
659
+ displayName: 'Authorization Token',
660
+ description: 'JWT token for authorization',
661
+ required: true,
662
+ }),
663
+ sourceId: Property.ShortText({
664
+ displayName: 'Source ID',
665
+ description: 'Optional: 6 character ID provided by FIS',
666
+ required: false,
667
+ }),
668
+ interestType: Property.Number({
669
+ displayName: 'Interest Type',
670
+ description: 'Valid Interest Type (up to 2 numeric digits)',
671
+ required: true,
672
+ }),
673
+ },
674
+ async run(context) {
675
+ const auth = context.auth as any;
676
+ const { xAuthorization, sourceId, interestType } = context.propsValue;
677
+
678
+ const response = await httpClient.sendRequest({
679
+ method: HttpMethod.GET,
680
+ url: `${auth.baseUrl}/bank-controls/v1/savings/interest-types/${interestType}`,
681
+ headers: buildHeaders(auth, xAuthorization, sourceId),
682
+ });
683
+
684
+ return response.body;
685
+ },
686
+ });
687
+
688
+ export const bank_controls_savings_interest_types_list = createAction({
689
+ name: 'bank_controls_savings_interest_types_list',
690
+ auth: fisHorizonAuth,
691
+ displayName: 'Bank Controls - Savings - Interest Types List',
692
+ description: 'Retrieve a list of savings interest types.',
693
+ props: {
694
+ xAuthorization: Property.ShortText({
695
+ displayName: 'Authorization Token',
696
+ description: 'JWT token for authorization',
697
+ required: true,
698
+ }),
699
+ sourceId: Property.ShortText({
700
+ displayName: 'Source ID',
701
+ description: 'Optional: 6 character ID provided by FIS',
702
+ required: false,
703
+ }),
704
+ },
705
+ async run(context) {
706
+ const auth = context.auth as any;
707
+ const { xAuthorization, sourceId } = context.propsValue;
708
+
709
+ const response = await httpClient.sendRequest({
710
+ method: HttpMethod.GET,
711
+ url: `${auth.baseUrl}/bank-controls/v1/savings/interest-types/list`,
712
+ headers: buildHeaders(auth, xAuthorization, sourceId),
713
+ });
714
+
715
+ return response.body;
716
+ },
717
+ });
718
+
719
+ export const bank_controls_savings_service_charge_types_detail = createAction({
720
+ name: 'bank_controls_savings_service_charge_types_detail',
721
+ auth: fisHorizonAuth,
722
+ displayName: 'Bank Controls - Savings - Service Charge Types Detail',
723
+ description: 'Retrieve details of savings service charge types.',
724
+ props: {
725
+ xAuthorization: Property.ShortText({
726
+ displayName: 'Authorization Token',
727
+ description: 'JWT token for authorization',
728
+ required: true,
729
+ }),
730
+ sourceId: Property.ShortText({
731
+ displayName: 'Source ID',
732
+ description: 'Optional: 6 character ID provided by FIS',
733
+ required: false,
734
+ }),
735
+ chargeType: Property.ShortText({
736
+ displayName: 'Charge Type',
737
+ description: 'Valid Savings Service Charge Type',
738
+ required: true,
739
+ }),
740
+ },
741
+ async run(context) {
742
+ const auth = context.auth as any;
743
+ const { xAuthorization, sourceId, chargeType } = context.propsValue;
744
+
745
+ const response = await httpClient.sendRequest({
746
+ method: HttpMethod.GET,
747
+ url: `${auth.baseUrl}/bank-controls/v1/savings/service-charge-types/${chargeType}`,
748
+ headers: buildHeaders(auth, xAuthorization, sourceId),
749
+ });
750
+
751
+ return response.body;
752
+ },
753
+ });
754
+
755
+ export const bank_controls_savings_service_charge_types_list = createAction({
756
+ name: 'bank_controls_savings_service_charge_types_list',
757
+ auth: fisHorizonAuth,
758
+ displayName: 'Bank Controls - Savings - Service Charge Types List',
759
+ description: 'Retrieve a list of savings service charge types.',
760
+ props: {
761
+ xAuthorization: Property.ShortText({
762
+ displayName: 'Authorization Token',
763
+ description: 'JWT token for authorization',
764
+ required: true,
765
+ }),
766
+ sourceId: Property.ShortText({
767
+ displayName: 'Source ID',
768
+ description: 'Optional: 6 character ID provided by FIS',
769
+ required: false,
770
+ }),
771
+ },
772
+ async run(context) {
773
+ const auth = context.auth as any;
774
+ const { xAuthorization, sourceId } = context.propsValue;
775
+
776
+ const response = await httpClient.sendRequest({
777
+ method: HttpMethod.GET,
778
+ url: `${auth.baseUrl}/bank-controls/v1/savings/service-charge-types/list`,
779
+ headers: buildHeaders(auth, xAuthorization, sourceId),
780
+ });
781
+
782
+ return response.body;
783
+ },
784
+ });
785
+
786
+ // ============================================================================
787
+ // LOAN DOWNLOADS
788
+ // ============================================================================
789
+
790
+ export const bank_controls_loans_product_types_list = createAction({
791
+ name: 'bank_controls_loans_product_types_list',
792
+ auth: fisHorizonAuth,
793
+ displayName: 'Bank Controls - Loans - Product Types List',
794
+ description: 'Retrieve a list of loan product types.',
795
+ props: {
796
+ xAuthorization: Property.ShortText({
797
+ displayName: 'Authorization Token',
798
+ description: 'JWT token for authorization',
799
+ required: true,
800
+ }),
801
+ sourceId: Property.ShortText({
802
+ displayName: 'Source ID',
803
+ description: 'Optional: 6 character ID provided by FIS',
804
+ required: false,
805
+ }),
806
+ },
807
+ async run(context) {
808
+ const auth = context.auth as any;
809
+ const { xAuthorization, sourceId } = context.propsValue;
810
+
811
+ const response = await httpClient.sendRequest({
812
+ method: HttpMethod.GET,
813
+ url: `${auth.baseUrl}/bank-controls/v1/loans/product-types`,
814
+ headers: buildHeaders(auth, xAuthorization, sourceId),
815
+ });
816
+
817
+ return response.body;
818
+ },
819
+ });
820
+
821
+ export const bank_controls_loans_product_types_detail = createAction({
822
+ name: 'bank_controls_loans_product_types_detail',
823
+ auth: fisHorizonAuth,
824
+ displayName: 'Bank Controls - Loans - Product Types Detail',
825
+ description: 'Retrieve detailed information for a specific loan product type.',
826
+ props: {
827
+ xAuthorization: Property.ShortText({
828
+ displayName: 'Authorization Token',
829
+ description: 'JWT token for authorization',
830
+ required: true,
831
+ }),
832
+ sourceId: Property.ShortText({
833
+ displayName: 'Source ID',
834
+ description: 'Optional: 6 character ID provided by FIS',
835
+ required: false,
836
+ }),
837
+ productType: Property.ShortText({
838
+ displayName: 'Product Type',
839
+ description: 'Loan product type (up to 3 characters)',
840
+ required: true,
841
+ }),
842
+ },
843
+ async run(context) {
844
+ const auth = context.auth as any;
845
+ const { xAuthorization, sourceId, productType } = context.propsValue;
846
+
847
+ const response = await httpClient.sendRequest({
848
+ method: HttpMethod.GET,
849
+ url: `${auth.baseUrl}/bank-controls/v1/loans/product-types/${productType}`,
850
+ headers: buildHeaders(auth, xAuthorization, sourceId),
851
+ });
852
+
853
+ return response.body;
854
+ },
855
+ });
856
+
857
+ // ============================================================================
858
+ // MORTGAGE LOAN DOWNLOADS
859
+ // ============================================================================
860
+
861
+ export const bank_controls_mortgage_loans_product_types_list = createAction({
862
+ name: 'bank_controls_mortgage_loans_product_types_list',
863
+ auth: fisHorizonAuth,
864
+ displayName: 'Bank Controls - Mortgage Loans - Product Types List',
865
+ description: 'Retrieve a list of mortgage loan product types.',
866
+ props: {
867
+ xAuthorization: Property.ShortText({
868
+ displayName: 'Authorization Token',
869
+ description: 'JWT token for authorization',
870
+ required: true,
871
+ }),
872
+ sourceId: Property.ShortText({
873
+ displayName: 'Source ID',
874
+ description: 'Optional: 6 character ID provided by FIS',
875
+ required: false,
876
+ }),
877
+ },
878
+ async run(context) {
879
+ const auth = context.auth as any;
880
+ const { xAuthorization, sourceId } = context.propsValue;
881
+
882
+ const response = await httpClient.sendRequest({
883
+ method: HttpMethod.GET,
884
+ url: `${auth.baseUrl}/bank-controls/v1/mortgage-loans/product-types`,
885
+ headers: buildHeaders(auth, xAuthorization, sourceId),
886
+ });
887
+
888
+ return response.body;
889
+ },
890
+ });
891
+
892
+ export const bank_controls_mortgage_loans_product_types_detail = createAction({
893
+ name: 'bank_controls_mortgage_loans_product_types_detail',
894
+ auth: fisHorizonAuth,
895
+ displayName: 'Bank Controls - Mortgage Loans - Product Types Detail',
896
+ description: 'Retrieve detailed information for a specific mortgage loan product type.',
897
+ props: {
898
+ xAuthorization: Property.ShortText({
899
+ displayName: 'Authorization Token',
900
+ description: 'JWT token for authorization',
901
+ required: true,
902
+ }),
903
+ sourceId: Property.ShortText({
904
+ displayName: 'Source ID',
905
+ description: 'Optional: 6 character ID provided by FIS',
906
+ required: false,
907
+ }),
908
+ productType: Property.ShortText({
909
+ displayName: 'Product Type',
910
+ description: 'Mortgage loan product type (up to 10 characters)',
911
+ required: true,
912
+ }),
913
+ },
914
+ async run(context) {
915
+ const auth = context.auth as any;
916
+ const { xAuthorization, sourceId, productType } = context.propsValue;
917
+
918
+ const response = await httpClient.sendRequest({
919
+ method: HttpMethod.GET,
920
+ url: `${auth.baseUrl}/bank-controls/v1/mortgage-loans/product-types/${productType}`,
921
+ headers: buildHeaders(auth, xAuthorization, sourceId),
922
+ });
923
+
924
+ return response.body;
925
+ },
926
+ });
927
+
928
+ // ============================================================================
929
+ // READY RESERVE DOWNLOADS
930
+ // ============================================================================
931
+
932
+ export const bank_controls_ready_reserve_rate_types_detail = createAction({
933
+ name: 'bank_controls_ready_reserve_rate_types_detail',
934
+ auth: fisHorizonAuth,
935
+ displayName: 'Bank Controls - Ready Reserve - Rate Types Detail',
936
+ description: 'Retrieve details of a ready reserve variable rate type.',
937
+ props: {
938
+ xAuthorization: Property.ShortText({
939
+ displayName: 'Authorization Token',
940
+ description: 'JWT token for authorization',
941
+ required: true,
942
+ }),
943
+ sourceId: Property.ShortText({
944
+ displayName: 'Source ID',
945
+ description: 'Optional: 6 character ID provided by FIS',
946
+ required: false,
947
+ }),
948
+ rateType: Property.Number({
949
+ displayName: 'Rate Type',
950
+ description: 'Rate Type (up to 99)',
951
+ required: true,
952
+ }),
953
+ effectiveDate: Property.Number({
954
+ displayName: 'Effective Date',
955
+ description: 'Effective Date in CCYYMMDD format',
956
+ required: true,
957
+ }),
958
+ },
959
+ async run(context) {
960
+ const auth = context.auth as any;
961
+ const { xAuthorization, sourceId, rateType, effectiveDate } = context.propsValue;
962
+
963
+ const response = await httpClient.sendRequest({
964
+ method: HttpMethod.GET,
965
+ url: `${auth.baseUrl}/bank-controls/v1/ready-reserve/rate-types/${rateType}`,
966
+ headers: buildHeaders(auth, xAuthorization, sourceId),
967
+ queryParams: {
968
+ effectiveDate: String(effectiveDate),
969
+ },
970
+ });
971
+
972
+ return response.body;
973
+ },
974
+ });
975
+
976
+ export const bank_controls_ready_reserve_rate_types_list = createAction({
977
+ name: 'bank_controls_ready_reserve_rate_types_list',
978
+ auth: fisHorizonAuth,
979
+ displayName: 'Bank Controls - Ready Reserve - Rate Types List',
980
+ description: 'Retrieve a list of ready reserve variable rate types.',
981
+ props: {
982
+ xAuthorization: Property.ShortText({
983
+ displayName: 'Authorization Token',
984
+ description: 'JWT token for authorization',
985
+ required: true,
986
+ }),
987
+ sourceId: Property.ShortText({
988
+ displayName: 'Source ID',
989
+ description: 'Optional: 6 character ID provided by FIS',
990
+ required: false,
991
+ }),
992
+ },
993
+ async run(context) {
994
+ const auth = context.auth as any;
995
+ const { xAuthorization, sourceId } = context.propsValue;
996
+
997
+ const response = await httpClient.sendRequest({
998
+ method: HttpMethod.GET,
999
+ url: `${auth.baseUrl}/bank-controls/v1/ready-reserve/rate-types`,
1000
+ headers: buildHeaders(auth, xAuthorization, sourceId),
1001
+ });
1002
+
1003
+ return response.body;
1004
+ },
1005
+ });
1006
+
1007
+ export const bank_controls_ready_reserve_product_types_detail = createAction({
1008
+ name: 'bank_controls_ready_reserve_product_types_detail',
1009
+ auth: fisHorizonAuth,
1010
+ displayName: 'Bank Controls - Ready Reserve - Product Types Detail',
1011
+ description: 'Retrieve details of a ready reserve product type.',
1012
+ props: {
1013
+ xAuthorization: Property.ShortText({
1014
+ displayName: 'Authorization Token',
1015
+ description: 'JWT token for authorization',
1016
+ required: true,
1017
+ }),
1018
+ sourceId: Property.ShortText({
1019
+ displayName: 'Source ID',
1020
+ description: 'Optional: 6 character ID provided by FIS',
1021
+ required: false,
1022
+ }),
1023
+ productType: Property.ShortText({
1024
+ displayName: 'Product Type',
1025
+ description: 'Ready reserve product type (up to 2 characters)',
1026
+ required: true,
1027
+ }),
1028
+ },
1029
+ async run(context) {
1030
+ const auth = context.auth as any;
1031
+ const { xAuthorization, sourceId, productType } = context.propsValue;
1032
+
1033
+ const response = await httpClient.sendRequest({
1034
+ method: HttpMethod.GET,
1035
+ url: `${auth.baseUrl}/bank-controls/v1/ready-reserve/product-types/${productType}`,
1036
+ headers: buildHeaders(auth, xAuthorization, sourceId),
1037
+ });
1038
+
1039
+ return response.body;
1040
+ },
1041
+ });
1042
+
1043
+ export const bank_controls_ready_reserve_product_types_list = createAction({
1044
+ name: 'bank_controls_ready_reserve_product_types_list',
1045
+ auth: fisHorizonAuth,
1046
+ displayName: 'Bank Controls - Ready Reserve - Product Types List',
1047
+ description: 'Retrieve a list of ready reserve product types.',
1048
+ props: {
1049
+ xAuthorization: Property.ShortText({
1050
+ displayName: 'Authorization Token',
1051
+ description: 'JWT token for authorization',
1052
+ required: true,
1053
+ }),
1054
+ sourceId: Property.ShortText({
1055
+ displayName: 'Source ID',
1056
+ description: 'Optional: 6 character ID provided by FIS',
1057
+ required: false,
1058
+ }),
1059
+ },
1060
+ async run(context) {
1061
+ const auth = context.auth as any;
1062
+ const { xAuthorization, sourceId } = context.propsValue;
1063
+
1064
+ const response = await httpClient.sendRequest({
1065
+ method: HttpMethod.GET,
1066
+ url: `${auth.baseUrl}/bank-controls/v1/ready-reserve/product-types`,
1067
+ headers: buildHeaders(auth, xAuthorization, sourceId),
1068
+ });
1069
+
1070
+ return response.body;
1071
+ },
1072
+ });
1073
+
1074
+ // ============================================================================
1075
+ // SAFE DEPOSIT BOX DOWNLOADS
1076
+ // ============================================================================
1077
+
1078
+ export const bank_controls_safe_deposit_box_list = createAction({
1079
+ name: 'bank_controls_safe_deposit_box_list',
1080
+ auth: fisHorizonAuth,
1081
+ displayName: 'Bank Controls - Safe Deposit Box - List',
1082
+ description: 'Retrieve the list of safe deposit boxes.',
1083
+ props: {
1084
+ xAuthorization: Property.ShortText({
1085
+ displayName: 'Authorization Token',
1086
+ description: 'JWT token for authorization',
1087
+ required: true,
1088
+ }),
1089
+ sourceId: Property.ShortText({
1090
+ displayName: 'Source ID',
1091
+ description: 'Optional: 6 character ID provided by FIS',
1092
+ required: false,
1093
+ }),
1094
+ statusAvailable: Property.StaticDropdown({
1095
+ displayName: 'Status Available',
1096
+ description: 'Include available boxes',
1097
+ required: true,
1098
+ defaultValue: 'Y',
1099
+ options: {
1100
+ options: [
1101
+ { label: 'Yes', value: 'Y' },
1102
+ { label: 'No', value: 'N' },
1103
+ ],
1104
+ },
1105
+ }),
1106
+ statusPending: Property.StaticDropdown({
1107
+ displayName: 'Status Pending',
1108
+ description: 'Include pending boxes',
1109
+ required: true,
1110
+ defaultValue: 'Y',
1111
+ options: {
1112
+ options: [
1113
+ { label: 'Yes', value: 'Y' },
1114
+ { label: 'No', value: 'N' },
1115
+ ],
1116
+ },
1117
+ }),
1118
+ statusRented: Property.StaticDropdown({
1119
+ displayName: 'Status Rented',
1120
+ description: 'Include rented boxes',
1121
+ required: true,
1122
+ defaultValue: 'Y',
1123
+ options: {
1124
+ options: [
1125
+ { label: 'Yes', value: 'Y' },
1126
+ { label: 'No', value: 'N' },
1127
+ ],
1128
+ },
1129
+ }),
1130
+ statusDrillPending: Property.StaticDropdown({
1131
+ displayName: 'Status Drill Pending',
1132
+ description: 'Include drill pending boxes',
1133
+ required: true,
1134
+ defaultValue: 'Y',
1135
+ options: {
1136
+ options: [
1137
+ { label: 'Yes', value: 'Y' },
1138
+ { label: 'No', value: 'N' },
1139
+ ],
1140
+ },
1141
+ }),
1142
+ statusOutOfService: Property.StaticDropdown({
1143
+ displayName: 'Status Out of Service',
1144
+ description: 'Include out of service boxes',
1145
+ required: true,
1146
+ defaultValue: 'Y',
1147
+ options: {
1148
+ options: [
1149
+ { label: 'Yes', value: 'Y' },
1150
+ { label: 'No', value: 'N' },
1151
+ ],
1152
+ },
1153
+ }),
1154
+ numberOfRecords: Property.Number({
1155
+ displayName: 'Number of Records',
1156
+ description: 'Maximum number of records to return (up to 999)',
1157
+ required: true,
1158
+ defaultValue: 999,
1159
+ }),
1160
+ branchNumber: Property.ShortText({
1161
+ displayName: 'Branch Number',
1162
+ description: 'Optional: Branch number (up to 3 characters)',
1163
+ required: false,
1164
+ }),
1165
+ boxType: Property.ShortText({
1166
+ displayName: 'Box Type',
1167
+ description: 'Optional: Box type (up to 3 characters)',
1168
+ required: false,
1169
+ }),
1170
+ },
1171
+ async run(context) {
1172
+ const auth = context.auth as any;
1173
+ const { xAuthorization, sourceId, statusAvailable, statusPending, statusRented, statusDrillPending, statusOutOfService, numberOfRecords, branchNumber, boxType } = context.propsValue;
1174
+
1175
+ const queryParams: Record<string, string> = {
1176
+ statusAvailable: statusAvailable,
1177
+ statusPending: statusPending,
1178
+ statusRented: statusRented,
1179
+ statusDrillPending: statusDrillPending,
1180
+ statusOutOfService: statusOutOfService,
1181
+ numberOfRecords: String(numberOfRecords),
1182
+ };
1183
+ if (branchNumber) queryParams['branchNumber'] = branchNumber;
1184
+ if (boxType) queryParams['boxType'] = boxType;
1185
+
1186
+ const response = await httpClient.sendRequest({
1187
+ method: HttpMethod.GET,
1188
+ url: `${auth.baseUrl}/bank-controls/v1/safe-deposit-box`,
1189
+ headers: buildHeaders(auth, xAuthorization, sourceId),
1190
+ queryParams,
1191
+ });
1192
+
1193
+ return response.body;
1194
+ },
1195
+ });
1196
+
1197
+ export const bank_controls_safe_deposit_box_discount_codes = createAction({
1198
+ name: 'bank_controls_safe_deposit_box_discount_codes',
1199
+ auth: fisHorizonAuth,
1200
+ displayName: 'Bank Controls - Safe Deposit Box - Discount Codes',
1201
+ description: 'Retrieve a list of safe deposit box discount codes.',
1202
+ props: {
1203
+ xAuthorization: Property.ShortText({
1204
+ displayName: 'Authorization Token',
1205
+ description: 'JWT token for authorization',
1206
+ required: true,
1207
+ }),
1208
+ sourceId: Property.ShortText({
1209
+ displayName: 'Source ID',
1210
+ description: 'Optional: 6 character ID provided by FIS',
1211
+ required: false,
1212
+ }),
1213
+ },
1214
+ async run(context) {
1215
+ const auth = context.auth as any;
1216
+ const { xAuthorization, sourceId } = context.propsValue;
1217
+
1218
+ const response = await httpClient.sendRequest({
1219
+ method: HttpMethod.GET,
1220
+ url: `${auth.baseUrl}/bank-controls/v1/safe-deposit-box/discount-codes`,
1221
+ headers: buildHeaders(auth, xAuthorization, sourceId),
1222
+ });
1223
+
1224
+ return response.body;
1225
+ },
1226
+ });
1227
+
1228
+ // ============================================================================
1229
+ // TIME DEPOSIT DOWNLOADS
1230
+ // ============================================================================
1231
+
1232
+ export const bank_controls_time_deposits_service_charge_types_list = createAction({
1233
+ name: 'bank_controls_time_deposits_service_charge_types_list',
1234
+ auth: fisHorizonAuth,
1235
+ displayName: 'Bank Controls - Time Deposits - Service Charge Types List',
1236
+ description: 'Retrieve a list of time deposit service charge types.',
1237
+ props: {
1238
+ xAuthorization: Property.ShortText({
1239
+ displayName: 'Authorization Token',
1240
+ description: 'JWT token for authorization',
1241
+ required: true,
1242
+ }),
1243
+ sourceId: Property.ShortText({
1244
+ displayName: 'Source ID',
1245
+ description: 'Optional: 6 character ID provided by FIS',
1246
+ required: false,
1247
+ }),
1248
+ },
1249
+ async run(context) {
1250
+ const auth = context.auth as any;
1251
+ const { xAuthorization, sourceId } = context.propsValue;
1252
+
1253
+ const response = await httpClient.sendRequest({
1254
+ method: HttpMethod.GET,
1255
+ url: `${auth.baseUrl}/bank-controls/v1/time-deposits/service-charge-types`,
1256
+ headers: buildHeaders(auth, xAuthorization, sourceId),
1257
+ });
1258
+
1259
+ return response.body;
1260
+ },
1261
+ });
1262
+
1263
+ export const bank_controls_time_deposits_service_charge_types_detail = createAction({
1264
+ name: 'bank_controls_time_deposits_service_charge_types_detail',
1265
+ auth: fisHorizonAuth,
1266
+ displayName: 'Bank Controls - Time Deposits - Service Charge Types Detail',
1267
+ description: 'Retrieve the details of time deposit service charge type.',
1268
+ props: {
1269
+ xAuthorization: Property.ShortText({
1270
+ displayName: 'Authorization Token',
1271
+ description: 'JWT token for authorization',
1272
+ required: true,
1273
+ }),
1274
+ sourceId: Property.ShortText({
1275
+ displayName: 'Source ID',
1276
+ description: 'Optional: 6 character ID provided by FIS',
1277
+ required: false,
1278
+ }),
1279
+ chargeType: Property.ShortText({
1280
+ displayName: 'Charge Type',
1281
+ description: 'Valid Time Deposit Service Charge Type',
1282
+ required: true,
1283
+ }),
1284
+ },
1285
+ async run(context) {
1286
+ const auth = context.auth as any;
1287
+ const { xAuthorization, sourceId, chargeType } = context.propsValue;
1288
+
1289
+ const response = await httpClient.sendRequest({
1290
+ method: HttpMethod.GET,
1291
+ url: `${auth.baseUrl}/bank-controls/v1/time-deposits/service-charge-types/${chargeType}`,
1292
+ headers: buildHeaders(auth, xAuthorization, sourceId),
1293
+ });
1294
+
1295
+ return response.body;
1296
+ },
1297
+ });
1298
+
1299
+ export const bank_controls_time_deposits_product_types_list = createAction({
1300
+ name: 'bank_controls_time_deposits_product_types_list',
1301
+ auth: fisHorizonAuth,
1302
+ displayName: 'Bank Controls - Time Deposits - Product Types List',
1303
+ description: 'Retrieve a list of time deposit product types.',
1304
+ props: {
1305
+ xAuthorization: Property.ShortText({
1306
+ displayName: 'Authorization Token',
1307
+ description: 'JWT token for authorization',
1308
+ required: true,
1309
+ }),
1310
+ sourceId: Property.ShortText({
1311
+ displayName: 'Source ID',
1312
+ description: 'Optional: 6 character ID provided by FIS',
1313
+ required: false,
1314
+ }),
1315
+ },
1316
+ async run(context) {
1317
+ const auth = context.auth as any;
1318
+ const { xAuthorization, sourceId } = context.propsValue;
1319
+
1320
+ const response = await httpClient.sendRequest({
1321
+ method: HttpMethod.GET,
1322
+ url: `${auth.baseUrl}/bank-controls/v1/time-deposits/product-types`,
1323
+ headers: buildHeaders(auth, xAuthorization, sourceId),
1324
+ });
1325
+
1326
+ return response.body;
1327
+ },
1328
+ });
1329
+
1330
+ export const bank_controls_time_deposits_product_types_detail = createAction({
1331
+ name: 'bank_controls_time_deposits_product_types_detail',
1332
+ auth: fisHorizonAuth,
1333
+ displayName: 'Bank Controls - Time Deposits - Product Types Detail',
1334
+ description: 'Retrieve the details of time deposit product type.',
1335
+ props: {
1336
+ xAuthorization: Property.ShortText({
1337
+ displayName: 'Authorization Token',
1338
+ description: 'JWT token for authorization',
1339
+ required: true,
1340
+ }),
1341
+ sourceId: Property.ShortText({
1342
+ displayName: 'Source ID',
1343
+ description: 'Optional: 6 character ID provided by FIS',
1344
+ required: false,
1345
+ }),
1346
+ productType: Property.ShortText({
1347
+ displayName: 'Product Type',
1348
+ description: 'Time deposit product type (up to 3 characters)',
1349
+ required: true,
1350
+ }),
1351
+ },
1352
+ async run(context) {
1353
+ const auth = context.auth as any;
1354
+ const { xAuthorization, sourceId, productType } = context.propsValue;
1355
+
1356
+ const response = await httpClient.sendRequest({
1357
+ method: HttpMethod.GET,
1358
+ url: `${auth.baseUrl}/bank-controls/v1/time-deposits/product-types/${productType}`,
1359
+ headers: buildHeaders(auth, xAuthorization, sourceId),
1360
+ });
1361
+
1362
+ return response.body;
1363
+ },
1364
+ });
1365
+
1366
+ export const bank_controls_time_deposits_penalty_types_list = createAction({
1367
+ name: 'bank_controls_time_deposits_penalty_types_list',
1368
+ auth: fisHorizonAuth,
1369
+ displayName: 'Bank Controls - Time Deposits - Penalty Types List',
1370
+ description: 'Retrieve a list of time deposit penalty types.',
1371
+ props: {
1372
+ xAuthorization: Property.ShortText({
1373
+ displayName: 'Authorization Token',
1374
+ description: 'JWT token for authorization',
1375
+ required: true,
1376
+ }),
1377
+ sourceId: Property.ShortText({
1378
+ displayName: 'Source ID',
1379
+ description: 'Optional: 6 character ID provided by FIS',
1380
+ required: false,
1381
+ }),
1382
+ },
1383
+ async run(context) {
1384
+ const auth = context.auth as any;
1385
+ const { xAuthorization, sourceId } = context.propsValue;
1386
+
1387
+ const response = await httpClient.sendRequest({
1388
+ method: HttpMethod.GET,
1389
+ url: `${auth.baseUrl}/bank-controls/v1/time-deposits/penalty-types`,
1390
+ headers: buildHeaders(auth, xAuthorization, sourceId),
1391
+ });
1392
+
1393
+ return response.body;
1394
+ },
1395
+ });
1396
+
1397
+ export const bank_controls_time_deposits_penalty_types_detail = createAction({
1398
+ name: 'bank_controls_time_deposits_penalty_types_detail',
1399
+ auth: fisHorizonAuth,
1400
+ displayName: 'Bank Controls - Time Deposits - Penalty Types Detail',
1401
+ description: 'Retrieve the details of a time deposit penalty type.',
1402
+ props: {
1403
+ xAuthorization: Property.ShortText({
1404
+ displayName: 'Authorization Token',
1405
+ description: 'JWT token for authorization',
1406
+ required: true,
1407
+ }),
1408
+ sourceId: Property.ShortText({
1409
+ displayName: 'Source ID',
1410
+ description: 'Optional: 6 character ID provided by FIS',
1411
+ required: false,
1412
+ }),
1413
+ penaltyType: Property.ShortText({
1414
+ displayName: 'Penalty Type',
1415
+ description: 'Time deposit penalty type (up to 3 characters)',
1416
+ required: true,
1417
+ }),
1418
+ },
1419
+ async run(context) {
1420
+ const auth = context.auth as any;
1421
+ const { xAuthorization, sourceId, penaltyType } = context.propsValue;
1422
+
1423
+ const response = await httpClient.sendRequest({
1424
+ method: HttpMethod.GET,
1425
+ url: `${auth.baseUrl}/bank-controls/v1/time-deposits/penalty-types/${penaltyType}`,
1426
+ headers: buildHeaders(auth, xAuthorization, sourceId),
1427
+ });
1428
+
1429
+ return response.body;
1430
+ },
1431
+ });
1432
+
1433
+ export const bank_controls_time_deposits_interest_types_list = createAction({
1434
+ name: 'bank_controls_time_deposits_interest_types_list',
1435
+ auth: fisHorizonAuth,
1436
+ displayName: 'Bank Controls - Time Deposits - Interest Types List',
1437
+ description: 'Retrieve a list of time deposit interest types.',
1438
+ props: {
1439
+ xAuthorization: Property.ShortText({
1440
+ displayName: 'Authorization Token',
1441
+ description: 'JWT token for authorization',
1442
+ required: true,
1443
+ }),
1444
+ sourceId: Property.ShortText({
1445
+ displayName: 'Source ID',
1446
+ description: 'Optional: 6 character ID provided by FIS',
1447
+ required: false,
1448
+ }),
1449
+ },
1450
+ async run(context) {
1451
+ const auth = context.auth as any;
1452
+ const { xAuthorization, sourceId } = context.propsValue;
1453
+
1454
+ const response = await httpClient.sendRequest({
1455
+ method: HttpMethod.GET,
1456
+ url: `${auth.baseUrl}/bank-controls/v1/time-deposits/interest-types`,
1457
+ headers: buildHeaders(auth, xAuthorization, sourceId),
1458
+ });
1459
+
1460
+ return response.body;
1461
+ },
1462
+ });
1463
+
1464
+ export const bank_controls_time_deposits_interest_types_detail = createAction({
1465
+ name: 'bank_controls_time_deposits_interest_types_detail',
1466
+ auth: fisHorizonAuth,
1467
+ displayName: 'Bank Controls - Time Deposits - Interest Types Detail',
1468
+ description: 'Retrieve the details of time deposit interest type given a rate type.',
1469
+ props: {
1470
+ xAuthorization: Property.ShortText({
1471
+ displayName: 'Authorization Token',
1472
+ description: 'JWT token for authorization',
1473
+ required: true,
1474
+ }),
1475
+ sourceId: Property.ShortText({
1476
+ displayName: 'Source ID',
1477
+ description: 'Optional: 6 character ID provided by FIS',
1478
+ required: false,
1479
+ }),
1480
+ rateType: Property.ShortText({
1481
+ displayName: 'Rate Type',
1482
+ description: 'Time deposit rate type (up to 3 characters)',
1483
+ required: true,
1484
+ }),
1485
+ },
1486
+ async run(context) {
1487
+ const auth = context.auth as any;
1488
+ const { xAuthorization, sourceId, rateType } = context.propsValue;
1489
+
1490
+ const response = await httpClient.sendRequest({
1491
+ method: HttpMethod.GET,
1492
+ url: `${auth.baseUrl}/bank-controls/v1/time-deposits/interest-types/${rateType}`,
1493
+ headers: buildHeaders(auth, xAuthorization, sourceId),
1494
+ });
1495
+
1496
+ return response.body;
1497
+ },
1498
+ });
1499
+
1500
+ // ============================================================================
1501
+ // CARD DOWNLOADS
1502
+ // ============================================================================
1503
+
1504
+ export const bank_controls_cards_product_types_list = createAction({
1505
+ name: 'bank_controls_cards_product_types_list',
1506
+ auth: fisHorizonAuth,
1507
+ displayName: 'Bank Controls - Cards - Product Types List',
1508
+ description: 'Retrieve a list of card product types.',
1509
+ props: {
1510
+ xAuthorization: Property.ShortText({
1511
+ displayName: 'Authorization Token',
1512
+ description: 'JWT token for authorization',
1513
+ required: true,
1514
+ }),
1515
+ sourceId: Property.ShortText({
1516
+ displayName: 'Source ID',
1517
+ description: 'Optional: 6 character ID provided by FIS',
1518
+ required: false,
1519
+ }),
1520
+ },
1521
+ async run(context) {
1522
+ const auth = context.auth as any;
1523
+ const { xAuthorization, sourceId } = context.propsValue;
1524
+
1525
+ const response = await httpClient.sendRequest({
1526
+ method: HttpMethod.GET,
1527
+ url: `${auth.baseUrl}/bank-controls/v1/cards/product-types`,
1528
+ headers: buildHeaders(auth, xAuthorization, sourceId),
1529
+ });
1530
+
1531
+ return response.body;
1532
+ },
1533
+ });
1534
+
1535
+ export const bank_controls_cards_product_types_detail = createAction({
1536
+ name: 'bank_controls_cards_product_types_detail',
1537
+ auth: fisHorizonAuth,
1538
+ displayName: 'Bank Controls - Cards - Product Types Detail',
1539
+ description: 'Retrieve the details for a given card product type.',
1540
+ props: {
1541
+ xAuthorization: Property.ShortText({
1542
+ displayName: 'Authorization Token',
1543
+ description: 'JWT token for authorization',
1544
+ required: true,
1545
+ }),
1546
+ sourceId: Property.ShortText({
1547
+ displayName: 'Source ID',
1548
+ description: 'Optional: 6 character ID provided by FIS',
1549
+ required: false,
1550
+ }),
1551
+ productType: Property.ShortText({
1552
+ displayName: 'Product Type',
1553
+ description: 'Card product type (up to 3 characters)',
1554
+ required: true,
1555
+ }),
1556
+ },
1557
+ async run(context) {
1558
+ const auth = context.auth as any;
1559
+ const { xAuthorization, sourceId, productType } = context.propsValue;
1560
+
1561
+ const response = await httpClient.sendRequest({
1562
+ method: HttpMethod.GET,
1563
+ url: `${auth.baseUrl}/bank-controls/v1/cards/product-types/${productType}`,
1564
+ headers: buildHeaders(auth, xAuthorization, sourceId),
1565
+ });
1566
+
1567
+ return response.body;
1568
+ },
1569
+ });
1570
+
1571
+ // ============================================================================
1572
+ // MISCELLANEOUS DOWNLOADS
1573
+ // ============================================================================
1574
+
1575
+ export const bank_controls_dynamic_transfer_controls = createAction({
1576
+ name: 'bank_controls_dynamic_transfer_controls',
1577
+ auth: fisHorizonAuth,
1578
+ displayName: 'Bank Controls - Miscellaneous - Dynamic Transfer Controls',
1579
+ description: 'Retrieve dynamic transfers controls and options.',
1580
+ props: {
1581
+ xAuthorization: Property.ShortText({
1582
+ displayName: 'Authorization Token',
1583
+ description: 'JWT token for authorization',
1584
+ required: true,
1585
+ }),
1586
+ sourceId: Property.ShortText({
1587
+ displayName: 'Source ID',
1588
+ description: 'Optional: 6 character ID provided by FIS',
1589
+ required: false,
1590
+ }),
1591
+ },
1592
+ async run(context) {
1593
+ const auth = context.auth as any;
1594
+ const { xAuthorization, sourceId } = context.propsValue;
1595
+
1596
+ const response = await httpClient.sendRequest({
1597
+ method: HttpMethod.GET,
1598
+ url: `${auth.baseUrl}/bank-controls/v1/dynamic-transfer-controls`,
1599
+ headers: buildHeaders(auth, xAuthorization, sourceId),
1600
+ });
1601
+
1602
+ return response.body;
1603
+ },
1604
+ });
1605
+
1606
+ export const bank_controls_global_index_rates_list = createAction({
1607
+ name: 'bank_controls_global_index_rates_list',
1608
+ auth: fisHorizonAuth,
1609
+ displayName: 'Bank Controls - Global Controls - Index Rates List',
1610
+ description: 'Retrieve a list of global index rates.',
1611
+ props: {
1612
+ xAuthorization: Property.ShortText({
1613
+ displayName: 'Authorization Token',
1614
+ description: 'JWT token for authorization',
1615
+ required: true,
1616
+ }),
1617
+ sourceId: Property.ShortText({
1618
+ displayName: 'Source ID',
1619
+ description: 'Optional: 6 character ID provided by FIS',
1620
+ required: false,
1621
+ }),
1622
+ },
1623
+ async run(context) {
1624
+ const auth = context.auth as any;
1625
+ const { xAuthorization, sourceId } = context.propsValue;
1626
+
1627
+ const response = await httpClient.sendRequest({
1628
+ method: HttpMethod.GET,
1629
+ url: `${auth.baseUrl}/bank-controls/v1/global-index-rates`,
1630
+ headers: buildHeaders(auth, xAuthorization, sourceId),
1631
+ });
1632
+
1633
+ return response.body;
1634
+ },
1635
+ });
1636
+
1637
+ export const bank_controls_global_index_rates_detail = createAction({
1638
+ name: 'bank_controls_global_index_rates_detail',
1639
+ auth: fisHorizonAuth,
1640
+ displayName: 'Bank Controls - Global Controls - Index Rates Detail',
1641
+ description: 'Retrieve the details for a global index rate.',
1642
+ props: {
1643
+ xAuthorization: Property.ShortText({
1644
+ displayName: 'Authorization Token',
1645
+ description: 'JWT token for authorization',
1646
+ required: true,
1647
+ }),
1648
+ sourceId: Property.ShortText({
1649
+ displayName: 'Source ID',
1650
+ description: 'Optional: 6 character ID provided by FIS',
1651
+ required: false,
1652
+ }),
1653
+ globalIndex: Property.ShortText({
1654
+ displayName: 'Global Index',
1655
+ description: 'Global index (up to 3 characters)',
1656
+ required: true,
1657
+ }),
1658
+ },
1659
+ async run(context) {
1660
+ const auth = context.auth as any;
1661
+ const { xAuthorization, sourceId, globalIndex } = context.propsValue;
1662
+
1663
+ const response = await httpClient.sendRequest({
1664
+ method: HttpMethod.GET,
1665
+ url: `${auth.baseUrl}/bank-controls/v1/global-index-rates/${globalIndex}`,
1666
+ headers: buildHeaders(auth, xAuthorization, sourceId),
1667
+ });
1668
+
1669
+ return response.body;
1670
+ },
1671
+ });
1672
+
1673
+ export const bank_controls_global_rate_tiers_list = createAction({
1674
+ name: 'bank_controls_global_rate_tiers_list',
1675
+ auth: fisHorizonAuth,
1676
+ displayName: 'Bank Controls - Global Controls - Rate Tiers List',
1677
+ description: 'Retrieve a list of global rate tiers.',
1678
+ props: {
1679
+ xAuthorization: Property.ShortText({
1680
+ displayName: 'Authorization Token',
1681
+ description: 'JWT token for authorization',
1682
+ required: true,
1683
+ }),
1684
+ sourceId: Property.ShortText({
1685
+ displayName: 'Source ID',
1686
+ description: 'Optional: 6 character ID provided by FIS',
1687
+ required: false,
1688
+ }),
1689
+ },
1690
+ async run(context) {
1691
+ const auth = context.auth as any;
1692
+ const { xAuthorization, sourceId } = context.propsValue;
1693
+
1694
+ const response = await httpClient.sendRequest({
1695
+ method: HttpMethod.GET,
1696
+ url: `${auth.baseUrl}/bank-controls/v1/global-rate-tiers`,
1697
+ headers: buildHeaders(auth, xAuthorization, sourceId),
1698
+ });
1699
+
1700
+ return response.body;
1701
+ },
1702
+ });
1703
+
1704
+ export const bank_controls_global_rate_tiers_detail = createAction({
1705
+ name: 'bank_controls_global_rate_tiers_detail',
1706
+ auth: fisHorizonAuth,
1707
+ displayName: 'Bank Controls - Global Controls - Rate Tiers Detail',
1708
+ description: 'Retrieve the details of a global rate tier.',
1709
+ props: {
1710
+ xAuthorization: Property.ShortText({
1711
+ displayName: 'Authorization Token',
1712
+ description: 'JWT token for authorization',
1713
+ required: true,
1714
+ }),
1715
+ sourceId: Property.ShortText({
1716
+ displayName: 'Source ID',
1717
+ description: 'Optional: 6 character ID provided by FIS',
1718
+ required: false,
1719
+ }),
1720
+ globalTier: Property.ShortText({
1721
+ displayName: 'Global Tier',
1722
+ description: 'Global tier (up to 3 characters)',
1723
+ required: true,
1724
+ }),
1725
+ },
1726
+ async run(context) {
1727
+ const auth = context.auth as any;
1728
+ const { xAuthorization, sourceId, globalTier } = context.propsValue;
1729
+
1730
+ const response = await httpClient.sendRequest({
1731
+ method: HttpMethod.GET,
1732
+ url: `${auth.baseUrl}/bank-controls/v1/global-rate-tiers/${globalTier}`,
1733
+ headers: buildHeaders(auth, xAuthorization, sourceId),
1734
+ });
1735
+
1736
+ return response.body;
1737
+ },
1738
+ });
1739
+
1740
+ export const bank_controls_user_defined_field_descriptions = createAction({
1741
+ name: 'bank_controls_user_defined_field_descriptions',
1742
+ auth: fisHorizonAuth,
1743
+ displayName: 'Bank Controls - Miscellaneous - User Defined Field Descriptions',
1744
+ description: 'Retrieve a list of user defined field descriptions.',
1745
+ props: {
1746
+ xAuthorization: Property.ShortText({
1747
+ displayName: 'Authorization Token',
1748
+ description: 'JWT token for authorization',
1749
+ required: true,
1750
+ }),
1751
+ sourceId: Property.ShortText({
1752
+ displayName: 'Source ID',
1753
+ description: 'Optional: 6 character ID provided by FIS',
1754
+ required: false,
1755
+ }),
1756
+ applicationCode: Property.StaticDropdown({
1757
+ displayName: 'Application Code',
1758
+ description: 'Application code',
1759
+ required: true,
1760
+ options: {
1761
+ options: [
1762
+ { label: 'Demand Deposit', value: 'DD' },
1763
+ { label: 'Certificate of Deposit', value: 'CD' },
1764
+ { label: 'Collections', value: 'CO' },
1765
+ { label: 'Collateral Tracking', value: 'CT' },
1766
+ { label: 'Individual Retirement', value: 'IR' },
1767
+ { label: 'Loan System', value: 'LN' },
1768
+ { label: 'Mortgage Loans', value: 'ML' },
1769
+ { label: 'Relationship Management', value: 'RM' },
1770
+ { label: 'Savings', value: 'SV' },
1771
+ { label: 'Dealer', value: 'DL' },
1772
+ ],
1773
+ },
1774
+ }),
1775
+ fromField: Property.Number({
1776
+ displayName: 'From Field',
1777
+ description: 'Optional: Starting field number (1-9999)',
1778
+ required: false,
1779
+ }),
1780
+ toField: Property.Number({
1781
+ displayName: 'To Field',
1782
+ description: 'Optional: Ending field number (1-9999)',
1783
+ required: false,
1784
+ }),
1785
+ },
1786
+ async run(context) {
1787
+ const auth = context.auth as any;
1788
+ const { xAuthorization, sourceId, applicationCode, fromField, toField } = context.propsValue;
1789
+
1790
+ const queryParams: Record<string, string> = {};
1791
+ if (fromField) queryParams['fromField'] = String(fromField);
1792
+ if (toField) queryParams['toField'] = String(toField);
1793
+
1794
+ const response = await httpClient.sendRequest({
1795
+ method: HttpMethod.GET,
1796
+ url: `${auth.baseUrl}/bank-controls/v1/accounts/${applicationCode}/user-defined-field-descriptions`,
1797
+ headers: buildHeaders(auth, xAuthorization, sourceId),
1798
+ queryParams,
1799
+ });
1800
+
1801
+ return response.body;
1802
+ },
1803
+ });
1804
+
1805
+ // ============================================================================
1806
+ // RATES AND TIERS
1807
+ // ============================================================================
1808
+
1809
+ export const bank_controls_central_lookup_records = createAction({
1810
+ name: 'bank_controls_central_lookup_records',
1811
+ auth: fisHorizonAuth,
1812
+ displayName: 'Bank Controls - Rates and Tiers - Central Lookup Records',
1813
+ description: 'Retrieve a detailed list of central lookup records.',
1814
+ props: {
1815
+ xAuthorization: Property.ShortText({
1816
+ displayName: 'Authorization Token',
1817
+ description: 'JWT token for authorization',
1818
+ required: true,
1819
+ }),
1820
+ sourceId: Property.ShortText({
1821
+ displayName: 'Source ID',
1822
+ description: 'Optional: 6 character ID provided by FIS',
1823
+ required: false,
1824
+ }),
1825
+ applicationCode: Property.ShortText({
1826
+ displayName: 'Application Code',
1827
+ description: 'Central Lookup Application Code (blank is valid when codeType is RMINTYPE)',
1828
+ required: true,
1829
+ }),
1830
+ codeType: Property.ShortText({
1831
+ displayName: 'Code Type',
1832
+ description: 'Central Lookup Code Type (e.g., PTYP, RMINTYPE)',
1833
+ required: true,
1834
+ }),
1835
+ firstNext: Property.StaticDropdown({
1836
+ displayName: 'First/Next',
1837
+ description: 'First or Next request flag',
1838
+ required: true,
1839
+ defaultValue: 'F',
1840
+ options: {
1841
+ options: [
1842
+ { label: 'First Request', value: 'F' },
1843
+ { label: 'Next Request', value: 'N' },
1844
+ ],
1845
+ },
1846
+ }),
1847
+ returnNumber: Property.Number({
1848
+ displayName: 'Return Number',
1849
+ description: 'Number of records to return (1-999)',
1850
+ required: true,
1851
+ defaultValue: 999,
1852
+ }),
1853
+ },
1854
+ async run(context) {
1855
+ const auth = context.auth as any;
1856
+ const { xAuthorization, sourceId, applicationCode, codeType, firstNext, returnNumber } = context.propsValue;
1857
+
1858
+ const response = await httpClient.sendRequest({
1859
+ method: HttpMethod.GET,
1860
+ url: `${auth.baseUrl}/bank-controls/v1/central-lookup-records`,
1861
+ headers: buildHeaders(auth, xAuthorization, sourceId),
1862
+ queryParams: {
1863
+ applicationCode: applicationCode,
1864
+ codeType: codeType,
1865
+ firstNext: firstNext,
1866
+ returnNumber: String(returnNumber),
1867
+ },
1868
+ });
1869
+
1870
+ return response.body;
1871
+ },
1872
+ });
1873
+
1874
+ export const bank_controls_global_interest_rates = createAction({
1875
+ name: 'bank_controls_global_interest_rates',
1876
+ auth: fisHorizonAuth,
1877
+ displayName: 'Bank Controls - Rates and Tiers - Global Interest Rates',
1878
+ description: 'Retrieve the interest rate for a given index or tier.',
1879
+ props: {
1880
+ xAuthorization: Property.ShortText({
1881
+ displayName: 'Authorization Token',
1882
+ description: 'JWT token for authorization',
1883
+ required: true,
1884
+ }),
1885
+ sourceId: Property.ShortText({
1886
+ displayName: 'Source ID',
1887
+ description: 'Optional: 6 character ID provided by FIS',
1888
+ required: false,
1889
+ }),
1890
+ applicationCode: Property.StaticDropdown({
1891
+ displayName: 'Application Code',
1892
+ description: 'Application code',
1893
+ required: true,
1894
+ options: {
1895
+ options: [
1896
+ { label: 'Demand Deposit', value: 'DD' },
1897
+ { label: 'Loan System', value: 'LN' },
1898
+ { label: 'Savings', value: 'SV' },
1899
+ ],
1900
+ },
1901
+ }),
1902
+ globalIndex: Property.ShortText({
1903
+ displayName: 'Global Index',
1904
+ description: 'Conditional: Either globalIndex or globalTier must be provided',
1905
+ required: false,
1906
+ }),
1907
+ globalTier: Property.ShortText({
1908
+ displayName: 'Global Tier',
1909
+ description: 'Conditional: Either globalIndex or globalTier must be provided',
1910
+ required: false,
1911
+ }),
1912
+ interestType: Property.Number({
1913
+ displayName: 'Interest Type',
1914
+ description: 'For DD and SV: Either interestType or tierMethod must be provided',
1915
+ required: false,
1916
+ }),
1917
+ tierMethod: Property.StaticDropdown({
1918
+ displayName: 'Tier Method',
1919
+ description: 'For DD and SV: Either interestType or tierMethod must be provided. Required for Loans.',
1920
+ required: false,
1921
+ options: {
1922
+ options: [
1923
+ { label: 'Split Balance', value: 'S' },
1924
+ { label: 'Whole Balance', value: 'W' },
1925
+ ],
1926
+ },
1927
+ }),
1928
+ balance: Property.Number({
1929
+ displayName: 'Balance',
1930
+ description: 'Optional: Balance for tier lookup',
1931
+ required: false,
1932
+ }),
1933
+ effectiveDate: Property.Number({
1934
+ displayName: 'Effective Date',
1935
+ description: 'Optional: Effective date in CCYYMMDD format',
1936
+ required: false,
1937
+ }),
1938
+ backDateRequest: Property.StaticDropdown({
1939
+ displayName: 'Back Date Request',
1940
+ description: 'Optional: For Loans and Global Tiers only',
1941
+ required: false,
1942
+ options: {
1943
+ options: [
1944
+ { label: 'No Back Date Request', value: '' },
1945
+ { label: 'Return Back Date for Tier', value: 'B' },
1946
+ { label: 'Return Next Effective Date', value: 'N' },
1947
+ ],
1948
+ },
1949
+ }),
1950
+ varianceAdjustment: Property.Number({
1951
+ displayName: 'Variance Adjustment',
1952
+ description: 'Optional: Amount to adjust the returned rate',
1953
+ required: false,
1954
+ }),
1955
+ varianceAdjustmentType: Property.StaticDropdown({
1956
+ displayName: 'Variance Adjustment Type',
1957
+ description: 'Optional: Add or Subtract the variance adjustment',
1958
+ required: false,
1959
+ options: {
1960
+ options: [
1961
+ { label: 'Add', value: 'A' },
1962
+ { label: 'Subtract', value: 'S' },
1963
+ ],
1964
+ },
1965
+ }),
1966
+ },
1967
+ async run(context) {
1968
+ const auth = context.auth as any;
1969
+ const { xAuthorization, sourceId, applicationCode, globalIndex, globalTier, interestType, tierMethod, balance, effectiveDate, backDateRequest, varianceAdjustment, varianceAdjustmentType } = context.propsValue;
1970
+
1971
+ const queryParams: Record<string, string> = {};
1972
+ if (globalIndex) queryParams['globalIndex'] = globalIndex;
1973
+ if (globalTier) queryParams['globalTier'] = globalTier;
1974
+ if (interestType !== undefined && interestType !== null) queryParams['interestType'] = String(interestType);
1975
+ if (tierMethod) queryParams['tierMethod'] = tierMethod;
1976
+ if (balance !== undefined && balance !== null) queryParams['balance'] = String(balance);
1977
+ if (effectiveDate) queryParams['effectiveDate'] = String(effectiveDate);
1978
+ if (backDateRequest) queryParams['backDateRequest'] = backDateRequest;
1979
+ if (varianceAdjustment !== undefined && varianceAdjustment !== null) queryParams['varianceAdjustment'] = String(varianceAdjustment);
1980
+ if (varianceAdjustmentType) queryParams['varianceAdjustmentType'] = varianceAdjustmentType;
1981
+
1982
+ const response = await httpClient.sendRequest({
1983
+ method: HttpMethod.GET,
1984
+ url: `${auth.baseUrl}/bank-controls/v1/global-interest-rates/${applicationCode}`,
1985
+ headers: buildHeaders(auth, xAuthorization, sourceId),
1986
+ queryParams,
1987
+ });
1988
+
1989
+ return response.body;
1990
+ },
1991
+ });
1992
+
1993
+ // ============================================================================
1994
+ // AGGREGATE ACCOUNT DOWNLOADS
1995
+ // ============================================================================
1996
+
1997
+ export const bank_controls_aggregation_descriptions_detail = createAction({
1998
+ name: 'bank_controls_aggregation_descriptions_detail',
1999
+ auth: fisHorizonAuth,
2000
+ displayName: 'Bank Controls - Aggregate Accounts - Descriptions Detail',
2001
+ description: 'Retrieve the details for an aggregate application description fields.',
2002
+ props: {
2003
+ xAuthorization: Property.ShortText({
2004
+ displayName: 'Authorization Token',
2005
+ description: 'JWT token for authorization',
2006
+ required: true,
2007
+ }),
2008
+ sourceId: Property.ShortText({
2009
+ displayName: 'Source ID',
2010
+ description: 'Optional: 6 character ID provided by FIS',
2011
+ required: false,
2012
+ }),
2013
+ applicationCode: Property.ShortText({
2014
+ displayName: 'Application Code',
2015
+ description: 'External Application Code (up to 2 characters)',
2016
+ required: true,
2017
+ }),
2018
+ },
2019
+ async run(context) {
2020
+ const auth = context.auth as any;
2021
+ const { xAuthorization, sourceId, applicationCode } = context.propsValue;
2022
+
2023
+ const response = await httpClient.sendRequest({
2024
+ method: HttpMethod.GET,
2025
+ url: `${auth.baseUrl}/bank-controls/v1/accounts/${applicationCode}/aggregation-descriptions`,
2026
+ headers: buildHeaders(auth, xAuthorization, sourceId),
2027
+ });
2028
+
2029
+ return response.body;
2030
+ },
2031
+ });
2032
+
2033
+ export const bank_controls_aggregation_descriptions_list = createAction({
2034
+ name: 'bank_controls_aggregation_descriptions_list',
2035
+ auth: fisHorizonAuth,
2036
+ displayName: 'Bank Controls - Aggregate Accounts - Descriptions List',
2037
+ description: 'Retrieve a list of aggregate applications.',
2038
+ props: {
2039
+ xAuthorization: Property.ShortText({
2040
+ displayName: 'Authorization Token',
2041
+ description: 'JWT token for authorization',
2042
+ required: true,
2043
+ }),
2044
+ sourceId: Property.ShortText({
2045
+ displayName: 'Source ID',
2046
+ description: 'Optional: 6 character ID provided by FIS',
2047
+ required: false,
2048
+ }),
2049
+ },
2050
+ async run(context) {
2051
+ const auth = context.auth as any;
2052
+ const { xAuthorization, sourceId } = context.propsValue;
2053
+
2054
+ const response = await httpClient.sendRequest({
2055
+ method: HttpMethod.GET,
2056
+ url: `${auth.baseUrl}/bank-controls/v1/accounts/aggregation-descriptions`,
2057
+ headers: buildHeaders(auth, xAuthorization, sourceId),
2058
+ });
2059
+
2060
+ return response.body;
2061
+ },
2062
+ });
2063
+
2064
+ // ============================================================================
2065
+ // ACCOUNT NUMBER GENERATION
2066
+ // ============================================================================
2067
+
2068
+ export const bank_controls_account_number_generation = createAction({
2069
+ name: 'bank_controls_account_number_generation',
2070
+ auth: fisHorizonAuth,
2071
+ displayName: 'Bank Controls - Account - Number Generation',
2072
+ description: 'Retrieve an automatically generated account number.',
2073
+ props: {
2074
+ xAuthorization: Property.ShortText({
2075
+ displayName: 'Authorization Token',
2076
+ description: 'JWT token for authorization',
2077
+ required: true,
2078
+ }),
2079
+ sourceId: Property.ShortText({
2080
+ displayName: 'Source ID',
2081
+ description: 'Optional: 6 character ID provided by FIS',
2082
+ required: false,
2083
+ }),
2084
+ applicationCode: Property.StaticDropdown({
2085
+ displayName: 'Application Code',
2086
+ description: 'Application code',
2087
+ required: true,
2088
+ options: {
2089
+ options: [
2090
+ { label: 'Demand Deposit', value: 'DD' },
2091
+ { label: 'Certificate of Deposit', value: 'CD' },
2092
+ { label: 'Individual Retirement', value: 'IR' },
2093
+ { label: 'Loan System', value: 'LN' },
2094
+ { label: 'Mortgage Loans', value: 'ML' },
2095
+ { label: 'Savings', value: 'SV' },
2096
+ ],
2097
+ },
2098
+ }),
2099
+ branch: Property.Number({
2100
+ displayName: 'Branch',
2101
+ description: 'Branch Number (up to 4 numeric digits)',
2102
+ required: true,
2103
+ }),
2104
+ },
2105
+ async run(context) {
2106
+ const auth = context.auth as any;
2107
+ const { xAuthorization, sourceId, applicationCode, branch } = context.propsValue;
2108
+
2109
+ const response = await httpClient.sendRequest({
2110
+ method: HttpMethod.GET,
2111
+ url: `${auth.baseUrl}/bank-controls/v1/accounts/${applicationCode}/${branch}/account-number`,
2112
+ headers: buildHeaders(auth, xAuthorization, sourceId),
2113
+ });
2114
+
2115
+ return response.body;
2116
+ },
2117
+ });
2118
+
2119
+ // ============================================================================
2120
+ // COLLATERAL DOWNLOADS
2121
+ // ============================================================================
2122
+
2123
+ export const bank_controls_collateral_type_list = createAction({
2124
+ name: 'bank_controls_collateral_type_list',
2125
+ auth: fisHorizonAuth,
2126
+ displayName: 'Bank Controls - Collateral - Type List',
2127
+ description: 'Retrieve a list of collateral types.',
2128
+ props: {
2129
+ xAuthorization: Property.ShortText({
2130
+ displayName: 'Authorization Token',
2131
+ description: 'JWT token for authorization',
2132
+ required: true,
2133
+ }),
2134
+ sourceId: Property.ShortText({
2135
+ displayName: 'Source ID',
2136
+ description: 'Optional: 6 character ID provided by FIS',
2137
+ required: false,
2138
+ }),
2139
+ firstNext: Property.StaticDropdown({
2140
+ displayName: 'First/Next',
2141
+ description: 'First or Next request flag',
2142
+ required: true,
2143
+ defaultValue: 'F',
2144
+ options: {
2145
+ options: [
2146
+ { label: 'First Request', value: 'F' },
2147
+ { label: 'Next Request', value: 'N' },
2148
+ ],
2149
+ },
2150
+ }),
2151
+ },
2152
+ async run(context) {
2153
+ const auth = context.auth as any;
2154
+ const { xAuthorization, sourceId, firstNext } = context.propsValue;
2155
+
2156
+ const response = await httpClient.sendRequest({
2157
+ method: HttpMethod.GET,
2158
+ url: `${auth.baseUrl}/bank-controls/v1/collateral-type`,
2159
+ headers: buildHeaders(auth, xAuthorization, sourceId),
2160
+ queryParams: {
2161
+ firstNext: firstNext,
2162
+ },
2163
+ });
2164
+
2165
+ return response.body;
2166
+ },
2167
+ });
2168
+
2169
+ // ============================================================================
2170
+ // APY CALCULATION
2171
+ // ============================================================================
2172
+
2173
+ export const bank_controls_apy_calculation = createAction({
2174
+ name: 'bank_controls_apy_calculation',
2175
+ auth: fisHorizonAuth,
2176
+ displayName: 'Bank Controls - Rates and Tiers - APY Calculation',
2177
+ description: 'Retrieve the calculated APY (Annual Percentage Yield) of an interest bearing account.',
2178
+ props: {
2179
+ xAuthorization: Property.ShortText({
2180
+ displayName: 'Authorization Token',
2181
+ description: 'JWT token for authorization',
2182
+ required: true,
2183
+ }),
2184
+ sourceId: Property.ShortText({
2185
+ displayName: 'Source ID',
2186
+ description: 'Optional: 6 character ID provided by FIS',
2187
+ required: false,
2188
+ }),
2189
+ applicationCode: Property.StaticDropdown({
2190
+ displayName: 'Application Code',
2191
+ description: 'Application code',
2192
+ required: true,
2193
+ options: {
2194
+ options: [
2195
+ { label: 'Demand Deposit', value: 'DD' },
2196
+ { label: 'Certificate of Deposit', value: 'CD' },
2197
+ { label: 'Individual Retirement', value: 'IR' },
2198
+ { label: 'Savings', value: 'SV' },
2199
+ ],
2200
+ },
2201
+ }),
2202
+ productCode: Property.ShortText({
2203
+ displayName: 'Product Code',
2204
+ description: 'Product type (up to 10 characters)',
2205
+ required: true,
2206
+ }),
2207
+ branch: Property.Number({
2208
+ displayName: 'Branch',
2209
+ description: 'Branch Number (up to 4 numeric digits)',
2210
+ required: true,
2211
+ }),
2212
+ accountNumber: Property.ShortText({
2213
+ displayName: 'Account Number',
2214
+ description: 'Optional: Account number (right justified, padded with zeros)',
2215
+ required: false,
2216
+ }),
2217
+ calledFrom: Property.StaticDropdown({
2218
+ displayName: 'Called From',
2219
+ description: 'Optional: Specifies the call type',
2220
+ required: false,
2221
+ options: {
2222
+ options: [
2223
+ { label: 'Account Level', value: 'A' },
2224
+ { label: 'Product Type Level', value: 'P' },
2225
+ { label: 'Single APY Account Level (CD/IR only)', value: 'S' },
2226
+ ],
2227
+ },
2228
+ }),
2229
+ compoundingFrequency: Property.StaticDropdown({
2230
+ displayName: 'Compounding Frequency',
2231
+ description: 'Optional: Compounding frequency',
2232
+ required: false,
2233
+ options: {
2234
+ options: [
2235
+ { label: 'Simple', value: 'S' },
2236
+ { label: 'Daily', value: 'D' },
2237
+ { label: 'Monthly', value: 'M' },
2238
+ ],
2239
+ },
2240
+ }),
2241
+ effectiveDate: Property.Number({
2242
+ displayName: 'Effective Date',
2243
+ description: 'Optional: Effective date in CCYYMMDD format',
2244
+ required: false,
2245
+ }),
2246
+ flatRate: Property.Number({
2247
+ displayName: 'Flat Rate',
2248
+ description: 'Optional: Flat rate value for APY calculation',
2249
+ required: false,
2250
+ }),
2251
+ interestTerm: Property.Number({
2252
+ displayName: 'Interest Term',
2253
+ description: 'Optional: Interest term',
2254
+ required: false,
2255
+ }),
2256
+ interestType: Property.ShortText({
2257
+ displayName: 'Interest Type',
2258
+ description: 'Optional: Interest type',
2259
+ required: false,
2260
+ }),
2261
+ maturityTerm: Property.Number({
2262
+ displayName: 'Maturity Term',
2263
+ description: 'Optional: Maturity term',
2264
+ required: false,
2265
+ }),
2266
+ maturityType: Property.ShortText({
2267
+ displayName: 'Maturity Type',
2268
+ description: 'Optional: Maturity type',
2269
+ required: false,
2270
+ }),
2271
+ promotionalCode: Property.ShortText({
2272
+ displayName: 'Promotional Code',
2273
+ description: 'Optional: Promotional code (DD/SV only)',
2274
+ required: false,
2275
+ }),
2276
+ rateIndex: Property.ShortText({
2277
+ displayName: 'Rate Index',
2278
+ description: 'Optional: Rate index',
2279
+ required: false,
2280
+ }),
2281
+ rateTier: Property.ShortText({
2282
+ displayName: 'Rate Tier',
2283
+ description: 'Optional: Rate tier',
2284
+ required: false,
2285
+ }),
2286
+ region: Property.ShortText({
2287
+ displayName: 'Region',
2288
+ description: 'Optional: Region for regional rates',
2289
+ required: false,
2290
+ }),
2291
+ statementCycleCode: Property.ShortText({
2292
+ displayName: 'Statement Cycle Code',
2293
+ description: 'Optional: Statement cycle code (DD/SV only)',
2294
+ required: false,
2295
+ }),
2296
+ },
2297
+ async run(context) {
2298
+ const auth = context.auth as any;
2299
+ const { xAuthorization, sourceId, applicationCode, productCode, branch, accountNumber, calledFrom, compoundingFrequency, effectiveDate, flatRate, interestTerm, interestType, maturityTerm, maturityType, promotionalCode, rateIndex, rateTier, region, statementCycleCode } = context.propsValue;
2300
+
2301
+ const queryParams: Record<string, string> = {
2302
+ branch: String(branch),
2303
+ };
2304
+ if (accountNumber) queryParams['accountNumber'] = accountNumber;
2305
+ if (calledFrom) queryParams['calledFrom'] = calledFrom;
2306
+ if (compoundingFrequency) queryParams['compoundingFrequency'] = compoundingFrequency;
2307
+ if (effectiveDate) queryParams['effectiveDate'] = String(effectiveDate);
2308
+ if (flatRate !== undefined && flatRate !== null) queryParams['flatRate'] = String(flatRate);
2309
+ if (interestTerm !== undefined && interestTerm !== null) queryParams['interestTerm'] = String(interestTerm);
2310
+ if (interestType) queryParams['interestType'] = interestType;
2311
+ if (maturityTerm !== undefined && maturityTerm !== null) queryParams['maturityTerm'] = String(maturityTerm);
2312
+ if (maturityType) queryParams['maturityType'] = maturityType;
2313
+ if (promotionalCode) queryParams['promotionalCode'] = promotionalCode;
2314
+ if (rateIndex) queryParams['rateIndex'] = rateIndex;
2315
+ if (rateTier) queryParams['rateTier'] = rateTier;
2316
+ if (region) queryParams['region'] = region;
2317
+ if (statementCycleCode) queryParams['statementCycleCode'] = statementCycleCode;
2318
+
2319
+ const response = await httpClient.sendRequest({
2320
+ method: HttpMethod.GET,
2321
+ url: `${auth.baseUrl}/bank-controls/v1/accounts/${applicationCode}/${productCode}/apy-calculation`,
2322
+ headers: buildHeaders(auth, xAuthorization, sourceId),
2323
+ queryParams,
2324
+ });
2325
+
2326
+ return response.body;
2327
+ },
2328
+ });