greenhouse_io-gitlab 2.5.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (66) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +19 -0
  3. data/.travis.yml +11 -0
  4. data/CHANGES.md +41 -0
  5. data/Gemfile +11 -0
  6. data/LICENSE.txt +22 -0
  7. data/README.md +200 -0
  8. data/Rakefile +8 -0
  9. data/greenhouse_io.gemspec +29 -0
  10. data/lib/greenhouse_io.rb +9 -0
  11. data/lib/greenhouse_io/api.rb +19 -0
  12. data/lib/greenhouse_io/api/client.rb +145 -0
  13. data/lib/greenhouse_io/api/job_board.rb +66 -0
  14. data/lib/greenhouse_io/configuration.rb +21 -0
  15. data/lib/greenhouse_io/error.rb +10 -0
  16. data/lib/greenhouse_io/version.rb +3 -0
  17. data/spec/fixtures/cassettes/apply_to_job.yml +44 -0
  18. data/spec/fixtures/cassettes/client/activity_feed.yml +36 -0
  19. data/spec/fixtures/cassettes/client/all_scorecards.yml +38 -0
  20. data/spec/fixtures/cassettes/client/application.yml +36 -0
  21. data/spec/fixtures/cassettes/client/application_by_job_id.yml +139 -0
  22. data/spec/fixtures/cassettes/client/applications.yml +43 -0
  23. data/spec/fixtures/cassettes/client/candidate.yml +36 -0
  24. data/spec/fixtures/cassettes/client/candidates.yml +38 -0
  25. data/spec/fixtures/cassettes/client/create_candidate_note.yml +42 -0
  26. data/spec/fixtures/cassettes/client/create_candidate_note_invalid_candidate_id.yml +42 -0
  27. data/spec/fixtures/cassettes/client/create_candidate_note_invalid_missing_field.yml +42 -0
  28. data/spec/fixtures/cassettes/client/create_candidate_note_invalid_on_behalf_of.yml +42 -0
  29. data/spec/fixtures/cassettes/client/create_candidate_note_invalid_user_id.yml +42 -0
  30. data/spec/fixtures/cassettes/client/current_offer_for_application.yml +40 -0
  31. data/spec/fixtures/cassettes/client/department.yml +36 -0
  32. data/spec/fixtures/cassettes/client/departments.yml +38 -0
  33. data/spec/fixtures/cassettes/client/headers.yml +38 -0
  34. data/spec/fixtures/cassettes/client/job.yml +37 -0
  35. data/spec/fixtures/cassettes/client/job_post.yml +49 -0
  36. data/spec/fixtures/cassettes/client/jobs.yml +39 -0
  37. data/spec/fixtures/cassettes/client/offer.yml +48 -0
  38. data/spec/fixtures/cassettes/client/offers.yml +51 -0
  39. data/spec/fixtures/cassettes/client/offers_for_application.yml +40 -0
  40. data/spec/fixtures/cassettes/client/office.yml +36 -0
  41. data/spec/fixtures/cassettes/client/offices.yml +46 -0
  42. data/spec/fixtures/cassettes/client/scheduled_interviews.yml +38 -0
  43. data/spec/fixtures/cassettes/client/scorecards.yml +37 -0
  44. data/spec/fixtures/cassettes/client/source.yml +39 -0
  45. data/spec/fixtures/cassettes/client/sources.yml +37 -0
  46. data/spec/fixtures/cassettes/client/stages.yml +36 -0
  47. data/spec/fixtures/cassettes/client/user.yml +36 -0
  48. data/spec/fixtures/cassettes/client/users.yml +38 -0
  49. data/spec/fixtures/cassettes/department.yml +45 -0
  50. data/spec/fixtures/cassettes/departments.yml +45 -0
  51. data/spec/fixtures/cassettes/invalid_application.yml +43 -0
  52. data/spec/fixtures/cassettes/invalid_application_id.yml +44 -0
  53. data/spec/fixtures/cassettes/invalid_id.yml +40 -0
  54. data/spec/fixtures/cassettes/invalid_organization.yml +40 -0
  55. data/spec/fixtures/cassettes/job.yml +80 -0
  56. data/spec/fixtures/cassettes/job_with_questions.yml +85 -0
  57. data/spec/fixtures/cassettes/jobs.yml +44 -0
  58. data/spec/fixtures/cassettes/jobs_with_content.yml +118 -0
  59. data/spec/fixtures/cassettes/office.yml +45 -0
  60. data/spec/fixtures/cassettes/offices.yml +45 -0
  61. data/spec/greenhouse_io/api/client_spec.rb +679 -0
  62. data/spec/greenhouse_io/api/job_board_spec.rb +187 -0
  63. data/spec/greenhouse_io/configuration_spec.rb +71 -0
  64. data/spec/greenhouse_io/error_spec.rb +23 -0
  65. data/spec/spec_helper.rb +22 -0
  66. metadata +242 -0
