n8n-nodes-oracle-fusion-hcm 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/LICENSE.md +19 -0
  2. package/README.md +265 -0
  3. package/dist/credentials/OracleFusionHcmApi.credentials.d.ts +13 -0
  4. package/dist/credentials/OracleFusionHcmApi.credentials.js +63 -0
  5. package/dist/credentials/OracleFusionHcmApi.credentials.js.map +1 -0
  6. package/dist/credentials/OracleFusionHcmOAuth2Api.credentials.d.ts +12 -0
  7. package/dist/credentials/OracleFusionHcmOAuth2Api.credentials.js +63 -0
  8. package/dist/credentials/OracleFusionHcmOAuth2Api.credentials.js.map +1 -0
  9. package/dist/credentials/OracleJwtApi.credentials.d.ts +14 -0
  10. package/dist/credentials/OracleJwtApi.credentials.js +84 -0
  11. package/dist/credentials/OracleJwtApi.credentials.js.map +1 -0
  12. package/dist/credentials/oracleFusionHcm.svg +4 -0
  13. package/dist/icons/oracleFusionHcm.svg +4 -0
  14. package/dist/icons/oracleJwt.dark.svg +13 -0
  15. package/dist/icons/oracleJwt.svg +13 -0
  16. package/dist/nodes/OracleFusionHCM/OracleFusionHcm.node.d.ts +14 -0
  17. package/dist/nodes/OracleFusionHCM/OracleFusionHcm.node.js +156 -0
  18. package/dist/nodes/OracleFusionHCM/OracleFusionHcm.node.js.map +1 -0
  19. package/dist/nodes/OracleFusionHCM/OracleFusionHcm.node.json +18 -0
  20. package/dist/nodes/OracleFusionHCM/listSearch/getDepartments.d.ts +2 -0
  21. package/dist/nodes/OracleFusionHCM/listSearch/getDepartments.js +36 -0
  22. package/dist/nodes/OracleFusionHCM/listSearch/getDepartments.js.map +1 -0
  23. package/dist/nodes/OracleFusionHCM/listSearch/getEmployees.d.ts +2 -0
  24. package/dist/nodes/OracleFusionHCM/listSearch/getEmployees.js +36 -0
  25. package/dist/nodes/OracleFusionHCM/listSearch/getEmployees.js.map +1 -0
  26. package/dist/nodes/OracleFusionHCM/listSearch/getJobs.d.ts +2 -0
  27. package/dist/nodes/OracleFusionHCM/listSearch/getJobs.js +36 -0
  28. package/dist/nodes/OracleFusionHCM/listSearch/getJobs.js.map +1 -0
  29. package/dist/nodes/OracleFusionHCM/oracleFusionHcm.svg +4 -0
  30. package/dist/nodes/OracleFusionHCM/resources/absence/index.d.ts +2 -0
  31. package/dist/nodes/OracleFusionHCM/resources/absence/index.js +219 -0
  32. package/dist/nodes/OracleFusionHCM/resources/absence/index.js.map +1 -0
  33. package/dist/nodes/OracleFusionHCM/resources/assignment/index.d.ts +2 -0
  34. package/dist/nodes/OracleFusionHCM/resources/assignment/index.js +110 -0
  35. package/dist/nodes/OracleFusionHCM/resources/assignment/index.js.map +1 -0
  36. package/dist/nodes/OracleFusionHCM/resources/department/index.d.ts +2 -0
  37. package/dist/nodes/OracleFusionHCM/resources/department/index.js +122 -0
  38. package/dist/nodes/OracleFusionHCM/resources/department/index.js.map +1 -0
  39. package/dist/nodes/OracleFusionHCM/resources/employee/index.d.ts +2 -0
  40. package/dist/nodes/OracleFusionHCM/resources/employee/index.js +350 -0
  41. package/dist/nodes/OracleFusionHCM/resources/employee/index.js.map +1 -0
  42. package/dist/nodes/OracleFusionHCM/resources/job/index.d.ts +2 -0
  43. package/dist/nodes/OracleFusionHCM/resources/job/index.js +122 -0
  44. package/dist/nodes/OracleFusionHCM/resources/job/index.js.map +1 -0
  45. package/dist/nodes/OracleFusionHCM/resources/phone/index.d.ts +2 -0
  46. package/dist/nodes/OracleFusionHCM/resources/phone/index.js +152 -0
  47. package/dist/nodes/OracleFusionHCM/resources/phone/index.js.map +1 -0
  48. package/dist/nodes/OracleFusionHCM/resources/photo/index.d.ts +2 -0
  49. package/dist/nodes/OracleFusionHCM/resources/photo/index.js +79 -0
  50. package/dist/nodes/OracleFusionHCM/resources/photo/index.js.map +1 -0
  51. package/dist/nodes/OracleFusionHCM/resources/report/index.d.ts +2 -0
  52. package/dist/nodes/OracleFusionHCM/resources/report/index.js +131 -0
  53. package/dist/nodes/OracleFusionHCM/resources/report/index.js.map +1 -0
  54. package/dist/nodes/OracleFusionHCM/resources/worker/index.d.ts +2 -0
  55. package/dist/nodes/OracleFusionHCM/resources/worker/index.js +438 -0
  56. package/dist/nodes/OracleFusionHCM/resources/worker/index.js.map +1 -0
  57. package/dist/nodes/OracleFusionHCM/shared/descriptions.d.ts +4 -0
  58. package/dist/nodes/OracleFusionHCM/shared/descriptions.js +106 -0
  59. package/dist/nodes/OracleFusionHCM/shared/descriptions.js.map +1 -0
  60. package/dist/nodes/OracleFusionHCM/shared/transport.d.ts +3 -0
  61. package/dist/nodes/OracleFusionHCM/shared/transport.js +26 -0
  62. package/dist/nodes/OracleFusionHCM/shared/transport.js.map +1 -0
  63. package/dist/nodes/OracleFusionHCM/shared/utils.d.ts +6 -0
  64. package/dist/nodes/OracleFusionHCM/shared/utils.js +28 -0
  65. package/dist/nodes/OracleFusionHCM/shared/utils.js.map +1 -0
  66. package/dist/package.json +62 -0
  67. package/dist/tsconfig.tsbuildinfo +1 -0
  68. package/package.json +62 -0
