Skip to main content

Actions

The ballerinax/peoplehr package exposes the following clients:

ClientPurpose
ClientProvides access to the People HR REST API for managing employees, holidays, salaries, vacancies, applicants, custom screens, appraisals, and queries.

Client

Provides access to the People HR REST API for managing employees, holidays, salaries, vacancies, applicants, custom screens, appraisals, and queries.

Configuration

FieldTypeDefaultDescription
apiKeystringRequiredPeople HR API key obtained from the API Key Management page.
baseURLstring"https://api.peoplehr.net"Base URL for the People HR API.
httpVersionHttpVersionHTTP_1_1HTTP protocol version.
timeoutdecimal60Request timeout in seconds.
retryConfigRetryConfig()Retry configuration for failed requests.
secureSocketClientSecureSocket()SSL/TLS configuration.
proxyProxyConfig()Proxy server configuration.

Initializing the client

import ballerinax/peoplehr;

configurable string apiKey = ?;

peoplehr:Client peoplehrClient = check new ({
apiKey: apiKey,
baseURL: "https://api.peoplehr.net"
});

Operations

Employee management

createNewEmployee

Creates a new employee record in People HR.

Parameters:

NameTypeRequiredDescription
payload`NewEmployeeRequestjson`Yes

Returns: OperationStatus|error

Sample code:

peoplehr:OperationStatus result = check peoplehrClient->createNewEmployee({
EmployeeId: "EMP001",
FirstName: "John",
LastName: "Doe",
StartDate: "2025-01-15",
JobRole: "Software Engineer",
JobRoleEffectiveDate: "2025-01-15",
Location: "London",
Department: "Engineering"
});

Sample response:

{"isError": false, "Status": 0, "Message": "The new employee has been added successfully.", "Result": null}
getEmployeeById

Retrieves employee details by employee ID.

Parameters:

NameTypeRequiredDescription
payloadEmployeeRequestYesRequest containing the employee ID.

Returns: EmployeeResponse|error

Sample code:

peoplehr:EmployeeResponse result = check peoplehrClient->getEmployeeById({
EmployeeId: "EMP001"
});

Sample response:

{
"isError": false,
"Status": 0,
"Message": "The request was processed successfully.",
"Result": {
"EmployeeId": {"DisplayValue": "EMP001"},
"FirstName": {"DisplayValue": "John"},
"LastName": {"DisplayValue": "Doe"},
"EmailId": {"DisplayValue": "[email protected]"},
"Company": {"DisplayValue": "Acme Corp"},
"Department": {"DisplayValue": "Engineering"},
"JobRole": {"DisplayValue": "Software Engineer"},
"StartDate": {"DisplayValue": "2025-01-15"}
}
}
getAllEmployees

Retrieves all employee records, optionally including leavers.

Parameters:

NameTypeRequiredDescription
payloadAllEmployeesRequestYesRequest with option to include leavers.

Returns: EmployeesResponse|error

Sample code:

peoplehr:EmployeesResponse result = check peoplehrClient->getAllEmployees({
IncludeLeavers: false
});

Sample response:

{
"isError": false,
"Status": 0,
"Message": "The request was processed successfully.",
"Result": [
{
"EmployeeId": {"DisplayValue": "EMP001"},
"FirstName": {"DisplayValue": "John"},
"LastName": {"DisplayValue": "Doe"},
"Company": {"DisplayValue": "Acme Corp"}
},
{
"EmployeeId": {"DisplayValue": "EMP002"},
"FirstName": {"DisplayValue": "Jane"},
"LastName": {"DisplayValue": "Smith"},
"Company": {"DisplayValue": "Acme Corp"}
}
]
}
updateEmployee

Updates an existing employee's details.

Parameters:

NameTypeRequiredDescription
payload`EmployeeUpdateRequestjson`Yes

Returns: OperationStatus|error

Sample code:

