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.
Prop | Type | Description |
|---|---|---|
positionOpening | object | Details of the position opening to create. See positionOpening. |
basePositionProfile | object | Job profile fields from your requisition. See basePositionProfile. |
JavaScript
Copy
position: {
positionOpening: {
...positionOpening,
},
basePositionProfile: {
...basePositionProfile,
},
},
Prop | Type | Description |
|---|---|---|
postingRequester | object | The party that owns the PositionOpening. |
postingRequester.id | string | The identifier for the HiringOrganization that owns the position opening. |
postingRequester.roleCode | string | The role of the owner of the position opening. Currently, one code is defined: - Company indicates a company hiring on behalf of themselves. |
postingRequester.personContacts | object[] | Specific contact people for the position opening at the party. The name, email address & role of at least one contact person must be provided. A maximum of 10 contact people may be provided. See SpecifiedPersonInput. |
seekPartnerMetadata | stringoptional | An optional field for storing additional data with a PositionOpening. The metadata is not used by SEEK and won’t be seen by hirers or candidates. This field has a maximum length of 1,000 characters. |
statusCode | stringoptional | The status of the position opening. Currently, three codes are defined: - Incomplete indicates the position opening is in draft. - Active indicates the position opening is open. - Closed indicates the position opening has been closed. Defaults to Active if no value is provided. |
JavaScript
Copy
positionOpening: {
postingRequester: {
roleCode: 'Company',
id: 'seekAnzPublicTest:organization:seek:93WyyF1h',
personContacts: [
{
...personContact,
}
],
},
statusCode: 'Active',
},
Prop | Type | Description |
|---|---|---|
positionTitle | string | A short phrase describing the position as it would be listed on a business card or in a company directory. This field has a maximum length of 80 characters. |
positionLocation | object[]optional | Inputs used to infer a SEEK location. This field is limited to a single element. See positionLocation below. |
seekAnzWorkTypeCode | stringoptional | A SEEK work type code. Currently, four codes are defined: - Casual indicates a casual position. - ContractTemp indicates a fixed-length contract position. - FullTime indicates a full-time position. - PartTime indicates a part-time position. |
seekWorkArrangementCodes | string[]optional | An array of SEEK work arrangement codes. Currently, three codes are defined: - Hybrid indicates a hybrid position.- OnSite indicates an on-site position.- Remote indicates a remote position.This field is limited to a single element. |
jobCategories | string[]optional | Input used to infer a SEEK category. This field is limited to a single element. See jobCategory below. |
offeredRemunerationPackage | objectoptional | The salary or compensation offered for the position. See RemunerationPackageInput. |
positionFormattedDescriptions | object[]optional | An array of formatted position profile descriptions. See PositionFormattedDescriptionInput. |
positionOrganizations | string[] | An array of identifiers for the HiringOrganizations that have the position. This field requires exactly one element that matches the position opening’s PostingRequester.id. |
postingInstructions | object[]optional | The instructions related to posting the job ad. This field requires exactly one element. See postingInstructions. |
seekBillingReference | stringoptional | An optional free-text billing reference. This appears on the invoice when SEEK bills the hirer for the job ad. This field has a maximum length of 50 characters. |
seekHirerJobReference | stringoptional | An optional hirer-provided free-text job reference. This field has a maximum length of 50 characters. |
seekPartnerMetadata | stringoptional | An optional field for storing additional data with a PositionProfile. The metadata is not used by SEEK and won’t be seen by hirers or candidates. This field has a maximum length of 1,000 characters. |
seekVideo | objectoptional | The video to render within the job ad. The video will render below the advertisement details. |
seekVideo.url | string | The URL of the video to display. This field requires a YouTube link in one of the following formats: - https://www.youtube.com/embed/aAgePQvHBQM - https://www.youtube.com/watch?v=aAgePQvHBQM - https://youtube.com/embed/aAgePQvHBQM - https://youtube.com/watch?v=aAgePQvHBQM - https://youtu.be/aAgePQvHBQM If the URL provided doesn’t match the above criteria it will be ignored. Examples of unsupported formats include: - Links with additional query parameters: https://www.youtube.com/watch?ab_channel=SEEKJobs&v=aAgePQvHBQM - Mobile links: https://m.youtube.com/watch?v=aAgePQvHBQM |
seekApplicationQuestionnaire | objectoptional | Questionnaire for candidates. Supply either interactiveQuestionnaire or seekApplicationQuestionnaireComponents, not both. See seekApplicationQuestionnaire. |
JavaScript
Copy
basePositionProfile: {
positionTitle: 'Associate Developer',
positionLocation: [
{
address: {
formattedAddress: '1 Cremorne St, Bendigo, VIC 3550',
countryCode: 'AU',
},
},
],
seekAnzWorkTypeCode: 'FullTime',
seekWorkArrangementCodes: ['OnSite'],
jobCategories: [{ name: 'Developers/Programmers' }],
offeredRemunerationPackage: {
basisCode: 'Salaried',
descriptions: ['$50,000 - $60,000 per year'],
ranges: [
{
minimumAmount: { value: 50_000, currency: 'AUD' },
maximumAmount: { value: 60_000, currency: 'AUD' },
intervalCode: 'Year',
},
],
},
postingInstructions: [
{
applicationMethods: [{ applicationUri: { url: 'https://seek.com.au/apply' } }],
end: '2000-01-01T14:00:00.000Z',
},
],
positionFormattedDescriptions: [
{
descriptionId: 'AdvertisementDetails',
content: 'A newly created role for an ambitious <b>junior</b> or <b>graduate</b> developer. Be part of a great team in the Bendigo area.',
},
{
descriptionId: 'SearchSummary',
content: 'Start your software development career with a dynamic & growing team',
},
{
descriptionId: 'SearchBulletPoint',
content: 'Great team in the Bendigo area',
},
{
descriptionId: 'SearchBulletPoint',
content: 'Career progression opportunities',
},
{
descriptionId: 'SearchBulletPoint',
content: 'Free coffee & snacks',
},
],
positionOrganizations: ['seekAnzPublicTest:organization:seek:93WyyF1h'],
seekApplicationQuestionnaire: {
...seekApplicationQuestionnaire,
},
seekBillingReference: 'JOB-123',
seekHirerJobReference: 'JOB-AB-123',
seekPartnerMetadata: null,
seekVideo: {
url: 'https://www.youtube.com/watch?v=iM9onXRkTa8j',
},
},
positionLocation field, and this will be used to infer and pre-fill a SEEK location into the Enhanced Job Posting panel.This can be done by providing either the contextual name for the location, or if a location is selected from an internal hierarchy, the latitude and longitude associated with your internal location.For best results when supplying the contextual name, this should be supplied in a structured format using the address field, supplying both a country code and postcode where possible.If this is not possible you may supply a single formatted address line using the formattedAddressOnly field, including as much context as possible.If the id of the SEEK location is already known, such as when copying an existing job ad, this may be provided instead.Each location element accepts exactly one of address, formattedAddressOnly, geoLocation, or id.Prop | Type | Description |
|---|---|---|
address | objectoptional | Structured address. See SeekPositionAddressInput. |
formattedAddressOnly | stringoptional | Single formatted address line when structured fields cannot be supplied; results may be less consistent. |
geoLocation | objectoptional | Coordinates matched to the nearest SEEK location. See GeoLocationInput. |
id | stringoptional | The identifier for the Location. This field has a maximum length of 255 characters. |
JavaScript
Copy
positionLocation: [
{
address: {
formattedAddress: '1 Cremorne St, Cremorne, VIC 3550',
countryCode: 'AU',
postalCode: '3550',
}
},
],
JavaScript
Copy
positionLocation: [
{
formattedAddressOnly: '1 Cremorne St, Cremorne, VIC 3550, Australia',
},
],
JavaScript
Copy
positionLocation: [
{
geoLocation: {
latitude: -37.840935,
longitude: 144.946457,
},
},
],
JavaScript
Copy
positionLocation: [
{
id: 'seekAnzPublicTest:location:seek:2dkY4vZJF',
}
],
id or name.Prop | Type | Description |
|---|---|---|
name | stringoptional | The name of the job category. This field has a maximum length of 255 characters. |
id | stringoptional | The identifier for the JobCategory. This field has a maximum length of 255 characters. |
applicationMethods fields and configured hirer relationships, the hirer may have the option for candidates to apply via SEEK’s Apply Form, or to redirect candidates to an external apply form.For a hirer to be able to select “Redirect to your careers site”, their HiringOrganizationApiCapabilities.applicationMethodCodes must include ApplicationUri, and the postingInstructions.applicationMethods field must contain an applicationUri value.For a hirer to be able to select “Quick apply on SEEK”, their HiringOrganizationApiCapabilities.relationshipTypeCodes must include ApplicationExport.Prop | Type | Description |
|---|---|---|
applicationMethods | object[]optional | An array of methods for applying to the position. This requires that the hirer has an HiringOrganizationApiCapabilities.applicationMethodCodes that includes ApplicationUri. If the hirer elects to “Redirect to their careers site”, the candidate will link out to the supplied URL. If the hirer elects to “Quick apply on SEEK”, SEEK’s Apply Form will be used to receive candidate applications. SEEK’s Apply Form will emit a CandidateApplicationCreated event that points to a CandidateProfile object. This field is limited to a single element. Requests with more than 1 element will fail. |
applicationMethods[].applicationUri | objectoptional | A URL of an external apply form. |
applicationMethods[].applicationUri.url | string | The URL of the web page. This field has a maximum length of 500 characters. |
end | datetimeoptional | The end date of the posting. This must be no more than 30 days in the future. If an end date is omitted, the job ad will default to the maximum period of 30 calendar days. The precise end date can be queried from the PostingInstruction.end field once the job ad goes live. |
brandingId | stringoptional | The identifier for the AdvertisementBranding to apply to the posted job ad. This field will be ignored if the user does not select an advertisement product that includes branding. |
JavaScript
Copy
postingInstructions: [
{
applicationMethods: [{ applicationUri: { url: 'https://www.seek.com.au/apply' } }],
end: '2000-01-01T14:00:00.000Z',
brandingId: 'globalPublicTest:advertisementBranding:hirerBranding:METPmG2UG8HathjkUf4yA',
},
],
seekApplicationQuestionnaire object.- Setting
interactiveQuestionnairewill allow the hirer to build a questionnaire within the panel. This functions the same as the Questionnaire Panel implementation option from Classic Job Posting. - Setting
seekApplicationQuestionnaireComponentswill display a questionnaire as read-only in the panel, with the components used to create the questionnaire when the draft is posted. This functions the same as the ATS Screening Questions implementation option from Classic Job Posting. - If neither field is set, the hirer will not be able to add a questionnaire to the job ad.
Prop | Type | Description |
|---|---|---|
interactiveQuestionnaire | objectoptional | Setting this field will enable the interactive questionnaire builder. May be {} to render without existing values. See interactiveQuestionnaire below. |
seekApplicationQuestionnaireComponents | object[]optional | Ordered components shown to candidates; hirers preview only in the panel. See ApplicationQuestionnaireComponentInput. |
Prop | Type | Description |
|---|---|---|
seekApplicationQuestionnaireId | stringoptional | Preload the questions from an existing questionnaire into the panel. |
seekPrivacyPolicy | objectoptional | The configuration options for the hirer’s privacy policy. The option to include a privacy policy question will only be presented to the hirer if this is present. |
seekPrivacyPolicy.url | string | The website where the hirer’s privacy policy is hosted. This should start with http:// or https://. |
seekPrivacyPolicy.descriptionHtml | stringoptional | A short phrase to present to candidates to prompt them to accept the privacy policy. Defaults to “Do you agree to the privacy policy?” |
JavaScript
Copy
seekApplicationQuestionnaire: {
interactiveQuestionnaire: {
seekPrivacyPolicy: {
url: 'https://www.seek.com.au/privacy',
descriptionHtml: 'Do you agree to the privacy policy?',
}
},
},
Prop | Type | Description |
|---|---|---|
componentTypeCode | string | The type of the component. Currently, two codes are defined: - PrivacyConsent corresponds to the privacyConsent field. - Question corresponds to the question field. |
privacyConsent | objectoptional | A privacy consent component of an ApplicationQuestionnaire. This must be provided if the componentTypeCode is PrivacyConsent. See ApplicationPrivacyConsentInput. |
question | objectoptional | A question component of an ApplicationQuestionnaire. This must be provided if the componentTypeCode is Question. See ApplicationQuestionInput. |
JavaScript
Copy
seekApplicationQuestionnaire: {
seekApplicationQuestionnaireComponents: [
{
componentTypeCode: 'Question',
question: {
componentTypeCode: 'Question',
questionHtml: 'What do you like most about GraphQL?',
value: 'question-value-0',
responseTypeCode: 'FreeText',
},
},
{
componentTypeCode: 'Question',
question: {
componentTypeCode: 'Question',
questionHtml:
'Which of the following statements best describes your right to work in Australia?',
value: 'question-value-1',
responseTypeCode: 'SingleSelect',
responseChoice: [
{
text: "I'm an Australian citizen",
value: '14970',
preferredIndicator: true,
},
{
text: "I'm a permanent resident and/or NZ citizen",
value: '14971',
preferredIndicator: true,
},
],
},
},
{
componentTypeCode: 'Question',
question: {
componentTypeCode: 'Question',
questionHtml:
'Which of the following forklift licences do you have?',
responseTypeCode: 'MultiSelect',
responseChoice: [
{
text: 'Forklift truck (LF)',
preferredIndicator: true,
},
{
text: 'Order picking forklift truck (LO)',
preferredIndicator: true,
},
{
text: 'None of these',
preferredIndicator: false,
},
],
},
},
{
componentTypeCode: 'PrivacyConsent',
privacyConsent: {
componentTypeCode: 'PrivacyConsent',
descriptionHtml: 'Do you agree to the privacy policy?',
value: 'question-value-3',
privacyPolicyUrl: {
url: 'https://www.seek.com.au/privacy',
},
},
}
],
},