Creating Workers Oracle Fusion HCM API

Creating Workers in Oracle Fusion HCM via REST API

Creating and Managing Workers in Oracle Fusion HCM Using REST APIs Instead of the Guided UI Flow

Introduction / Issue

Onboarding a worker in Oracle Fusion HCM usually means clicking through the “Add a Person” guided UI. That flow moves you through several dependent screens: personal details, legislative data, work relationship, assignment, contact details, identifiers, and documents. For a single hire, this is manageable. However, for bulk hiring, migrations, acquisitions, or ATS integrations, repeating the same steps over and over becomes slow and inefficient.

Fortunately, these UI screens are simply a front end for underlying REST resources. So instead of clicking through the Fusion UI, you can create and maintain the full hire process—core profile, work relationship, assignment, and optional personal details—through API calls.

Why We Need to Do This / Cause of the Issue

Today, the manual, UI-driven process forces HR operations users to:

  • Navigate the guided “Add a Person” flow screen by screen for every single worker
  • Manually search and select the correct country, business unit, department, job, and location from on-screen pickers
  • Re-enter the same legal employer, business unit, and legislative details for every hire in the same batch
  • Wait for each screen to validate and save before the next screen becomes available
  • Separately navigate into each personal-detail area (addresses, emails, phones, national identifiers, citizenships, visas, passports, driver licenses) after the initial hire is saved
  • Re-run the entire multi-screen flow again just to correct a single field, such as a date of birth or country of birth
  • Manually cross-check that a worker’s work relationship, assignment, and identifiers all agree with one another

The root problem is simple: a worker’s core profile, employment data, and reference-data lookups (countries, business units, jobs, departments, locations, blood types, correspondence languages) all live behind separate screens. There’s no single, combined entry point. As a result, every hire repeats the same navigation. And when the process runs at volume, small mistakes — an unresolved LOV value, a missed required field — slip in easily.

How Do We Solve It

Solving this is straightforward: bypass the guided UI and drive worker creation, enrichment, updates, and verification through the Oracle Fusion HCM REST API instead. A single root resource, workers, exposes the entire record. Every UI screen becomes either a field on the payload or a child resource nested underneath it. Meanwhile, the dropdown pickers you’d normally click through are exposed as their own list-of-values (LOV) endpoints, which you can query, filter, and cache independently of any single hire.

For reference, Oracle’s official documentation covers the full workers resource in detail. Every call in this guide targets the same base path, /hcmRestApi/resources/11.13.18.05/, and uses standard HTTP methods, basic authentication, plus the REST-Framework-Version and Metadata-Context headers Fusion expects on every request. Below, you’ll find every endpoint involved in a full worker lifecycle, listed in the order teams typically use them. If you’re scoping a broader integration, our Oracle Fusion Cloud Application team can help.

1. The Core Worker Resource

Everything else in this guide builds on this one resource. When you create a worker, Fusion returns a PersonId and PersonNumber. Every later call — every child resource, every update — is addressed against these two IDs.

1.1 Create a Worker

POST /hcmRestApi/resources/11.13.18.05/workers

This call creates a brand-new worker in one shot: the person record, their name, their work relationship, and their first assignment. In other words, it’s the direct API equivalent of completing the entire “Add a Person” hire flow.

Request headers:

  • Effective-Of — sets the effective date range the create should be processed against
  • Metadata-Context — passes metadata context for the request
  • REST-Framework-Version — the REST framework version to use (Fusion examples use 4)
  • Upsert-Mode — controls whether the call should update an existing record if a match is found instead of always inserting

Request body fields:

addresses, ApplicantNumber, BloodType, citizenships, CorrespondenceLanguage, CountryOfBirth, DateOfBirth, DateOfDeath, disabilities, driverLicenses, emails, ethnicities, externalIdentifiers, legislativeInfo, messages, names, nationalIdentifiers, otherCommunicationAccounts, passports, PersonId, PersonNumber, phones, photos, RegionOfBirth, religions, TownOfBirth, visasPermits, workersDFF, workersEFF, workRelationships. Of these, only names and workRelationships (containing at least one assignment) are required to complete a hire — everything else is optional and can be supplied at create time or added afterward as a child resource.

Example payload — minimum viable hire:

