Greenhouse IO
A Ruby interface to
Greenhouse.io's
API (requires Ruby 1.9.3 or greater).
Installation
Add the gem to your application's Gemfile:
gem 'greenhouse_io'
Or install it yourself as:
$ gem install
API Documentation
Documentation for the Harvest and Job Board web APIs can be found at developers.greenhouse.io.
Configuration
You can assign default configuration values when using this gem.
Here is an example config/initializers/greenhouse_io.rb
file used in a Rails application:
GreenhouseIo.configure do |config|
config.symbolize_keys = true
config.organization = 'General Assembly'
config.api_token = ENV['GREENHOUSE_API_TOKEN']
end
Usage
Greenhouse's two APIs, Harvest and Job Board, can now be accessed through the gem. The GreenhouseIo::JobBoard
is nearly identical to the old GreenhouseIo::API
class. GreenhouseIo::Client
connects to the new Harvest API.
GreenhouseIo::JobBoard
Creating an instance of the JobBoard client:
gh = GreenhouseIo::JobBoard.new("api_token", organization: "your_organization")
If you've configured the gem with a default organization
and api_token
, then you can just instantiate the class.
gh = GreenhouseIo::JobBoard.new
api_token
is only required for #apply_to_job
and organization
is also optional during initialization if an organization is passed in during method requests.
Fetching Office Data
gh.offices
gh.offices(organization: 'different_organization')
gh.office(id)
gh.office(id, organization: 'different_organization')
Fetching Department Data
gh.departments
gh.departments(organization: 'different_organizaton')
gh.department(id)
gh.department(id, organization: 'different_organization')
Fetching Job Data
gh.jobs
gh.jobs(content: 'true')
gh.jobs(organization: 'different_organization')
gh.job(id)
gh.job(id, questions: true)
gh.job(id, organization: 'different_organization')
Submitting a Job Application
This is the only API method that requires an API token from Greenhouse
gh.apply_to_job(form_parameter_hash)
GreenhouseIo::Client
Creating an instance of the API client:
gh_client = GreenhouseIo::Client.new("api_token")
If you've configured the gem with a default api_token
, then you can just instantiate the class.
gh_client = GreenhouseIo::Client.new
Listing candidates
gh_client.candidates
Creating a candidate note
Use this method to attach a new note to a candidate.
candidate_id = 4567
author_id = 123
note = {
:user_id => 123,
:message => "This candidate has very strong opinions about Node.JS.",
:visibility => "public"
}
gh_client.create_candidate_note(candidate_id, note, author_id)
Throttling
Rate limit and rate limit remaining are available after making an API request with an API client:
gh_client.rate_limit
gh_client.rate_limit_remaining
All GreenhouseIo::Client
API methods accept :page
and :per_page
options to get specific results of a paginated response from Greenhouse.
gh_client.offices(id, page: 1, per_page: 2)
You can determine the last page and next page by looking at the link
header from the last response:
gh_client.link
You'll need to manually parse the next
and last
links to tell what the next or final page number will be.
Available methods
Methods for which an id
is optional:
offices
departments
candidates
applications
jobs
users
sources
all_scorecards
offers
Methods for which an id
is required:
activity_feed
(requires a candidate ID)scorecards
(requires an application ID)scheduled_interviews
(requires an application ID)offers_for_application
(requires an application ID)current_offer_for_application
(requires an application ID)stages
(requires a job ID)job_post
(requires a job ID)create_candidate_note
(requires a candidate ID)
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request
Contributions are always welcome!