Position Input

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,
  },
},

Position opening

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.

Position opening example

JavaScript
Copy
positionOpening: {
    postingRequester: {
      roleCode: 'Company',
      id: 'seekAnzPublicTest:organization:seek:93WyyF1h',
      personContacts: [
        {
          ...personContact,
        }
      ],
    },
    statusCode: 'Active',
  },

Base position profile

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.

Base position profile example

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',
  },
},

Position Location

If your software already captures the position location, you must map this existing value to the 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.

Structured Address Example

JavaScript
Copy
positionLocation: [
  {
    address: {
      formattedAddress: '1 Cremorne St, Cremorne, VIC 3550',
      countryCode: 'AU',
      postalCode: '3550',
    }
  },
],

Formatted Address Example

JavaScript
Copy
positionLocation: [
  {
    formattedAddressOnly: '1 Cremorne St, Cremorne, VIC 3550, Australia',
  },
],

Geo Location Example

JavaScript
Copy
positionLocation: [
  {
    geoLocation: {
      latitude: -37.840935,
      longitude: 144.946457,
    },
  },
],

Location Id Example

JavaScript
Copy
positionLocation: [
  {
    id: 'seekAnzPublicTest:location:seek:2dkY4vZJF',
  }
],

Job category

Each category element accepts exactly one of 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.

Posting Instructions

Based on the supplied 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.

Posting instruction example

JavaScript
Copy
postingInstructions: [
  {
    applicationMethods: [{ applicationUri: { url: 'https://www.seek.com.au/apply' } }],
    end: '2000-01-01T14:00:00.000Z',
    brandingId: 'globalPublicTest:advertisementBranding:hirerBranding:METPmG2UG8HathjkUf4yA',
  },
],

SEEK application questionnaire

The Enhanced Job Posting panel supports multiple methods for implementing questionnaires. The view shown to hirers will change based on the value of the seekApplicationQuestionnaire object.
  1. Setting interactiveQuestionnaire will allow the hirer to build a questionnaire within the panel. This functions the same as the Questionnaire Panel implementation option from Classic Job Posting.
  2. Setting seekApplicationQuestionnaireComponents will 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.
  3. If neither field is set, the hirer will not be able to add a questionnaire to the job ad.
To use questionnaires in Enhanced Job Posting, provide one of the following top-level keys:
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.

Interactive Questionnaire

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?”

Interactive Questionnaire example

JavaScript
Copy
seekApplicationQuestionnaire: {
  interactiveQuestionnaire: {
    seekPrivacyPolicy: {
      url: 'https://www.seek.com.au/privacy',
      descriptionHtml: 'Do you agree to the privacy policy?',
    }
  },
},

Application questionnaire components

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.

Application questionnaire components example

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',
        },
      },
    }
  ],
},