peoplehr:OperationStatus result = check peoplehrClient->updateEmployee({
EmployeeId: "EMP001",
JobRole: "Senior Software Engineer",
ReasonForChange: "Promotion"
});

Sample response:

{"isError": false, "Status": 0, "Message": "The employee detail has been updated successfully.", "Result": null}
updateEmployeeId

Updates an employee's ID to a new value.

Parameters:

NameTypeRequiredDescription
payloadEmployeeIdUpdateRequestYesOld employee ID, new employee ID, and reason for change.

Returns: OperationStatus|error

Sample code:

peoplehr:OperationStatus result = check peoplehrClient->updateEmployeeId({
OldEmployeeId: "EMP001",
NewEmployeeId: "EMP001-A",
ReasonForChange: "ID restructuring"
});

Sample response:

{"isError": false, "Status": 0, "Message": "The employee id has been updated successfully.", "Result": null}
markAsLeaverById

Marks an employee as a leaver by their employee ID.

Parameters:

NameTypeRequiredDescription
payloadEmployeeLeaverStatusYesLeaver details including employee ID, reason, and final employment date.

Returns: OperationStatus|error

Sample code:

peoplehr:OperationStatus result = check peoplehrClient->markAsLeaverById({
EmployeeId: "EMP001",
ReasonforLeaving: "Resignation",
FinalEmploymentDate: "2025-06-30"
});

Sample response:

{"isError": false, "Status": 0, "Message": "The employee has been marked as leaver successfully.", "Result": null}

Salary

getSalaryDetail

Retrieves salary details for a specific employee, optionally including salary history.

Parameters:

NameTypeRequiredDescription
payloadSalaryDetailRequestYesRequest containing employee ID and whether to include history.

Returns: SalaryDetailGetResponse|error

Sample code:

peoplehr:SalaryDetailGetResponse result = check peoplehrClient->getSalaryDetail({
EmployeeId: "EMP001",
IsIncludeHistory: true
});

Sample response:

{
"isError": false,
"Status": 0,
"Message": "The request was processed successfully.",
"Result": [
{
"EffectiveFrom": "2025-01-15",
"SalaryType": "Annual",
"PaymentFrequency": "Monthly",
"SalaryAmount": "75000",
"TotalSalaryAmount": "75000",
"Currency": "GBP",
"ChangeReason": "New hire"
}
]
}

Holiday management

addNewHoliday

Adds a new holiday record for an employee.

Parameters:

NameTypeRequiredDescription
payload`NewHolidayRequestjson`Yes

Returns: OperationStatus|error

Sample code:

peoplehr:OperationStatus result = check peoplehrClient->addNewHoliday({
EmployeeId: "EMP001",
DurationType: "1",
StartDate: "2025-08-01",
EndDate: "2025-08-05",
DurationInDays: "5",
Comments: "Summer vacation"
});

Sample response:

{"isError": false, "Status": 0, "Message": "The new holiday has been added successfully.", "Result": null}
getHolidayDetail

Retrieves holiday details for a specific employee, optionally filtered by date range.

Parameters:

NameTypeRequiredDescription
payloadHolidayDetailYesRequest containing employee ID and optional date range.

Returns: HolidayGetResponse|error

Sample code:

peoplehr:HolidayGetResponse result = check peoplehrClient->getHolidayDetail({
EmployeeId: "EMP001",
StartDate: "2025-01-01",
EndDate: "2025-12-31"
});

Sample response:

{
"isError": false,
"Status": 0,
"Message": "The request was processed successfully.",
"Result": [
{
"StartDate": "2025-08-01",
"EndDate": "2025-08-05",
"DurationType": 1,
"DurationInDays": 5,
"Status": "Approved",
"Approver": "Jane Smith"
}
]
}
deleteHoliday

Deletes a holiday record for a specific employee.

Parameters:

NameTypeRequiredDescription
payloadHolidayDetailYesRequest containing employee ID and date details of the holiday to delete.

Returns: OperationStatus|error

Sample code:

