This content provides an early look at an upcoming extension to the SEEK API. You may use it to scope integration effort, but the features described are not fully implemented and may be adjusted ahead of a production release.Check with your SEEK contact before starting any build work described here.
Candidate object is structured as follows:CandidatePerson fields:- Name
- Email addresses, with at least one required
- Optional phone numbers
- Optional home locations
- Whether they can be contacted
CandidateProfile containing:- Create and update dates
- Profile actions that deep link into your software
- Preferred work locations
uploadCandidate mutation adds a new candidate and their profile.
You should use this mutation whenever a new candidate is created in your software.
This includes candidates you create in your software using profiles purchased from Talent Search.To avoid unintentional duplication of data, SEEK enforces uniqueness on an email address of the candidate.
Requests to share a candidate require a seekPrimaryEmailAddress field with a value that matches one of the given email address values in the person.communication field.
A request to upload an existing candidate will receive an UploadCandidatePayload_Conflict result.
The existing candidate will not be updated; you can select their details from the conflict result.If a candidate has expressed a preference to not be contacted,
you should upload them with a seekDoNotContactIndicator value of true in the person.communication field.
This will customise the display name of the candidate in SEEK Talent Search and prevent hirers from contacting them.seekDoNotContactIndicator | Display name |
|---|---|
null | Hana Webber |
false | Hana Webber |
true | Hana Webber has elected not to be contacted by Partner |
seekProcessHistory field during initial upload.
Individual items can be later created, modified and deleted using the relevant interaction history operations.
SEEK strongly recommends providing the first 20 interaction history items when backfilling an existing candidate.
This maximises the rate your software can backfill candidates while reducing load on SEEK’s systems.Keep track of the IDs assigned to the candidate, their profile and their interaction history to perform subsequent update and delete operations.
The UploadCandidatePayload_Success.candidateProcessHistoryItems field contains the uploaded interaction history in input order for ease of correlation.MutationVariablesSuccess resultConflict result
CopyGraphQL Explorer
mutation ($input: UploadCandidateInput!) {
uploadCandidate(input: $input) {
... on UploadCandidatePayload_Success {
candidate {
documentId {
value
}
profiles {
profileId {
value
}
}
}
candidateProcessHistoryItems {
id {
value
}
}
}
... on UploadCandidatePayload_Conflict {
conflictingCandidate {
documentId {
value
}
profiles {
profileId {
value
}
}
}
}
}
}- The
updateUploadedCandidatePersonmutation replaces personal details.A request to update the candidate’s email with an existingseekPrimaryEmailAddresswill receive aUpdateUploadedCandidatePersonPayload_Conflict. The existing candidate will not be updated; you can select the conflicting candidate details from the conflict result. - The
updateUploadedCandidateProfileActionsmutation replaces profile actions. - The
updateUploadedCandidateProfileDatesmutation replaces profile create and update dates.The profile’s update date is intended to reflect when the candidate has been updated in your software. This mutation should be used even if the update isn’t captured by the profile fields you upload to SEEK. - The
updateUploadedCandidateProfilePositionPreferencesmutation replaces profile position preferences.
MutationVariablesSuccess resultConflict result
CopyGraphQL Explorer
mutation updateUploadedCandidate(
$documentId: String!
$person: CandidatePersonInput!
$seekPrimaryEmailAddress: String!
$profileId: String!
$seekActions: [CandidateProcessActionInput!]!
$createDateTime: DateTime!
$updateDateTime: DateTime!
$positionPreferences: [PositionPreferenceInput!]!
) {
updateUploadedCandidatePerson(
input: {
candidate: {
documentId: $documentId
person: $person
seekPrimaryEmailAddress: $seekPrimaryEmailAddress
}
}
) {
... on UpdateUploadedCandidatePersonPayload_Success {
candidate {
documentId {
value
}
}
}
... on UpdateUploadedCandidatePersonPayload_Conflict {
conflictingCandidate {
documentId {
value
}
}
}
}
updateUploadedCandidateProfileActions(
input: {
candidateProfile: { profileId: $profileId, seekActions: $seekActions }
}
) {
candidateProfile {
candidate {
documentId {
value
}
}
}
}
updateUploadedCandidateProfileDates(
input: {
candidateProfile: {
profileId: $profileId
createDateTime: $createDateTime
updateDateTime: $updateDateTime
}
}
) {
candidateProfile {
candidate {
documentId {
value
}
}
}
}
updateUploadedCandidateProfilePositionPreferences(
input: {
candidateProfile: {
profileId: $profileId
positionPreferences: $positionPreferences
}
}
) {
candidateProfile {
candidate {
documentId {
value
}
}
}
}
}deleteUploadedCandidate mutation deletes an uploaded candidate and their profile.This will erase all uploaded details of the candidate from SEEK’s systems.MutationVariablesResult
CopyGraphQL Explorer
mutation ($input: DeleteUploadedCandidateInput!) {
deleteUploadedCandidate(input: $input) {
candidate {
documentId {
value
}
profiles {
profileId {
value
}
}
}
}
}