# Greenhouse

Manage Greenhouse ATS: candidates, applications, jobs, scorecards, offers. Exposes **48 actions** covering the full API surface
the agent needs - read and write.

## What it can do

| Method | What it does |
| --- | --- |
| `greenhouse_candidates_list` | List all candidates - GET /candidates. |
| `greenhouse_candidates_get` | Get one candidate by ID - GET /candidates/&#123;id&#125;. |
| `greenhouse_candidates_search` | Search candidates by name, email, phone, or notes - GET /candidates?q=. |
| `greenhouse_candidates_create` | Create a new candidate - POST /candidates. |
| `greenhouse_candidates_update` | Update a candidate - PATCH /candidates/&#123;id&#125;. |
| `greenhouse_candidates_delete` | Delete a candidate - DELETE /candidates/&#123;id&#125;. |
| `greenhouse_applications_list` | List applications (candidate x job) - GET /applications. |
| `greenhouse_applications_get` | Get one application - GET /applications/&#123;id&#125;. |
| `greenhouse_applications_create` | Create an application (add candidate to job) - POST /applications. |
| `greenhouse_applications_update` | Update an application - PATCH /applications/&#123;id&#125;. |
| `greenhouse_applications_delete` | Delete an application - DELETE /applications/&#123;id&#125;. |
| `greenhouse_applications_move` | Move an application to a new stage - POST /applications/&#123;id&#125;/move. |
| `greenhouse_applications_reject` | Reject an application - POST /applications/&#123;id&#125;/reject. |
| `greenhouse_jobs_list` | List jobs - GET /jobs. |
| `greenhouse_jobs_get` | Get one job by ID - GET /jobs/&#123;id&#125;. |
| `greenhouse_jobs_create` | Create a job (in draft status) - POST /jobs. |
| `greenhouse_jobs_update` | Update a job - PATCH /jobs/&#123;id&#125;. |
| `greenhouse_jobs_publish` | Publish a job (change status to open) - PATCH /jobs/&#123;id&#125;?status=open. |
| `greenhouse_jobs_unpublish` | Unpublish a job (change status to closed) - PATCH /jobs/&#123;id&#125;?status=closed. |
| `greenhouse_job_posts_list` | List job posts (public listings) - GET /job_posts. |
| `greenhouse_job_posts_get` | Get one job post - GET /job_posts/&#123;id&#125;. |
| `greenhouse_job_posts_create` | Create a job post for a job - POST /job_posts. |
| `greenhouse_job_posts_update` | Update a job post - PATCH /job_posts/&#123;id&#125;. |
| `greenhouse_interviews_list` | List interviews - GET /interviews. |
| `greenhouse_interviews_get` | Get one interview - GET /interviews/&#123;id&#125;. |
| `greenhouse_interviews_create` | Create an interview - POST /interviews. |
| `greenhouse_interviews_update` | Update an interview - PATCH /interviews/&#123;id&#125;. |
| `greenhouse_interviews_delete` | Delete an interview - DELETE /interviews/&#123;id&#125;. |
| `greenhouse_interview_kits_list` | List interview kits (question templates for interviews) - GET /interview_kits. |
| `greenhouse_interview_kits_get` | Get one interview kit - GET /interview_kits/&#123;id&#125;. |
| `greenhouse_offers_list` | List offers - GET /offers. |
| `greenhouse_offers_get` | Get one offer - GET /offers/&#123;id&#125;. |
| `greenhouse_offers_create` | Create an offer - POST /offers. |
| `greenhouse_offers_update` | Update an offer - PATCH /offers/&#123;id&#125;. |
| `greenhouse_offers_delete` | Delete/withdraw an offer - DELETE /offers/&#123;id&#125;. |
| `greenhouse_scorecards_list` | List scorecards (interviewer feedback) - GET /scorecards. |
| `greenhouse_scorecards_get` | Get one scorecard - GET /scorecards/&#123;id&#125;. |
| `greenhouse_scorecards_create` | Create a scorecard (interview feedback) - POST /scorecards. |
| `greenhouse_scorecards_update` | Update a scorecard - PATCH /scorecards/&#123;id&#125;. |
| `greenhouse_users_list` | List team members/users - GET /users. |
| `greenhouse_users_get` | Get one user - GET /users/&#123;id&#125;. |
| `greenhouse_activity_feed_list` | List activity feed events (hiring events) - GET /activity_feed. |
| `greenhouse_custom_fields_list` | List custom fields (field definitions) - GET /custom_fields. |
| `greenhouse_candidate_tags_list` | List candidate tags (labels) - GET /candidate_tags. |
| `greenhouse_rejection_reasons_list` | List rejection reasons (why candidates are rejected) - GET /rejection_reasons. |
| `greenhouse_job_stages_list` | List job stages (pipeline stages for a job) - GET /jobs/&#123;job_id&#125;/stages. |
| `greenhouse_application_stages_list` | List application stages (global pipeline stages) - GET /application_stages. |
| `greenhouse_interview_stages_list` | List interview stages (global interview pipeline) - GET /interview_stages. |

## How to get credentials

This connector uses an **API key / token**. Create one in the provider
dashboard, then paste it into FlyMyAI:

- **`GREENHOUSE_API_KEY`** - Greenhouse - Configure - Dev Center - API Credentials. (https://app.greenhouse.io/)

## Fields to fill in FlyMyAI

| FlyMyAI field | Where it comes from |
| --- | --- |
| `GREENHOUSE_API_KEY` | Greenhouse - Configure - Dev Center - API Credentials. |

## Troubleshooting

- **`401 Unauthorized` / `403 Forbidden`** - the token is wrong, expired, or missing a required scope - regenerate it.
- **`429 Too Many Requests`** - you hit the provider rate limit; retry after a short backoff.
- **Unexpected `4xx` on writes** - double-check required fields; the agent confirms before write actions.

## Links

- [Greenhouse API documentation](https://developers.greenhouse.io/harvest.html)
