postPosition mutation.A brief summary of important fields is provided below.Field | Path | Example | Requirement |
|---|---|---|---|
Identifier | seekPartnerPositionId | Mandatory | |
Hiring organization | postingRequester | Mandatory | |
Title | positionTitle | Senior Business Analyst | Mandatory |
Location | positionLocation | Mandatory | |
Description | positionFormattedDescriptions | Mandatory | |
Work type | seekAnzWorkTypeCode | FullTime | Mandatory |
Work arrangements | seekWorkArrangementCodes | OnSite | Mandatory |
Salary | offeredRemunerationPackage | Mandatory | |
Application URL | postingInstructions.applicationMethods | https://example.com/position/123/apply | Mandatory to link out |
Category | jobCategories | Business & Channel Analysts | Recommended |
Search bullet points | positionFormattedDescriptions | Recommended | |
Search summary | positionFormattedDescriptions | Recommended | |
Listing date | postingInstructions.start | 2048-01-01T00:00:00.000Z | Recommended |
Closing date | postingInstructions.end | 2048-01-31T00:00:00.000Z | Recommended |
"REQ-123"seekPartnerPositionId across all operations relating to the position.When sharing a position,
include the corresponding SEEK hirer id,
as well as a stable identifier that your software uses to uniquely identify the hiring organization, seekPartnerHirerId.{"id": "seekAnzPublicTest:organization:seek:93WyyF1h",
"seekPartnerHirerId": "abc-123"
}{"communication": {
"address": {
"line": "Wallaman Falls, Lookout Rd",
"city": "Wallaman",
"countrySubDivisions": {
"type": "State",
"value": "QLD"
},
"postalCode": "4850",
"country": "AU"
},
"phone": {
"formattedNumber": "1900 654 321"
}
},
"name": "Acme Corp",
"personContacts": {
"name": { "formattedName": "Francis Admin" },
"roleCode": "AccountAdministrator",
"communication": {
"email": [{ "address": "francis.admin@example.com" }],
"phone": [{ "formattedNumber": "1800 160 401" }]
}
},
"seekPartnerHirerId": "abc-123"
}{"city": "Wallaman",
"countrySubDivisions": {
"type": "State",
"value": "QLD"
},
"postalCode": "4850",
"country": "AU"
}seekWorkArrangementCodes to Remote.
A location is still required for a remote position;
this can be set to the headquarters or local branch of the hirer’s organization.Descriptions for the position are supplied in an array.Provide a complete representation of the position in AdvertisementDetails,
including paragraphs and formatting to make the content easier to read.
Do not truncate with … or similar.[// Short description to be shown in search results
{
"descriptionId": "SearchSummary",
"content": "Seasoned BA sought to lead strategic initiatives."
},
// Three bullet points to display in search results
{
"descriptionId": "SearchBulletPoint",
"content": "Stakeholder management and facilitation"
},
{
"descriptionId": "SearchBulletPoint",
"content": "Process mapping and requirement elicitation"
},
{
"descriptionId": "SearchBulletPoint",
"content": "Data-driven decision making"
},
// Detailed description to appear on a job ad
{
"descriptionId": "AdvertisementDetails",
"content": "<p>Acme Inc is seeking a business analyst to partner with business and technology teams to deliver high-impact, data-informed change.</p><p>You will lead discovery, define clear and testable requirements, map current and future processes, and support delivery through to adoption.</p><p>Bring strong stakeholder engagement, facilitation skills, and a pragmatic approach to complex problem solving.</p>"
}
]{"basisCode": "Salaried",
// 100,000–130,000 Australian dollars per year
"ranges": {
"minimumAmount": {
"value": 100000,
"currency": "AUD"
},
"maximumAmount": {
"value": 130000,
"currency": "AUD"
},
"intervalCode": "Year"
},
// Remuneration description visible to the candidate
"descriptions": ["Competitive salary, plus super"]
}basisCode defines how the remuneration for the position is calculatedintervalCode defines the period of time the minimum & maximum amounts are calculated overminimumAmount and maximimumAmount are not visible in search results nor on the job ad.currency and intervalCode alongside the description for clarity.syncPositions mutation to share position data with SEEK.{"input": {
"positionOpening": {
"postingRequester": {
// Hirer we're sharing the position on behalf of
"id": "seekAnzPublicTest:organization:seek:93WyyF1h",
"seekPartnerHirerId": "abc-123",
// Contact people for the position
"personContacts": [
{
"name": { "formattedName": "Jeff Manager" },
"roleCode": "HiringManager",
"communication": {
"email": [{ "address": "jeff.manager@example.com" }],
"phone": [{ "formattedNumber": "03 8517 4100" }]
}
}
]
},
// Unique identifier of the position in your software
"seekPartnerPositionId": "position-requisition-123",
// Express intent to automatically advertise the position based on status
"seekPositionIntent": "AdSync",
// The status of the position in your software
// This can be set to "Active" once it is ready to be advertised externally
"statusCode": "Incomplete"
},
"basePositionProfile": {
"positionTitle": "Señor business analyst",
"positionFormattedDescriptions": [
// Short description to be shown in search results
{
"descriptionId": "SearchSummary",
"content": "Seasoned BA sought to lead strategic initiatives."
},
// Three bullet points to display in search results
{
"descriptionId": "SearchBulletPoint",
"content": "Stakeholder management and facilitation"
},
{
"descriptionId": "SearchBulletPoint",
"content": "Process mapping and requirement elicitation"
},
{
"descriptionId": "SearchBulletPoint",
"content": "Data-driven decision making"
},
// Detailed description to appear on a job ad
{
"descriptionId": "AdvertisementDetails",
"content": "<p>Acme Inc is seeking a business analyst to partner with business and technology teams to deliver high-impact, data-informed change.</p><p>You will lead discovery, define clear and testable requirements, map current and future processes, and support delivery through to adoption.</p><p>Bring strong stakeholder engagement, facilitation skills, and a pragmatic approach to complex problem solving.</p>"
}
],
// 100,000–130,000 Australian dollars per year
"offeredRemunerationPackage": {
"basisCode": "Salaried",
"ranges": {
"minimumAmount": {
"value": 100000,
"currency": "AUD"
},
"maximumAmount": {
"value": 130000,
"currency": "AUD"
},
"intervalCode": "Year"
},
// Remuneration description visible to the candidate
"descriptions": ["Competitive salary, plus super"]
},
"seekAnzWorkTypeCode": "FullTime",
"seekWorkArrangementCodes": "OnSite",
// YouTube video to embed above the job ad's details
"seekVideo": {
"url": "https://www.youtube.com/embed/Q3UvigPHCjI"
},
"jobCategories": "Business & Channel Analysts",
"positionLocation": {
"geoLocation": {
"latitude": -18.592222,
"longitude": 145.801389
}
},
"postingInstructions": {
"applicationMethods": [
{
"applicationUri": {
"url": "https://example.com/position/123/apply"
}
}
]
}
},
"updateDateTime": "2048-01-01T00:00:00.000Z"
}
}syncPositions mutation,
which functions as a PUT operation.Setting positionOpening.statusCode to Active will trigger the Ad Sync engine to evaluate the position.
This status is appropriate when the position is ready to be advertised externally, which may depend on:positionOpening.statusCode as Closed—to the same syncPositions mutation.
The closure will propagate to job ads under the requisition.Directional Contact us if technical constraints prevent your software from synchronising the full position state whenever it changes.
Ad Sync may provide an alternative option of creating the position with syncPositions,
then performing granular update operations against the underlying PositionOpening and PositionProfile objects.Setting positionOpening.statusCode to Active will trigger the Ad Sync engine to evaluate the position.
This status is appropriate when the position is ready to be advertised externally, which may depend on:{"input": {
"positionOpening": {
"documentId": "globalPublicTest:positionOpening:positions:E3Lz6HkSrbZCawh4gPGAtM",
"statusCode": "Active"
}
}
}Closed.
The closure will propagate to job ads under the requisition.{"input": {
"positionOpening": {
"documentId": "globalPublicTest:positionOpening:positions:E3Lz6HkSrbZCawh4gPGAtM",
"statusCode": "Closed"
}
}
}mutation ($input: UpdatePositionOpeningPersonContactsInput!) {
updatePositionOpeningPersonContacts(input: $input) {
positionOpening {
documentId {
value
}
}
}
}mutation ($input: UpdateUnpostedPositionProfileInput!) {
updateUnpostedPositionProfile(input: $input) {
positionProfile {
profileId {
value
}
}
}
}updateDateTime that represents when the last update to the position actually occurred in your software;
it must not represent when the batch of positions is later sent to SEEK.Event | Timestamp | Use as updateDateTime? |
|---|---|---|
Hirer saves change to position description | 2048-01-01T09:45:32.617Z | |
Partner synchronises position updates for the past 1 hour | 2048-01-01T10:00:00.000Z |
syncPositions mutation for simplicity,
multiple positions can be shared at once.This is useful if your software may share more than one position at a time,
including if it:syncPositions operation.
If you have more than 25 positions to send,
split them into chunks of 25 and run multiple operations,
monitoring the SEEK API responses for rate limiting errors.