# Oracle EBS HR API List: HR_EMPLOYEE_API, HR_PERSON_API and Other HRMS Public APIs

> Source: https://netray.co/tools/oracle-ebs-hr-api-list
> Publisher: Netray (netray.co), AI and integration engineering for ERP and manufacturing systems.
> Section: Free Tools

## Short answer

A searchable reference of common Oracle EBS HRMS public API packages with their purpose, key parameters and notes, plus a PL/SQL call example.

## Category

oracle

## Erp

Oracle E-Business Suite

## Audience

- Oracle EBS developer
- HRMS technical consultant
- Integration developer

## Tool

**Kind:** worksheet

**Mode:** reference

**Columns:**

#### Package.procedure

**Key:** api

**Type:** text

#### Purpose

**Key:** purpose

**Type:** text

#### Key IN parameters

**Key:** inparams

**Type:** text

#### Key OUT / IN OUT parameters

**Key:** outparams

**Type:** text

#### Note

**Key:** note

**Type:** text

**Rows:**

**Api:** HR_EMPLOYEE_API.CREATE_EMPLOYEE

**Purpose:** Hire a new employee: creates the person, period of service and first assignment

**Inparams:** p_validate, p_hire_date, p_business_group_id, p_last_name, p_sex, p_person_type_id, p_national_identifier

**Outparams:** p_employee_number (IN OUT), p_person_id, p_assignment_id, p_per_object_version_number, p_asg_object_version_number, p_full_name

**Note:** Legislation-specific variants exist, for example CREATE_US_EMPLOYEE and CREATE_GB_EMPLOYEE

**Api:** HR_PERSON_API.UPDATE_PERSON

**Purpose:** Update personal details of a person (name, birth date, marital status and similar)

**Inparams:** p_effective_date, p_datetrack_update_mode, p_person_id, p_last_name, p_marital_status

**Outparams:** p_object_version_number (IN OUT), p_effective_start_date, p_effective_end_date, p_full_name, p_comment_id

**Note:** Pass hr_api.g_varchar2 / g_number / g_date to leave a value unchanged

**Api:** HR_PERSON_API.UPDATE_US_PERSON

**Purpose:** Update a person with United States specific fields

**Inparams:** p_effective_date, p_datetrack_update_mode, p_person_id

**Outparams:** p_object_version_number (IN OUT), p_effective_start_date, p_effective_end_date, p_full_name

**Note:** Equivalent localized variants exist for other legislations such as UPDATE_GB_PERSON

**Api:** HR_ASSIGNMENT_API.UPDATE_EMP_ASG

**Purpose:** Update non-criteria assignment details, for example supervisor and manager flag

**Inparams:** p_effective_date, p_datetrack_update_mode, p_assignment_id, p_supervisor_id

**Outparams:** p_object_version_number (IN OUT), p_effective_start_date, p_effective_end_date

**Note:** Does not change job, position, grade or organization; use UPDATE_EMP_ASG_CRITERIA for those

**Api:** HR_ASSIGNMENT_API.UPDATE_EMP_ASG_CRITERIA

**Purpose:** Change assignment criteria: job, position, grade, organization, location

**Inparams:** p_effective_date, p_datetrack_update_mode, p_assignment_id, p_job_id, p_organization_id, p_location_id, p_grade_id

**Outparams:** p_object_version_number (IN OUT), p_effective_start_date, p_effective_end_date, p_special_ceiling_step_id, p_people_group_id

**Note:** Check the warning OUT flags it returns, such as salary and payroll warnings

**Api:** HR_ASSIGNMENT_API.CREATE_SECONDARY_EMP_ASG

**Purpose:** Create an additional assignment for an existing employee

**Inparams:** p_effective_date, p_person_id, p_organization_id, p_assignment_number

**Outparams:** p_assignment_id, p_object_version_number, p_effective_start_date, p_effective_end_date

**Note:** Primary assignment is created by CREATE_EMPLOYEE

**Api:** HR_EX_EMPLOYEE_API.ACTUAL_TERMINATION_EMP

**Purpose:** Terminate an employee by recording the actual termination date

**Inparams:** p_effective_date, p_period_of_service_id, p_actual_termination_date, p_leaving_reason

**Outparams:** p_object_version_number (IN OUT), p_last_standard_process_date (IN OUT), p_supervisor_warning, p_event_warning

