greenhouse_io-gitlab 2.5.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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