peoplehr:OperationStatus result = check peoplehrClient->deleteHoliday({
EmployeeId: "EMP001",
StartDate: "2025-08-01",
EndDate: "2025-08-05"
});

Sample response:

{"isError": false, "Status": 0, "Message": "The holiday has been deleted successfully.", "Result": null}

Vacancy & applicant management

createNewVacancy

Creates a new vacancy in People HR.

Parameters:

NameTypeRequiredDescription
payloadNewVacancyYesVacancy details including name, description, location, and department.

Returns: OperationStatus|error

Sample code:

peoplehr:OperationStatus result = check peoplehrClient->createNewVacancy({
VacancyName: "Senior Developer",
VacancyDescription: "Looking for an experienced developer",
Company: "Acme Corp",
Location: "London",
Department: "Engineering",
ClosingDate: "2025-09-30",
JobTitle: "Senior Developer",
VacancyType: "Permanent"
});

Sample response:

{"isError": false, "Status": 0, "Message": "The new vacancy has been created successfully.", "Result": null}
getVacancy

Retrieves details of a specific vacancy by its reference.

Parameters:

NameTypeRequiredDescription
payload`GetVacancyResultRequestjson`Yes

Returns: VacancyGetResponse|error

Sample code:

peoplehr:VacancyGetResponse result = check peoplehrClient->getVacancy({
VacancyReference: "VAC-001"
});

Sample response:

{
"isError": false,
"Status": 0,
"Message": "The request was processed successfully.",
"Result": {
"VacancyName": "Senior Developer",
"VacancyDescription": "Looking for an experienced developer",
"Company": "Acme Corp",
"Location": "London",
"Department": "Engineering",
"Status": 1,
"ClosingDate": "2025-09-30",
"Reference": "VAC-001",
"JobTitle": "Senior Developer"
}
}
getAllVacancies

Retrieves all vacancies in the system.

Parameters:

NameTypeRequiredDescription

Returns: AllVacancies|error

Sample code:

peoplehr:AllVacancies result = check peoplehrClient->getAllVacancies();

Sample response:

{
"isError": false,
"Status": 0,
"Message": "The request was processed successfully.",
"Result": [
{
"VacancyName": "Senior Developer",
"Company": "Acme Corp",
"Location": "London",
"Department": "Engineering",
"Status": 1,
"Reference": "VAC-001"
}
]
}
createNewApplicant

Creates a new applicant for a vacancy.

Parameters:

NameTypeRequiredDescription
payloadNewApplicantYesApplicant details including name, vacancy reference, and documents.

Returns: OperationStatus|error

Sample code:

peoplehr:OperationStatus result = check peoplehrClient->createNewApplicant({
VacancyReference: "VAC-001",
FirstName: "Alice",
LastName: "Johnson",
Email: "[email protected]",
Skills: "Ballerina, Java, Cloud",
Documents: []
});

Sample response:

{"isError": false, "Status": 0, "Message": "The new applicant has been created successfully.", "Result": null}
uploadApplicantDocument

Uploads a document for an applicant.

Parameters:

NameTypeRequiredDescription
payloadNewDocumentYesDocument details including applicant ID, document name, description, and base64-encoded file content.

Returns: OperationStatus|error

Sample code:

peoplehr:OperationStatus result = check peoplehrClient->uploadApplicantDocument({
ApplicantId: "APP-001",
DocumentName: "Resume",
Description: "Candidate resume",
File: "<base64-encoded-file-content>"
});

Sample response:

{"isError": false, "Status": 0, "Message": "The document has been uploaded successfully.", "Result": null}
checkDuplicateApplicant

Checks whether a duplicate applicant exists for a given vacancy.

Parameters:

NameTypeRequiredDescription
payloadApplicantInformationYesApplicant information including first name, last name, and vacancy reference.

Returns: OperationStatus|error

Sample code:

peoplehr:OperationStatus result = check peoplehrClient->checkDuplicateApplicant({
FirstName: "Alice",
LastName: "Johnson",
VacancyReference: "VAC-001",
Email: "[email protected]"
});

Sample response:

{"isError": false, "Status": 0, "Message": "No duplicate applicant found.", "Result": null}

Query

getQueryByName

Executes a saved query by name and returns the results.

Parameters:

NameTypeRequiredDescription
payloadQueryResultGetRequestYesRequest containing the query name.

Returns: QueryDetail|error

Sample code:

peoplehr:QueryDetail result = check peoplehrClient->getQueryByName({
QueryName: "Active Employees"
});

Sample response:

{
"isError": false,
"Status": 0,
"Message": "The request was processed successfully.",
"Result": [
{"EmployeeId": "EMP001", "FirstName": "John", "LastName": "Doe", "Department": "Engineering"},
{"EmployeeId": "EMP002", "FirstName": "Jane", "LastName": "Smith", "Department": "Marketing"}
]
}

Authentication

checkAuthentication

Validates whether the provided user credentials are correct.

Parameters:

NameTypeRequiredDescription
payloadAuthenticationInfoYesUser email address and password to verify.

Returns: AuthenticationResponse|error

Sample code:

peoplehr:AuthenticationResponse result = check peoplehrClient->checkAuthentication({
EmailAddress: "[email protected]",
Password: "hashedPassword123"
});

Sample response:

{
"isError": false,
"Status": 0,
"Message": "Authenticated successfully.",
"Result": {"EmployeeId": "EMP001"}
}

Custom screens

getEmployeeScreenDetail

Retrieves all employee custom screen details.

Parameters:

NameTypeRequiredDescription

Returns: EmployeeScreenDetailResponse|error

Sample code:

peoplehr:EmployeeScreenDetailResponse result = check peoplehrClient->getEmployeeScreenDetail();

Sample response:

{
"isError": false,
"Status": 0,
"Message": "The request was processed successfully.",
"Result": [
{
"ScreenId": 1,
"ScreenName": "Training Records",
"TxnId": 101,
"Customfields": [{"ColumnName": "CourseName", "ColumnValue": "Safety Training"}]
}
]
}
getEmployeeScreenDetailByEmployeeID

Retrieves employee custom screen details filtered by employee ID.

Parameters:

NameTypeRequiredDescription
payloadScreenDetailByEmployeeIDRequestYesRequest containing employee ID and screen ID.

Returns: EmployeeScreenDetailResponse|error

Sample code:

peoplehr:EmployeeScreenDetailResponse result = check peoplehrClient->getEmployeeScreenDetailByEmployeeID({
EmployeeId: "EMP001",
ScreenId: 1
});

Sample response:

{
"isError": false,
"Status": 0,
"Message": "The request was processed successfully.",
"Result": [
{
"ScreenId": 1,
"ScreenName": "Training Records",
"TxnId": 101,
"Customfields": [{"ColumnName": "CourseName", "ColumnValue": "Safety Training"}]
}
]
}
getEmployeeScreenDetailByTransactionID

Retrieves employee custom screen details filtered by transaction ID.

Parameters:

NameTypeRequiredDescription
payloadScreenDetailByTransactionIDRequestYesRequest containing employee ID, screen ID, and transaction ID.

Returns: EmployeeScreenDetailResponse|error

Sample code:

peoplehr:EmployeeScreenDetailResponse result = check peoplehrClient->getEmployeeScreenDetailByTransactionID({
EmployeeId: "EMP001",
ScreenId: 1,
CustomScreenTransactionId: 101
});

Sample response:

{
"isError": false,
"Status": 0,
"Message": "The request was processed successfully.",
"Result": [
{
"ScreenId": 1,
"ScreenName": "Training Records",
"TxnId": 101,
"Customfields": [{"ColumnName": "CourseName", "ColumnValue": "Safety Training"}]
}
]
}
addNewCustomScreenTransaction

Adds a new custom screen transaction for an employee.