**Note:** Followed by FINAL_PROCESS_EMP after the last standard process date

**Api:** HR_EX_EMPLOYEE_API.FINAL_PROCESS_EMP

**Purpose:** Final process an ex-employee after the last standard process date

**Inparams:** p_period_of_service_id, p_final_process_date

**Outparams:** p_object_version_number (IN OUT), p_final_process_date (IN OUT), p_org_now_no_manager_warning, p_asg_future_changes_warning

**Note:** Used with ACTUAL_TERMINATION_EMP to complete the termination

**Api:** HR_EX_EMPLOYEE_API.REVERSE_TERMINATE_EMPLOYEE

**Purpose:** Reverse a termination and reinstate the employee

**Inparams:** p_period_of_service_id, p_actual_termination_date

**Outparams:** p_object_version_number (IN OUT)

**Note:** Reversal rules depend on whether the employee was final processed

**Api:** HR_CONTACT_REL_API.CREATE_CONTACT

**Purpose:** Create a contact and its relationship to an employee

**Inparams:** p_start_date, p_business_group_id, p_person_id, p_contact_type, p_last_name

**Outparams:** p_contact_relationship_id, p_ctr_object_version_number, p_per_person_id, p_per_object_version_number, p_full_name

**Note:** Can also link an existing person as the contact

**Api:** HR_PERSON_ADDRESS_API.CREATE_PERSON_ADDRESS

**Purpose:** Add an address to a person

**Inparams:** p_effective_date, p_person_id, p_primary_flag, p_style, p_date_from, p_address_line1, p_country

**Outparams:** p_address_id, p_object_version_number

**Note:** Style selects the country address format; some styles add legislation specific segments

**Api:** HR_PHONE_API.CREATE_PHONE

**Purpose:** Add a phone number to a person or other parent record

**Inparams:** p_date_from, p_phone_type, p_phone_number, p_parent_id, p_parent_table

**Outparams:** p_phone_id, p_object_version_number

**Note:** For employees, p_parent_table is PER_ALL_PEOPLE_F

**Api:** HR_JOB_API.CREATE_JOB

**Purpose:** Create a job in a business group

**Inparams:** p_business_group_id, p_date_from, p_job_group_id, p_segment1

**Outparams:** p_job_id, p_object_version_number, p_job_definition_id, p_name

**Note:** Segments depend on your Job key flexfield structure

**Api:** HR_POSITION_API.CREATE_POSITION

**Purpose:** Create a position within a job and organization

**Inparams:** p_job_id, p_organization_id, p_date_effective, p_segment1

**Outparams:** p_position_id, p_object_version_number, p_position_definition_id, p_name

**Note:** Segments depend on your Position key flexfield structure

**Api:** HR_ORGANIZATION_API.CREATE_ORGANIZATION

**Purpose:** Create an HR organization

**Inparams:** p_business_group_id, p_date_from, p_name, p_location_id, p_type

**Outparams:** p_organization_id, p_object_version_number

**Note:** Classifications are added separately

**Api:** HR_LOCATION_API.CREATE_LOCATION

**Purpose:** Create a location

**Inparams:** p_effective_date, p_location_code, p_description, p_style, p_address_line_1, p_country, p_postal_code

**Outparams:** p_location_id, p_object_version_number

**Note:** Style selects the address format used by the location

**Api:** HR_APPLICANT_API.CREATE_APPLICANT

**Purpose:** Create an applicant with an application

**Inparams:** p_date_received, p_business_group_id, p_last_name, p_person_type_id

**Outparams:** p_person_id, p_applicant_number (IN OUT), p_per_object_version_number, p_application_id, p_assignment_id

**Note:** Hire later with HR_APPLICANT_API.HIRE_APPLICANT

**Api:** FND_GLOBAL.APPS_INITIALIZE

**Purpose:** Set the user, responsibility and application context before calling APIs from SQL*Plus or a script

**Inparams:** user_id, resp_id, resp_appl_id

**Outparams:** None

**Note:** Required when running outside a concurrent program or session that already has the context

