Merge · Arazzo Workflow

Merge ATS Add a Candidate and Application

Version 1.0.0

Create a candidate, resolve an open job, and submit an application linking the candidate to that job.

1 workflow 1 source API 1 provider
View Spec View on GitHub IntegrationsPlatformUnified APIAgent HandlerLLM GatewayArazzoWorkflows

Provider

merge

Workflows

create-candidate-and-application
Create a candidate and submit an application to an open job.
Creates a candidate, resolves a job by its code, and submits an application linking the candidate to the resolved job.
3 steps inputs: accountToken, authorization, firstName, jobCode, lastName, source outputs: applicationId, candidateId, jobId
1
createCandidate
{$sourceDescriptions.atsApi.url}#/paths/~1ats~1v1~1candidates/post
Create the candidate record from the supplied name.
2
resolveJob
{$sourceDescriptions.atsApi.url}#/paths/~1ats~1v1~1jobs/get
Resolve the open job to apply to by matching on its code, returning at most one match.
3
createApplication
{$sourceDescriptions.atsApi.url}#/paths/~1ats~1v1~1applications/post
Submit an application linking the new candidate to the resolved job.

Source API Descriptions

Arazzo Workflow Specification

merge-ats-create-candidate-and-application-workflow.yml Raw ↑
arazzo: 1.0.1
info:
  title: Merge ATS Add a Candidate and Application
  summary: Create a candidate, resolve an open job, and submit an application linking the candidate to that job.
  description: >-
    The core ATS write pattern for onboarding a new applicant. The workflow
    creates a candidate record, resolves an open job by code, and then creates
    an application that ties the new candidate to that job. Every step spells
    out its request inline so the flow can be read and executed without opening
    the underlying OpenAPI description.
  version: 1.0.0
sourceDescriptions:
- name: atsApi
  url: ../openapi/merge-ats-api-openapi.yaml
  type: openapi
workflows:
- workflowId: create-candidate-and-application
  summary: Create a candidate and submit an application to an open job.
  description: >-
    Creates a candidate, resolves a job by its code, and submits an application
    linking the candidate to the resolved job.
  inputs:
    type: object
    required:
    - authorization
    - accountToken
    - firstName
    - lastName
    - jobCode
    properties:
      authorization:
        type: string
        description: Production access token with the required "Bearer " prefix.
      accountToken:
        type: string
        description: The account token identifying the linked ATS end user.
      firstName:
        type: string
        description: The candidate's first name.
      lastName:
        type: string
        description: The candidate's last name.
      jobCode:
        type: string
        description: The code of the job to apply the candidate to.
      source:
        type: string
        description: The application's source label (e.g. "LinkedIn").
  steps:
  - stepId: createCandidate
    description: >-
      Create the candidate record from the supplied name.
    operationPath: '{$sourceDescriptions.atsApi.url}#/paths/~1ats~1v1~1candidates/post'
    parameters:
    - name: Authorization
      in: header
      value: $inputs.authorization
    - name: X-Account-Token
      in: header
      value: $inputs.accountToken
    requestBody:
      contentType: application/json
      payload:
        model:
          first_name: $inputs.firstName
          last_name: $inputs.lastName
    successCriteria:
    - condition: $statusCode == 201
    outputs:
      candidateId: $response.body#/model/id
  - stepId: resolveJob
    description: >-
      Resolve the open job to apply to by matching on its code, returning at
      most one match.
    operationPath: '{$sourceDescriptions.atsApi.url}#/paths/~1ats~1v1~1jobs/get'
    parameters:
    - name: code
      in: query
      value: $inputs.jobCode
    - name: status
      in: query
      value: OPEN
    - name: page_size
      in: query
      value: 1
    - name: Authorization
      in: header
      value: $inputs.authorization
    - name: X-Account-Token
      in: header
      value: $inputs.accountToken
    successCriteria:
    - condition: $statusCode == 200
    - context: $response.body
      condition: $.results.length > 0
      type: jsonpath
    outputs:
      jobId: $response.body#/results/0/id
  - stepId: createApplication
    description: >-
      Submit an application linking the new candidate to the resolved job.
    operationPath: '{$sourceDescriptions.atsApi.url}#/paths/~1ats~1v1~1applications/post'
    parameters:
    - name: Authorization
      in: header
      value: $inputs.authorization
    - name: X-Account-Token
      in: header
      value: $inputs.accountToken
    requestBody:
      contentType: application/json
      payload:
        model:
          candidate: $steps.createCandidate.outputs.candidateId
          job: $steps.resolveJob.outputs.jobId
          source: $inputs.source
    successCriteria:
    - condition: $statusCode == 201
    outputs:
      applicationId: $response.body#/model/id
      currentStage: $response.body#/model/current_stage
  outputs:
    candidateId: $steps.createCandidate.outputs.candidateId
    jobId: $steps.resolveJob.outputs.jobId
    applicationId: $steps.createApplication.outputs.applicationId