Position openings

    Suggestions will appear below the field as you type

    Position openings

      Suggestions will appear below the field as you type

      Position openings

      Position openings

      A PositionOpening represents an open position at a hirer’s organization. For example, a position opening might be created once a hirer approves a job requisition for a new role.
      A newly created PositionOpening consists of an owner and a status code. The details of the position itself (e.g. its title & location) are contained in PositionProfiles created within the opening:
      • A PostedPositionProfile represents a job ad posted to the SEEK job board.
        Hirers might continue to post job ads within the same opening while the position remains unfilled. They could also use multiple job ads to cover different locations and job categories.
        Grouping multiple job ads within a single opening is provided for your convenience. There is no business impact from grouping (or not grouping) job ads together.
      • Your software would share these with SEEK to support Proactive Sourcing. Grouping unposted positions with their related job ads helps SEEK match potential candidates against the opening.
      While all job ads need to belong to a position opening, your software can create a new position opening for each job ad. The postPosition mutation is provided to create a new position opening and post a job ad in a single operation.
      The SEEK employer website and deprecated Job Posting API do not have an analogous concept of an open position. Job ads posted through those channels will have a synthetic PositionOpening created for each of their PositionProfiles. Synthetic position openings cannot be paginated, updated or deleted.

      Before you begin

      Before you start with position opening queries, you will need to request a partner token.

      Operations

      The following sample mutations are provided for demonstration purposes only; they are not executable in the Playground environment. You should use your live partner credentials to post a job ad under your unsearchable SEEK test hirer for end-to-end testing.

      createPositionOpening

      The createPositionOpening mutation creates an empty position opening. The postingRequester indicates the SEEK hirer and the contact details of the opening’s owner.
      MutationVariablesResult
      mutation ($input: CreatePositionOpeningInput!) {
        createPositionOpening(input: $input) {
          positionOpening {
            documentId {
              value
            }
          }
        }
      }

      updatePositionOpeningStatus

      The updatePositionOpeningStatus mutation updates the status of the position opening.
      A position opening’s status is intended to help hirers manage their position openings; it isn’t used directly by the SEEK API. For example, you can filter on a particular status when paginating position openings.
      MutationVariablesResult
      mutation ($input: UpdatePositionOpeningStatusInput!) {
        updatePositionOpeningStatus(input: $input) {
          positionOpening {
            statusCode
          }
        }
      }
      After an opening has been created you can use separate mutations to create nested PositionProfiles . For example, the postPositionProfileForOpening mutation will create a job ad within the opening.

      updatePositionOpeningPersonContacts

      The updatePositionOpeningPersonContacts mutation updates the postingRequester contact details of the position opening.
      MutationVariablesResult
      mutation ($input: UpdatePositionOpeningPersonContactsInput!) {
        updatePositionOpeningPersonContacts(input: $input) {
          positionOpening {
            documentId {
              value
            }
          }
        }
      }

      positionOpening

      The positionOpening query returns information about an existing position opening. You can select fields from its nested PositionProfiles to help identify the position.
      QueryVariablesResult
      query ($id: String!) {
        positionOpening(id: $id) {
          documentId {
            value
          }
          statusCode
          positionProfiles {
            profileId {
              value
            }
            positionTitle
          }
          postingRequester {
            id {
              value
            }
          }
          seekPartnerMetadata
        }
      }

      positionOpenings

      The positionOpenings query returns a paginated list of position openings for a given hirer. Only position openings created by the SEEK API will appear in the paginated list.
      You can optionally use a statusCode filter to only return position openings with the desired status.
      QueryVariables
      query ($hirerId: String!, $statusCode: String) {
        positionOpenings(hirerId: $hirerId, filter: { statusCode: $statusCode }) {
          edges {
            node {
              positionProfiles {
                profileId {
                  value
                }
              }
            }
          }
          pageInfo {
            hasNextPage
            endCursor
          }
        }
      }

      deletePositionOpening

      The deletePositionOpening mutation deletes an empty position opening.
      Because every position profile must be nested inside an opening, you must delete all nested position profiles first:
      • Unposted position profiles can be deleted using the deleteUnpostedPositionProfile mutation .
      • The position profiles of job ads cannot be explicitly deleted; they will be automatically deleted 180 days after the job ad closes.
      To ensure data consistency, deletion of a position opening is prevented for 48 hours after it has been:
      To soft delete a position opening you can instead update its status to Closed. You can then filter on Active position openings when using the positionOpenings query .
      MutationVariablesResult
      mutation ($input: DeletePositionOpeningInput!) {
        deletePositionOpening(input: $input) {
          positionOpening {
            documentId {
              value
            }
          }
        }
      }