Integration with Signify using the user import API
The user import API should be used when a third party needs to push data to Signify on a specific ruleset to update employee records.
1. Get an Access Token
First, you need to authenticate and get an access token.
Run the cURL command (replace the values as needed):
curl --request POST \
--url https://live.signifyhr.co.za/api/identity/v1/CreateUserAccessToken \
--header 'Content-Type: application/json' \
--cookie .AspNetCore.Antiforgery.3CuCAIFqZrU=YOUR_ANTIFORGERY_COOKIE \
--data '{"username":"YOUR_USERNAME","password":"YOUR_PASSWORD","clientId":"YOUR_CLIENT_ID","skipRulesetActiveCheck":false}'
- This will return a JSON response with an accessToken field.
- The values for YOUR_USERNAME, YOUR_PASSWORD must be generated for a valid user in the system and provided by your system administrator.
- The value YOUR_CLIENT_ID can be retrieved on the ruleset by going to
2. Use the Access Token to Import Users
Copy the value of accessToken (it starts with Bearer ...).
Now, use this token in the next cURL command to import your user data:
curl --request POST \
--url https://live.signifyhr.co.za/api/importapi/v1/ImportUsers \
--header 'Authorization: YOUR_ACCESS_TOKEN' \
--header 'Content-Type: application/json' \
--cookie .AspNetCore.Antiforgery.aJ9qYnOEx9w=YOUR_ANTIFORGERY_COOKIE \
--data '{
"users": [
{
"username": "JDoe123",
"name": "John",
"surname": "Doe",
...
}
// Add more users as needed
]
}'
- Replace YOUR_ACCESS_TOKEN with the value from step 1.
- Replace the user data in the user's array as needed. The following code snippet shows all the current available fields for import
{
"users": [
{
"externalId": 0,
"username": "string",
"name": "string",
"surname": "string",
"emailAddress": "string",
"idNumber": "string",
"mobileNumber": "string",
"orgLevel1": {
"externalId": 0,
"name": "string",
"code": "string",
"workLocationName": "string"
},
"orgLevel2": {
"externalId": 0,
"name": "string",
"code": "string",
"workLocationName": "string"
},
"orgLevel3": {
"externalId": 0,
"name": "string",
"code": "string",
"workLocationName": "string"
},
"orgLevel4": {
"externalId": 0,
"name": "string",
"code": "string",
"workLocationName": "string"
},
"orgLevel5": {
"externalId": 0,
"name": "string",
"code": "string",
"workLocationName": "string"
},
"orgLevel6": {
"externalId": 0,
"name": "string",
"code": "string",
"workLocationName": "string"
},
"orgLevel7": {
"externalId": 0,
"name": "string",
"code": "string",
"workLocationName": "string"
},
"orgLevel8": {
"externalId": 0,
"name": "string",
"code": "string",
"workLocationName": "string"
},
"orgLevel9": {
"externalId": 0,
"name": "string",
"code": "string",
"workLocationName": "string"
},
"jobExternalId": 0,
"jobTitle": "string",
"jobCode": "string",
"positionExternalId": 0,
"positionTitle": "string",
"positionCode": "string",
"appointmentType": "string",
"lineManagerUsername": "string",
"performanceManagerUsername": "string",
"startDate": "string",
"endDate": "string",
"reasonForTermination": "string",
"passportNumber": "string",
"payrollConnectorName": "string",
"payrollId": "string",
"middleName": "string",
"initials": "string",
"title": "string",
"knownAs": "string",
"homeLanguage": "string",
"gender": "string",
"race": "string",
"citizenship": "string",
"maritalStatus": "string",
"maritalDate": "string",
"workNumber": "string",
"homeNumber": "string",
"birthDay": "string",
"residentialUnitNumber": "string",
"residentialComplexName": "string",
"residentialStreetNumber": "string",
"residentialStreetName": "string",
"residentialSuburbDistrict": "string",
"residentialCityTown": "string",
"residentialCountry": "string",
"residentialProvince": "string",
"residentialPostalCode": "string",
"residentialAsPostal": "string",
"postalUnitNumber": "string",
"postalComplexName": "string",
"postalStreetNumber": "string",
"postalStreetName": "string",
"postalSuburbDistrict": "string",
"postalCityTown": "string",
"postalCountry": "string",
"postalProvince": "string",
"postalCode": "string",
"occupationalCategory": "string",
"occupationalLevel": "string",
"jobOfoCode": "string",
"jobGrade": "string",
"gradingType": "string",
"departmentManagerUsername": "string",
"trainingManagerUsername": "string",
"pdpFirstApproverUsername": "string",
"pdpSecondApproverUsername": "string",
"leaveManagerUsername": "string",
"salaryReviewManagerUsername": "string",
"talentManagementManagerUsername": "string",
"secondaryReportingManagerUsername": "string",
"lineManagerOnceRemovedUsername": "string",
"workflowOriginatorUsername": "string",
"financeManagerUsername": "string",
"financeOfficerUsername": "string",
"hrOfficerUsername": "string",
"hrRecruitmentOfficerUsername": "string",
"businessUnitHrManagerUsername": "string",
"disability": "string",
"alternateEmailAddress": "string",
"location": "string",
"employeeCode": "string",
"startDateInGroup": "string",
"secondaryJobRequisitionApproverUsername": "string",
"leaveManagerAlternateApproverUsername": "string",
"validationReason": "string",
"startDateInCompany": "string"
}
]
}
Below is the list of fields that are required and recommended. Fields with no comment are optional.
username
employeeCode
name
surname
emailAddress
alternateEmailAddress
idNumber
passportNumber
mobileNumber
workNumber
homeNumber
middleName
initials
title
knownAs
homeLanguage
gender
race
citizenship
maritalStatus
birthDay
disability
residentialUnitNumber
residentialComplexName
residentialStreetNumber
residentialStreetName
residentialSuburbDistrict
residentialCityTown
residentialCountry
residentialProvince
residentialPostalCode
residentialAsPostal
postalUnitNumber
postalComplexName
postalStreetNumber
postalStreetName
postalSuburbDistrict
postalCityTown
postalCountry
postalProvince
postalCode
jobExternalId
jobTitle
jobCode
occupationalCategory
occupationalLevel
jobOfoCode
jobGrade
gradingType
positionExternalId
positionTitle
positionCode
appointmentType
startDate
endDate
reasonForTermination
startDateInGroup
startDateInCompany
orgLevel1_externalId
orgLevel1_name
orgLevel1_code
orgLevel1_workLocationName
orgLevel2_externalId
orgLevel2_name
orgLevel2_code
orgLevel2_workLocationName
orgLevel3_externalId
orgLevel3_name
orgLevel3_code
orgLevel3_workLocationName
orgLevel4_externalId
orgLevel4_name
orgLevel4_code
orgLevel4_workLocationName
orgLevel5_externalId
orgLevel5_name
orgLevel5_code
orgLevel5_workLocationName
orgLevel6_externalId
orgLevel6_name
orgLevel6_code
orgLevel6_workLocationName
orgLevel7_externalId
orgLevel7_name
orgLevel7_code
orgLevel7_workLocationName
orgLevel8_externalId
orgLevel8_name
orgLevel8_code
orgLevel8_workLocationName
orgLevel9_externalId
orgLevel9_name
orgLevel9_code
orgLevel9_workLocationName
lineManagerUsername
performanceManagerUsername
departmentManagerUsername
trainingManagerUsername
pdpFirstApproverUsername
pdpSecondApproverUsername
leaveManagerUsername
salaryReviewManagerUsername
talentManagementManagerUsername
secondaryReportingManagerUsername
lineManagerOnceRemovedUsername
workflowOriginatorUsername
financeManagerUsername
financeOfficerUsername
hrOfficerUsername
hrRecruitmentOfficerUsername
businessUnitHrManagerUsername
secondaryJobRequisitionApproverUsername
leaveManagerAlternateApproverUsername