**Notes:** Call example (verify parameters against the package specification in your release): BEGIN fnd_global.apps_initialize(user_id => 1234, resp_id => 50000, resp_appl_id => 800); hr_person_api.update_person(p_validate => FALSE, p_effective_date => TRUNC(SYSDATE), p_datetrack_update_mode => 'CORRECTION', p_person_id => 5678, p_object_version_number => l_ovn, p_effective_start_date => l_esd, p_effective_end_date => l_eed, p_full_name => l_full_name, p_comment_id => l_comment_id, p_name_combination_warning => l_name_warn, p_assign_payroll_warning => l_payroll_warn, p_orig_hire_warning => l_hire_warn); COMMIT; END; Parameter lists differ by release (R12.1, R12.2) and legislation. Confirm exact signatures with DESC on the package or in the Oracle Integration Repository. Use p_validate => TRUE to test a call and roll it back.

## Content

**Intro:** This Oracle EBS HR API list covers the public HRMS APIs developers use most: HR_EMPLOYEE_API, HR_PERSON_API, HR_ASSIGNMENT_API, HR_EX_EMPLOYEE_API and the contact, address, job and position APIs. Search by package, procedure or parameter, then use the call example as a starting point.

**Sections:**

#### How to use the reference

**Body:** Search for the business event you need, such as hire, terminate or change assignment, and read across the row: the package and procedure, the key IN parameters, and the OUT and IN OUT values you must keep. The list is a map, not a full parameter dictionary. Always confirm the full parameter list in your release with DESC on the package spec or in the Oracle Integration Repository, because the signature depends on your version and legislation.

#### Rules every HRMS API call follows

**Body:** Initialize the apps context with FND_GLOBAL.APPS_INITIALIZE before calling from outside an application session. Date-tracked records need a date-track update mode such as CORRECTION, UPDATE, UPDATE_OVERRIDE or UPDATE_CHANGE_INSERT and an effective date. The object version number is IN OUT: pass the current value and store the one returned for the next call. Use the hr_api default constants to leave a value unchanged on update.

**Bullets:**

- Set context with FND_GLOBAL.APPS_INITIALIZE
- Pass p_effective_date and a date-track mode for date-tracked updates
- Keep and reuse the returned object version number
- Use p_validate => TRUE to dry-run and roll back
- Commit yourself; the APIs do not commit

#### Why use the APIs and not direct table updates

**Body:** The public APIs enforce HR business rules, maintain date-track history, fire business events and keep related tables consistent. Direct inserts or updates into PER_ALL_PEOPLE_F, PER_ALL_ASSIGNMENTS_F or PER_PERIODS_OF_SERVICE skip that logic and can corrupt data or break payroll and benefits, and they put you outside Oracle support. Use APIs for any write, and use views and SQL only for reading.

#### Common mistakes

**Body:** Frequent failures are missing apps context, passing a stale object version number after another update, using the wrong date-track mode for the change, and ignoring warning flags the API returns. Terminations also take two steps, actual termination and final process. Test in a non-production instance with p_validate set to TRUE before bulk loading with a script.

**Cta:** If you want to query your EBS HR and ERP data in plain language without exposing it outside your network, Netray builds private, read-only AI layers that run on-prem.

**Faq:**

#### What is HR_EMPLOYEE_API.CREATE_EMPLOYEE used for?

**Answer:** It hires a new employee in Oracle EBS HRMS by creating the person record, the period of service and the first assignment in one call. It returns the person id, assignment id, object version numbers and the employee number.

#### Do Oracle HR APIs commit the transaction?

**Answer:** No. The public HRMS APIs do not issue a commit, so your code must commit or roll back. You can use the p_validate parameter set to TRUE to run all validation and roll the change back automatically.

#### Where can I find the full parameter list of an HR API?

**Answer:** Use DESC on the package in SQL*Plus or read the package specification in the database, or look at the API in the Oracle Integration Repository for your release. Parameters vary between releases and legislations.

#### Can I update HR tables directly instead of using the APIs?

**Answer:** You should not. Direct changes bypass date-track handling, business rules and events, and can cause data corruption and unsupported states. Use the public APIs for writes and keep SQL for reporting only.

## Search terms

oracle ebs hr api list, hr_employee_api create_employee, hr_person_api update_person, oracle hrms api, oracle ebs hrms public api, hr_assignment_api update_emp_asg, hr_ex_employee_api actual_termination_emp, oracle apps hr api example

---
Talk to an engineer: https://netray.co/contact?intent=erp_ai | Machine catalog: https://netray.co/agent/catalog.json