package/LICENSE.md ADDED
@@ -0,0 +1,19 @@
1
+ Copyright 2022 n8n
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
4
+ this software and associated documentation files (the "Software"), to deal in
5
+ the Software without restriction, including without limitation the rights to
6
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
7
+ of the Software, and to permit persons to whom the Software is furnished to do
8
+ so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in all
11
+ copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,265 @@
1
+ ![Banner image](https://user-images.githubusercontent.com/10284570/173569848-c624317f-42b1-45a6-ab09-f0ea3c247648.png)
2
+
3
+ # n8n-nodes-oracle-fusion-hcm
4
+
5
+ Oracle Fusion HCM integration for [n8n](https://n8n.io). This package provides comprehensive nodes for interacting with Oracle Fusion HCM (Human Capital Management) REST APIs, enabling automation of HR processes, employee management, and workforce analytics.
6
+
7
+ > **⚠️ Self-Hosted Only**: This package is designed for self-hosted n8n installations only. It uses the `jsonwebtoken` library for JWT authentication, which is not compatible with n8n Cloud due to dependency restrictions.
8
+
9
+ ## Quick Start
10
+
11
+ **Install the package:**
12
+
13
+ ```bash
14
+ npm install n8n-nodes-oracle-fusion-hcm
15
+ ```
16
+
17
+ **To develop locally:**
18
+
19
+ ```bash
20
+ npm run dev
21
+ ```
22
+
23
+ This starts n8n with the Oracle Fusion HCM nodes loaded and hot reload enabled.
24
+
25
+ ## Features
26
+
27
+ This package includes comprehensive Oracle Fusion HCM integration:
28
+
29
+ - **[Oracle Fusion HCM Node](nodes/OracleFusionHCM/)** - Complete integration for Oracle HCM Cloud:
30
+ - **Employee Management** - Create, update, retrieve, and search employees
31
+ - **Department Operations** - Manage organizational units and departments
32
+ - **Job & Position Management** - Handle job definitions and positions
33
+ - **Workforce Analytics** - Access workforce data and reporting
34
+ - **Absence Management** - Manage employee absences and leave
35
+ - **Authentication** - Secure API access with OAuth2 or Basic Auth
36
+ - **List search functionality** - Dynamic dropdowns for employees, departments, and jobs
37
+ - **Proper error handling** - Comprehensive error messages and retry logic
38
+
39
+ ### Supported Resources
40
+
41
+ - **Employees** - Full CRUD operations for employee records
42
+ - **Departments** - Organizational structure management
43
+ - **Jobs** - Job definition and classification
44
+ - - **Absences** - Leave and absence tracking
45
+ - **Workers** - Worker assignment and management
46
+
47
+ ## Oracle Fusion HCM API Prerequisites
48
+
49
+ Before using this integration, ensure you have:
50
+
51
+ 1. **Oracle Fusion HCM Cloud instance** with API access enabled
52
+ 2. **API credentials** (OAuth2 client credentials or Basic Auth)
53
+ 3. **API endpoint URL** (e.g., `https://your-instance.fa.us2.oraclecloud.com`)
54
+ 4. **Required permissions** in Oracle HCM for the operations you want to perform
55
+
56
+ ## Resources & Documentation
57
+
58
+ - **[Oracle Fusion HCM REST API Documentation](https://docs.oracle.com/en/cloud/saas/human-resources/)**
59
+ - **[n8n Community Nodes](https://www.npmjs.com/search?q=keywords:n8n-community-node-package)**
60
+ - **[n8n Documentation](https://docs.n8n.io/)**
61
+
62
+ ## License
63
+
64
+ MIT
65
+
66
+ ## Support
67
+
68
+ For issues and feature requests, please use the [GitHub issues page](https://github.com/your-repo/n8n-nodes-oracle-fusion-hcm/issues).
69
+ - **[n8n Credentials](https://github.com/n8n-io/n8n/tree/master/packages/nodes-base/credentials)** - See how authentication is implemented for various services
70
+
71
+ These are excellent resources to understand how to structure your nodes, handle different API patterns, and implement advanced features.
72
+
73
+ ## Prerequisites
74
+
75
+ Before you begin, install the following on your development machine:
76
+
77
+ ### Required
78
+
79
+ - **[Node.js](https://nodejs.org/)** (v22 or higher) and npm
80
+ - Linux/Mac/WSL: Install via [nvm](https://github.com/nvm-sh/nvm)
81
+ - Windows: Follow [Microsoft's NodeJS guide](https://learn.microsoft.com/en-us/windows/dev-environment/javascript/nodejs-on-windows)
82
+ - **[git](https://git-scm.com/downloads)**
83
+
84
+ ### Recommended
85
+
86
+ - Follow n8n's [development environment setup guide](https://docs.n8n.io/integrations/creating-nodes/build/node-development-environment/)
87
+
88
+ > [!NOTE]
89
+ > The `@n8n/node-cli` is included as a dev dependency and will be installed automatically when you run `npm install`. The CLI includes n8n for local development, so you don't need to install n8n globally.
90
+
91
+ ## Getting Started with this Starter
92
+
93
+ Follow these steps to create your own n8n community node package:
94
+
95
+ ### 1. Create Your Repository
96
+
97
+ [Generate a new repository](https://github.com/n8n-io/n8n-nodes-starter/generate) from this template, then clone it:
98
+
99
+ ```bash
100
+ git clone https://github.com/<your-organization>/<your-repo-name>.git
101
+ cd <your-repo-name>
102
+ ```
103
+
104
+ ### 2. Install Dependencies
105
+
106
+ ```bash
107
+ npm install
108
+ ```
109
+
110
+ This installs all required dependencies including the `@n8n/node-cli`.
111
+
112
+ ### 3. Explore the Examples
113
+
114
+ Browse the example nodes in [nodes/](nodes/) and [credentials/](credentials/) to understand the structure:
115
+
116
+ - Start with [nodes/Example/](nodes/Example/) for a basic node
117
+ - Study [nodes/GithubIssues/](nodes/GithubIssues/) for a real-world implementation
118
+
119
+ ### 4. Build Your Node
120
+
121
+ Edit the example nodes to fit your use case, or create new node files by copying the structure from [nodes/Example/](nodes/Example/).
122
+
123
+ > [!TIP]
124
+ > If you want to scaffold a completely new node package, use `npm create @n8n/node` to start fresh with the CLI's interactive generator.
125
+
126
+ ### 5. Configure Your Package
127
+
128
+ Update `package.json` with your details:
129
+
130
+ - `name` - Your package name (must start with `n8n-nodes-`)
131
+ - `author` - Your name and email
132
+ - `repository` - Your repository URL
133
+ - `description` - What your node does
134
+
135
+ Make sure your node is registered in the `n8n.nodes` array.
136
+
137
+ ### 6. Develop and Test Locally
138
+
139
+ Start n8n with your node loaded:
140
+
141
+ ```bash
142
+ npm run dev
143
+ ```
144
+
145
+ This command runs `n8n-node dev` which:
146
+
147
+ - Builds your node with watch mode
148
+ - Starts n8n with your node available
149
+ - Automatically rebuilds when you make changes
150
+ - Opens n8n in your browser (usually http://localhost:5678)
151
+
152
+ You can now test your node in n8n workflows!
153
+
154
+ > [!NOTE]
155
+ > Learn more about CLI commands in the [@n8n/node-cli documentation](https://www.npmjs.com/package/@n8n/node-cli).
156
+
157
+ ### 7. Lint Your Code
158
+
159
+ Check for errors:
160
+
161
+ ```bash
162
+ npm run lint
163
+ ```
164
+
165
+ Auto-fix issues when possible:
166
+
167
+ ```bash
168
+ npm run lint:fix
169
+ ```
170
+
171
+ ### 8. Build for Production
172
+
173
+ When ready to publish:
174
+
175
+ ```bash
176
+ npm run build
177
+ ```
178
+
179
+ This compiles your TypeScript code to the `dist/` folder.
180
+
181
+ ### 9. Prepare for Publishing
182
+
183
+ Before publishing:
184
+
185
+ 1. **Update documentation**: Replace this README with your node's documentation. Use [README_TEMPLATE.md](README_TEMPLATE.md) as a starting point.
186
+ 2. **Update the LICENSE**: Add your details to the [LICENSE](LICENSE.md) file.
187
+ 3. **Test thoroughly**: Ensure your node works in different scenarios.
188
+
189
+ ### 10. Publish to npm
190
+
191
+ Publish your package to make it available to the n8n community:
192
+
193
+ ```bash
194
+ npm publish
195
+ ```
196
+
197
+ Learn more about [publishing to npm](https://docs.npmjs.com/packages-and-modules/contributing-packages-to-the-registry).
198
+
199
+ ### 11. Submit for Verification (Optional)
200
+
201
+ Get your node verified for n8n Cloud:
202
+
203
+ 1. Ensure your node meets the [requirements](https://docs.n8n.io/integrations/creating-nodes/deploy/submit-community-nodes/):
204
+ - Uses MIT license ✅ (included in this starter)
205
+ - No external package dependencies
206
+ - Follows n8n's design guidelines
207
+ - Passes quality and security review
208
+
209
+ 2. Submit through the [n8n Creator Portal](https://creators.n8n.io/nodes)
210
+
211
+ **Benefits of verification:**
212
+
213
+ - Available directly in n8n Cloud
214
+ - Discoverable in the n8n nodes panel
215
+ - Verified badge for quality assurance
216
+ - Increased visibility in the n8n community
217
+
218
+ ## Available Scripts
219
+
220
+ This starter includes several npm scripts to streamline development:
221
+
222
+ | Script | Description |
223
+ | --------------------- | ---------------------------------------------------------------- |
224
+ | `npm run dev` | Start n8n with your node and watch for changes (runs `n8n-node dev`) |
225
+ | `npm run build` | Compile TypeScript to JavaScript for production (runs `n8n-node build`) |
226
+ | `npm run build:watch` | Build in watch mode (auto-rebuild on changes) |
227
+ | `npm run lint` | Check your code for errors and style issues (runs `n8n-node lint`) |
228
+ | `npm run lint:fix` | Automatically fix linting issues when possible (runs `n8n-node lint --fix`) |
229
+ | `npm run release` | Create a new release (runs `n8n-node release`) |
230
+
231
+ > [!TIP]
232
+ > These scripts use the [@n8n/node-cli](https://www.npmjs.com/package/@n8n/node-cli) under the hood. You can also run CLI commands directly, e.g., `npx n8n-node dev`.
233
+
234
+ ## Troubleshooting
235
+
236
+ ### My node doesn't appear in n8n
237
+
238
+ 1. Make sure you ran `npm install` to install dependencies
239
+ 2. Check that your node is listed in `package.json` under `n8n.nodes`
240
+ 3. Restart the dev server with `npm run dev`
241
+ 4. Check the console for any error messages
242
+
243
+ ### Linting errors
244
+
245
+ Run `npm run lint:fix` to automatically fix most common issues. For remaining errors, check the [n8n node development guidelines](https://docs.n8n.io/integrations/creating-nodes/).
246
+
247
+ ### TypeScript errors
248
+
249
+ Make sure you're using Node.js v22 or higher and have run `npm install` to get all type definitions.
250
+
251
+ ## Resources
252
+
253
+ - **[n8n Node Documentation](https://docs.n8n.io/integrations/creating-nodes/)** - Complete guide to building nodes
254
+ - **[n8n Community Forum](https://community.n8n.io/)** - Get help and share your nodes
255
+ - **[@n8n/node-cli Documentation](https://www.npmjs.com/package/@n8n/node-cli)** - CLI tool reference
256
+ - **[n8n Creator Portal](https://creators.n8n.io/nodes)** - Submit your node for verification
257
+ - **[Submit Community Nodes Guide](https://docs.n8n.io/integrations/creating-nodes/deploy/submit-community-nodes/)** - Verification requirements and process
258
+
259
+ ## Contributing
260
+
261
+ Have suggestions for improving this starter? [Open an issue](https://github.com/n8n-io/n8n-nodes-starter/issues) or submit a pull request!
262
+
263
+ ## License
264
+
265
+ [MIT](https://github.com/n8n-io/n8n-nodes-starter/blob/master/LICENSE.md)
@@ -0,0 +1,13 @@
1
+ import type { IAuthenticateGeneric, ICredentialTestRequest, ICredentialType, INodeProperties } from 'n8n-workflow';
2
+ export declare class OracleFusionHcmApi implements ICredentialType {
3
+ name: string;
4
+ displayName: string;
5
+ icon: {
6
+ readonly light: "file:oracleFusionHcm.svg";
7
+ readonly dark: "file:oracleFusionHcm.svg";
8
+ };
9
+ documentationUrl: string;
10
+ properties: INodeProperties[];
11
+ authenticate: IAuthenticateGeneric;
12
+ test: ICredentialTestRequest;
13
+ }
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OracleFusionHcmApi = void 0;
4
+ class OracleFusionHcmApi {
5
+ constructor() {
6
+ this.name = 'oracleFusionHcmApi';
7
+ this.displayName = 'Oracle Fusion HCM API';
8
+ this.icon = { light: 'file:oracleFusionHcm.svg', dark: 'file:oracleFusionHcm.svg' };
9
+ this.documentationUrl = 'https://docs.oracle.com/en/cloud/saas/human-resources/';
10
+ this.properties = [
11
+ {
12
+ displayName: 'Instance URL',
13
+ name: 'instanceUrl',
14
+ type: 'string',
15
+ default: '',
16
+ placeholder: 'https://your-instance.fa.us2.oraclecloud.com',
17
+ description: 'The base URL of your Oracle Fusion HCM instance',
18
+ required: true,
19
+ },
20
+ {
21
+ displayName: 'Username',
22
+ name: 'username',
23
+ type: 'string',
24
+ default: '',
25
+ description: 'Oracle Fusion HCM username',
26
+ required: true,
27
+ },
28
+ {
29
+ displayName: 'Password',
30
+ name: 'password',
31
+ type: 'string',
32
+ typeOptions: { password: true },
33
+ default: '',
34
+ description: 'Oracle Fusion HCM password',
35
+ required: true,
36
+ },
37
+ ];
38
+ this.authenticate = {
39
+ type: 'generic',
40
+ properties: {
41
+ auth: {
42
+ username: '={{$credentials.username}}',
43
+ password: '={{$credentials.password}}',
44
+ },
45
+ headers: {
46
+ 'Content-Type': 'application/json',
47
+ },
48
+ },
49
+ };
50
+ this.test = {
51
+ request: {
52
+ baseURL: '={{$credentials.instanceUrl}}',
53
+ url: '/hcmRestApi/resources/11.13.18.05/emps',
54
+ method: 'GET',
55
+ qs: {
56
+ limit: 1,
57
+ },
58
+ },
59
+ };
60
+ }
61
+ }
62
+ exports.OracleFusionHcmApi = OracleFusionHcmApi;
63
+ //# sourceMappingURL=OracleFusionHcmApi.credentials.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OracleFusionHcmApi.credentials.js","sourceRoot":"","sources":["../../credentials/OracleFusionHcmApi.credentials.ts"],"names":[],"mappings":";;;AAOA,MAAa,kBAAkB;IAA/B;QACC,SAAI,GAAG,oBAAoB,CAAC;QAE5B,gBAAW,GAAG,uBAAuB,CAAC;QAEtC,SAAI,GAAG,EAAE,KAAK,EAAE,0BAA0B,EAAE,IAAI,EAAE,0BAA0B,EAAW,CAAC;QAExF,qBAAgB,GAAG,wDAAwD,CAAC;QAE5E,eAAU,GAAsB;YAC/B;gBACC,WAAW,EAAE,cAAc;gBAC3B,IAAI,EAAE,aAAa;gBACnB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,8CAA8C;gBAC3D,WAAW,EAAE,iDAAiD;gBAC9D,QAAQ,EAAE,IAAI;aACd;YACD;gBACC,WAAW,EAAE,UAAU;gBACvB,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,4BAA4B;gBACzC,QAAQ,EAAE,IAAI;aACd;YACD;gBACC,WAAW,EAAE,UAAU;gBACvB,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC/B,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,4BAA4B;gBACzC,QAAQ,EAAE,IAAI;aACd;SACD,CAAC;QAEF,iBAAY,GAAyB;YACpC,IAAI,EAAE,SAAS;YACf,UAAU,EAAE;gBACX,IAAI,EAAE;oBACL,QAAQ,EAAE,4BAA4B;oBACtC,QAAQ,EAAE,4BAA4B;iBACtC;gBACD,OAAO,EAAE;oBACR,cAAc,EAAE,kBAAkB;iBAClC;aACD;SACD,CAAC;QAEF,SAAI,GAA2B;YAC9B,OAAO,EAAE;gBACR,OAAO,EAAE,+BAA+B;gBACxC,GAAG,EAAE,wCAAwC;gBAC7C,MAAM,EAAE,KAAK;gBACb,EAAE,EAAE;oBACH,KAAK,EAAE,CAAC;iBACR;aACD;SACD,CAAC;IACH,CAAC;CAAA;AA7DD,gDA6DC"}
@@ -0,0 +1,12 @@
1
+ import type { ICredentialType, INodeProperties } from 'n8n-workflow';
2
+ export declare class OracleFusionHcmOAuth2Api implements ICredentialType {
3
+ name: string;
4
+ extends: string[];
5
+ displayName: string;
6
+ icon: {
7
+ readonly light: "file:oracleFusionHcm.svg";
8
+ readonly dark: "file:oracleFusionHcm.svg";
9
+ };
10
+ documentationUrl: string;
11
+ properties: INodeProperties[];
12
+ }
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OracleFusionHcmOAuth2Api = void 0;
4
+ class OracleFusionHcmOAuth2Api {
5
+ constructor() {
6
+ this.name = 'oracleFusionHcmOAuth2Api';
7
+ this.extends = ['oAuth2Api'];
8
+ this.displayName = 'Oracle Fusion HCM OAuth2 API';
9
+ this.icon = { light: 'file:oracleFusionHcm.svg', dark: 'file:oracleFusionHcm.svg' };
10
+ this.documentationUrl = 'https://docs.oracle.com/en/cloud/saas/human-resources/';
11
+ this.properties = [
12
+ {
13
+ displayName: 'Instance URL',
14
+ name: 'instanceUrl',
15
+ type: 'string',
16
+ default: '',
17
+ placeholder: 'https://your-instance.fa.us2.oraclecloud.com',
18
+ description: 'The base URL of your Oracle Fusion HCM instance',
19
+ required: true,
20
+ },
21
+ {
22
+ displayName: 'Grant Type',
23
+ name: 'grantType',
24
+ type: 'hidden',
25
+ default: 'clientCredentials',
26
+ },
27
+ {
28
+ displayName: 'Authorization URL',
29
+ name: 'authUrl',
30
+ type: 'string',
31
+ default: '={{$self.instanceUrl}}/oauth/v1/authorize',
32
+ required: true,
33
+ },
34
+ {
35
+ displayName: 'Access Token URL',
36
+ name: 'accessTokenUrl',
37
+ type: 'string',
38
+ default: '={{$self.instanceUrl}}/oauth/v1/token',
39
+ required: true,
40
+ },
41
+ {
42
+ displayName: 'Scope',
43
+ name: 'scope',
44
+ type: 'string',
45
+ default: 'urn:opc:resource:consumer::all',
46
+ },
47
+ {
48
+ displayName: 'Auth URI Query Parameters',
49
+ name: 'authQueryParameters',
50
+ type: 'hidden',
51
+ default: '',
52
+ },
53
+ {
54
+ displayName: 'Authentication',
55
+ name: 'authentication',
56
+ type: 'hidden',
57
+ default: 'body',
58
+ },
59
+ ];
60
+ }
61
+ }
62
+ exports.OracleFusionHcmOAuth2Api = OracleFusionHcmOAuth2Api;
63
+ //# sourceMappingURL=OracleFusionHcmOAuth2Api.credentials.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OracleFusionHcmOAuth2Api.credentials.js","sourceRoot":"","sources":["../../credentials/OracleFusionHcmOAuth2Api.credentials.ts"],"names":[],"mappings":";;;AAEA,MAAa,wBAAwB;IAArC;QACC,SAAI,GAAG,0BAA0B,CAAC;QAElC,YAAO,GAAG,CAAC,WAAW,CAAC,CAAC;QAExB,gBAAW,GAAG,8BAA8B,CAAC;QAE7C,SAAI,GAAG,EAAE,KAAK,EAAE,0BAA0B,EAAE,IAAI,EAAE,0BAA0B,EAAW,CAAC;QAExF,qBAAgB,GAAG,wDAAwD,CAAC;QAE5E,eAAU,GAAsB;YAC/B;gBACC,WAAW,EAAE,cAAc;gBAC3B,IAAI,EAAE,aAAa;gBACnB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,8CAA8C;gBAC3D,WAAW,EAAE,iDAAiD;gBAC9D,QAAQ,EAAE,IAAI;aACd;YACD;gBACC,WAAW,EAAE,YAAY;gBACzB,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,mBAAmB;aAC5B;YACD;gBACC,WAAW,EAAE,mBAAmB;gBAChC,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,2CAA2C;gBACpD,QAAQ,EAAE,IAAI;aACd;YACD;gBACC,WAAW,EAAE,kBAAkB;gBAC/B,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,uCAAuC;gBAChD,QAAQ,EAAE,IAAI;aACd;YACD;gBACC,WAAW,EAAE,OAAO;gBACpB,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,gCAAgC;aACzC;YACD;gBACC,WAAW,EAAE,2BAA2B;gBACxC,IAAI,EAAE,qBAAqB;gBAC3B,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;aACX;YACD;gBACC,WAAW,EAAE,gBAAgB;gBAC7B,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,MAAM;aACf;SACD,CAAC;IACH,CAAC;CAAA;AA5DD,4DA4DC"}
@@ -0,0 +1,14 @@
1
+ import type { IAuthenticateGeneric, ICredentialTestRequest, ICredentialType, INodeProperties, IDataObject, IHttpRequestHelper, ICredentialDataDecryptedObject } from 'n8n-workflow';
2
+ export declare class OracleJwtApi implements ICredentialType {
3
+ name: string;
4
+ displayName: string;
5
+ icon: {
6
+ readonly light: "file:oracleFusionHcm.svg";
7
+ readonly dark: "file:oracleFusionHcm.svg";
8
+ };
9
+ documentationUrl: string;
10
+ properties: INodeProperties[];
11
+ authenticate: IAuthenticateGeneric;
12
+ preAuthentication(this: IHttpRequestHelper, credentials: ICredentialDataDecryptedObject): Promise<IDataObject>;
13
+ test: ICredentialTestRequest;
14
+ }
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OracleJwtApi = void 0;
4
+ class OracleJwtApi {
5
+ constructor() {
6
+ this.name = 'oracleJwtApi';
7
+ this.displayName = 'Oracle Fusion JWT API';
8
+ this.icon = { light: 'file:oracleFusionHcm.svg', dark: 'file:oracleFusionHcm.svg' };
9
+ this.documentationUrl = 'https://docs.oracle.com/en/cloud/saas/human-resources/';
10
+ this.properties = [
11
+ {
12
+ displayName: 'Instance URL',
13
+ name: 'instanceUrl',
14
+ type: 'string',
15
+ default: '',
16
+ placeholder: 'https://your-instance.fa.us2.oraclecloud.com',
17
+ description: 'The base URL of your Oracle Fusion HCM instance',
18
+ required: true,
19
+ },
20
+ {
21
+ displayName: 'Username',
22
+ name: 'username',
23
+ type: 'string',
24
+ default: '',
25
+ description: 'Oracle Fusion HCM username',
26
+ required: true,
27
+ },
28
+ {
29
+ displayName: 'Private Key (PEM)',
30
+ name: 'privateKey',
31
+ type: 'string',
32
+ typeOptions: { password: true, rows: 10 },
33
+ default: '',
34
+ description: 'Private key in PEM format',
35
+ required: true,
36
+ },
37
+ {
38
+ displayName: 'Public Certificate (PEM or DER base64)',
39
+ name: 'publicCert',
40
+ type: 'string',
41
+ typeOptions: { rows: 10 },
42
+ default: '',
43
+ description: 'Full certificate content (including -----BEGIN CERTIFICATE-----)',
44
+ required: true,
45
+ },
46
+ ];
47
+ this.authenticate = {
48
+ type: 'generic',
49
+ properties: {
50
+ headers: {
51
+ 'Content-Type': 'application/json',
52
+ },
53
+ },
54
+ };
55
+ this.test = {
56
+ request: {
57
+ baseURL: '={{$credentials.instanceUrl}}',
58
+ url: '/hcmRestApi/resources/11.13.18.05/emps',
59
+ method: 'GET',
60
+ qs: {
61
+ limit: 1,
62
+ },
63
+ },
64
+ };
65
+ }
66
+ async preAuthentication(credentials) {
67
+ const jwt = require('jsonwebtoken');
68
+ const token = jwt.sign({
69
+ sub: credentials.username,
70
+ iat: Math.floor(Date.now() / 1000),
71
+ exp: Math.floor(Date.now() / 1000) + (60 * 60),
72
+ }, credentials.privateKey, {
73
+ algorithm: 'RS256',
74
+ });
75
+ return {
76
+ headers: {
77
+ Authorization: `Bearer ${token}`,
78
+ 'Content-Type': 'application/json',
79
+ },
80
+ };
81
+ }
82
+ }
83
+ exports.OracleJwtApi = OracleJwtApi;
84
+ //# sourceMappingURL=OracleJwtApi.credentials.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OracleJwtApi.credentials.js","sourceRoot":"","sources":["../../credentials/OracleJwtApi.credentials.ts"],"names":[],"mappings":";;;AAUA,MAAa,YAAY;IAAzB;QACC,SAAI,GAAG,cAAc,CAAC;QAEtB,gBAAW,GAAG,uBAAuB,CAAC;QAEtC,SAAI,GAAG,EAAE,KAAK,EAAE,0BAA0B,EAAE,IAAI,EAAE,0BAA0B,EAAW,CAAC;QAExF,qBAAgB,GAAG,wDAAwD,CAAC;QAE5E,eAAU,GAAsB;YAC/B;gBACC,WAAW,EAAE,cAAc;gBAC3B,IAAI,EAAE,aAAa;gBACnB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,8CAA8C;gBAC3D,WAAW,EAAE,iDAAiD;gBAC9D,QAAQ,EAAE,IAAI;aACd;YACD;gBACC,WAAW,EAAE,UAAU;gBACvB,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,4BAA4B;gBACzC,QAAQ,EAAE,IAAI;aACd;YACD;gBACC,WAAW,EAAE,mBAAmB;gBAChC,IAAI,EAAE,YAAY;gBAClB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE;gBACzC,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,2BAA2B;gBACxC,QAAQ,EAAE,IAAI;aACd;YACD;gBACC,WAAW,EAAE,wCAAwC;gBACrD,IAAI,EAAE,YAAY;gBAClB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;gBACzB,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,kEAAkE;gBAC/E,QAAQ,EAAE,IAAI;aACd;SACD,CAAC;QAEF,iBAAY,GAAyB;YACpC,IAAI,EAAE,SAAS;YACf,UAAU,EAAE;gBACX,OAAO,EAAE;oBACR,cAAc,EAAE,kBAAkB;iBAClC;aACD;SACD,CAAC;QA8BF,SAAI,GAA2B;YAC9B,OAAO,EAAE;gBACR,OAAO,EAAE,+BAA+B;gBACxC,GAAG,EAAE,wCAAwC;gBAC7C,MAAM,EAAE,KAAK;gBACb,EAAE,EAAE;oBACH,KAAK,EAAE,CAAC;iBACR;aACD;SACD,CAAC;IACH,CAAC;IAtCA,KAAK,CAAC,iBAAiB,CAEtB,WAA2C;QAG3C,MAAM,GAAG,GAAG,OAAO,CAAC,cAAc,CAAkC,CAAC;QAGrE,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CACrB;YACC,GAAG,EAAE,WAAW,CAAC,QAAkB;YACnC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;YAClC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC;SAC9C,EACD,WAAW,CAAC,UAAoB,EAChC;YACC,SAAS,EAAE,OAAO;SAClB,CACD,CAAC;QAEF,OAAO;YACN,OAAO,EAAE;gBACR,aAAa,EAAE,UAAU,KAAK,EAAE;gBAChC,cAAc,EAAE,kBAAkB;aAClC;SACD,CAAC;IACH,CAAC;CAYD;AA9FD,oCA8FC"}
@@ -0,0 +1,4 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="#FF0000">
2
+ <path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z"/>
3
+ <path d="M12 6c-3.31 0-6 2.69-6 6s2.69 6 6 6 6-2.69 6-6-2.69-6-6-6zm0 10c-2.21 0-4-1.79-4-4s1.79-4 4-4 4 1.79 4 4-1.79 4-4 4z"/>
4
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="#FF0000">
2
+ <path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z"/>
3
+ <path d="M12 6c-3.31 0-6 2.69-6 6s2.69 6 6 6 6-2.69 6-6-2.69-6-6-6zm0 10c-2.21 0-4-1.79-4-4s1.79-4 4-4 4 1.79 4 4-1.79 4-4 4z"/>
4
+ </svg>
@@ -0,0 +1,13 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="aquamarine"
2
+ stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-cpu">
3
+ <rect x="4" y="4" width="16" height="16" rx="2" ry="2"></rect>
4
+ <rect x="9" y="9" width="6" height="6"></rect>
5
+ <line x1="9" y1="1" x2="9" y2="4"></line>
6
+ <line x1="15" y1="1" x2="15" y2="4"></line>
7
+ <line x1="9" y1="20" x2="9" y2="23"></line>
8
+ <line x1="15" y1="20" x2="15" y2="23"></line>
9
+ <line x1="20" y1="9" x2="23" y2="9"></line>
10
+ <line x1="20" y1="14" x2="23" y2="14"></line>
11
+ <line x1="1" y1="9" x2="4" y2="9"></line>
12
+ <line x1="1" y1="14" x2="4" y2="14"></line>
13
+ </svg>
@@ -0,0 +1,13 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="darkblue"
2
+ stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-cpu">
3
+ <rect x="4" y="4" width="16" height="16" rx="2" ry="2"></rect>
4
+ <rect x="9" y="9" width="6" height="6"></rect>
5
+ <line x1="9" y1="1" x2="9" y2="4"></line>
6
+ <line x1="15" y1="1" x2="15" y2="4"></line>
7
+ <line x1="9" y1="20" x2="9" y2="23"></line>
8
+ <line x1="15" y1="20" x2="15" y2="23"></line>
9
+ <line x1="20" y1="9" x2="23" y2="9"></line>
10
+ <line x1="20" y1="14" x2="23" y2="14"></line>
11
+ <line x1="1" y1="9" x2="4" y2="9"></line>
12
+ <line x1="1" y1="14" x2="4" y2="14"></line>
13
+ </svg>
@@ -0,0 +1,14 @@
1
+ import { type INodeType, type INodeTypeDescription } from 'n8n-workflow';
2
+ import { getEmployees } from './listSearch/getEmployees';
3
+ import { getDepartments } from './listSearch/getDepartments';
4
+ import { getJobs } from './listSearch/getJobs';
5
+ export declare class OracleFusionHcm implements INodeType {
6
+ description: INodeTypeDescription;
7
+ methods: {
8
+ listSearch: {
9
+ getEmployees: typeof getEmployees;
10
+ getDepartments: typeof getDepartments;
11
+ getJobs: typeof getJobs;
12
+ };
13
+ };
14
+ }