Merge · OpenAPI Overlay 1.0.0

API Evangelist conversational phrasing for ATS Subpackage Candidates API

8 actions 8 updates phrasing extends openapi/merge-subpackage-candidates-api-openapi.yml
Generated by API Evangelist Written by API Evangelist tooling for Merge's API. It is a proposal applied on top of the contract, not a document Merge publishes.
View Overlay File View on GitHub Overlay Specification

What the actions change

x-apievangelist-phrasing

Targets 8

$.info
$.paths['/ats/v1/candidates'].get
$.paths['/ats/v1/candidates'].post
$.paths['/ats/v1/candidates/{id}'].get
$.paths['/ats/v1/candidates/{id}'].patch
$.paths['/ats/v1/candidates/ignore/{model_id}'].post
$.paths['/ats/v1/candidates/meta/patch/{id}'].get
$.paths['/ats/v1/candidates/meta/post'].get

OpenAPI Overlay

Raw ↑
# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand.
overlay: 1.0.0
info:
  title: API Evangelist conversational phrasing for ATS Subpackage Candidates API
  version: 1.0.0
extends: openapi/merge-subpackage-candidates-api-openapi.yml
actions:
- target: $.info
  update:
    x-apievangelist-phrasing:
      method: generated
      generated: '2026-09-26'
      generator: build-phrasing.py
      label: Generated by API Evangelist
      operations: 7
- target: $.paths['/ats/v1/candidates'].get
  update:
    x-apievangelist-phrasing:
      intent: List candidates
      effect: read
      questions:
      - How do I find a candidate by email address in the ATS?
      - Can I list candidates with a particular tag?
      - Which candidates were added to the pipeline this week?
      instructions:
      - text: List candidates with email {email_addresses}.
        slots:
          email_addresses: query.email_addresses
      - text: Find candidates named {first_name} {last_name}.
        slots:
          first_name: query.first_name
          last_name: query.last_name
      - text: Show candidates tagged {tags}.
        slots:
          tags: query.tags
      method: generated
      generated: '2026-09-26'
- target: $.paths['/ats/v1/candidates'].post
  update:
    x-apievangelist-phrasing:
      intent: Add a candidate
      effect: write
      questions:
      - How do I add a new candidate to a customer's applicant tracking system?
      - Can I create a candidate on behalf of a specific recruiter?
      instructions:
      - text: Create candidate {model} as recruiter {remote_user_id}.
        slots:
          model: requestBody.model
          remote_user_id: requestBody.remote_user_id
      - text: Add a new applicant with details {model}, acting as user {remote_user_id}.
        slots:
          model: requestBody.model
          remote_user_id: requestBody.remote_user_id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/ats/v1/candidates/{id}'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a candidate
      effect: read
      questions:
      - What does the ATS have on file for one candidate?
      - Can I view a candidate's applications and attachments together?
      instructions:
      - text: Get candidate {id}.
        slots:
          id: path.id
      - text: Fetch candidate {id} with {expand} expanded.
        slots:
          id: path.id
          expand: query.expand
      method: generated
      generated: '2026-09-26'
- target: $.paths['/ats/v1/candidates/{id}'].patch
  update:
    x-apievangelist-phrasing:
      intent: Update a candidate's profile
      effect: write
      questions:
      - How do I edit an existing candidate's contact details?
      - Can I change a candidate profile as a particular recruiter?
      instructions:
      - text: Update candidate {id} with {model} as user {remote_user_id}.
        slots:
          id: path.id
          model: requestBody.model
          remote_user_id: requestBody.remote_user_id
      - text: 'Edit existing applicant {id}: {model}, on behalf of {remote_user_id}.'
        slots:
          id: path.id
          model: requestBody.model
          remote_user_id: requestBody.remote_user_id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/ats/v1/candidates/ignore/{model_id}'].post
  update:
    x-apievangelist-phrasing:
      intent: Stop syncing a candidate
      effect: destructive
      questions:
      - How do I exclude a candidate from future syncs, for example on a GDPR request?
      - What happens to a candidate's record when I ignore it?
      instructions:
      - text: Ignore candidate {model_id} because {reason}.
        slots:
          model_id: path.model_id
          reason: requestBody.reason
      - text: Stop syncing applicant {model_id}, reason {reason}, with note {message}.
        slots:
          model_id: path.model_id
          reason: requestBody.reason
          message: requestBody.message
      method: generated
      generated: '2026-09-26'
- target: $.paths['/ats/v1/candidates/meta/patch/{id}'].get
  update:
    x-apievangelist-phrasing:
      intent: See which candidate fields can be updated
      effect: read
      questions:
      - Which fields can I change on a given candidate?
      - What does the ATS accept when editing a candidate?
      instructions:
      - text: Get the update metadata for candidate {id}.
        slots:
          id: path.id
      - text: Show editable fields on applicant {id}.
        slots:
          id: path.id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/ats/v1/candidates/meta/post'].get
  update:
    x-apievangelist-phrasing:
      intent: See which fields creating a candidate needs
      effect: read
      questions:
      - What fields are required to add a candidate in this ATS?
      - Before creating a candidate, how do I check which fields are supported?
      instructions:
      - text: Get candidate creation metadata for linked account {account_token}.
        slots:
          account_token: header.X-Account-Token
      - text: Show the fields needed to add a new candidate.
      method: generated
      generated: '2026-09-26'