{
“names”: [
{
“LastName”: “AAA”,
“LegislationCode”: “US”
}
],
“workRelationships”: [
{
“LegalEmployerName”: “GBI HCM Widgets USA”,
“WorkerType”: “E”,
“assignments”: [
{
“ActionCode”: “HIRE”,
“BusinessUnitName”: “GBI HCM-Financials USA BU”
}
]
}
]
}

Example cURL call:

curl -i -u “<username>:<password>” \
-H “Content-Type: application/vnd.oracle.adf.resourceitem+json” \
-H “REST-Framework-Version: 4” \
-H “Effective-Of:RangeStartDate=2018-01-01” \
-X POST -d <payload> \
“https://<host>:<port>/hcmRestApi/resources/11.13.18.05/workers”

Create a worker POST request example

A successful call returns HTTP 201 Created along with the full worker representation. This includes the system-generated PersonId, PersonNumber, and timestamps. It also includes every nested child collection — names.items, workRelationships.items, and, inside each work relationship, assignments.items — each fully populated with its own generated IDs, such as PersonNameId, PeriodOfServiceId, AssignmentId, and AssignmentNumber.

1.2 Update a Worker

PATCH /hcmRestApi/resources/11.13.18.05/workers/{workersUniqID}

This call updates fields on an existing worker’s core profile. workersUniqID is a required path parameter here, and Fusion accepts the worker’s PersonId, PersonNumber, or its encoded unique key. Importantly, you only need to include the fields you’re changing in the payload — everything else on the record stays untouched.

Request headers: Effective-Of, Metadata-Context, REST-Framework-Version

Request body fields:

Accepts the same set of fields as the create call (addresses, ApplicantNumber, BloodType, citizenships, CorrespondenceLanguage, CountryOfBirth, DateOfBirth, DateOfDeath, disabilities, driverLicenses, emails, ethnicities, externalIdentifiers, legislativeInfo, messages, names, nationalIdentifiers, otherCommunicationAccounts, passports, PersonNumber, phones, photos, RegionOfBirth, religions, TownOfBirth, visasPermits, workersDFF, workersEFF, workRelationships) — PersonId is not accepted here since the worker already exists and is identified by the path parameter.

Example payload — correcting date and country of birth:

{
“DateOfBirth”: “1987-01-01”,
“CountryOfBirth”: “US”
}

In response, Fusion returns HTTP 200 OK along with the full, refreshed worker representation. This is exactly what replaces re-running the entire guided flow just to fix one field.

Fields returned on both the create and update response (workers-item-response):

Field Description
PersonId System-generated unique identifier for the person
PersonNumber Human-readable worker number, used as the path key for later calls
DisplayName / FullName / ListName Derived name representations
BloodTypeMeaning Decoded meaning of the BloodType lookup code
CorrLanguageMeaning Decoded meaning of the CorrespondenceLanguage lookup code
CountryOfBirthName Decoded country name for CountryOfBirth
CreatedBy / CreationDate Audit fields for record creation
LastUpdatedBy / LastUpdateDate Audit fields for the most recent update
links Hypermedia links to every child resource described in section 3

2. Reference Data (List of Values) APIs

Several fields on the worker payload — legislation, business unit, department, job, location, country, blood type, correspondence language — are constrained to values Fusion already knows about. Rather than guessing or hardcoding these, the correct pattern is to query the matching LOV endpoint first and use the value it returns. For a broader overview of these patterns, see Oracle’s REST API guide for Human Resources. Every LOV endpoint below accepts the same standard query parameters: expand, fields, finder, limit, links, offset, onlyData, orderBy, q, totalResults, so results can be filtered (q) and trimmed (fields) instead of pulling entire lists on every call.

2.1 Get All Countries

GET /hcmRestApi/resources/11.13.18.05/hcmCountriesLov

This endpoint returns every country Fusion recognizes. Use it to resolve CountryOfBirth on the worker record, as well as country fields on addresses.

Item Field Description
CountryName Full display name of the country
TerritoryCode The short code (e.g. US, IN, GB) used as the actual field value
Description Formal/legal name of the country
AlternateTerritoryCode Locale-qualified alternate code, where defined
PhoneCountryCodeId / PhoneCountryCode Identifier and dialing code for the country
CurrencyCode ISO currency code associated with the country
NlsTerritory NLS territory name, where applicable
ObsoleteFlag Indicates whether the country value is obsolete

Get all countries LOV example

2.2 Get All Business Units

GET /hcmRestApi/resources/11.13.18.05/hcmBusinessUnitsLOV

