openapi: 3.1.0
info:
title: Greenhouse Harvest API
description: |
The Harvest API is Greenhouse's primary REST API for programmatic access to recruiting data:
candidates, applications, jobs, openings, job posts, departments, offices, users, offers,
approvals, scheduled interviews, scorecards, sources, tags, custom fields, prospect pools,
and the activity feed. Harvest uses HTTP Basic authentication with a per-permission API key,
RFC-5988 Link-header pagination (default 100, max 500 per page), and a per-token rate limit
of N requests per 10 seconds returned in the X-RateLimit-Limit header.
version: "1.0.0"
contact:
name: Greenhouse Software
url: https://www.greenhouse.com
email: developers@greenhouse.io
license:
name: Greenhouse API Terms
url: https://www.greenhouse.com/legal
servers:
- url: https://harvest.greenhouse.io/v1
description: Production Harvest API
security:
- BasicAuth: []
tags:
- name: Applications
description: Candidate applications to specific jobs, including stage advancement, transfers, hires, rejections, and attachments.
- name: Candidates
description: Candidate profiles, notes, attachments, education, employment, prospect conversion, anonymization, and merging.
- name: Jobs
description: Job records and their hiring teams.
- name: JobOpenings
description: Individual openings under a Job.
- name: JobPosts
description: Public-facing job postings and their statuses.
- name: JobStages
description: The interview/pipeline stages a job uses.
- name: Departments
description: Organizational departments.
- name: Offices
description: Office locations.
- name: Users
description: Greenhouse users and their email addresses.
- name: Offers
description: Offers extended to candidates.
- name: Approvals
description: Approval flows for jobs and offers.
- name: ScheduledInterviews
description: Scheduled interview events on the calendar.
- name: Scorecards
description: Interview scorecards captured by interviewers.
- name: Sources
description: Candidate-source taxonomy (where the candidate came from).
- name: Tags
description: Candidate tags.
- name: CustomFields
description: Org-defined custom fields and their options.
- name: ActivityFeed
description: Per-candidate timeline of activity events.
- name: ProspectPools
description: Sourcing prospect pools.
- name: RejectionReasons
description: Configured rejection reasons.
paths:
/applications:
get:
tags: [Applications]
summary: List Applications
description: Returns a paginated list of all applications across the organization.
operationId: listApplications
parameters:
- $ref: '#/components/parameters/Page'
- $ref: '#/components/parameters/PerPage'
- $ref: '#/components/parameters/CreatedAfter'
- $ref: '#/components/parameters/CreatedBefore'
- $ref: '#/components/parameters/UpdatedAfter'
- $ref: '#/components/parameters/UpdatedBefore'
- name: job_id
in: query
schema: { type: integer }
- name: status
in: query
schema:
type: string
enum: [active, rejected, hired, converted]
- $ref: '#/components/parameters/OnBehalfOf'
responses:
'200':
description: Array of applications.
content:
application/json:
schema:
type: array
items: { $ref: '#/components/schemas/Application' }
'4XX': { $ref: '#/components/responses/ErrorResponse' }
/applications/{id}:
parameters:
- $ref: '#/components/parameters/Id'
get:
tags: [Applications]
summary: Retrieve Application
operationId: getApplication
responses:
'200':
description: A single application.
content:
application/json:
schema: { $ref: '#/components/schemas/Application' }
'4XX': { $ref: '#/components/responses/ErrorResponse' }
patch:
tags: [Applications]
summary: Update Application
operationId: updateApplication
parameters:
- $ref: '#/components/parameters/OnBehalfOf'
requestBody:
required: true
content:
application/json:
schema: { $ref: '#/components/schemas/ApplicationUpdate' }
responses:
'200':
description: Updated application.
content:
application/json:
schema: { $ref: '#/components/schemas/Application' }
'4XX': { $ref: '#/components/responses/ErrorResponse' }
delete:
tags: [Applications]
summary: Delete Application
operationId: deleteApplication
parameters:
- $ref: '#/components/parameters/OnBehalfOf'
responses:
'204': { description: Deleted. }
'4XX': { $ref: '#/components/responses/ErrorResponse' }
/candidates/{id}/applications:
post:
tags: [Applications]
summary: Add Application to Candidate
operationId: addCandidateApplication
parameters:
- $ref: '#/components/parameters/Id'
- $ref: '#/components/parameters/OnBehalfOf'
requestBody:
required: true
content:
application/json:
schema: { $ref: '#/components/schemas/ApplicationCreate' }
responses:
'201':
description: Created application.
content:
application/json:
schema: { $ref: '#/components/schemas/Application' }
'4XX': { $ref: '#/components/responses/ErrorResponse' }
/applications/{id}/advance:
post:
tags: [Applications]
summary: Advance Application
description: Move the application to the next interview stage.
operationId: advanceApplication
parameters:
- $ref: '#/components/parameters/Id'
- $ref: '#/components/parameters/OnBehalfOf'
responses:
'200': { description: Advanced. }
'4XX': { $ref: '#/components/responses/ErrorResponse' }
/applications/{id}/move:
post:
tags: [Applications]
summary: Move Application
description: Move the application to a specific stage.
operationId: moveApplication
parameters:
- $ref: '#/components/parameters/Id'
- $ref: '#/components/parameters/OnBehalfOf'
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [from_stage_id, to_stage_id]
properties:
from_stage_id: { type: integer }
to_stage_id: { type: integer }
responses:
'200': { description: Moved. }
'4XX': { $ref: '#/components/responses/ErrorResponse' }
/applications/{id}/transfer_to_job:
post:
tags: [Applications]
summary: Transfer Application To Job
operationId: transferApplicationToJob
parameters:
- $ref: '#/components/parameters/Id'
- $ref: '#/components/parameters/OnBehalfOf'
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [new_job_id]
properties:
new_job_id: { type: integer }
new_job_stage_id: { type: integer }
responses:
'200': { description: Transferred. }
'4XX': { $ref: '#/components/responses/ErrorResponse' }
/applications/{id}/convert_prospect:
patch:
tags: [Applications]
summary: Convert Prospect To Candidate
operationId: convertProspect
parameters:
- $ref: '#/components/parameters/Id'
- $ref: '#/components/parameters/OnBehalfOf'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
job_id: { type: integer }
job_stage_id: { type: integer }
responses:
'200': { description: Converted. }
'4XX': { $ref: '#/components/responses/ErrorResponse' }
/applications/{id}/attachments:
post:
tags: [Applications]
summary: Add Application Attachment
operationId: addApplicationAttachment
parameters:
- $ref: '#/components/parameters/Id'
- $ref: '#/components/parameters/OnBehalfOf'
requestBody:
required: true
content:
application/json:
schema: { $ref: '#/components/schemas/Attachment' }
responses:
'201': { description: Attached. }
'4XX': { $ref: '#/components/responses/ErrorResponse' }
/applications/{id}/hire:
post:
tags: [Applications]
summary: Hire Application
operationId: hireApplication
parameters:
- $ref: '#/components/parameters/Id'
- $ref: '#/components/parameters/OnBehalfOf'
requestBody:
content:
application/json:
schema:
type: object
properties:
start_date: { type: string, format: date }
opening_id: { type: integer }
responses:
'200': { description: Hired. }
'4XX': { $ref: '#/components/responses/ErrorResponse' }
/applications/{id}/reject:
post:
tags: [Applications]
summary: Reject Application
operationId: rejectApplication
parameters:
- $ref: '#/components/parameters/Id'
- $ref: '#/components/parameters/OnBehalfOf'
requestBody:
content:
application/json:
schema:
type: object
properties:
rejection_reason_id: { type: integer }
notes: { type: string }
responses:
'200': { description: Rejected. }
'4XX': { $ref: '#/components/responses/ErrorResponse' }
patch:
tags: [Applications]
summary: Update Rejection
operationId: updateApplicationRejection
parameters:
- $ref: '#/components/parameters/Id'
- $ref: '#/components/parameters/OnBehalfOf'
requestBody:
content:
application/json:
schema:
type: object
properties:
rejection_reason_id: { type: integer }
notes: { type: string }
responses:
'200': { description: Updated rejection. }
'4XX': { $ref: '#/components/responses/ErrorResponse' }
/applications/{id}/unreject:
post:
tags: [Applications]
summary: Unreject Application
operationId: unrejectApplication
parameters:
- $ref: '#/components/parameters/Id'
- $ref: '#/components/parameters/OnBehalfOf'
responses:
'200': { description: Unrejected. }
'4XX': { $ref: '#/components/responses/ErrorResponse' }
/candidates:
get:
tags: [Candidates]
summary: List Candidates
operationId: listCandidates
parameters:
- $ref: '#/components/parameters/Page'
- $ref: '#/components/parameters/PerPage'
- $ref: '#/components/parameters/CreatedAfter'
- $ref: '#/components/parameters/CreatedBefore'
- $ref: '#/components/parameters/UpdatedAfter'
- $ref: '#/components/parameters/UpdatedBefore'
- name: email
in: query
schema: { type: string }
responses:
'200':
description: Array of candidates.
content:
application/json:
schema:
type: array
items: { $ref: '#/components/schemas/Candidate' }
'4XX': { $ref: '#/components/responses/ErrorResponse' }
post:
tags: [Candidates]
summary: Create Candidate
operationId: createCandidate
parameters:
- $ref: '#/components/parameters/OnBehalfOf'
requestBody:
required: true
content:
application/json:
schema: { $ref: '#/components/schemas/CandidateCreate' }
responses:
'201':
description: Created candidate.
content:
application/json:
schema: { $ref: '#/components/schemas/Candidate' }
'4XX': { $ref: '#/components/responses/ErrorResponse' }
delete:
tags: [Candidates]
summary: Delete Candidates Bulk
operationId: deleteCandidates
parameters:
- $ref: '#/components/parameters/OnBehalfOf'
responses:
'204': { description: Deleted. }
'4XX': { $ref: '#/components/responses/ErrorResponse' }
/candidates/{id}:
parameters: [ { $ref: '#/components/parameters/Id' } ]
get:
tags: [Candidates]
summary: Retrieve Candidate
operationId: getCandidate
responses:
'200':
description: A single candidate.
content:
application/json:
schema: { $ref: '#/components/schemas/Candidate' }
'4XX': { $ref: '#/components/responses/ErrorResponse' }
patch:
tags: [Candidates]
summary: Update Candidate
operationId: updateCandidate
parameters:
- $ref: '#/components/parameters/OnBehalfOf'
requestBody:
required: true
content:
application/json:
schema: { $ref: '#/components/schemas/CandidateUpdate' }
responses:
'200':
description: Updated.
content:
application/json:
schema: { $ref: '#/components/schemas/Candidate' }
'4XX': { $ref: '#/components/responses/ErrorResponse' }
/candidates/{id}/attachments:
post:
tags: [Candidates]
summary: Add Candidate Attachment
operationId: addCandidateAttachment
parameters:
- $ref: '#/components/parameters/Id'
- $ref: '#/components/parameters/OnBehalfOf'
requestBody:
required: true
content:
application/json:
schema: { $ref: '#/components/schemas/Attachment' }
responses:
'201': { description: Attached. }
'4XX': { $ref: '#/components/responses/ErrorResponse' }
/candidates/{id}/notes:
post:
tags: [Candidates]
summary: Add Candidate Note
operationId: addCandidateNote
parameters:
- $ref: '#/components/parameters/Id'
- $ref: '#/components/parameters/OnBehalfOf'
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [user_id, body, visibility]
properties:
user_id: { type: integer }
body: { type: string }
visibility: { type: string, enum: [admin_only, private, public] }
responses:
'201': { description: Note added. }
'4XX': { $ref: '#/components/responses/ErrorResponse' }
/candidates/{id}/email_notes:
post:
tags: [Candidates]
summary: Add Candidate Email Note
operationId: addCandidateEmailNote
parameters:
- $ref: '#/components/parameters/Id'
- $ref: '#/components/parameters/OnBehalfOf'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
user_id: { type: integer }
to: { type: string }
from: { type: string }
subject: { type: string }
body: { type: string }
responses:
'201': { description: Email note recorded. }
'4XX': { $ref: '#/components/responses/ErrorResponse' }
/candidates/{id}/education:
post:
tags: [Candidates]
summary: Add Candidate Education
operationId: addCandidateEducation
parameters:
- $ref: '#/components/parameters/Id'
- $ref: '#/components/parameters/OnBehalfOf'
requestBody:
required: true
content:
application/json:
schema: { $ref: '#/components/schemas/Education' }
responses:
'201': { description: Education added. }
'4XX': { $ref: '#/components/responses/ErrorResponse' }
/candidates/{id}/education/{education_id}:
delete:
tags: [Candidates]
summary: Delete Candidate Education
operationId: deleteCandidateEducation
parameters:
- $ref: '#/components/parameters/Id'
- name: education_id
in: path
required: true
schema: { type: integer }
- $ref: '#/components/parameters/OnBehalfOf'
responses:
'204': { description: Deleted. }
'4XX': { $ref: '#/components/responses/ErrorResponse' }
/candidates/{id}/employment:
post:
tags: [Candidates]
summary: Add Candidate Employment
operationId: addCandidateEmployment
parameters:
- $ref: '#/components/parameters/Id'
- $ref: '#/components/parameters/OnBehalfOf'
requestBody:
required: true
content:
application/json:
schema: { $ref: '#/components/schemas/Employment' }
responses:
'201': { description: Employment added. }
'4XX': { $ref: '#/components/responses/ErrorResponse' }
/candidates/{id}/employment/{employment_id}:
delete:
tags: [Candidates]
summary: Delete Candidate Employment
operationId: deleteCandidateEmployment
parameters:
- $ref: '#/components/parameters/Id'
- name: employment_id
in: path
required: true
schema: { type: integer }
- $ref: '#/components/parameters/OnBehalfOf'
responses:
'204': { description: Deleted. }
'4XX': { $ref: '#/components/responses/ErrorResponse' }
/candidates/{id}/prospect:
post:
tags: [Candidates]
summary: Convert Candidate To Prospect
operationId: candidateToProspect
parameters:
- $ref: '#/components/parameters/Id'
- $ref: '#/components/parameters/OnBehalfOf'
responses:
'200': { description: Converted to prospect. }
'4XX': { $ref: '#/components/responses/ErrorResponse' }
/candidates/{id}/anonymize:
put:
tags: [Candidates]
summary: Anonymize Candidate
operationId: anonymizeCandidate
parameters:
- $ref: '#/components/parameters/Id'
- $ref: '#/components/parameters/OnBehalfOf'
responses:
'200': { description: Anonymized. }
'4XX': { $ref: '#/components/responses/ErrorResponse' }
/candidates/{id}/merge:
put:
tags: [Candidates]
summary: Merge Candidate
operationId: mergeCandidate
parameters:
- $ref: '#/components/parameters/Id'
- $ref: '#/components/parameters/OnBehalfOf'
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [primary_candidate_id]
properties:
primary_candidate_id: { type: integer }
duplicate_candidate_id: { type: integer }
responses:
'200': { description: Merged. }
'4XX': { $ref: '#/components/responses/ErrorResponse' }
/candidates/{id}/activity_feed:
get:
tags: [ActivityFeed]
summary: List Candidate Activity Feed
operationId: getCandidateActivityFeed
parameters:
- $ref: '#/components/parameters/Id'
responses:
'200':
description: Activity feed.
content:
application/json:
schema: { $ref: '#/components/schemas/ActivityFeed' }
'4XX': { $ref: '#/components/responses/ErrorResponse' }
/jobs:
get:
tags: [Jobs]
summary: List Jobs
operationId: listJobs
parameters:
- $ref: '#/components/parameters/Page'
- $ref: '#/components/parameters/PerPage'
- name: status
in: query
schema: { type: string, enum: [open, closed, draft] }
- $ref: '#/components/parameters/UpdatedAfter'
responses:
'200':
description: Array of jobs.
content:
application/json:
schema:
type: array
items: { $ref: '#/components/schemas/Job' }
'4XX': { $ref: '#/components/responses/ErrorResponse' }
post:
tags: [Jobs]
summary: Create Job
operationId: createJob
parameters: [ { $ref: '#/components/parameters/OnBehalfOf' } ]
requestBody:
required: true
content:
application/json:
schema: { $ref: '#/components/schemas/JobCreate' }
responses:
'201':
description: Created.
content:
application/json:
schema: { $ref: '#/components/schemas/Job' }
'4XX': { $ref: '#/components/responses/ErrorResponse' }
/jobs/{id}:
parameters: [ { $ref: '#/components/parameters/Id' } ]
get:
tags: [Jobs]
summary: Retrieve Job
operationId: getJob
responses:
'200':
description: A single job.
content:
application/json:
schema: { $ref: '#/components/schemas/Job' }
'4XX': { $ref: '#/components/responses/ErrorResponse' }
patch:
tags: [Jobs]
summary: Update Job
operationId: updateJob
parameters: [ { $ref: '#/components/parameters/OnBehalfOf' } ]
requestBody:
required: true
content:
application/json:
schema: { $ref: '#/components/schemas/JobUpdate' }
responses:
'200':
description: Updated.
content:
application/json:
schema: { $ref: '#/components/schemas/Job' }
'4XX': { $ref: '#/components/responses/ErrorResponse' }
/jobs/{id}/hiring_team:
parameters: [ { $ref: '#/components/parameters/Id' } ]
get:
tags: [Jobs]
summary: Retrieve Job Hiring Team
operationId: getJobHiringTeam
responses:
'200':
description: Hiring team.
content:
application/json:
schema: { $ref: '#/components/schemas/HiringTeam' }
'4XX': { $ref: '#/components/responses/ErrorResponse' }
put:
tags: [Jobs]
summary: Replace Job Hiring Team
operationId: replaceJobHiringTeam
parameters: [ { $ref: '#/components/parameters/OnBehalfOf' } ]
requestBody:
required: true
content:
application/json:
schema: { $ref: '#/components/schemas/HiringTeam' }
responses:
'200':
description: Replaced.
content:
application/json:
schema: { $ref: '#/components/schemas/HiringTeam' }
'4XX': { $ref: '#/components/responses/ErrorResponse' }
/jobs/{id}/hiring_team_members:
post:
tags: [Jobs]
summary: Add Hiring Team Member
operationId: addHiringTeamMember
parameters:
- $ref: '#/components/parameters/Id'
- $ref: '#/components/parameters/OnBehalfOf'
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [user_id, role]
properties:
user_id: { type: integer }
role: { type: string, enum: [hiring_manager, recruiter, coordinator, sourcer, interviewer] }
responses:
'201': { description: Added. }
'4XX': { $ref: '#/components/responses/ErrorResponse' }
/jobs/{id}/hiring_team_members/{user_id}:
delete:
tags: [Jobs]
summary: Remove Hiring Team Member
operationId: removeHiringTeamMember
parameters:
- $ref: '#/components/parameters/Id'
- name: user_id
in: path
required: true
schema: { type: integer }
- $ref: '#/components/parameters/OnBehalfOf'
responses:
'204': { description: Removed. }
'4XX': { $ref: '#/components/responses/ErrorResponse' }
/openings:
get:
tags: [JobOpenings]
summary: List Openings
operationId: listOpenings
parameters:
- $ref: '#/components/parameters/Page'
- $ref: '#/components/parameters/PerPage'
responses:
'200':
description: Array of openings.
content:
application/json:
schema:
type: array
items: { $ref: '#/components/schemas/Opening' }
'4XX': { $ref: '#/components/responses/ErrorResponse' }
post:
tags: [JobOpenings]
summary: Create Opening
operationId: createOpening
parameters: [ { $ref: '#/components/parameters/OnBehalfOf' } ]
requestBody:
required: true
content:
application/json:
schema: { $ref: '#/components/schemas/Opening' }
responses:
'201': { description: Created. }
'4XX': { $ref: '#/components/responses/ErrorResponse' }
delete:
tags: [JobOpenings]
summary: Delete Openings Bulk
operationId: deleteOpenings
parameters: [ { $ref: '#/components/parameters/OnBehalfOf' } ]
responses:
'204': { description: Deleted. }
'4XX': { $ref: '#/components/responses/ErrorResponse' }
/openings/{id}:
parameters: [ { $ref: '#/components/parameters/Id' } ]
get:
tags: [JobOpenings]
summary: Retrieve Opening
operationId: getOpening
responses:
'200':
description: Opening.
content:
application/json:
schema: { $ref: '#/components/schemas/Opening' }
'4XX': { $ref: '#/components/responses/ErrorResponse' }
patch:
tags: [JobOpenings]
summary: Update Opening
operationId: updateOpening
parameters: [ { $ref: '#/components/parameters/OnBehalfOf' } ]
requestBody:
required: true
content:
application/json:
schema: { $ref: '#/components/schemas/Opening' }
responses:
'200': { description: Updated. }
'4XX': { $ref: '#/components/responses/ErrorResponse' }
/job_posts:
get:
tags: [JobPosts]
summary: List Job Posts
operationId: listJobPosts
parameters:
- $ref: '#/components/parameters/Page'
- $ref: '#/components/parameters/PerPage'
- name: live
in: query
schema: { type: boolean }
- name: active
in: query
schema: { type: boolean }
responses:
'200':
description: Array of job posts.
content:
application/json:
schema:
type: array
items: { $ref: '#/components/schemas/JobPost' }
'4XX': { $ref: '#/components/responses/ErrorResponse' }
/job_posts/{id}:
parameters: [ { $ref: '#/components/parameters/Id' } ]
get:
tags: [JobPosts]
summary: Retrieve Job Post
operationId: getJobPost
responses:
'200':
description: Job post.
content:
application/json:
schema: { $ref: '#/components/schemas/JobPost' }
'4XX': { $ref: '#/components/responses/ErrorResponse' }
patch:
tags: [JobPosts]
summary: Update Job Post
operationId: updateJobPost
parameters: [ { $ref: '#/components/parameters/OnBehalfOf' } ]
requestBody:
required: true
content:
application/json:
schema: { $ref: '#/components/schemas/JobPost' }
responses:
'200': { description: Updated. }
'4XX': { $ref: '#/components/responses/ErrorResponse' }
/job_posts/{id}/custom_locations:
get:
tags: [JobPosts]
summary: List Job Post Custom Locations
operationId: listJobPostCustomLocations
parameters: [ { $ref: '#/components/parameters/Id' } ]
responses:
'200':
description: Custom locations.
content:
application/json:
schema:
type: array
items:
type: object
properties:
name: { type: string }
region: { type: string }
'4XX': { $ref: '#/components/responses/ErrorResponse' }
/job_posts/{id}/status:
patch:
tags: [JobPosts]
summary: Update Job Post Status
operationId: updateJobPostStatus
parameters:
- $ref: '#/components/parameters/Id'
- $ref: '#/components/parameters/OnBehalfOf'
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [status]
properties:
status: { type: string, enum: [live, offline] }
responses:
'200': { description: Status changed. }
'4XX': { $ref: '#/components/responses/ErrorResponse' }
/jobs/{job_id}/job_posts:
get:
tags: [JobPosts]
summary: List Job Posts For Job
operationId: listJobJobPosts
parameters:
- name: job_id
in: path
required: true
schema: { type: integer }
responses:
'200':
description: Job posts for a job.
content:
application/json:
schema:
type: array
items: { $ref: '#/components/schemas/JobPost' }
'4XX': { $ref: '#/components/responses/ErrorResponse' }
/jobs/{job_id}/job_posts/{id}:
get:
tags: [JobPosts]
summary: Retrieve Job Job Post
operationId: getJobJobPost
parameters:
- name: job_id
in: path
required: true
schema: { type: integer }
- $ref: '#/components/parameters/Id'
responses:
'200':
description: Job post.
content:
application/json:
schema: { $ref: '#/components/schemas/JobPost' }
'4XX': { $ref: '#/components/responses/ErrorResponse' }
/job_stages:
get:
tags: [JobStages]
summary: List Job Stages
operationId: listJobStages
responses:
'200':
description: Job stages.
content:
application/json:
schema:
type: array
items: { $ref: '#/components/schemas/JobStage' }
'4XX': { $ref: '#/components/responses/ErrorResponse' }
/job_stages/{id}:
get:
tags: [JobStages]
summary: Retrieve Job Stage
operationId: getJobStage
parameters: [ { $ref: '#/components/parameters/Id' } ]
responses:
'200':
description: Job stage.
content:
application/json:
schema: { $ref: '#/components/schemas/JobStage' }
'4XX': { $ref: '#/components/responses/ErrorResponse' }
/jobs/{job_id}/stages:
get:
tags: [JobStages]
summary: List Job Stages For Job
operationId: listJobStagesForJob
parameters:
- name: job_id
in: path
required: true
schema: { type: integer }
responses:
'200':
description: Stages.
content:
application/json:
schema:
type: array
items: { $ref: '#/components/schemas/JobStage' }
'4XX': { $ref: '#/components/responses/ErrorResponse' }
/departments:
get:
tags: [Departments]
summary: List Departments
operationId: listDepartments
responses:
'200':
description: Departments.
content:
application/json:
schema:
type: array
items: { $ref: '#/components/schemas/Department' }
'4XX': { $ref: '#/components/responses/ErrorResponse' }
post:
tags: [Departments]
summary: Create Department
operationId: createDepartment
parameters: [ { $ref: '#/components/parameters/OnBehalfOf' } ]
requestBody:
required: true
content:
application/json:
schema: { $ref: '#/components/schemas/Department' }
responses:
'201': { description: Created. }
'4XX': { $ref: '#/components/responses/ErrorResponse' }
/departments/{id}:
parameters: [ { $ref: '#/components/parameters/Id' } ]
get:
tags: [Departments]
summary: Retrieve Department
operationId: getDepartment
responses:
'200':
description: Department.
content:
application/json:
# --- truncated at 32 KB (71 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/greenhouse-io/refs/heads/main/openapi/greenhouse-harvest-api-openapi.yml