@@ -0,0 +1,66 @@
1
+ module GreenhouseIo
2
+ class JobBoard
3
+ include HTTMultiParty
4
+ include GreenhouseIo::API
5
+ attr_accessor :api_token, :organization
6
+ base_uri 'https://api.greenhouse.io/v1'
7
+
8
+ def initialize(api_token = nil, default_options = {})
9
+ @api_token = api_token || GreenhouseIo.configuration.api_token
10
+ @organization = default_options.delete(:organization) || GreenhouseIo.configuration.organization
11
+ end
12
+
13
+ def offices(options = {})
14
+ get_from_job_board_api("/boards/#{ query_organization(options) }/embed/offices")
15
+ end
16
+
17
+ def office(id, options = {})
18
+ get_from_job_board_api("/boards/#{ query_organization(options) }/embed/office", query: { id: id })
19
+ end
20
+
21
+ def departments(options = {})
22
+ get_from_job_board_api("/boards/#{ query_organization(options) }/embed/departments")
23
+ end
24
+
25
+ def department(id, options = {})
26
+ get_from_job_board_api("/boards/#{ query_organization(options) }/embed/department", query: { id: id })
27
+ end
28
+
29
+ def jobs(options = {})
30
+ get_from_job_board_api("/boards/#{ query_organization(options) }/embed/jobs", query: { content: options[:content] })
31
+ end
32
+
33
+ def job(id, options = {})
34
+ get_from_job_board_api("/boards/#{ query_organization(options) }/embed/job", query: { id: id, questions: options[:questions] })
35
+ end
36
+
37
+ def apply_to_job(job_form_hash)
38
+ post_to_job_board_api('/applications', { :body => job_form_hash, :basic_auth => basic_auth })
39
+ end
40
+
41
+ private
42
+
43
+ def query_organization(options_hash)
44
+ org = options_hash[:organization] || @organization
45
+ org.nil? ? (raise GreenhouseIo::Error.new("organization can't be blank")) : org
46
+ end
47
+
48
+ def get_from_job_board_api(url, options = {})
49
+ response = get_response(url, options)
50
+ if response.code == 200
51
+ parse_json(response)
52
+ else
53
+ raise GreenhouseIo::Error.new(response.code)
54
+ end
55
+ end
56
+
57
+ def post_to_job_board_api(url, options)
58
+ response = post_response(url, options)
59
+ if response.code == 200
60
+ response.include?("success") ? parse_json(response) : raise(GreenhouseIo::Error.new(response["reason"]))
61
+ else
62
+ raise GreenhouseIo::Error.new(response.code)
63
+ end
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,21 @@
1
+ module GreenhouseIo
2
+ class Configuration
3
+ attr_accessor :symbolize_keys, :organization, :api_token
4
+
5
+ def initialize
6
+ @symbolize_keys = false
7
+ end
8
+ end
9
+
10
+ def self.configuration
11
+ @configuration ||= Configuration.new
12
+ end
13
+
14
+ def self.configuration=(config)
15
+ @configuration = config
16
+ end
17
+
18
+ def self.configure
19
+ yield configuration
20
+ end
21
+ end
@@ -0,0 +1,10 @@
1
+ module GreenhouseIo
2
+ class Error < StandardError
3
+ attr_reader :code
4
+
5
+ def initialize(message, code = nil)
6
+ super message
7
+ @code = code
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,3 @@
1
+ module GreenhouseIo
2
+ VERSION = "2.5.3"
3
+ end
@@ -0,0 +1,44 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://123FakeToken:@api.greenhouse.io/v1/applications
6
+ body:
7
+ encoding: US-ASCII
8
+ string: id=721&first_name=Richard&last_name=Feynman&email=richard123%40test.ga.co
9
+ headers: {}
10
+ response:
11
+ status:
12
+ code: 200
13
+ message: OK
14
+ headers:
15
+ Cache-Control:
16
+ - max-age=0, private, must-revalidate
17
+ Content-Type:
18
+ - text/javascript; charset=utf-8
19
+ Date:
20
+ - Mon, 16 Sep 2013 18:25:13 GMT
21
+ Etag:
22
+ - ! '"60d45e24e36a2c0bbd1b09470dc4712c"'
23
+ Set-Cookie:
24
+ - _session_id=0b94e410bd34c2cefaae8257f0f4a6b4; path=/; HttpOnly
25
+ Status:
26
+ - 200 OK
27
+ Vary:
28
+ - Accept-Encoding
29
+ X-Request-Id:
30
+ - e4ffe754f2c13976f8b77fb36794d7a4
31
+ X-Runtime:
32
+ - '0.438182'
33
+ X-Ua-Compatible:
34
+ - IE=Edge,chrome=1
35
+ Transfer-Encoding:
36
+ - chunked
37
+ Connection:
38
+ - keep-alive
39
+ body:
40
+ encoding: US-ASCII
41
+ string: ! '{"success":"Candidate saved successfully"}'
42
+ http_version:
43
+ recorded_at: Mon, 16 Sep 2013 18:25:13 GMT
44
+ recorded_with: VCR 2.5.0
@@ -0,0 +1,36 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://123FakeToken:@harvest.greenhouse.io/v1/candidates/1/activity_feed
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers: {}
10
+ response:
11
+ status:
12
+ code: 200
13
+ message: OK
14
+ headers:
15
+ Content-Type:
16
+ - application/json;charset=utf-8
17
+ Date:
18
+ - Wed, 23 Apr 2014 23:42:00 GMT
19
+ Status:
20
+ - 200 OK
21
+ X-Content-Type-Options:
22
+ - nosniff
23
+ X-Ratelimit-Limit:
24
+ - '20'
25
+ X-Ratelimit-Remaining:
26
+ - '20'
27
+ Content-Length:
28
+ - '310'
29
+ Connection:
30
+ - keep-alive
31
+ body:
32
+ encoding: UTF-8
33
+ string: "{\"notes\":[],\"emails\":[],\"activities\":[{\"created_at\":\"2014-04-22T19:29:14Z\",\"subject\":null,\"body\":\"User One was moved into Preliminary Phone Screen for Bermuda Admissions on 04/01/2014\",\"user\":null},{\"created_at\":\"2014-04-18T18:54:14Z\",\"subject\":null,\"body\":\"User One applied online.\",\"user\":null}]}"
34
+ http_version:
35
+ recorded_at: Wed, 23 Apr 2014 23:42:01 GMT
36
+ recorded_with: VCR 2.5.0
@@ -0,0 +1,38 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://123FakeToken:@harvest.greenhouse.io/v1/scorecards/
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers: {}
10
+ response:
11
+ status:
12
+ code: 200
13
+ message: OK
14
+ headers:
15
+ Connection:
16
+ - keep-alive
17
+ Date:
18
+ - Wed, 10 Feb 2016 03:17:48 GMT
19
+ Status:
20
+ - 200 OK
21
+ Content-Type:
22
+ - application/json;charset=utf-8
23
+ Content-Length:
24
+ - '370562'
25
+ X-Ratelimit-Limit:
26
+ - '50'
27
+ X-Ratelimit-Remaining:
28
+ - '49'
29
+ X-Content-Type-Options:
30
+ - nosniff
31
+ Via:
32
+ - 1.1 vegur
33
+ body:
34
+ encoding: UTF-8
35
+ string: '[{"id":123,"interview":"Preliminary Screening Call","candidate_id":123,"interviewed_at":"2015-10-08T19:00:00.000Z","submitted_by":{"id":123,"name":"Test User"},"submitted_at":"2015-10-08T19:11:09.287Z","overall_recommendation":"yes","ratings":{"definitely_not":[],"no":[],"mixed":[],"yes":[],"strong_yes":[]},"questions":[{"id":null,"question":"Key Take-Aways","answer":""},{"id":null,"question":"Private Notes","answer":""}]},{"id":456,"interview":"Application Review","candidate_id":456,"interviewed_at":"2015-10-08T19:00:00.000Z","submitted_by":{"id":456,"name":"Test User"},"submitted_at":"2015-10-08T19:11:09.287Z","overall_recommendation":"yes","ratings":{"definitely_not":[],"no":[],"mixed":[],"yes":[],"strong_yes":[]},"questions":[{"id":null,"question":"Key Take-Aways","answer":""},{"id":null,"question":"Private Notes","answer":""}]}]'
36
+ http_version:
37
+ recorded_at: Wed, 10 Feb 2016 03:17:48 GMT
38
+ recorded_with: VCR 3.0.1
@@ -0,0 +1,36 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://123FakeToken:@harvest.greenhouse.io/v1/applications/1
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers: {}
10
+ response:
11
+ status:
12
+ code: 200
13
+ message: OK
14
+ headers:
15
+ Content-Type:
16
+ - application/json;charset=utf-8
17
+ Date:
18
+ - Wed, 23 Apr 2014 23:45:18 GMT
19
+ Status:
20
+ - 200 OK
21
+ X-Content-Type-Options:
22
+ - nosniff
23
+ X-Ratelimit-Limit:
24
+ - '20'
25
+ X-Ratelimit-Remaining:
26
+ - '20'
27
+ Content-Length:
28
+ - '29003'
29
+ Connection:
30
+ - keep-alive
31
+ body:
32
+ encoding: UTF-8
33
+ string: "{\"id\":1,\"person_id\":1,\"prospect\":false,\"applied_at\":\"2014-01-23T23:14:23Z\",\"last_activity_at\":\"2014-04-23T23:14:22Z\",\"source\":{\"id\":1,\"public_name\":\"Jobs page on your website\"},\"credited_to\":null,\"jobs\":[{\"id\":4595,\"name\":\"Associate Admissions Producer (Bermuda)\"}],\"status\":\"active\",\"current_stage\":{\"id\":1,\"name\":\"Application Review\"}}"
34
+ http_version:
35
+ recorded_at: Wed, 23 Apr 2014 23:45:19 GMT
36
+ recorded_with: VCR 2.5.0
@@ -0,0 +1,139 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://123FakeToken:@harvest.greenhouse.io/v1/applications?job_id=144371
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept-Encoding:
11
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
12
+ Accept:
13
+ - "*/*"
14
+ User-Agent:
15
+ - Ruby
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Server:
22
+ - Cowboy
23
+ Connection:
24
+ - keep-alive
25
+ Date:
26
+ - Wed, 27 Jan 2016 18:09:18 GMT
27
+ Status:
28
+ - 200 OK
29
+ Content-Type:
30
+ - application/json;charset=utf-8
31
+ Link:
32
+ - <https://harvest.greenhouse.io/v1/applications?job_id=144371&page=1&per_page=100>;
33
+ rel="last"
34
+ Content-Length:
35
+ - '11280'
36
+ X-Ratelimit-Limit:
37
+ - '50'
38
+ X-Ratelimit-Remaining:
39
+ - '49'
40
+ X-Content-Type-Options:
41
+ - nosniff
42
+ Via:
43
+ - 1.1 vegur
44
+ body:
45
+ encoding: UTF-8
46
+ string: '[{"id":21708448,"candidate_id":13381395,"prospect":false,"applied_at":"2015-11-19T20:22:30Z","rejected_at":null,"last_activity_at":"2015-11-19T20:22:30Z","source":{"id":2,"public_name":"Jobs
47
+ page on your website"},"credited_to":null,"rejection_reason":null,"jobs":[{"id":144371,"name":"Good
48
+ Cop"}],"status":"active","current_stage":{"id":1031639,"name":"Application
49
+ Review"},"answers":[{"question":"Foobar?","answer":null},{"question":"How
50
+ did you hear about this job?","answer":null},{"question":"Website","answer":null},{"question":"LinkedIn
51
+ Profile","answer":null}]},{"id":21708450,"candidate_id":13381397,"prospect":false,"applied_at":"2015-11-19T20:22:30Z","rejected_at":null,"last_activity_at":"2015-11-19T20:22:30Z","source":{"id":2,"public_name":"Jobs
52
+ page on your website"},"credited_to":null,"rejection_reason":null,"jobs":[{"id":144371,"name":"Good
53
+ Cop"}],"status":"active","current_stage":{"id":1031639,"name":"Application
54
+ Review"},"answers":[{"question":"Foobar?","answer":null},{"question":"How
55
+ did you hear about this job?","answer":null},{"question":"Website","answer":null},{"question":"LinkedIn
56
+ Profile","answer":null}]},{"id":21708449,"candidate_id":13381396,"prospect":false,"applied_at":"2015-11-19T20:22:30Z","rejected_at":null,"last_activity_at":"2015-11-19T20:22:30Z","source":{"id":2,"public_name":"Jobs
57
+ page on your website"},"credited_to":null,"rejection_reason":null,"jobs":[{"id":144371,"name":"Good
58
+ Cop"}],"status":"active","current_stage":{"id":1031639,"name":"Application
59
+ Review"},"answers":[{"question":"Foobar?","answer":null},{"question":"How
60
+ did you hear about this job?","answer":null},{"question":"Website","answer":null},{"question":"LinkedIn
61
+ Profile","answer":null}]},{"id":21708451,"candidate_id":13381398,"prospect":false,"applied_at":"2015-11-19T20:22:30Z","rejected_at":null,"last_activity_at":"2015-11-19T20:22:30Z","source":{"id":2,"public_name":"Jobs
62
+ page on your website"},"credited_to":null,"rejection_reason":null,"jobs":[{"id":144371,"name":"Good
63
+ Cop"}],"status":"active","current_stage":{"id":1031639,"name":"Application
64
+ Review"},"answers":[{"question":"Foobar?","answer":null},{"question":"How
65
+ did you hear about this job?","answer":null},{"question":"Website","answer":null},{"question":"LinkedIn
66
+ Profile","answer":null}]},{"id":21708452,"candidate_id":13381399,"prospect":false,"applied_at":"2015-11-19T20:22:31Z","rejected_at":null,"last_activity_at":"2015-11-19T20:22:31Z","source":{"id":2,"public_name":"Jobs
67
+ page on your website"},"credited_to":null,"rejection_reason":null,"jobs":[{"id":144371,"name":"Good
68
+ Cop"}],"status":"active","current_stage":{"id":1031639,"name":"Application
69
+ Review"},"answers":[{"question":"Foobar?","answer":null},{"question":"How
70
+ did you hear about this job?","answer":null},{"question":"Website","answer":null},{"question":"LinkedIn
71
+ Profile","answer":null}]},{"id":21708453,"candidate_id":13381400,"prospect":false,"applied_at":"2015-11-19T20:22:31Z","rejected_at":null,"last_activity_at":"2015-11-19T20:22:31Z","source":{"id":2,"public_name":"Jobs
72
+ page on your website"},"credited_to":null,"rejection_reason":null,"jobs":[{"id":144371,"name":"Good
73
+ Cop"}],"status":"active","current_stage":{"id":1031639,"name":"Application
74
+ Review"},"answers":[{"question":"Foobar?","answer":null},{"question":"How
75
+ did you hear about this job?","answer":null},{"question":"Website","answer":null},{"question":"LinkedIn
76
+ Profile","answer":null}]},{"id":21708454,"candidate_id":13381401,"prospect":false,"applied_at":"2015-11-19T20:22:31Z","rejected_at":null,"last_activity_at":"2015-11-19T20:22:31Z","source":{"id":2,"public_name":"Jobs
77
+ page on your website"},"credited_to":null,"rejection_reason":null,"jobs":[{"id":144371,"name":"Good
78
+ Cop"}],"status":"active","current_stage":{"id":1031639,"name":"Application
79
+ Review"},"answers":[{"question":"Foobar?","answer":null},{"question":"How
80
+ did you hear about this job?","answer":null},{"question":"Website","answer":null},{"question":"LinkedIn
81
+ Profile","answer":null}]},{"id":21708456,"candidate_id":13381403,"prospect":false,"applied_at":"2015-11-19T20:22:32Z","rejected_at":null,"last_activity_at":"2015-11-19T20:22:32Z","source":{"id":2,"public_name":"Jobs
82
+ page on your website"},"credited_to":null,"rejection_reason":null,"jobs":[{"id":144371,"name":"Good
83
+ Cop"}],"status":"active","current_stage":{"id":1031639,"name":"Application
84
+ Review"},"answers":[{"question":"Foobar?","answer":null},{"question":"How
85
+ did you hear about this job?","answer":null},{"question":"Website","answer":null},{"question":"LinkedIn
86
+ Profile","answer":null}]},{"id":21708460,"candidate_id":13381407,"prospect":false,"applied_at":"2015-11-19T20:22:35Z","rejected_at":null,"last_activity_at":"2015-11-19T20:22:35Z","source":{"id":2,"public_name":"Jobs
87
+ page on your website"},"credited_to":null,"rejection_reason":null,"jobs":[{"id":144371,"name":"Good
88
+ Cop"}],"status":"active","current_stage":{"id":1031639,"name":"Application
89
+ Review"},"answers":[{"question":"Foobar?","answer":null},{"question":"How
90
+ did you hear about this job?","answer":null},{"question":"Website","answer":null},{"question":"LinkedIn
91
+ Profile","answer":null}]},{"id":21708585,"candidate_id":13381528,"prospect":false,"applied_at":"2015-11-19T20:26:25Z","rejected_at":null,"last_activity_at":"2015-11-19T20:26:25Z","source":{"id":2,"public_name":"Jobs
92
+ page on your website"},"credited_to":null,"rejection_reason":null,"jobs":[{"id":144371,"name":"Good
93
+ Cop"}],"status":"active","current_stage":{"id":1031639,"name":"Application
94
+ Review"},"answers":[{"question":"Foobar?","answer":null},{"question":"How
95
+ did you hear about this job?","answer":null},{"question":"Website","answer":null},{"question":"LinkedIn
96
+ Profile","answer":null}]},{"id":21708586,"candidate_id":13381530,"prospect":false,"applied_at":"2015-11-19T20:26:25Z","rejected_at":"2016-01-26T23:57:35Z","last_activity_at":"2016-01-26T23:57:35Z","source":{"id":2,"public_name":"Jobs
97
+ page on your website"},"credited_to":null,"rejection_reason":{"id":14,"name":"None
98
+ specified","type":{"id":3,"name":"None specified"}},"jobs":[{"id":144371,"name":"Good
99
+ Cop"}],"status":"rejected","current_stage":{"id":1031644,"name":"Offer"},"answers":[{"question":"Foobar?","answer":null},{"question":"How
100
+ did you hear about this job?","answer":null},{"question":"Website","answer":null},{"question":"LinkedIn
101
+ Profile","answer":null}]},{"id":21708588,"candidate_id":13381531,"prospect":false,"applied_at":"2015-11-19T20:26:26Z","rejected_at":null,"last_activity_at":"2015-11-19T20:26:26Z","source":{"id":2,"public_name":"Jobs
102
+ page on your website"},"credited_to":null,"rejection_reason":null,"jobs":[{"id":144371,"name":"Good
103
+ Cop"}],"status":"active","current_stage":{"id":1031639,"name":"Application
104
+ Review"},"answers":[{"question":"Foobar?","answer":null},{"question":"How
105
+ did you hear about this job?","answer":null},{"question":"Website","answer":null},{"question":"LinkedIn
106
+ Profile","answer":null}]},{"id":21769983,"candidate_id":13440415,"prospect":false,"applied_at":"2015-11-20T22:25:49Z","rejected_at":null,"last_activity_at":"2015-11-20T22:25:49Z","source":{"id":2,"public_name":"Jobs
107
+ page on your website"},"credited_to":null,"rejection_reason":null,"jobs":[{"id":144371,"name":"Good
108
+ Cop"}],"status":"active","current_stage":{"id":1031639,"name":"Application
109
+ Review"},"answers":[{"question":"Yeah?","answer":"Five"},{"question":"Huh?","answer":"Yes"},{"question":"What?","answer":"wfawfe"},{"question":"Foobar?","answer":"sgerag"},{"question":"How
110
+ did you hear about this job?","answer":"fawefaewttag"},{"question":"Website","answer":"afwaefw"},{"question":"LinkedIn
111
+ Profile","answer":"wafawefaw"}]},{"id":21772362,"candidate_id":13442759,"prospect":false,"applied_at":"2015-11-20T22:33:14Z","rejected_at":null,"last_activity_at":"2015-11-20T22:33:14Z","source":{"id":2,"public_name":"Jobs
112
+ page on your website"},"credited_to":null,"rejection_reason":null,"jobs":[{"id":144371,"name":"Good
113
+ Cop"}],"status":"active","current_stage":{"id":1031639,"name":"Application
114
+ Review"},"answers":[{"question":"Yeah?","answer":"Five"},{"question":"Huh?","answer":"Yes"},{"question":"What?","answer":"wfawfe"},{"question":"Foobar?","answer":"sgerag"},{"question":"How
115
+ did you hear about this job?","answer":"fawefaewttag"},{"question":"Website","answer":"afwaefw"},{"question":"LinkedIn
116
+ Profile","answer":"wafawefaw"}]},{"id":21772559,"candidate_id":13442958,"prospect":false,"applied_at":"2015-11-20T22:33:45Z","rejected_at":null,"last_activity_at":"2015-11-20T22:33:45Z","source":{"id":2,"public_name":"Jobs
117
+ page on your website"},"credited_to":null,"rejection_reason":null,"jobs":[{"id":144371,"name":"Good
118
+ Cop"}],"status":"active","current_stage":{"id":1031639,"name":"Application
119
+ Review"},"answers":[{"question":"Yeah?","answer":"Five"},{"question":"Huh?","answer":"Yes"},{"question":"What?","answer":"wfawfe"},{"question":"Foobar?","answer":"sgerag"},{"question":"How
120
+ did you hear about this job?","answer":"fawefaewttag"},{"question":"Website","answer":"afwaefw"},{"question":"LinkedIn
121
+ Profile","answer":"wafawefaw"}]},{"id":21772681,"candidate_id":13443080,"prospect":false,"applied_at":"2015-11-20T22:34:04Z","rejected_at":null,"last_activity_at":"2015-11-20T22:34:03Z","source":{"id":2,"public_name":"Jobs
122
+ page on your website"},"credited_to":null,"rejection_reason":null,"jobs":[{"id":144371,"name":"Good
123
+ Cop"}],"status":"active","current_stage":{"id":1031639,"name":"Application
124
+ Review"},"answers":[{"question":"Yeah?","answer":"Five"},{"question":"Huh?","answer":"Yes"},{"question":"What?","answer":"wfawfe"},{"question":"Foobar?","answer":"sgerag"},{"question":"How
125
+ did you hear about this job?","answer":"fawefaewttag"},{"question":"Website","answer":"afwaefw"},{"question":"LinkedIn
126
+ Profile","answer":"wafawefaw"}]},{"id":21880506,"candidate_id":13549465,"prospect":false,"applied_at":"2015-11-23T19:58:34Z","rejected_at":null,"last_activity_at":"2016-01-26T23:59:27Z","source":{"id":2,"public_name":"Jobs
127
+ page on your website"},"credited_to":null,"rejection_reason":null,"jobs":[{"id":144371,"name":"Good
128
+ Cop"}],"status":"active","current_stage":{"id":1031644,"name":"Offer"},"answers":[{"question":"Yeah?","answer":"Three"},{"question":"Huh?","answer":"No"},{"question":"What?","answer":null},{"question":"Foobar?","answer":null},{"question":"How
129
+ did you hear about this job?","answer":null},{"question":"Website","answer":null},{"question":"LinkedIn
130
+ Profile","answer":null}]},{"id":22109641,"candidate_id":13769762,"prospect":false,"applied_at":"2015-11-30T22:30:47Z","rejected_at":"2015-11-30T22:30:52Z","last_activity_at":"2015-11-30T22:30:53Z","source":{"id":2,"public_name":"Jobs
131
+ page on your website"},"credited_to":{"id":158108,"name":"Gordon Zheng"},"rejection_reason":{"id":14,"name":"None
132
+ specified","type":{"id":3,"name":"None specified"}},"jobs":[{"id":144371,"name":"Good
133
+ Cop"}],"status":"rejected","current_stage":{"id":1031639,"name":"Application
134
+ Review"},"answers":[]},{"id":24709881,"candidate_id":13769693,"prospect":false,"applied_at":"2016-01-26T23:58:09Z","rejected_at":null,"last_activity_at":"2016-01-26T23:59:07Z","source":{"id":2,"public_name":"Jobs
135
+ page on your website"},"credited_to":{"id":158108,"name":"Gordon Zheng"},"rejection_reason":null,"jobs":[{"id":144371,"name":"Good
136
+ Cop"}],"status":"hired","current_stage":null,"answers":[]}]'
137
+ http_version:
138
+ recorded_at: Wed, 27 Jan 2016 18:09:18 GMT
139
+ recorded_with: VCR 3.0.1
@@ -0,0 +1,43 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://123FakeToken:@harvest.greenhouse.io/v1/applications
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers: {}
10
+ response:
11
+ status:
12
+ code: 200
13
+ message: OK
14
+ headers:
15
+ Content-Type:
16
+ - application/json;charset=utf-8
17
+ Date:
18
+ - Wed, 23 Apr 2014 23:45:18 GMT
19
+ Link:
20
+ - "<https://harvest.greenhouse.io/v1/applications?page=2&per_page=100>; rel=\"next\""
21
+ Status:
22
+ - 200 OK
23
+ X-Content-Type-Options:
24
+ - nosniff
25
+ X-Ratelimit-Limit:
26
+ - '20'
27
+ X-Ratelimit-Remaining:
28
+ - '20'
29
+ Content-Length:
30
+ - '29003'
31
+ Connection:
32
+ - keep-alive
33
+ body:
34
+ encoding: UTF-8
35
+ string: "[{\"id\":1,\"person_id\":1,\"prospect\":false,\"applied_at\":\"2012-03-15T00:00:00Z\",\"last_activity_at\":\"2013-10-23T16:00:33Z\",\"source\":{\"id\":700,\"public_name\":\"Legacy
36
+ Resumator Sources\"},\"credited_to\":null,\"jobs\":[{\"id\":4385,\"name\":\"Educational
37
+ Programs Producer\"}],\"status\":\"active\",\"current_stage\":{\"id\":1,\"name\":\"Preliminary
38
+ Phone Screen\"}},{\"id\":1,\"person_id\":1,\"prospect\":false,\"applied_at\":\"2012-03-17T00:00:00Z\",\"last_activity_at\":\"2013-10-23T16:00:33Z\",\"source\":null,\"credited_to\":null,\"jobs\":[{\"id\":4385,\"name\":\"Educational
39
+ Programs Producer\"}],\"status\":\"accepted\",\"current_stage\":{\"id\":12,\"name\":\"Application
40
+ Review\"}}]"
41
+ http_version:
42
+ recorded_at: Wed, 23 Apr 2014 23:45:19 GMT
43
+ recorded_with: VCR 2.5.0