People API
11 endpoints, generated from packages/core/openapi/v1.snapshot.json (OpenAPI 3.1.0, contract version 1.0). Conventions for lists, errors, money and authentication are on the API conventions page.
POST/api/v1/people/checklist-items/{itemId}
Complete, skip (with reason) or reopen a checklist item
Parameters
| Name | In | Type | Required |
|---|---|---|---|
itemId | path | string (uuid) | yes |
Request body
application/json, object | object | object, required
Responses
204 No content.
- 400
validation_failed - 401
session_expired,session_revoked,unauthenticated - 403
csrf_rejected,forbidden,mfa_enrolment_required - 404
not_found - 409
conflict
GET/api/v1/people/imports/{jobId}
Get an import preview
Parameters
| Name | In | Type | Required |
|---|---|---|---|
jobId | path | string (uuid) | yes |
Responses
200 Success. object
jobIdstringrequiredkindenumrequiredone of "employees", "compensation", "ytd"
fileNamestring | nullrequiredstatusenumrequiredone of "previewed", "committed", "failed"
totalRowsintegerrequiredmin -9007199254740991
validRowsintegerrequiredmin -9007199254740991
errorsarray of objectrequiredrowintegerrequiredmin -9007199254740991
columnstringrequiredvaluestringrequiredmessagestringrequired
rowsarray of objectrequiredrowintegerrequiredmin -9007199254740991
summarystringrequiredvalidbooleanrequired
expiresAtstringrequiredcanCommitbooleanrequired
- 400
validation_failed - 401
session_expired,session_revoked,unauthenticated - 403
forbidden,mfa_enrolment_required - 404
not_found
POST/api/v1/people/imports/{jobId}/commit
Confirm an import: all rows in one transaction, or none
Parameters
| Name | In | Type | Required |
|---|---|---|---|
jobId | path | string (uuid) | yes |
Responses
200 Success. object
jobIdstringrequiredkindenumrequiredone of "employees", "compensation", "ytd"
fileNamestring | nullrequiredstatusenumrequiredone of "previewed", "committed", "failed"
totalRowsintegerrequiredmin -9007199254740991
validRowsintegerrequiredmin -9007199254740991
errorsarray of objectrequiredrowintegerrequiredmin -9007199254740991
columnstringrequiredvaluestringrequiredmessagestringrequired
rowsarray of objectrequiredrowintegerrequiredmin -9007199254740991
summarystringrequiredvalidbooleanrequired
expiresAtstringrequiredcanCommitbooleanrequired
- 400
validation_failed - 401
session_expired,session_revoked,unauthenticated - 403
csrf_rejected,forbidden,mfa_enrolment_required - 404
not_found - 409
conflict
POST/api/v1/people/imports/{kind}/preview
Upload a CSV and preview the import (nothing is written)
Parameters
| Name | In | Type | Required |
|---|---|---|---|
kind | path | enum | yes |
Request body
application/json, object, required
fileNamestring or nullmax length 200
contentstringrequiredmax length 5243904
Responses
201 Success. object
jobIdstringrequiredkindenumrequiredone of "employees", "compensation", "ytd"
fileNamestring | nullrequiredstatusenumrequiredone of "previewed", "committed", "failed"
totalRowsintegerrequiredmin -9007199254740991
validRowsintegerrequiredmin -9007199254740991
errorsarray of objectrequiredrowintegerrequiredmin -9007199254740991
columnstringrequiredvaluestringrequiredmessagestringrequired
rowsarray of objectrequiredrowintegerrequiredmin -9007199254740991
summarystringrequiredvalidbooleanrequired
expiresAtstringrequiredcanCommitbooleanrequired
- 400
validation_failed - 401
session_expired,session_revoked,unauthenticated - 403
csrf_rejected,forbidden,mfa_enrolment_required
GET/api/v1/people/imports/templates/{kind}
Download an import template (CSV)
Parameters
| Name | In | Type | Required |
|---|---|---|---|
kind | path | enum | yes |
Responses
200 CSV template text/csv
- 400
validation_failed - 401
session_expired,session_revoked,unauthenticated - 403
forbidden,mfa_enrolment_required
GET/api/v1/people/inbox
People work assigned to me: open checklist items and change requests to decide
Responses
200 Success. object
checklistItemsarray of objectrequireditemIdstringrequiredemployeeIdstringrequiredtitlestringrequireddueOnstringrequiredkindenumrequiredone of "onboarding", "offboarding"
changeRequestsarray of objectrequiredidstringrequiredstatusenumrequiredone of "pending", "approved", "rejected", "cancelled"
routeToRoleenumrequiredone of "hr_admin", "payroll_admin"
fieldNamesarray of stringrequiredproposedobjectrequiredsubmittedAtstringrequireddecidedAtstring | nullrequiredeffectiveFromstring | nullrequireddecisionNotestring | nullrequiredemployeeIdstringrequired
- 401
session_expired,session_revoked,unauthenticated - 403
mfa_enrolment_required
POST/api/v1/people/me/change-requests
Request a change to sensitive details (legal name, ID, DOB, residency, race, religion, bank)
Request body
application/json, object, required
personalobjectlegalNamestringmin length 1 · max length 200
idTypeenumone of "nric", "fin", "other"
idNumberstringmin length 1
dobstringresidencyStatusenumone of "citizen", "pr", "foreigner"
prStartDatestring | nullracestring or nullmax length 60
raceSecondarystring or nullmax length 60
religionenum or nullone of "buddhism", "christianity", "islam", "hinduism", "taoism", "sikhism", "other", "none", "undisclosed"
bankobjectbankCodeenumrequiredone of "DBSSSGSG", "POSBSGSG", "OCBCSGSG", "UOVBSGSG", "SCBLSGSG", "HSBCSGS2", "CITISGSL", "MBBESGS2", "BKCHSGSG", "ICBKSGSG", "RHBBSGSG", "CIBBSGSG", "HLBBSGSG", "SIVBSGSG", "TRWISGSG", "GXSPSGSG"
accountNumberstringrequiredmin length 1
holderNamestringrequiredmin length 1 · max length 140
attachmentFileKeystring or nullmax length 512
notestring or nullmax length 500
Responses
201 Success. object
itemsarray of objectrequiredidstringrequiredstatusenumrequiredone of "pending", "approved", "rejected", "cancelled"
routeToRoleenumrequiredone of "hr_admin", "payroll_admin"
fieldNamesarray of stringrequiredproposedobjectrequiredsubmittedAtstringrequireddecidedAtstring | nullrequiredeffectiveFromstring | nullrequireddecisionNotestring | nullrequired
- 400
validation_failed - 401
session_expired,session_revoked,unauthenticated - 403
csrf_rejected,mfa_enrolment_required - 404
not_found
POST/api/v1/people/me/change-requests/{requestId}/cancel
Withdraw my pending change request
Parameters
| Name | In | Type | Required |
|---|---|---|---|
requestId | path | string (uuid) | yes |
Responses
204 No content.
- 400
validation_failed - 401
session_expired,session_revoked,unauthenticated - 403
csrf_rejected,mfa_enrolment_required - 404
not_found - 409
conflict
GET/api/v1/people/me/profile
My profile, with my pending change requests
Responses
200 Success. object
employeeobjectrequiredidstringrequiredemployeeNumberstringrequirednamestringrequiredlegalNamestringrequiredpreferredNamestring | nullrequiredworkEmailstring | nullrequiredstatusobjectrequiredcodeenumrequiredone of "not_started", "active", "leaving", "former", "no_tenure"
labelstringrequiredsincestringlastWorkingDaystring
jobobject or nullrequiredeffectiveFromstringrequiredYYYY-MM-DD
jobTitlestringrequireddepartmentobject or nullrequiredidstringrequirednamestringrequired
teamobject or nullrequiredidstringrequirednamestringrequired
locationobject or nullrequiredidstringrequirednamestringrequired
managerobject or nullrequiredidstringrequirednamestringrequired
employmentobjectcostCentreobject or nullrequiredidstringrequirednamestringrequired
employmentTypestringrequiredworkScheduleobject or nullrequiredidstringrequirednamestringrequired
probationEndstring | nullrequiredeaCoveredbooleanrequiredisWorkmanbooleanrequiredisManagerOrExecutivebooleanrequiredtenuresarray of objectrequiredidstringrequiredhireDatestringrequiredYYYY-MM-DD
lastWorkingDaystring | nullrequiredcessationReasonstring | nullrequirednoticeDaysnumber | nullrequired
historyarray of objectrequiredidstringrequiredeffectiveFromstringrequiredYYYY-MM-DD
effectiveTostring | nullrequiredjobTitlestringrequireddepartmentstring | nullrequiredteamstring | nullrequiredlocationstring | nullrequiredmanagerstring | nullrequiredemploymentTypestringrequiredeventIdstringrequired
eventsarray of objectrequiredidstringrequiredtypestringrequiredeffectiveDatestringrequiredYYYY-MM-DD
statusenumrequiredone of "scheduled", "effective", "cancelled"
payloadobjectrequiredcreatedAtstringrequired
directReportsarray of objectrequiredidstringrequirednamestringrequired
personalobjectidTypestringrequiredidNumberMaskedstringrequiredsensitive: nricdobstringrequiredYYYY-MM-DD
ageintegerrequiredmin -9007199254740991
genderstring | nullrequirednationalitystring | nullrequiredresidencyStatusstringrequiredprStartDatestring | nullrequiredsprCpfOptionstring | nullrequiredsprCpfOptionApprovedOnstring | nullrequiredracestring | nullrequiredraceSecondarystring | nullrequiredreligionstring | nullrequiredshgOptOutOnstring | nullrequiredpersonalEmailstring | nullrequiredmobilestring | nullrequiredaddressobject or nullrequiredblockstring | nullstreetstring | nullunitstring | nullbuildingstring | nullpostalCodestring | nullcountrystring | null
emergencyContactsarray of objectidstringrequirednamestringrequiredrelationshipstringrequiredphonestringrequired
workPassesarray of objectidstringrequiredpassTypestringrequiredpassTypeLabelstringrequiredpassNumberMaskedstring | nullrequiredsensitive: nricissuedOnstring | nullrequiredexpiresOnstringrequiredYYYY-MM-DD
cancelledOnstring | nullrequirednotesstring | nullrequiredstateenumrequiredone of "valid", "expiring", "expired", "cancelled"
compensationobjectcurrentobject or nullrequiredidstringrequiredeffectiveFromstringrequiredYYYY-MM-DD
effectiveTostring | nullrequiredpayBasisenumrequiredone of "monthly", "hourly"
amountCentsintegerrequiredsensitive: salarymin -9007199254740991
reasonstring | nullrequiredretroactivebooleanrequiredeventIdstringrequired
historyarray of objectrequiredidstringrequiredeffectiveFromstringrequiredYYYY-MM-DD
effectiveTostring | nullrequiredpayBasisenumrequiredone of "monthly", "hourly"
amountCentsintegerrequiredsensitive: salarymin -9007199254740991
reasonstring | nullrequiredretroactivebooleanrequiredeventIdstringrequired
allowancesarray of objectrequiredidstringrequiredallowanceTypeIdstringrequirednamestringrequiredamountCentsintegerrequiredsensitive: salarymin -9007199254740991
effectiveFromstringrequiredYYYY-MM-DD
effectiveTostring | nullrequired
bankobjectcurrentobject or nullrequiredidstringrequiredbankCodestringrequiredbankNamestringrequiredaccountLast4stringrequiredsensitive: bankholderNamestringrequiredsensitive: bankeffectiveFromstringrequiredYYYY-MM-DD
effectiveTostring | nullrequired
historyarray of objectrequiredidstringrequiredbankCodestringrequiredbankNamestringrequiredaccountLast4stringrequiredsensitive: bankholderNamestringrequiredsensitive: bankeffectiveFromstringrequiredYYYY-MM-DD
effectiveTostring | nullrequired
redactedFieldsarray of stringrequired
changeRequestsarray of objectrequiredidstringrequiredstatusenumrequiredone of "pending", "approved", "rejected", "cancelled"
routeToRoleenumrequiredone of "hr_admin", "payroll_admin"
fieldNamesarray of stringrequiredproposedobjectrequiredsubmittedAtstringrequireddecidedAtstring | nullrequiredeffectiveFromstring | nullrequireddecisionNotestring | nullrequired
- 401
session_expired,session_revoked,unauthenticated - 403
mfa_enrolment_required - 404
not_found
PATCH/api/v1/people/me/profile
Edit my preferred name, personal email, mobile, address and emergency contacts
Request body
application/json, object, required
preferredNamestring or nullmax length 100
personalEmailstring (email) or nullmobilestring or nullmax length 30
addressobject or nullblockstring or nullmax length 20
streetstring or nullmax length 200
unitstring or nullmax length 20
buildingstring or nullmax length 200
postalCodestring or nullmax length 10
countrystring or nullmin length 2 · max length 2
emergencyContactsarray of objectnamestringrequiredmin length 1 · max length 120
relationshipstringrequiredmin length 1 · max length 60
phonestringrequiredmin length 1
Responses
204 No content.
- 400
validation_failed - 401
session_expired,session_revoked,unauthenticated - 403
csrf_rejected,mfa_enrolment_required - 404
not_found
GET/api/v1/people/reference
Reference lists for people forms (banks, pass types, races, religions)
Responses
200 Success. object
banksarray of objectrequiredcodestringrequirednamestringrequired
workPassTypesarray of objectrequiredcodestringrequiredlabelstringrequired
racesarray of stringrequiredreligionsarray of stringrequiredgendersarray of stringrequiredemploymentTypesarray of stringrequiredterminationReasonsarray of stringrequiredexportColumnsarray of objectrequiredkeystringrequiredlabelstringrequired
- 401
session_expired,session_revoked,unauthenticated - 403
mfa_enrolment_required