Oracle Fusion Cloud HCM Tool
Reads HR data from Oracle Fusion Cloud HCM over its REST API.
Tool ID
fusion-hcm
Fusion is not PeopleSoft
Oracle owns both, and conflating them is the most common mistake in this space.
| Oracle Fusion Cloud HCM | Oracle PeopleSoft HCM | |
|---|---|---|
| What it is | SaaS suite, built by Oracle | On-premise, acquired 2005 |
| REST API | Yes — /hcmRestApi/resources/... |
None for worker/job reads |
| This connector | fusion-hcm (REST) |
peoplesoft-hcm (JDBC) |
Blog posts and vendors claiming "Oracle HCM has REST APIs" are describing Fusion. Those endpoints do not exist in PeopleSoft — everything Oracle ships pre-built there is asynchronous publish/subscribe, which is why the PeopleSoft connector reads the database directly.
Do not point this connector at a PeopleSoft install.
Three traps worth knowing
1. Departments are served by /organizations. Oracle's documentation page is titled
"Departments REST Endpoints", but every operation on it is GET .../organizations. There is no
/departments resource. This is the single most likely 404.
2. limit caps at 499, silently. Oracle: "If you specify a value more than 499, only the first
499 records are returned and the hasMore parameter is false." An over-large page size therefore
truncates and tells you there is no more data. Page with limit ≤ 499 and follow hasMore;
never trust one large request. Default page size is 25, so a caller who sets nothing reads 25 rows
as the whole population.
3. Assignments are a grandchild. The path is
/workers/{workerId}/child/workRelationships/{periodOfServiceId}/child/assignments — you need both
ids. The /workers/{id}/child/assignments shape belongs to the deprecated emps resource.
Which people resource
| Resource | Use it for |
|---|---|
workers |
HR-grade extracts. All worker records as of a date — employee, contingent, pending. Full child set, effective-dated, subject to HCM data-role security. |
publicWorkers |
Directory lookups. Active only, current date only, public fields, GET-only, much lighter security friction. Keyed by plain PersonId. |
emps |
Nothing. Oracle documents it as controlled-availability and slated for deprecation, directing new integrations to workers. Deliberately not implemented here. |
Credential Required
Yes — a fusion-hcm credential. HTTP Basic over TLS with an integration user; the login and
password come from the vault and never enter a task definition or the assistant's context.
Oracle's Multi Token Over SSL policy documents Basic, SAML 2.0 bearer and JWT. Basic is not deprecated and is Oracle's own example throughout the REST reference. OAuth2 via OCI IAM exists at the platform level, but its token endpoint is not documented in the HCM REST book, so it is not implemented here rather than guessed at.
Authorization is RBAC: the integration user needs the function/aggregate privileges for the resource and an HCM data role granting the person population. A correctly authenticated user with the wrong data role returns an empty collection, not an error.
Operations
| Operation | Path |
|---|---|
list_workers |
/workers |
get_worker |
/workers/{workerId} |
list_public_workers |
/publicWorkers |
get_public_worker |
/publicWorkers/{personId} |
worker_names |
/workers/{workerId}/child/names |
worker_emails |
/workers/{workerId}/child/emails |
worker_phones |
/workers/{workerId}/child/phones |
worker_addresses |
/workers/{workerId}/child/addresses |
worker_work_relationships |
/workers/{workerId}/child/workRelationships |
worker_assignments |
/workers/{workerId}/child/workRelationships/{periodOfServiceId}/child/assignments |
list_departments |
/organizations |
list_jobs |
/jobs |
list_locations |
/locations |
list_grades |
/grades |
list_positions |
/positions |
describe_workers |
/workers/describe |
describe_organizations |
/organizations/describe |
Inputs
| Property | Description |
|---|---|
operation |
Required. |
host |
Required. Pod host, e.g. servername.fa.us2.oraclecloud.com (no scheme) |
apiVersion |
Required, defaults to 11.13.18.05 — Oracle's path version segment |
workerId |
Worker UniqID — for get_worker and every worker_* operation |
personId |
For get_public_worker — publicWorkers is keyed by plain PersonId |
periodOfServiceId |
For worker_assignments, from worker_work_relationships |
query |
Query params as a JSON object string (see below) |
apiVersion is an input, not a constant: 11.13.18.05 has been stable since R13, but it is a
version segment and it moved once already (R12 used 11.12.1.0 with per-pillar context roots).
Query parameters
Passed as a JSON object string, e.g. {"limit": 499, "totalResults": true, "effectiveDate": "2020-01-01"}
| Key | Notes |
|---|---|
limit |
Default 25, max 499 — see trap 2 |
offset |
Page start |
totalResults |
Send true or you get no count at all |
q |
Filter. Requires framework version ≥ 2 — this tool always sends 4 |
fields |
Attribute projection; child syntax names:FirstName |
expand |
Dot notation, e.g. workRelationships.assignments; all for everything |
onlyData |
Strip links from the payload |
orderBy |
field:asc,field2:desc |
effectiveDate |
yyyy-MM-dd — rows in force on that date, past or future |
Filter examples from Oracle: PersonNumber=1000, PersonNumber between 1000 and 1100,
DateOfBirth > '1960-01-01', names.FirstName like '%Ki%', upper(FirstName) = 'KIM'.
Run describe_workers before writing a filter. Only attributes marked "queryable": true may
appear in q; anything else returns 400.
Effective dating
A query parameter, not a header: {"effectiveDate": "2020-01-01"} returns the rows in force on
that date. There is no separate history endpoint — the same call retrieves past or future rows
depending on the date. (The Effective-Of header governs writes, which this read-only connector
does not perform.)
REST-Framework-Version
Sent as 4 on every request. Versions differ in backward-incompatible ways and the default when
the header is absent is 1 — under which the q syntax above is interpreted differently
rather than rejected. Version 4 also returns structured errors (code, path, details).
Bulk extracts
Oracle explicitly steers away from REST for full-population work, on the resource pages themselves: "Use HCM Data Loader for bulk load operations and HCM Extracts for extract operations" and "Do not use REST APIs for detecting data changes; use Atom feeds instead."
A whole-workforce sync over workers with deep expand at 499/page is fighting the product. Use
this connector for targeted reads, lookups and moderate extracts; use HCM Extracts for the full
population and Atom feeds for change detection.
Errors and backoff
Oracle documents no rate limit and no 429 for this API. The pressure signals are 503 Service
Unavailable (server overload) and 504 — back off on those. 413 means a bulk request exceeded
the allowed operation count.
Build
./gradlew :intouchtools:tools:fusion-hcm:toolJar
Produces build/libs/fusion-hcm-1.0.0.jar, matching connector.json's jars[0].
Licensing
licenseRequired() returns true, matching the other ERP/HCM connectors.
Status
Untested against a live Fusion pod. The endpoint shapes, parameters and limits above are taken from Oracle's REST API reference for Oracle Fusion Cloud HCM (doc G29489-05), but nothing here has been exercised against a real tenant. Validate before relying on it.
Publishes
The keys a later task may reference as {{taskName.key}}. Referencing anything not listed here resolves to nothing at run time.
completeoperationresultstatuswarning
Fields not documented above
Generated from this tool's own schema and published outputs on 2026-09-03. A field the README omits is discoverable only by reading the source, and a published key nothing documents is a capability nobody can reference.
| Field | Type | Description |
|---|---|---|
body |
string | Request body as a JSON object string. Unused — every operation here is a read. |