### GET Job Openings Response Example
Source: https://developers.greenhouse.io/harvest.html
This is an example of the JSON response when listing job openings. It mirrors the structure of the job opening object.
```json
[
{
"id": 123,
"opening_id": "OPENED-1",
"status": "open",
"opened_at": "2015-11-19T19:53:32.565Z",
"closed_at": null,
"application_id": null,
"close_reason": null,
"custom_fields": {
"employment_type": "Full-Time",
"maximum_budget": "$81.5k"
},
"keyed_custom_fields": {
"employment_type": {
"name": "Time type",
"type": "single_select",
"value": "Full-Time"
},
"budget": {
"name": "Maximum Budget",
"type": "short_text",
"value": "$81.5k"
}
}
},
{
"id": 123,
"opening_id": "CLOSED-1",
"status": "closed",
"opened_at": "2015-11-19T19:53:32.565Z",
"closed_at": "2015-12-14T19:53:32.565Z",
"application_id": 65565,
"close_reason": {
"id": 678,
"name": "Hired - Backfill"
},
"custom_fields": {
"employment_type": "Full-Time",
"maximum_budget": "$81.5k"
},
"keyed_custom_fields": {
"employment_type": {
"name": "Time type",
"type": "single_select",
"value": "Full-Time"
},
"budget": {
"name": "Maximum Budget",
"type": "short_text",
"value": "$81.5k"
}
}
}
]
```
--------------------------------
### Example Application Response
Source: https://developers.greenhouse.io/harvest.html
This is an example of the JSON response you will receive when listing applications. It includes details about the candidate, job, and status.
```json
[
{
"id": 69306314,
"candidate_id": 57683957,
"prospect": false,
"applied_at": "2017-09-29T12:56:05.244Z",
"rejected_at": null,
"last_activity_at": "2017-09-29T13:00:28.038Z",
"location": {
"address": "New York, New York, USA"
},
"source": {
"id": 2,
"public_name": "Jobs page on your website"
},
"credited_to": {
"id": 4080,
"first_name": "Kate",
"last_name": "Austen",
"name": "Kate Austen",
"employee_id": "12345"
},
"recruiter": {
"id": 92120,
"first_name": "Greenhouse",
"last_name": "Admin",
"name": "Greenhouse Admin",
"employee_id": "67890"
},
"coordinator": {
"id": 453636,
"first_name": "Jane",
"last_name": "Smith",
"name": "Jane Smith",
"employee_id": "12345"
},
"rejection_reason": null,
"rejection_details": null,
"jobs": [
{
"id": 107761,
"name": "UX Designer - Boston"
}
],
"job_post_id": 123,
"status": "active",
"current_stage": {
"id": 767358,
"name": "Application Review"
},
"answers": [
{
"question": "How did you hear about this job?",
"answer": "Online Research"
},
{
"question": "Website",
"answer": "mytestwebsite.com"
}
],
"prospective_office": null,
"prospective_department": null,
"prospect_detail": {
"prospect_pool": null,
"prospect_stage": null,
"prospect_owner": null
},
"custom_fields": {
"application_custom_test": "Option 1"
},
"keyed_custom_fields": {
"application_custom_test": {
"name": "Application Custom Test",
"type": "single_select",
"value": "Option 1"
}
},
"attachments": [
{
"filename": "John_Locke_Offer_Packet_09_27_2017.pdf",
"url": "https://prod-heroku.s3.amazonaws.com/",
"type": "offer_packet",
"created_at": "2020-09-27T18:45:27.137Z"
}
]
},
{
"id": 69306509,
"candidate_id": 57683957,
"prospect": true,
"applied_at": "2017-09-29T13:00:04.058Z",
"rejected_at": null,
"last_activity_at": "2017-09-29T13:08:19.111Z",
"location": null,
"source": {
"id": 100674,
"public_name": "Campus Job Fair"
},
"credited_to": {
"id": 566819,
"first_name": "Bob",
"last_name": "Smith",
"name": "Bob Smith",
"employee_id": "ABC12345"
},
"recruiter": null,
"coordinator": null,
"rejection_reason": null,
"rejection_details": null,
"jobs": [
{
"id": 224587,
"name": "Product Manager "
},
{
"id": 109322,
"name": "Web Developer "
}
],
"job_post_id": null,
"status": "hired",
"current_stage": null,
"answers": [
{
"question": "How did you hear about this job?",
"answer": "Online Research"
},
{
"question": "Website",
"answer": "mytestwebsite.com"
}
],
"prospective_office": {
"primary_contact_user_id": null,
"parent_id": null,
"name": "New York",
"location": {
"name": "New York, NY"
},
"id": 59213,
"external_id": null,
"child_ids": []
},
"prospective_department": {
"parent_id": null,
"name": "Marketing",
"id": 9024,
"external_id": null,
"child_ids": []
},
"prospect_detail": {
"prospect_pool": {
"id": 227,
"name": "Opted In: In-Person Event"
},
"prospect_stage": {
"id": 826,
"name": "In Discussion"
},
"prospect_owner": {
"id": 92120,
"name": "Greenhouse Admin"
}
},
"custom_fields": {
"application_custom_test": "Option 1"
},
"keyed_custom_fields": {
"application_custom_test": {
"name": "Application Custom Test",
"type": "single_select",
"value": "Option 1"
}
},
"attachments": [
{
"filename": "Jack_Smith_Offer_Packet_09_27_2020.pdf",
"url": "https://prod-heroku.s3.amazonaws.com/",
"type": "offer_packet",
"created_at": "2020-09-27T18:45:27.137Z"
}
]
}
]
```
--------------------------------
### Example Response for Single Opening
Source: https://developers.greenhouse.io/harvest.html
This is an example of the JSON response structure when retrieving a single job opening.
```json
{
"id": 123,
"opening_id": "OPENED-1",
"status": "open",
"opened_at": "2015-11-19T19:53:32.565Z",
"closed_at": null,
"application_id": null,
"close_reason": null,
"custom_fields": {
"employment_type": "Full-Time",
"maximum_budget": "$81.5k"
},
"keyed_custom_fields": {
"employment_type": {
"name": "Time type",
"type": "single_select",
"value": "Full-Time"
},
"budget": {
"name": "Maximum Budget",
"type": "short_text",
"value": "$81.5k"
}
}
}
```
--------------------------------
### Response Example for Listing Close Reasons
Source: https://developers.greenhouse.io/harvest.html
This is an example of the JSON array returned when listing all close reasons. Each element is a close reason object.
```json
[
{
"id": 365,
"name": "Hired"
},
{
"id": 366,
"name": "Backfill"
},
{
"id": 367,
"name": "Order cancelled"
}
]
```
--------------------------------
### New Office Response Body
Source: https://developers.greenhouse.io/harvest.html
Example JSON response after successfully creating a new office.
```json
{
"id": 58028,
"name": "Brooklyn",
"location": {
"name": "Brooklyn, NY"
},
"primary_contact_user_id": 336474,
"parent_id": 47012,
"parent_office_external_id": "parent-1",
"child_ids": [],
"child_office_external_id": [],
"external_id": null
}
```
--------------------------------
### Example Candidate Response
Source: https://developers.greenhouse.io/candidate-ingestion.html
This is an example of a successful API response when retrieving candidate data. It includes the candidate's ID, name, and application details.
```json
{
"id": 17681532,
"name": "Harry Potter",
"external_id": "24680",
"applications": [
{
"id": 59724,
"job": "Auror",
"status": "Active",
"stage": "Application Review",
"profile_url": "https://app.greenhouse.io/people/17681532?application_id=26234709"
}
]
}
```
--------------------------------
### Add Department Response
Source: https://developers.greenhouse.io/harvest.html
Example JSON response after successfully creating a new department.
```json
{
"id": 34535,
"name": "A New Department",
"parent_id": 12345,
"parent_department_external_ids": "parent-1",
"child_ids": [],
"child_department_external_ids": [],
"external_id": "456454"
}
```
--------------------------------
### User Object Response Example
Source: https://developers.greenhouse.io/harvest.html
This is an example of the JSON response structure when retrieving a user. It includes basic user information, emails, office and department details, and custom fields.
```json
{
"id": 112,
"name": "Juliet Burke",
"first_name": "Juliet",
"last_name": "Burke",
"primary_email_address": "juliet.burke@example.com",
"updated_at": "2016-11-17T16:13:48.888Z",
"created_at": "2015-11-18T22:26:32.243Z",
"disabled": false,
"site_admin": true,
"emails": [
"juliet.burke@example.com",
"other.woman@example.com"
],
"employee_id": "221",
"linked_candidate_ids": [123, 654],
"offices": [
{
"id": 47013,
"name": "San Francisco",
"location": {
"name": "San Francisco, California"
},
"primary_contact_user_id": 150894,
"parent_id": 50850,
"parent_office_external_id": "14680",
"child_ids": [50852, 50891],
"child_office_external_ids": ["13473", "123473"],
"external_id": "15679"
}
],
"departments": [
{
"id": 25907,
"name": "Marketing",
"parent_id": 25908,
"parent_department_external_id": "13473",
"child_ids": [50852, 50891],
"child_department_external_ids": ["13473", "123473"],
"external_id": "15679"
}
],
"custom_fields": {
"equipment": "Laptop",
"shirt_size": "M",
"hiring_specialties": [
"Engineers",
"Executives"
],
"trained_for_interviews": true,
"recruiting_partner": {
"name": "Johnny Recruiter",
"email": "johnny@example.com",
"user_id": 4000000000
}
},
"keyed_custom_fields": {
"equipment": {
"name": "Equipment",
"type": "short_text",
"value": "Laptop"
},
"shirt_size": {
"name": "Shirt Size",
"type": "single_select",
"value": "M"
},
"hiring_specialties": {
"name": "Hiring Specialties",
"type": "multi_select",
"value": [
"Engineers",
"Executives"
]
},
"trained_for_interviews": {
"name": "Trained for interviews",
"type": "boolean",
"value": true
},
"recruiting_partner": {
"name": "Recruiting Partner",
"type": "user",
"value": {
"name": "Johnny Recruiter",
"email": "johnny@example.com",
"user_id": 4000000000
}
}
}
}
```
--------------------------------
### Example Response for Deleting Openings (v2)
Source: https://developers.greenhouse.io/harvest.html
This is an example of the JSON response structure for the v2 delete openings endpoint, indicating successful and failed deletions.
```json
{
"success": true,
"deleted_ids": [123, 456],
"failed_ids": [789]
}
```
--------------------------------
### Example List Sources JSON Response
Source: https://developers.greenhouse.io/harvest.html
This is an example of the JSON array returned when listing sources. Each object in the array represents a distinct source with its ID, name, and type.
```json
[
{
"id": 632,
"name": "Other",
"type": {
"id": 5,
"name": "Prospecting"
}
},
{
"id": 928,
"name": "Destiny",
"type": {
"id": 7,
"name": "Supernatural Means"
}
}
]
```
--------------------------------
### List Job Stages API Response Example
Source: https://developers.greenhouse.io/harvest.html
This is an example of the JSON response when listing job stages. It returns an array of job stage objects.
```json
[
{
"id": 6001,
"name": "Cultural Fit Interview",
"created_at": "2015-11-22T05:31:37.263Z",
"updated_at": "2015-11-22T05:31:37.263Z",
"job_id": 12345,
"priority": 0,
"interviews": [
{
"id": 7890,
"name": "Cultural Fit Interview",
"schedulable": true,
"estimated_minutes": 30,
"default_interviewer_users": [
{
"id": 821,
"first_name": "Robert",
"last_name": " Robertson",
"name": "Robert Robertson",
"employee_id": "100377"
}
],
"interview_kit": {
"id": 9124,
"content": "
Purpose
Determine whether or not the candidate would be a strong fit.",
"questions": [
{
"id": 11052,
"question": "Is this person really a good fit?"
}
]
}
}
]
},
{
"id": 6002,
"name": "Executive Interview",
"created_at": "2015-11-22T05:31:37.263Z",
"updated_at": "2015-11-22T05:31:37.263Z",
"job_id": 34567,
"priority": 1,
"interviews": [
{
"id": 7345,
"name": "Executive Interview",
"schedulable": true,
"estimated_minutes": 60,
"default_interviewer_users": [
{
"id": 4080,
"first_name": "Kate",
"last_name": "Austen",
"name": "Kate Austen",
"employee_id": "12345"
}
],
"interview_kit": {
"id": 9125,
"content": "Purpose
Determine whether or not the candidate would be a strong fit.",
"questions": [
{
"id": 11053,
"question": "What's their favorite color?"
},
{
"id": 11054,
"question": "Do they really want to work here?"
}
]
}
}
]
}
]
}
```
--------------------------------
### List Demographic Questions Response Example
Source: https://developers.greenhouse.io/harvest.html
Example JSON response for listing demographic questions. Includes question details like ID, name, set ID, and requirement status.
```json
[
{
"id": 123,
"active": true,
"demographic_question_set_id": 456,
"name": "What is your favorite color?",
"translations": [
{
"language": "en",
"name": "What is your favorite color?"
}
],
"required": true
},
{
"id": 897,
"active": true,
"demographic_question_set_id": 555,
"name": "Pizza or pasta?",
"translations": [
{
"language": "en",
"name": "Pizza or pasta?"
}
],
"required": false
}
]
```
--------------------------------
### Department Response (List View)
Source: https://developers.greenhouse.io/harvest.html
Example JSON response when retrieving a department with `render_as=list` (default).
```json
{
"id": 12345,
"name": "Technology",
"parent_id": null,
"parent_department_external_ids": "",
"child_ids": [
34065,
25908
],
"child_department_external_ids": [
"child-1",
"child-2"
],
"external_id": "89076"
}
```
--------------------------------
### Get Employees by Start Date Range
Source: https://developers.greenhouse.io/gho.html
Retrieves employees whose start dates fall within a specified range (exclusive), returning their ID, work email, and start date.
```APIDOC
## Get Employees by Start Date Range
### Description
Retrieves employees whose start dates fall within a specified range (exclusive), returning their ID, work email, and start date.
### Query
```graphql
employees(first: 25, startDateFilter: { dateFilter: { after: "2017-03-25", before: "2018-03-25" } }) {
pageInfo {
hasNextPage
endCursor
}
edges {
node {
id
email
startDate
}
}
}
```
### Parameters
* `first` (Int) - Optional - The number of employees to return.
* `startDateFilter` (Object) - Required - Filters employees by start date.
* `dateFilter` (Object) - Required - Specifies the date range.
* `after` (String) - Required - The start date (exclusive) in YYYY-MM-DD format.
* `before` (String) - Required - The end date (exclusive) in YYYY-MM-DD format.
```
--------------------------------
### Add Application to Candidate/Prospect (cURL)
Source: https://developers.greenhouse.io/harvest.html
Use this cURL command to initiate the process of adding an application. Ensure you replace placeholders like {id} with actual values. The 'On-Behalf-Of' and 'Authorization' headers are crucial for authentication and auditing.
```bash
curl -X POST 'https://harvest.greenhouse.io/v1/candidates/{id}/applications'
-H "Content-Type: application/json"
-H "On-Behalf-Of: {greenhouse user ID}"
-H "Authorization: Basic MGQwMzFkODIyN2VhZmE2MWRjMzc1YTZjMmUwNjdlMjQ6"
```
--------------------------------
### Add User Request Example
Source: https://developers.greenhouse.io/harvest.html
This cURL command demonstrates how to make a POST request to add a new user. Ensure you include the necessary headers for authentication and content type.
```bash
curl -X POST 'https://harvest.greenhouse.io/v1/users'
-H "Content-Type: application/json"
-H "On-Behalf-Of: {greenhouse user ID}"
-H "Authorization: Basic MGQwMzFkODIyN2VhZmE2MWRjMzc1YTZjMmUwNjdlMjQ6"
```
--------------------------------
### Example GET Request with Basic Authentication
Source: https://developers.greenhouse.io/assessment.html
This example shows how Greenhouse would make a GET request to a partner's List Tests endpoint, including the Basic Authentication header. The credentials are the API key provided by the assessment partner, Base64 encoded.
```http
GET https://www.testing-partner-a.com/api/list_tests Authorization: Basic < base-64-encoded-credentials >
```
--------------------------------
### List All Offers
Source: https://developers.greenhouse.io/harvest.html
Use this endpoint to retrieve all offers made by an organization, ordered by application_id. Ensure you include the Authorization header with your API credentials.
```bash
curl 'https://harvest.greenhouse.io/v1/offers'
-H "Authorization: Basic MGQwMzFkODIyN2VhZmE2MWRjMzc1YTZjMmUwNjdlMjQ6"
```
--------------------------------
### List Rejection Reasons
Source: https://developers.greenhouse.io/harvest.html
Use this command to list all rejection reasons for an organization. Ensure you have the correct Authorization header.
```bash
curl 'https://harvest.greenhouse.io/v1/rejection_reasons' \
-H "Authorization: Basic MGQwMzFkODIyN2VhZmE2MWRjMzc1YTZjMmUwNjdlMjQ6"
```
--------------------------------
### Get Employees by Start Date Range
Source: https://developers.greenhouse.io/gho.html
Retrieve employees whose start dates fall within a specific range (exclusive). This query filters employees based on a start date after a given date and before another.
```graphql
# Request only those employees that have a startDate between 2017-03-25 and 2018-03-25.
# These dates are exclusive (e.g. someone who started on 2017-03-25 or 2018-03-25 would not be included.
{
employees(first: 25, startDateFilter: { dateFilter: { after: "2017-03-25", before: "2018-03-25" } }) {
pageInfo {
hasNextPage
endCursor
}
edges {
node {
id
email
startDate
}
}
}
}
```
--------------------------------
### Retrieve Audit Log Events
Source: https://developers.greenhouse.io/audit-log.html
This snippet shows how to make a GET request to the Audit Log API to retrieve events. It includes example headers and a sample JSON response.
```bash
curl -X GET 'https://auditlog.us.greenhouse.io/events'
-H "Content-Type: application/json"
-H "Authorization: Bearer MeyJhbGci.eyJhdWQiO"
{
"paging": {
"pit_id": "cmFuZG9tX3ZhbHVl",
"search_after": null,
"size": "100",
"next_search_after": "1685989175"
},
"hits": 2,
"results": [
{
"request": {
"id": "1234zID",
"type": "email_settings#create_organization_email"
},
"performer": {
"meta": {
"name": "Allison Jamie",
"username": "allison.j@omniva-corp.com"
},
"id": 12345,
"ip_address": "192.168.0.1",
"type": "user"
},
"organization_id": 123,
"event": {
"meta": null,
"target_type": "Global Email Added",
"type": "action"
},
"event_time": "2023-06-02T16:06:19.217Z"
},
{
"request": {
"id": "1234zID",
"type": "email_settings#create_organization_email"
},
"performer": {
"meta": {
"name": "Allison Jamie",
"username": "allison.j@omniva-corp.com"
},
"id": 12345,
"ip_address": "192.168.0.1",
"type": "user"
},
"organization_id": 123,
"event": {
"meta": {
"id": [
null,
1234
],
"value": [
null,
"johnny.c@omniva-corp.com"
]
},
"target_type": "OrganizationEmail",
"target_id": 1234,
"type": "data_change_create"
},
"event_time": "2023-06-02T16:06:19.137Z"
}
]
}
```
--------------------------------
### Example JSON Body for Creating Openings
Source: https://developers.greenhouse.io/harvest.html
This JSON structure demonstrates how to provide opening data, including custom fields and null values.
```json
{
"openings": [
{
"opening_id": "abc-123",
"custom_fields": [ { "id": 123, "value": "some value" } ]
},
{"opening_id": null}
]
}
```
--------------------------------
### GET /v1/offers
Source: https://developers.greenhouse.io/harvest.html
Retrieves a list of offers. Supports filtering by creation, update, resolution, and sent dates, as well as status and start dates. Pagination is available via `per_page` and `page` parameters.
```APIDOC
## GET /v1/offers
### Description
Retrieves a list of offers. Supports filtering by creation, update, resolution, and sent dates, as well as status and start dates. Pagination is available via `per_page` and `page` parameters.
### Method
GET
### Endpoint
https://harvest.greenhouse.io/v1/offers
### Parameters
#### Query Parameters
- **per_page** (integer) - Optional - Return up to this number of objects per response. Must be an integer between 1 and 500. Defaults to 100.
- **page** (integer) - Optional - A cursor for use in pagination. Returns the n-th chunk of `per_page` objects.
- **skip_count** (boolean) - Optional - If `true`, the performance of retrieving offers will improve. This will remove `last` from the `link` response header.
- **created_before** (timestamp) - Optional - Return only offers that were created before this timestamp. Timestamp must be in in ISO-8601 format.
- **created_after** (timestamp) - Optional - Return only offers that were created at or after this timestamp. Timestamp must be in in ISO-8601 format.
- **updated_before** (timestamp) - Optional - Return only offers that were updated at or before this timestamp. Timestamp must be in in ISO-8601 format.
- **updated_after** (timestamp) - Optional - Return only offers that were updated at or after this timestamp. Timestamp must be in in ISO-8601 format.
- **resolved_after** (timestamp) - Optional - Return only offers that were resolved at or after this timestamp. Timestamp must be in in ISO-8601 format.
- **resolved_before** (timestamp) - Optional - Return only offers that were resolved at or before this timestamp. Timestamp must be in in ISO-8601 format.
- **status** (string) - Optional - Return only offers that have a particular status. One of: `unresolved`, `accepted`, `rejected`, `deprecated`.
- **sent_after** (date) - Optional - Return only offers that have been sent on or after the provided date. Date must be in YYYY-MM-DD format.
- **sent_before** (date) - Optional - Return only offers that have been sent on or before the provided date. Date must be in YYYY-MM-DD format.
- **starts_after** (date) - Optional - Return only offers whose start date has been set to on or after the provided date. Date must be in YYYY-MM-DD format.
- **starts_before** (date) - Optional - Return only offers whose start date has been set to on or before the provided date. Date must be in the YYYY-MM-DD format.
### Response
See noteworthy response attributes.
```
--------------------------------
### Scheduled Interviews Response Example
Source: https://developers.greenhouse.io/harvest.html
This JSON object represents a list of scheduled interviews for an application. It includes details such as interview IDs, application ID, start and end times, location, status, and associated interviewers.
```json
[
{
"id": 9128481,
"application_id": 4684156,
"external_event_id": "event123",
"start": {
"date_time": "2014-03-26T22:15:00.000Z"
},
"end": {
"date_time": "2014-03-26T22:30:00.000Z"
},
"location": "Big Conference Room",
"video_conferencing_url": "http://example.com",
"status": "awaiting_feedback",
"created_at": "2016-02-10T14:31:51.019Z",
"updated_at": "2016-05-23T20:43:11.679Z",
"interview": {
"id": 7001,
"name": "Culture Fit"
},
"organizer": {
"id": 2000,
"first_name": "Jack",
"last_name": "Shepard",
"name": "Jack Shepard",
"employee_id": "12345"
},
"interviewers": [
{
"id": 4080,
"employee_id": "employee123",
"name": "Kate Austen",
"email": "kate.austen@example.com",
"response_status": "needs_action",
"scorecard_id": 11274
}
]
},
{
"id": 9128482,
"application_id": 4684156,
"external_event_id": "event456",
"start": {
"date": "2017-08-22"
},
"end": {
"date": "2017-08-23"
},
"location": "Small Conference Room",
"video_conferencing_url": "http://example.com",
"status": "complete",
"interview": {
"id": 7002,
"name": "Whiteboarding Challenge"
},
"organizer": {
"id": 2000,
"first_name": "Jack",
"last_name": "Shepard",
"name": "Jack Shepard",
"employee_id": "12345"
},
"interviewers": [
{
"id": 3412,
"employee_id": "employee456",
"name": "Charlie Pace",
"email": "youalleverybody@example.com",
"response_status": "needs_action",
"scorecard_id": null
}
]
}
]
```
--------------------------------
### cURL Request with Basic Authentication
Source: https://developers.greenhouse.io/harvest.html
Example of making a GET request to the Harvest API's /v1/candidates endpoint using cURL. The -u flag handles Basic Authentication by appending a colon to the API token.
```bash
# Note the trailing colon after the username (API token):
$ curl https://harvest.greenhouse.io/v1/candidates/ -u a7183e1b7e9ab09b8a5cfa87d1934c3c:
...
```
```http
> GET /v1/candidates/ HTTP/1.1
> Host: harvest.greenhouse.io
> Authorization: Basic YTcxODNlMWI3ZTlhYjA5YjhhNWNmYTg3ZDE5MzRjM2M6
...
```
--------------------------------
### Hire Application Response JSON
Source: https://developers.greenhouse.io/harvest.html
This is an example of the JSON response received after successfully hiring an application. Note that the 'current_stage' field will be null for a hired application.
```json
{
"id": 48206478,
"candidate_id": 36952451,
"prospect": false,
"applied_at": "2017-02-01T14:26:02.282Z",
"rejected_at": null,
"last_activity_at": "2017-02-01T14:51:12.670Z",
"location": {
"address": "New York, New York, USA"
},
"source": {
"id": 33,
"public_name": "Glassdoor"
},
"credited_to": null,
"recruiter": {
"id": 92120,
"first_name": "Greenhouse",
"last_name": "Admin",
"name": "Greenhouse Admin",
"employee_id": "67890"
},
"coordinator": {
"id": 453636,
"first_name": "Jane",
"last_name": "Smith",
"name": "Jane Smith",
"employee_id": "12345"
},
"rejection_reason": null,
"rejection_details": null,
"jobs": [
{
"id": 211706,
"name": "Community Manager - New York"
}
],
"job_post_id": 123,
"status": "hired",
"current_stage": null,
"answers": [
{
"question": "How many years experience do you have?",
"answer": "2-4"
},
{
"question": "Can do you the travel required for this job?",
"answer": "Yes"
}
],
"prospective_office": null,
"prospective_department": null,
"prospect_detail": {
"prospect_pool": null,
"prospect_stage": null,
"prospect_owner": null
},
"custom_fields": {
"current_title": "Community Manager",
"requires_visa_sponsorship?": false
},
"keyed_custom_fields": {
"current_title": {
"name": "Current Title",
"type": "short_text",
"value": "Community Manager"
},
"requires_visa_sponsorship_": {
"name": "Requires visa sponsorship?",
"type": "boolean",
"value": false
}
},
"attachments": [
{
"filename": "John_Locke_Offer_Packet_09_27_2017.pdf",
"url": "https://prod-heroku.s3.amazonaws.com/",
"type": "offer_packet",
"created_at": "2020-09-27T18:45:27.137Z"
}
]
}
```
--------------------------------
### List all offices (default)
Source: https://developers.greenhouse.io/harvest.html
Use this command to retrieve a flat list of all offices in the organization. Ensure you include the Authorization header.
```bash
curl 'https://harvest.greenhouse.io/v1/offices' \
-H "Authorization: Basic MGQwMzFkODIyN2VhZmE2MWRjMzc1YTZjMmUwNjdlMjQ6"
```
--------------------------------
### Example JSON Response for Openings
Source: https://developers.greenhouse.io/harvest.html
This JSON structure illustrates the response received when adding new openings. It includes the ID, opening_id, and open_date for each created opening.
```json
{
"openings": [
{
"id": 123456,
"opening_id": "abc-123",
"open_date": "2017-10-02T19:53:32.565Z"
},
{
"id": 123457,
"opening_id": null,
"open_date": "2017-10-02T19:53:32.565Z"
}
]
}
```
--------------------------------
### Example Scorecard JSON Response
Source: https://developers.greenhouse.io/harvest.html
This is an example of the JSON structure returned when retrieving a scorecard. It includes details about the interview, candidate, interviewer, and attribute ratings.
```json
{
"id": 211231,
"updated_at": "2016-08-22T19:52:38.384Z",
"created_at": "2016-08-22T19:52:38.384Z",
"interview": "Application Review",
"interview_step": {
"id": 432,
"name": "Application Review"
},
"candidate_id": 2131415,
"application_id": 23558552,
"interviewed_at": "2016-08-18T16:00:00.000Z",
"submitted_by": {
"id": 4080,
"first_name": "Kate",
"last_name": "Austen",
"name": "Kate Austen",
"employee_id": "12345"
},
"interviewer": {
"id": 821,
"first_name": "Robert",
"last_name": "Robertson",
"name": "Robert Robertson",
"employee_id": "100377"
},
"submitted_at": "2014-03-26T21:59:51Z",
"overall_recommendation": "yes",
"attributes": [
{
"name": "Communication",
"type": "Skills",
"note": "What a great communicator!",
"rating": "yes"
},
{
"name": "Adaptable",
"type": "Skills",
"note": null,
"rating": "yes"
},
{
"name": "Relationship Manager",
"type": "Skills",
"note": null,
"rating": "mixed"
},
{
"name": "Project Management",
"type": "Qualifications",
"note": null,
"rating": "mixed"
},
{
"name": "Problem Solver",
"type": "Qualifications",
"note": null,
"rating": "no"
},
{
"name": "Analytical",
"type": "Skills",
"note": null,
"rating": "definitely_not"
}
],
"ratings": {
"definitely_not": [
"Analytical"
],
"no": [
"Problem Solver"
],
"mixed": [
"Relationship Manager",
"Project Management"
],
"yes": [
"Communication",
"Adaptable"
],
"strong_yes": []
},
"questions": [
{
"id": null,
"question": "Key Take-Aways",
"answer": "Seems like a decent candidate."
},
{
"id": null,
"question": "Private Notes",
"answer": "Seems like a decent candidate."
},
{
"id": 1234567,
"question": "Does the candidate have experience designing APIs?",
"answer": "Yes"
},
{
"id": 1234568,
"question": "Which team would you suggest for this candidate?",
"answer": "Alpha Team"
},
{
"id": 1234569,
"question": "Where would the candidate be willing to work?",
"answer": "London, Dubai, San Diego"
}
]
}
```
--------------------------------
### Scheduled Interviews Response Example
Source: https://developers.greenhouse.io/harvest.html
This is an example of the JSON response structure when listing scheduled interviews. It includes details about each interview, application, organizer, and interviewers.
```json
[
{
"id": 9128481,
"application_id": 4684156,
"external_event_id": "event123",
"start": {
"date_time": "2014-03-26T22:15:00.000Z"
},
"end": {
"date_time": "2014-03-26T22:30:00.000Z"
},
"location": "Big Conference Room",
"video_conferencing_url": "http://example.com",
"status": "awaiting_feedback",
"created_at": "2016-02-10T14:31:51.019Z",
"updated_at": "2016-05-23T20:43:11.679Z",
"interview": {
"id": 7001,
"name": "Culture Fit"
},
"organizer": {
"id": 2000,
"first_name": "Jack",
"last_name": "Shepard",
"name": "Jack Shepard",
"employee_id": "12345"
},
"interviewers": [
{
"id": 4080,
"employee_id": "employee123",
"name": "Kate Austen",
"email": "kate.austen@example.com",
"response_status": "needs_action",
"scorecard_id": 11274
}
]
},
{
"id": 9128482,
"application_id": 432905,
"external_event_id": "event456",
"start": {
"date": "2017-08-22"
},
"end": {
"date": "2017-08-23"
},
"location": "Small Conference Room",
"video_conferencing_url": "http://example.com",
"status": "complete",
"interview": {
"id": 7002,
"name": "Whiteboarding Challenge"
},
"organizer": {
"id": 2000,
"first_name": "Jack",
"last_name": "Shepard",
"name": "Jack Shepard",
"employee_id": "12345"
},
"interviewers": [
{
"id": 3412,
"employee_id": "employee456",
"name": "Charlie Pace",
"email": "youalleverybody@example.com",
"response_status": "needs_action",
"scorecard_id": null
}
]
}
]
```