Similarly, this call returns every business unit. You can use it to resolve BusinessUnitName or BusinessUnitId on a worker’s assignment.

Item Field Description
BusinessUnitId System-generated identifier for the business unit
Name Display name of the business unit
Status Active status of the business unit (e.g. A for active)

Get all business units LOV example

2.3 Get All Departments

GET /hcmRestApi/resources/11.13.18.05/departmentsLov

For departments, this endpoint returns the full list so you can resolve the department tied to a worker’s assignment. It also accepts an effectiveDate query parameter and an Effective-Of request header.

Item Field Description
OrganizationId System-generated identifier for the department
EffectiveStartDate / EffectiveEndDate Date range the department record is effective for
Name Display name of the department
Status Active status of the department
LocationId / LocationCode / LocationName The location associated with the department
SetId / SetCode / SetName Reference data set the department belongs to

Get all departments LOV example

2.4 Get All Jobs

GET /hcmRestApi/resources/11.13.18.05/jobsLov

Next, the jobs endpoint returns every job so you can resolve JobCode on a worker’s assignment. Like departments, it also accepts an effectiveDate query parameter and an Effective-Of request header.

Item Field Description
JobId System-generated identifier for the job
EffectiveStartDate / EffectiveEndDate Date range the job record is effective for
JobCode / JobName Code and display name of the job
ActiveStatus Active status of the job
JobFunctionCode / JobFunctionName Functional classification of the job
JobFamilyId / JobFamilyName Job family classification
ManagerLevel Manager level associated with the job, if defined
SetId / SetCode / SetName Reference data set the job belongs to

Get all jobs LOV example

2.5 Get All Locations

GET /hcmRestApi/resources/11.13.18.05/locationsLov

Finally, this call returns every work location, which resolves the location on a worker’s assignment. It too accepts an effectiveDate query parameter and an Effective-Of request header.

Item Field Description
LocationId System-generated identifier for the location
EffectiveStartDate / EffectiveEndDate Date range the location record is effective for
LocationCode / LocationName Code and display name of the location
ActiveStatus Active status of the location
CountryCode / CountryName Country the location is in
Region1 / Region2 State/province and county/region details
TownOrCity / PostalCode City and postal code of the location
SetId / SetCode / SetName Reference data set the location belongs to

Get all locations LOV example

2.6 Common Lookups: Blood Type and Correspondence Language

GET /fscmRestApi/resources/11.13.18.05/commonLookupsLOV?finder=LookupTypeFinder;LookupCode={code},LookupType={TYPE}

The common-lookups resource supports smaller worker fields that do not have dedicated LOV endpoints:

  • bloodTypesLov — uses LookupType=BLOOD_TYPE for BloodType
  • correspondenceLanguagesLov — uses LookupType=PER_CORRESP_LANG for CorrespondenceLanguage

3. Worker Child Resources

Every one of these resources is a child of workers and follows the same address pattern: /hcmRestApi/resources/11.13.18.05/workers/{workersUniqID}/child/{resource}. You can include each one inline in the create/update payload, query it on its own with GET, or post to it individually once the worker already exists. By default, all of them return data as of the current date, unless you specify a different effective date.

Child Resource Description
addresses All addresses of a worker as of the specified date.
citizenships All citizenships of a worker as of the specified date.
disabilities All worker disabilities as of the specified date.
driverLicenses All driver licenses of a worker as of the specified date.
emails All emails of a worker as of the specified date.
ethnicities All ethnicities of a worker as of the specified date.
externalIdentifiers All external identifiers of a worker as of the specified date.
legislativeInfo The legislative information of a worker as of the specified date.
messages All available messages for a worker.
names All names of a worker as of the specified date.
nationalIdentifiers All national identifiers of a worker as of the specified date.
otherCommunicationAccounts All other communication accounts of a worker as of the specified date.
passports All passports of a worker as of the specified date.
phones All phones of a worker as of the specified date.
photos All photos of a worker as of the specified date.
religions All religions of a worker as of the specified date.
visasPermits All visas and permits of a worker as of the specified date.
workRelationships All work relationships of a worker as of the specified date.
workersDFF Descriptive flexfield attributes for the worker.
workersEFF Extensible flexfield attributes for the worker.
hcmCountriesLOV List of values for countries (see section 2.1).
bloodTypesLov List of values for blood type, filtered from commonLookupsLOV (see section 2.6).
correspondenceLanguagesLov List of values for correspondence language, filtered from commonLookupsLOV (see section 2.6).

