@vqnguyen1/piece-fis-horizon 0.0.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.
package/README.md ADDED
@@ -0,0 +1,29 @@
1
+ # FIS Horizon
2
+
3
+ This piece provides integration with FIS Horizon banking APIs.
4
+
5
+ ## Authentication
6
+
7
+ This piece requires the following authentication parameters:
8
+
9
+ - **Base URL**: The base URL for the FIS Horizon API (e.g., `https://api-gw-uat.fisglobal.com/rest/horizon`)
10
+ - **Organization ID**: Your FIS Organization ID (UUID format)
11
+ - **User ID**: Your FIS Horizon user ID
12
+ - **User Secret**: Your FIS Horizon user secret/password
13
+
14
+ ## Available Actions
15
+
16
+ ### Authorization - Get Token
17
+ Retrieve an authorization token using user credentials. This token is required for all other API calls.
18
+
19
+ ### Customer - Search Relationship Summary
20
+ Search for customer relationship summary including account details.
21
+
22
+ ### Custom API Call
23
+ Make custom API calls to any FIS Horizon endpoint.
24
+
25
+ ## Usage
26
+
27
+ 1. Configure your authentication credentials
28
+ 2. Use the "Authorization - Get Token" action to obtain a JWT token
29
+ 3. Use the JWT token in subsequent API calls via the x-authorization header
package/package.json ADDED
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "@vqnguyen1/piece-fis-horizon",
3
+ "version": "0.0.1",
4
+ "license": "MIT",
5
+ "main": "src/index.ts",
6
+ "publishConfig": {
7
+ "access": "public"
8
+ },
9
+ "peerDependencies": {
10
+ "@activepieces/pieces-framework": "*",
11
+ "@activepieces/pieces-common": "*",
12
+ "@activepieces/shared": "*"
13
+ },
14
+ "dependencies": {},
15
+ "types": "./src/index.d.ts",
16
+ "type": "commonjs"
17
+ }
package/src/index.d.ts ADDED
@@ -0,0 +1,12 @@
1
+ export declare const fisHorizonAuth: import("@activepieces/pieces-framework").CustomAuthProperty<{
2
+ baseUrl: import("@activepieces/pieces-framework").ShortTextProperty<true>;
3
+ organizationId: import("@activepieces/pieces-framework").ShortTextProperty<true>;
4
+ userId: import("@activepieces/pieces-framework").ShortTextProperty<true>;
5
+ userSecret: import("@activepieces/pieces-framework").SecretTextProperty<true>;
6
+ }>;
7
+ export declare const fisHorizon: import("@activepieces/pieces-framework").Piece<import("@activepieces/pieces-framework").CustomAuthProperty<{
8
+ baseUrl: import("@activepieces/pieces-framework").ShortTextProperty<true>;
9
+ organizationId: import("@activepieces/pieces-framework").ShortTextProperty<true>;
10
+ userId: import("@activepieces/pieces-framework").ShortTextProperty<true>;
11
+ userSecret: import("@activepieces/pieces-framework").SecretTextProperty<true>;
12
+ }>>;
package/src/index.js ADDED
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fisHorizon = exports.fisHorizonAuth = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const pieces_framework_1 = require("@activepieces/pieces-framework");
6
+ const shared_1 = require("@activepieces/shared");
7
+ const pieces_common_1 = require("@activepieces/pieces-common");
8
+ const get_authorization_token_1 = require("./lib/actions/get-authorization-token");
9
+ const search_customer_relationship_summary_1 = require("./lib/actions/search-customer-relationship-summary");
10
+ exports.fisHorizonAuth = pieces_framework_1.PieceAuth.CustomAuth({
11
+ description: 'FIS Horizon API credentials',
12
+ required: true,
13
+ props: {
14
+ baseUrl: pieces_framework_1.Property.ShortText({
15
+ displayName: 'Base URL',
16
+ description: 'The base URL for the FIS Horizon API (e.g., https://api-gw-uat.fisglobal.com/rest/horizon)',
17
+ required: true,
18
+ defaultValue: 'https://api-gw-uat.fisglobal.com/rest/horizon',
19
+ }),
20
+ organizationId: pieces_framework_1.Property.ShortText({
21
+ displayName: 'Organization ID',
22
+ description: 'Your FIS Organization ID (UUID format)',
23
+ required: true,
24
+ }),
25
+ userId: pieces_framework_1.Property.ShortText({
26
+ displayName: 'User ID',
27
+ description: 'Your FIS Horizon user ID',
28
+ required: true,
29
+ }),
30
+ userSecret: pieces_framework_1.PieceAuth.SecretText({
31
+ displayName: 'User Secret',
32
+ description: 'Your FIS Horizon user secret/password',
33
+ required: true,
34
+ }),
35
+ },
36
+ });
37
+ exports.fisHorizon = (0, pieces_framework_1.createPiece)({
38
+ displayName: 'FIS Horizon',
39
+ auth: exports.fisHorizonAuth,
40
+ minimumSupportedRelease: '0.20.0',
41
+ logoUrl: 'https://yt3.googleusercontent.com/ytc/AIdro_m-dmhaXsmxBqi4nOVPXVX8ydLn1f781GsWvJ2oKG73TcA=s900-c-k-c0x00ffffff-no-rj',
42
+ authors: ['vqnguyen1'],
43
+ categories: [shared_1.PieceCategory.BUSINESS_INTELLIGENCE],
44
+ actions: [
45
+ get_authorization_token_1.getAuthorizationToken,
46
+ search_customer_relationship_summary_1.searchCustomerRelationshipSummary,
47
+ (0, pieces_common_1.createCustomApiCallAction)({
48
+ baseUrl: (auth) => auth.baseUrl || 'https://api-gw-uat.fisglobal.com/rest/horizon',
49
+ auth: exports.fisHorizonAuth,
50
+ authMapping: (auth) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
51
+ const organizationId = auth.organizationId;
52
+ const uuid = crypto.randomUUID();
53
+ return {
54
+ 'organization-id': organizationId,
55
+ 'uuid': uuid,
56
+ };
57
+ }),
58
+ }),
59
+ ],
60
+ triggers: [],
61
+ });
62
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/pieces/custom/fis-horizon/src/index.ts"],"names":[],"mappings":";;;;AAAA,qEAAkF;AAClF,iDAAqD;AACrD,+DAAwE;AACxE,mFAA8E;AAC9E,6GAAuG;AAE1F,QAAA,cAAc,GAAG,4BAAS,CAAC,UAAU,CAAC;IACjD,WAAW,EAAE,6BAA6B;IAC1C,QAAQ,EAAE,IAAI;IACd,KAAK,EAAE;QACL,OAAO,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAC1B,WAAW,EAAE,UAAU;YACvB,WAAW,EAAE,4FAA4F;YACzG,QAAQ,EAAE,IAAI;YACd,YAAY,EAAE,+CAA+C;SAC9D,CAAC;QACF,cAAc,EAAE,2BAAQ,CAAC,SAAS,CAAC;YACjC,WAAW,EAAE,iBAAiB;YAC9B,WAAW,EAAE,wCAAwC;YACrD,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,MAAM,EAAE,2BAAQ,CAAC,SAAS,CAAC;YACzB,WAAW,EAAE,SAAS;YACtB,WAAW,EAAE,0BAA0B;YACvC,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,UAAU,EAAE,4BAAS,CAAC,UAAU,CAAC;YAC/B,WAAW,EAAE,aAAa;YAC1B,WAAW,EAAE,uCAAuC;YACpD,QAAQ,EAAE,IAAI;SACf,CAAC;KACH;CACF,CAAC,CAAC;AAEU,QAAA,UAAU,GAAG,IAAA,8BAAW,EAAC;IACpC,WAAW,EAAE,aAAa;IAC1B,IAAI,EAAE,sBAAc;IACpB,uBAAuB,EAAE,QAAQ;IACjC,OAAO,EAAE,sHAAsH;IAC/H,OAAO,EAAE,CAAC,WAAW,CAAC;IACtB,UAAU,EAAE,CAAC,sBAAa,CAAC,qBAAqB,CAAC;IACjD,OAAO,EAAE;QACP,+CAAqB;QACrB,wEAAiC;QACjC,IAAA,yCAAyB,EAAC;YACxB,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAE,IAAY,CAAC,OAAO,IAAI,+CAA+C;YAC3F,IAAI,EAAE,sBAAc;YACpB,WAAW,EAAE,CAAO,IAAI,EAAE,EAAE;gBAC1B,MAAM,cAAc,GAAI,IAAY,CAAC,cAAc,CAAC;gBACpD,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;gBACjC,OAAO;oBACL,iBAAiB,EAAE,cAAc;oBACjC,MAAM,EAAE,IAAI;iBACb,CAAC;YACJ,CAAC,CAAA;SACF,CAAC;KACH;IACD,QAAQ,EAAE,EAAE;CACb,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ export declare const getAuthorizationToken: import("@activepieces/pieces-framework").IAction<import("@activepieces/pieces-framework").CustomAuthProperty<{
2
+ baseUrl: import("@activepieces/pieces-framework").ShortTextProperty<true>;
3
+ organizationId: import("@activepieces/pieces-framework").ShortTextProperty<true>;
4
+ userId: import("@activepieces/pieces-framework").ShortTextProperty<true>;
5
+ userSecret: import("@activepieces/pieces-framework").SecretTextProperty<true>;
6
+ }>, {
7
+ newUserSecret: import("@activepieces/pieces-framework").ShortTextProperty<false>;
8
+ token: import("@activepieces/pieces-framework").ShortTextProperty<false>;
9
+ sourceId: import("@activepieces/pieces-framework").ShortTextProperty<false>;
10
+ }>;
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getAuthorizationToken = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const pieces_framework_1 = require("@activepieces/pieces-framework");
6
+ const pieces_common_1 = require("@activepieces/pieces-common");
7
+ const __1 = require("../..");
8
+ exports.getAuthorizationToken = (0, pieces_framework_1.createAction)({
9
+ name: 'authorization_get_token',
10
+ auth: __1.fisHorizonAuth,
11
+ displayName: 'Authorization - Get Token',
12
+ description: 'Retrieve an authorization token using user credentials. This token is required for all other API calls.',
13
+ props: {
14
+ newUserSecret: pieces_framework_1.Property.ShortText({
15
+ displayName: 'New User Secret',
16
+ description: 'Optional: Provide a new user secret to update the password',
17
+ required: false,
18
+ }),
19
+ token: pieces_framework_1.Property.ShortText({
20
+ displayName: 'SSO Token',
21
+ description: 'Optional: SSO Token for single sign-on authentication',
22
+ required: false,
23
+ }),
24
+ sourceId: pieces_framework_1.Property.ShortText({
25
+ displayName: 'Source ID',
26
+ description: 'Optional: 6 character ID provided by FIS',
27
+ required: false,
28
+ }),
29
+ },
30
+ run(context) {
31
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
32
+ const auth = context.auth;
33
+ const baseUrl = auth.baseUrl;
34
+ const organizationId = auth.organizationId;
35
+ const userId = auth.userId;
36
+ const userSecret = auth.userSecret;
37
+ const { newUserSecret, token, sourceId } = context.propsValue;
38
+ const uuid = crypto.randomUUID();
39
+ const headers = {
40
+ 'accept': 'application/json',
41
+ 'Content-Type': 'application/json',
42
+ 'organization-id': organizationId,
43
+ 'uuid': uuid,
44
+ };
45
+ if (sourceId) {
46
+ headers['source-id'] = sourceId;
47
+ }
48
+ const body = {
49
+ userId: userId,
50
+ userSecret: userSecret,
51
+ };
52
+ if (newUserSecret) {
53
+ body['newUserSecret'] = newUserSecret;
54
+ }
55
+ if (token) {
56
+ body['token'] = token;
57
+ }
58
+ const response = yield pieces_common_1.httpClient.sendRequest({
59
+ method: pieces_common_1.HttpMethod.PUT,
60
+ url: `${baseUrl}/authorization/v2/authorization`,
61
+ headers,
62
+ body,
63
+ });
64
+ return response.body;
65
+ });
66
+ },
67
+ });
68
+ //# sourceMappingURL=get-authorization-token.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-authorization-token.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/custom/fis-horizon/src/lib/actions/get-authorization-token.ts"],"names":[],"mappings":";;;;AAAA,qEAGwC;AACxC,+DAAqE;AACrE,6BAAuC;AAE1B,QAAA,qBAAqB,GAAG,IAAA,+BAAY,EAAC;IAChD,IAAI,EAAE,yBAAyB;IAC/B,IAAI,EAAE,kBAAc;IACpB,WAAW,EAAE,2BAA2B;IACxC,WAAW,EAAE,yGAAyG;IACtH,KAAK,EAAE;QACL,aAAa,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAChC,WAAW,EAAE,iBAAiB;YAC9B,WAAW,EAAE,4DAA4D;YACzE,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,KAAK,EAAE,2BAAQ,CAAC,SAAS,CAAC;YACxB,WAAW,EAAE,WAAW;YACxB,WAAW,EAAE,uDAAuD;YACpE,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,QAAQ,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAC3B,WAAW,EAAE,WAAW;YACxB,WAAW,EAAE,0CAA0C;YACvD,QAAQ,EAAE,KAAK;SAChB,CAAC;KACH;IACK,GAAG,CAAC,OAAO;;YACf,MAAM,IAAI,GAAG,OAAO,CAAC,IAAW,CAAC;YACjC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;YAC7B,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;YAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;YACnC,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC;YAE9D,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;YAEjC,MAAM,OAAO,GAA2B;gBACtC,QAAQ,EAAE,kBAAkB;gBAC5B,cAAc,EAAE,kBAAkB;gBAClC,iBAAiB,EAAE,cAAc;gBACjC,MAAM,EAAE,IAAI;aACb,CAAC;YAEF,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAO,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC;YAClC,CAAC;YAED,MAAM,IAAI,GAA2B;gBACnC,MAAM,EAAE,MAAM;gBACd,UAAU,EAAE,UAAU;aACvB,CAAC;YAEF,IAAI,aAAa,EAAE,CAAC;gBAClB,IAAI,CAAC,eAAe,CAAC,GAAG,aAAa,CAAC;YACxC,CAAC;YAED,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;YACxB,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,0BAAU,CAAC,WAAW,CAAC;gBAC5C,MAAM,EAAE,0BAAU,CAAC,GAAG;gBACtB,GAAG,EAAE,GAAG,OAAO,iCAAiC;gBAChD,OAAO;gBACP,IAAI;aACL,CAAC,CAAC;YAEH,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB,CAAC;KAAA;CACF,CAAC,CAAC"}
@@ -0,0 +1,15 @@
1
+ export declare const searchCustomerRelationshipSummary: import("@activepieces/pieces-framework").IAction<import("@activepieces/pieces-framework").CustomAuthProperty<{
2
+ baseUrl: import("@activepieces/pieces-framework").ShortTextProperty<true>;
3
+ organizationId: import("@activepieces/pieces-framework").ShortTextProperty<true>;
4
+ userId: import("@activepieces/pieces-framework").ShortTextProperty<true>;
5
+ userSecret: import("@activepieces/pieces-framework").SecretTextProperty<true>;
6
+ }>, {
7
+ xAuthorization: import("@activepieces/pieces-framework").ShortTextProperty<true>;
8
+ customerId: import("@activepieces/pieces-framework").ShortTextProperty<false>;
9
+ tin: import("@activepieces/pieces-framework").ShortTextProperty<false>;
10
+ interfaceFlag: import("@activepieces/pieces-framework").StaticDropdownProperty<string, false>;
11
+ ownershipType: import("@activepieces/pieces-framework").StaticDropdownProperty<string, false>;
12
+ numberOfAccountsToReturn: import("@activepieces/pieces-framework").NumberProperty<false>;
13
+ viewUndisplayedRelationships: import("@activepieces/pieces-framework").StaticDropdownProperty<string, false>;
14
+ sourceId: import("@activepieces/pieces-framework").ShortTextProperty<false>;
15
+ }>;
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.searchCustomerRelationshipSummary = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const pieces_framework_1 = require("@activepieces/pieces-framework");
6
+ const pieces_common_1 = require("@activepieces/pieces-common");
7
+ const __1 = require("../..");
8
+ exports.searchCustomerRelationshipSummary = (0, pieces_framework_1.createAction)({
9
+ name: 'customer_search_relationship_summary',
10
+ auth: __1.fisHorizonAuth,
11
+ displayName: 'Customer - Search Relationship Summary',
12
+ description: 'Retrieve a list of applications/accounts along with account details for a specific customer.',
13
+ props: {
14
+ xAuthorization: pieces_framework_1.Property.ShortText({
15
+ displayName: 'Authorization Token (JWT)',
16
+ description: 'The JWT token obtained from the Authorization - Get Token action',
17
+ required: true,
18
+ }),
19
+ customerId: pieces_framework_1.Property.ShortText({
20
+ displayName: 'Customer ID',
21
+ description: 'The customer ID to search for',
22
+ required: false,
23
+ }),
24
+ tin: pieces_framework_1.Property.ShortText({
25
+ displayName: 'TIN (Tax ID)',
26
+ description: 'The Tax Identification Number',
27
+ required: false,
28
+ }),
29
+ interfaceFlag: pieces_framework_1.Property.StaticDropdown({
30
+ displayName: 'Interface Flag',
31
+ description: 'Interface flag for the request',
32
+ required: false,
33
+ options: {
34
+ options: [
35
+ { label: 'IN - Internal', value: 'IN' },
36
+ { label: 'EX - External', value: 'EX' },
37
+ ],
38
+ },
39
+ }),
40
+ ownershipType: pieces_framework_1.Property.StaticDropdown({
41
+ displayName: 'Ownership Type',
42
+ description: 'The ownership type to filter by',
43
+ required: false,
44
+ options: {
45
+ options: [
46
+ { label: 'D - Direct', value: 'D' },
47
+ { label: 'I - Indirect', value: 'I' },
48
+ { label: 'S - Signer', value: 'S' },
49
+ ],
50
+ },
51
+ }),
52
+ numberOfAccountsToReturn: pieces_framework_1.Property.Number({
53
+ displayName: 'Number of Accounts to Return',
54
+ description: 'Maximum number of accounts to return',
55
+ required: false,
56
+ defaultValue: 999,
57
+ }),
58
+ viewUndisplayedRelationships: pieces_framework_1.Property.StaticDropdown({
59
+ displayName: 'View Undisplayed Relationships',
60
+ description: 'Whether to include undisplayed relationships',
61
+ required: false,
62
+ options: {
63
+ options: [
64
+ { label: 'Yes', value: 'Y' },
65
+ { label: 'No', value: 'N' },
66
+ ],
67
+ },
68
+ defaultValue: 'Y',
69
+ }),
70
+ sourceId: pieces_framework_1.Property.ShortText({
71
+ displayName: 'Source ID',
72
+ description: 'Optional: 6 character ID provided by FIS',
73
+ required: false,
74
+ }),
75
+ },
76
+ run(context) {
77
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
78
+ const auth = context.auth;
79
+ const baseUrl = auth.baseUrl;
80
+ const organizationId = auth.organizationId;
81
+ const { xAuthorization, customerId, tin, interfaceFlag, ownershipType, numberOfAccountsToReturn, viewUndisplayedRelationships, sourceId, } = context.propsValue;
82
+ const uuid = crypto.randomUUID();
83
+ const headers = {
84
+ 'accept': 'application/json',
85
+ 'Content-Type': 'application/json',
86
+ 'organization-id': organizationId,
87
+ 'uuid': uuid,
88
+ 'x-authorization': xAuthorization,
89
+ };
90
+ if (sourceId) {
91
+ headers['source-id'] = sourceId;
92
+ }
93
+ const body = {};
94
+ if (customerId) {
95
+ body['customerId'] = customerId;
96
+ }
97
+ if (tin) {
98
+ body['tin'] = tin;
99
+ }
100
+ if (interfaceFlag) {
101
+ body['interfaceFlag'] = interfaceFlag;
102
+ }
103
+ if (ownershipType) {
104
+ body['ownershipType'] = ownershipType;
105
+ }
106
+ if (numberOfAccountsToReturn) {
107
+ body['numberOfAccountsToReturn'] = numberOfAccountsToReturn;
108
+ }
109
+ if (viewUndisplayedRelationships) {
110
+ body['viewUndisplayedRelationships'] = viewUndisplayedRelationships;
111
+ }
112
+ const response = yield pieces_common_1.httpClient.sendRequest({
113
+ method: pieces_common_1.HttpMethod.POST,
114
+ url: `${baseUrl}/customer/v2/customers/relationship-summary/account-details/search`,
115
+ headers,
116
+ body,
117
+ });
118
+ return response.body;
119
+ });
120
+ },
121
+ });
122
+ //# sourceMappingURL=search-customer-relationship-summary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-customer-relationship-summary.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/custom/fis-horizon/src/lib/actions/search-customer-relationship-summary.ts"],"names":[],"mappings":"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"}