Parameters:

NameTypeRequiredDescription
payloadNewCustomScreenTransactionDetailsYesNew custom screen transaction details including employee ID, screen ID, and custom columns.

Returns: OperationStatus|error

Sample code:

peoplehr:OperationStatus result = check peoplehrClient->addNewCustomScreenTransaction({
EmployeeId: "EMP001",
ScreenId: 1,
CustomColumns: [
{ColumnName: "CourseName", ColumnValue: "Fire Safety"},
{ColumnName: "CompletionDate", ColumnValue: "2025-03-01"}
],
AddFiles: []
});

Sample response:

{"isError": false, "Status": 0, "Message": "The custom screen transaction has been added successfully.", "Result": null}
updateCustomScreenTransaction

Updates an existing custom screen transaction.

Parameters:

NameTypeRequiredDescription
payloadExistingCustomScreenTransactionDetailsYesUpdated custom screen transaction details including transaction ID.

Returns: OperationStatus|error

Sample code:

peoplehr:OperationStatus result = check peoplehrClient->updateCustomScreenTransaction({
EmployeeId: "EMP001",
ScreenId: 1,
CustomScreenTransactionId: 101,
CustomColumns: [
{ColumnName: "CourseName", ColumnValue: "Advanced Fire Safety"}
],
AddFiles: []
});

Sample response:

{"isError": false, "Status": 0, "Message": "The custom screen transaction has been updated successfully.", "Result": null}
DeleteCustomScreenTransaction

Deletes a custom screen transaction by transaction ID.

Parameters:

NameTypeRequiredDescription
payloadScreenDetailByTransactionIDRequestYesRequest containing employee ID, screen ID, and transaction ID.

Returns: OperationStatus|error

Sample code:

peoplehr:OperationStatus result = check peoplehrClient->DeleteCustomScreenTransaction({
EmployeeId: "EMP001",
ScreenId: 1,
CustomScreenTransactionId: 101
});

Sample response:

{"isError": false, "Status": 0, "Message": "The custom screen transaction has been deleted successfully.", "Result": null}

Appraisals

getAppraisalDetailsByEmployeeID

Retrieves appraisal details for a specific employee within a date range.

Parameters:

NameTypeRequiredDescription
payloadAppraisalDetailsRequestYesRequest containing employee ID and date range.

Returns: AppraisalDetailsResponse|error

Sample code:

peoplehr:AppraisalDetailsResponse result = check peoplehrClient->getAppraisalDetailsByEmployeeID({
EmployeeId: "EMP001",
StartDate: "2024-01-01",
EndDate: "2025-12-31"
});

Sample response:

{
"isError": false,
"Status": 0,
"Message": "The request was processed successfully.",
"Result": [
{
"AppraisalId": 501,
"AppraisalReviewDate": "2025-03-15",
"Reviewer": "Jane Smith",
"Note": "Excellent performance this quarter.",
"ActionPlan": "Take on mentoring responsibilities.",
"Objectives": "Lead the new microservices migration project."
}
]
}
getAppraisalDetailsByAppraisalID

Retrieves appraisal details by a specific appraisal ID.

Parameters:

NameTypeRequiredDescription
payloadAppraisalDetailsByAppraisalIDRequestYesRequest containing employee ID and appraisal ID.

Returns: AppraisalDetailsResponse|error

Sample code:

peoplehr:AppraisalDetailsResponse result = check peoplehrClient->getAppraisalDetailsByAppraisalID({
EmployeeId: "EMP001",
AppraisalId: 501
});

Sample response:

{
"isError": false,
"Status": 0,
"Message": "The request was processed successfully.",
"Result": [
{
"AppraisalId": 501,
"AppraisalReviewDate": "2025-03-15",
"Reviewer": "Jane Smith",
"Note": "Excellent performance this quarter.",
"ActionPlan": "Take on mentoring responsibilities.",
"Objectives": "Lead the new microservices migration project."
}
]
}