3.1 Get All Worker Work Relationships (Worked Example)

GET /hcmRestApi/resources/11.13.18.05/workers/{workersUniqID}/child/workRelationships

This is the most commonly queried child resource. Teams use it to confirm a hire landed correctly, or to review a worker’s employment history. It accepts the standard dependency, expand, fields, finder, limit, links, offset, onlyData, orderBy, q, and totalResults query parameters, plus the Metadata-Context and REST-Framework-Version headers.

Item Field Description
PeriodOfServiceId System-generated identifier for the work relationship
LegislationCode / LegalEntityId / LegalEmployerName The legal employer the relationship is with
WorkerType Type of worker (e.g. E for employee)
PrimaryFlag Whether this is the worker’s primary work relationship
StartDate / TerminationDate / LastWorkingDate Key employment dates
LegalEmployerSeniorityDate / EnterpriseSeniorityDate Seniority dates
OnMilitaryServiceFlag Whether the worker is on military service
WorkerNumber Worker number for this relationship, if assigned
ReadyToConvertFlag Whether the relationship is ready for conversion (e.g. contingent to employee)
NotificationDate Date termination was notified
RevokeUserAccess Whether user access should be revoked
RecommendedForRehire / RecommendationReason / RecommendationAuthorizedByPersonId Rehire recommendation details
CreatedBy / CreationDate / LastUpdatedBy / LastUpdateDate Audit fields

Example cURL call:

curl -i -u “<username>:<password>” \
-H “Content-Type: application/vnd.oracle.adf.resourceitem+json” \
-H “REST-Framework-Version: 4” \
-X GET \
“https://<host>:<port>/hcmRestApi/resources/11.13.18.05/workers/{workersUniqID}/child/workRelationships”

The Integration Is Built Around Seven Functional API Groups

  • Worker Creation — POST /workers, submitting names and workRelationships (with a HIRE assignment) in one call
  • Worker Update — PATCH /workers/{workersUniqID}, sending only the fields that changed
  • Reference Data Resolution — GET calls to hcmCountriesLov, hcmBusinessUnitsLOV, departmentsLov, jobsLov, and locationsLov to translate source-system values into Fusion-recognized codes
  • Common Lookup Resolution — GET calls to commonLookupsLOV for BloodType and CorrespondenceLanguage
  • Personal Detail Enrichment — POST/GET calls to the addresses, emails, phones, nationalIdentifiers, citizenships, visasPermits, passports, driverLicenses, disabilities, ethnicities, religions, externalIdentifiers, otherCommunicationAccounts, legislativeInfo, messages, and photos child resources
  • Employment Verification — GET /workers/{workersUniqID}/child/workRelationships to confirm the hire and review employment history
  • Flexfield Enrichment — POST/GET calls to workersDFF and workersEFF for descriptive and extensible flexfield attributes

Overall Flow

Resolve Reference Data (Countries, Business Units, Departments, Jobs, Locations, Common Lookups)
Build the Worker Payload (names + workRelationships + assignments)
POST to /workers — Create the Worker
Capture PersonId / PersonNumber
Enrich via Child Resources (addresses, emails, phones, identifiers, visas, passports, etc.)
Verify via GET on the Worker and workRelationships
PATCH /workers/{workersUniqID} for Any Future Updates

Conclusion

In short, every screen in the “Add a Person” guided flow maps to a documented REST resource. The worker itself goes through POST and PATCH on /workers. Each reference-data picker has its own LOV endpoint: hcmCountriesLov, hcmBusinessUnitsLOV, departmentsLov, jobsLov, locationsLov, and the shared commonLookupsLOV. And every personal-detail screen becomes a child resource nested under the worker, from addresses and citizenships to passports, visasPermits, workRelationships, and the DFF/EFF flexfields.

Once you map these out, worker creation stops being a tedious, multi-screen, one-at-a-time process. Instead, it becomes a small, repeatable sequence of API calls — one you can drive from a custom onboarding portal, an integration platform reacting to ATS events, or a bulk-load migration script. For teams that also handle bulk hiring, our guide on loading workers with HCM Data Loader is a useful companion piece. Ultimately, this approach gives HR operations teams the freedom to build hiring workflows around Fusion, rather than being boxed in by its guided UI. Need a hand implementing this? Talk to our Oracle Fusion HCM team.

Recent Posts