eligible 1.0 → 3.0.0.beta17

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 (94) hide show
  1. checksums.yaml +7 -0
  2. data/.circleci/config.yml +76 -0
  3. data/.codeclimate.yml +23 -0
  4. data/.gitignore +3 -0
  5. data/.rspec +3 -0
  6. data/.rubocop.yml +1158 -0
  7. data/.ruby-version +1 -0
  8. data/CHANGELOG.md +170 -0
  9. data/Gemfile +4 -0
  10. data/Gemfile.lock +66 -0
  11. data/LICENSE +1 -1
  12. data/README.md +700 -93
  13. data/Rakefile +12 -2
  14. data/eligible.gemspec +14 -16
  15. data/lib/eligible/api_resource.rb +49 -5
  16. data/lib/eligible/calculator_deploy_url.rb +7 -0
  17. data/lib/eligible/claim.rb +22 -6
  18. data/lib/eligible/coverage.rb +19 -0
  19. data/lib/eligible/coverage_resource.rb +23 -0
  20. data/lib/eligible/customer.rb +19 -0
  21. data/lib/eligible/demographic.rb +6 -35
  22. data/lib/eligible/eligible_object.rb +12 -15
  23. data/lib/eligible/encryptor.rb +121 -0
  24. data/lib/eligible/enrollment.rb +23 -0
  25. data/lib/eligible/errors/eligible_error.rb +6 -3
  26. data/lib/eligible/errors/invalid_request_error.rb +4 -0
  27. data/lib/eligible/icd.rb +16 -0
  28. data/lib/eligible/json.rb +5 -15
  29. data/lib/eligible/lockbox.rb +39 -0
  30. data/lib/eligible/medicare.rb +11 -0
  31. data/lib/eligible/oauth_token.rb +9 -0
  32. data/lib/eligible/ocr.rb +15 -0
  33. data/lib/eligible/original_signature_pdf.rb +45 -0
  34. data/lib/eligible/payer.rb +17 -0
  35. data/lib/eligible/payer_mapping.rb +37 -0
  36. data/lib/eligible/payment.rb +11 -0
  37. data/lib/eligible/preauth_resource.rb +11 -0
  38. data/lib/eligible/precert.rb +15 -0
  39. data/lib/eligible/provider_model.rb +7 -0
  40. data/lib/eligible/public_key.rb +27 -0
  41. data/lib/eligible/received_pdf.rb +26 -0
  42. data/lib/eligible/referral.rb +11 -0
  43. data/lib/eligible/risk_assessment.rb +15 -0
  44. data/lib/eligible/session_token.rb +11 -0
  45. data/lib/eligible/ticket.rb +40 -0
  46. data/lib/eligible/util.rb +29 -38
  47. data/lib/eligible/v1_0/action.rb +9 -0
  48. data/lib/eligible/v1_0/attribute.rb +9 -0
  49. data/lib/eligible/v1_0/charge.rb +13 -0
  50. data/lib/eligible/v1_0/claim.rb +25 -0
  51. data/lib/eligible/v1_0/claim_service_line.rb +9 -0
  52. data/lib/eligible/v1_0/contract.rb +9 -0
  53. data/lib/eligible/v1_0/device.rb +9 -0
  54. data/lib/eligible/v1_0/discount.rb +9 -0
  55. data/lib/eligible/v1_0/enrollment.rb +17 -0
  56. data/lib/eligible/v1_0/estimate.rb +29 -0
  57. data/lib/eligible/v1_0/estimate_service_line.rb +17 -0
  58. data/lib/eligible/v1_0/fee.rb +21 -0
  59. data/lib/eligible/v1_0/fee_refund.rb +29 -0
  60. data/lib/eligible/v1_0/file.rb +17 -0
  61. data/lib/eligible/v1_0/file_link.rb +13 -0
  62. data/lib/eligible/v1_0/insurance_company.rb +21 -0
  63. data/lib/eligible/v1_0/insurance_company_alias.rb +9 -0
  64. data/lib/eligible/v1_0/insurance_policy.rb +9 -0
  65. data/lib/eligible/v1_0/patient_question.rb +9 -0
  66. data/lib/eligible/v1_0/patient_questionnaire.rb +9 -0
  67. data/lib/eligible/v1_0/patient_record.rb +9 -0
  68. data/lib/eligible/v1_0/patient_statement.rb +54 -0
  69. data/lib/eligible/v1_0/patient_statement_service_line.rb +13 -0
  70. data/lib/eligible/v1_0/payment_report.rb +21 -0
  71. data/lib/eligible/v1_0/product.rb +9 -0
  72. data/lib/eligible/v1_0/provider.rb +9 -0
  73. data/lib/eligible/v1_0/remark.rb +21 -0
  74. data/lib/eligible/v1_0/reports/accuracy_stats.rb +23 -0
  75. data/lib/eligible/v1_0/reports/estimate_friction.rb +23 -0
  76. data/lib/eligible/v1_0/reports/in_scope_distribution.rb +23 -0
  77. data/lib/eligible/v1_0/rest_api_base.rb +44 -0
  78. data/lib/eligible/v1_0/rule.rb +13 -0
  79. data/lib/eligible/v1_0/session.rb +21 -0
  80. data/lib/eligible/v1_0/transaction.rb +21 -0
  81. data/lib/eligible/v1_0/treatment.rb +9 -0
  82. data/lib/eligible/v1_0/value_list.rb +9 -0
  83. data/lib/eligible/v1_0/value_list_item.rb +9 -0
  84. data/lib/eligible/v1_0/verification.rb +17 -0
  85. data/lib/eligible/version.rb +1 -1
  86. data/lib/eligible/visit_type.rb +11 -0
  87. data/lib/eligible/x12.rb +8 -0
  88. data/lib/eligible.rb +320 -110
  89. metadata +148 -67
  90. data/CONTRIBUTORS +0 -1
  91. data/lib/eligible/plan.rb +0 -42
  92. data/lib/eligible/service.rb +0 -39
  93. data/test/test_eligible.rb +0 -279
  94. data/test/test_helper.rb +0 -67
@@ -0,0 +1,45 @@
1
+ module Eligible
2
+ class OriginalSignaturePdf < APIResource
3
+ def self.original_signature_pdf_url(params)
4
+ enrollment_npi_id = Util.value(params, :enrollment_npi_id)
5
+ "/enrollment_npis/#{enrollment_npi_id}/original_signature_pdf"
6
+ end
7
+
8
+ def self.get(params, opts = {})
9
+ send_request :get, original_signature_pdf_url(params), params, opts.merge(required_params: [:enrollment_npi_id])
10
+ end
11
+
12
+ def self.setup_file(params)
13
+ file = Util.value(params, :file)
14
+ params[:file] = File.new(file, 'rb') if file.is_a?(String)
15
+ end
16
+
17
+ def self.post(params, opts = {})
18
+ setup_file(params)
19
+ send_request :post, original_signature_pdf_url(params), params, opts.merge(required_params: [:enrollment_npi_id])
20
+ end
21
+
22
+ def self.update(params, opts = {})
23
+ setup_file(params)
24
+ send_request :put, original_signature_pdf_url(params), params, opts.merge(required_params: [:enrollment_npi_id])
25
+ end
26
+
27
+ def self.delete(params, opts = {})
28
+ send_request :delete, original_signature_pdf_url(params), params, opts.merge(required_params: [:enrollment_npi_id])
29
+ end
30
+
31
+ def self.download(params, opts = {})
32
+ enrollment_npi_id = Util.value(params, :enrollment_npi_id)
33
+ require_param(enrollment_npi_id, 'Enrollment Npi id')
34
+ params[:format] = 'x12'
35
+ headers = opts.clone
36
+ api_key = headers.delete(:api_key)
37
+ response = Eligible.request(:get, "/enrollment_npis/#{enrollment_npi_id}/original_signature_pdf/download", api_key, params, headers)[0]
38
+ filename = params[:filename] || '/tmp/original_signature_pdf.pdf'
39
+ file = File.new(filename, 'w')
40
+ file.write response
41
+ file.close
42
+ "PDF file stored at #{filename}"
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,17 @@
1
+ module Eligible
2
+ class Payer < APIResource
3
+ def self.list(params, opts = {})
4
+ send_request :get, api_url('payers'), params, opts
5
+ end
6
+
7
+ def self.get(params, opts = {})
8
+ send_request :get, api_url('payers', params, :payer_id), params, opts.merge(required_params: [:payer_id])
9
+ end
10
+
11
+ def self.search_options(params, opts = {})
12
+ payer_id = Util.value(params, :payer_id)
13
+ url = payer_id.nil? ? '/payers/search_options' : "/payers/#{payer_id}/search_options"
14
+ send_request :get, url, params, opts
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Eligible
4
+ class PayerMapping < APIResource
5
+ def self.mapper(params, opts = {})
6
+ send_request :post, '/payer_mapping/mapper', params, opts
7
+ end
8
+
9
+ def self.mapper_batch(params, opts = {})
10
+ send_request :post, '/payer_mapping/mapper/batch', params, opts
11
+ end
12
+
13
+ def self.search(params, opts = {})
14
+ send_request :post, '/payer_mapping/search', params, opts
15
+ end
16
+
17
+ def self.search_batch(params, opts = {})
18
+ send_request :post, '/payer_mapping/search/batch', params, opts
19
+ end
20
+
21
+ def self.normalize(params, opts = {})
22
+ send_request :post, '/payer_mapping/normalize', params, opts
23
+ end
24
+
25
+ def self.normalize_batch(params, opts = {})
26
+ send_request :post, '/payer_mapping/normalize/batch', params, opts
27
+ end
28
+
29
+ def self.normalize_cased(params, opts = {})
30
+ send_request :post, '/payer_mapping/normalize_cased', params, opts
31
+ end
32
+
33
+ def self.normalize_cased_batch(params, opts = {})
34
+ send_request :post, '/payer_mapping/normalize_cased/batch', params, opts
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,11 @@
1
+ module Eligible
2
+ class Payment < APIResource
3
+ def self.get(params, opts = {})
4
+ send_request :get, '/payment/status.json', params, opts
5
+ end
6
+
7
+ def self.batch(params, opts = {})
8
+ send_request :get, '/batch/payment/status.json', params, opts
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module Eligible
2
+ class PreauthResource < CoverageResource
3
+ def self.inquiry(params, opts = {})
4
+ get(params, opts)
5
+ end
6
+
7
+ def self.create(params, opts = {})
8
+ post(params, opts)
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,15 @@
1
+ module Eligible
2
+ class Precert < PreauthResource
3
+ def self.require(params, opts = {})
4
+ send_request :get, '/precert/require.json', params, opts
5
+ end
6
+
7
+ def self.get_uri
8
+ return '/precert/inquiry.json'
9
+ end
10
+
11
+ def self.post_uri
12
+ return '/precert/create.json'
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,7 @@
1
+ module Eligible
2
+ class ProviderModel < APIResource
3
+ def self.get(params, opts = {})
4
+ send_request :get, '/provider_models.json', params, opts
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,27 @@
1
+ require 'openssl'
2
+
3
+ module Eligible
4
+ class PublicKey < APIResource
5
+ def self.get(params, opts = {})
6
+ send_request :get, api_url('public_keys', params, :key_id), params, opts.merge(required_params: [:key_id])
7
+ end
8
+
9
+ def self.post(params, opts = {})
10
+ send_request :post, api_url('public_keys'), params, opts
11
+ end
12
+
13
+ def self.activate(params, opts = {})
14
+ key_id = Util.value(params, :key_id)
15
+ send_request :get, "/public_keys/#{key_id}/activate", params, opts.merge(required_params: [:key_id])
16
+ end
17
+
18
+ def self.all(params, opts = {})
19
+ send_request :get, api_url('public_keys'), params, opts
20
+ end
21
+
22
+ def self.create_pair
23
+ rsa_key = OpenSSL::PKey::RSA.new(4096)
24
+ [ rsa_key.to_pem, rsa_key.public_key.to_pem ]
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,26 @@
1
+ module Eligible
2
+ class ReceivedPdf < APIResource
3
+ def self.received_pdf_url(params)
4
+ enrollment_npi_id = Util.value(params, :enrollment_npi_id)
5
+ "/enrollment_npis/#{enrollment_npi_id}/received_pdf"
6
+ end
7
+
8
+ def self.get(params, opts = {})
9
+ send_request :get, received_pdf_url(params), params, opts.merge(required_params: [:enrollment_npi_id])
10
+ end
11
+
12
+ def self.download(params, opts = {})
13
+ enrollment_npi_id = Util.value(params, :enrollment_npi_id)
14
+ require_param(enrollment_npi_id, 'Enrollment Npi id')
15
+ params[:format] = 'x12'
16
+ headers = opts.clone
17
+ api_key = headers.delete(:api_key)
18
+ response = Eligible.request(:get, "/enrollment_npis/#{params[:enrollment_npi_id]}/received_pdf/download", api_key, params, headers)[0]
19
+ filename = params[:filename] || '/tmp/received_pdf.pdf'
20
+ file = File.new(filename, 'w')
21
+ file.write response
22
+ file.close
23
+ "PDF file stored at #{filename}"
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,11 @@
1
+ module Eligible
2
+ class Referral < PreauthResource
3
+ def self.get_uri
4
+ return '/referral/inquiry.json'
5
+ end
6
+
7
+ def self.post_uri
8
+ return '/referral/create.json'
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,15 @@
1
+ module Eligible
2
+ class RiskAssessment < APIResource
3
+ def self.criteria(params, opts = {})
4
+ send_request :get, '/risk_assessments/criteria.json', params, opts
5
+ end
6
+
7
+ def self.cost_estimate(params, opts = {})
8
+ send_request :get, '/risk_assessments/cost_estimates.json', params, opts
9
+ end
10
+
11
+ def self.fetch(params, opts = {})
12
+ send_request :get, '/risk_assessments/fetch.json', params, opts
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,11 @@
1
+ module Eligible
2
+ class SessionToken < APIResource
3
+ def self.create(params, opts = {})
4
+ send_request :post, '/session_tokens/create.json', params, opts
5
+ end
6
+
7
+ def self.revoke(params, opts = {})
8
+ send_request :post, '/session_tokens/revoke.json', params, opts
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,40 @@
1
+ module Eligible
2
+ class Ticket < APIResource
3
+ def self.ticket_url(params = nil, comments = false)
4
+ if params.nil?
5
+ '/tickets'
6
+ else
7
+ id = Util.value(params, :id)
8
+ if comments
9
+ "/tickets/#{id}/comments"
10
+ else
11
+ "/tickets/#{id}"
12
+ end
13
+ end
14
+ end
15
+
16
+ def self.create(params, opts = {})
17
+ send_request :post, ticket_url, params, opts
18
+ end
19
+
20
+ def self.comments(params, opts = {})
21
+ send_request :post, ticket_url(params, true), params, opts.merge(required_params: [:id])
22
+ end
23
+
24
+ def self.all(params, opts = {})
25
+ send_request :get, ticket_url, params, opts
26
+ end
27
+
28
+ def self.get(params, opts = {})
29
+ send_request :get, ticket_url(params), params, opts.merge(required_params: [:id])
30
+ end
31
+
32
+ def self.delete(params, opts = {})
33
+ send_request :delete, ticket_url(params), params, opts.merge(required_params: [:id])
34
+ end
35
+
36
+ def self.update(params, opts = {})
37
+ send_request :put, ticket_url(params), params, opts.merge(required_params: [:id])
38
+ end
39
+ end
40
+ end
data/lib/eligible/util.rb CHANGED
@@ -1,34 +1,29 @@
1
1
  module Eligible
2
2
  module Util
3
- def self.objects_to_ids(h)
4
- case h
5
- when APIResource
6
- h.id
7
- when Hash
8
- res = {}
9
- h.each { |k, v| res[k] = objects_to_ids(v) unless v.nil? }
10
- res
11
- when Array
12
- h.map { |v| objects_to_ids(v) }
13
- else
14
- h
15
- end
3
+
4
+ def self.key?(params, key)
5
+ [key.to_sym, key.to_s].any? { |k| params.key?(k) }
6
+ end
7
+
8
+ def self.value(params, key)
9
+ params[key.to_sym] || params[key.to_s]
16
10
  end
17
11
 
18
12
  def self.convert_to_eligible_object(resp, api_key)
19
- types = {
20
- 'plan' => Plan,
21
- 'service' => Service,
22
- 'demographic' => Demographic,
23
- 'claim' => Claim
24
- }
25
13
  case resp
26
14
  when Array
27
- resp.map { |i| convert_to_eligible_object(i, api_key) }
15
+ if resp[0] && resp[0][:enrollment_npi]
16
+ Enrollment.construct_from({ enrollments: resp }, api_key)
17
+ else
18
+ resp.map { |i| convert_to_eligible_object(i, api_key) }
19
+ end
28
20
  when Hash
29
- # Try converting to a known object class. If none available, fall back to generic APIResource
30
- if resp[:mapping_version] && klass_name = resp[:mapping_version].match(/^[^\/]*/)[0]
31
- klass = types[klass_name]
21
+ if resp[:enrollment_npi]
22
+ klass = Enrollment
23
+ elsif resp[:demographics]
24
+ klass = Coverage
25
+ elsif resp[:subscriber] && resp[:dependent]
26
+ klass = Demographic
32
27
  end
33
28
  klass ||= EligibleObject
34
29
  klass.construct_from(resp, api_key)
@@ -37,25 +32,21 @@ module Eligible
37
32
  end
38
33
  end
39
34
 
40
- def self.file_readable(file)
41
- begin
42
- File.open(file) { |f| }
43
- rescue
44
- false
45
- else
46
- true
47
- end
35
+ # Converts a key into a symbol if it is possible, returns the key if it is not
36
+ def self.symbolize_name(key)
37
+ return key unless key.respond_to?(:to_sym)
38
+ return key.to_sym
48
39
  end
49
40
 
50
41
  def self.symbolize_names(object)
51
42
  case object
52
43
  when Hash
53
- new = {}
54
- object.each do |key, value|
55
- key = (key.to_sym rescue key) || key
56
- new[key] = symbolize_names(value)
44
+ {}.tap do |new_hash|
45
+ object.each do |key, value|
46
+ key = symbolize_name(key)
47
+ new_hash[key] = symbolize_names(value)
48
+ end
57
49
  end
58
- new
59
50
  when Array
60
51
  object.map { |value| symbolize_names(value) }
61
52
  else
@@ -67,7 +58,7 @@ module Eligible
67
58
  URI.escape(key.to_s, Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))
68
59
  end
69
60
 
70
- def self.flatten_params(params, parent_key=nil)
61
+ def self.flatten_params(params, parent_key = nil)
71
62
  result = []
72
63
  params.each do |key, value|
73
64
  calculated_key = parent_key ? "#{parent_key}[#{url_encode(key)}]" : url_encode(key)
@@ -86,7 +77,7 @@ module Eligible
86
77
  result = []
87
78
  value.each do |elem|
88
79
  if elem.is_a?(Hash)
89
- result += flatten_params(elem, calculated_key)
80
+ result += flatten_params(elem, "#{calculated_key}[]")
90
81
  elsif elem.is_a?(Array)
91
82
  result += flatten_params_array(elem, calculated_key)
92
83
  else
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Eligible
4
+ module V1_0
5
+ class Action < RestAPIBase
6
+ ENDPOINT_NAME = 'rules/actions'.freeze
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Eligible
4
+ module V1_0
5
+ class Attribute < RestAPIBase
6
+ ENDPOINT_NAME = 'rules/attributes'.freeze
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Eligible
4
+ module V1_0
5
+ class Charge < RestAPIBase
6
+ ENDPOINT_NAME = 'charges'.freeze
7
+
8
+ def self.delete(_params, _opts = {})
9
+ fail NotImplementedError, "Not an allowed operation for this endpoint"
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Eligible
4
+ module V1_0
5
+ class Claim < RestAPIBase
6
+ ENDPOINT_NAME = 'claims'.freeze
7
+
8
+ def self.delete(_params, _opts = {})
9
+ fail NotImplementedError, "Not an allowed operation for this endpoint"
10
+ end
11
+
12
+ def self.submit(id, opts = {})
13
+ send_request :post, "/#{endpoint_name}/#{object_id(id)}/submit", rest_api_params(id), opts.merge(required_params: [:id])
14
+ end
15
+
16
+ def self.correct(id, opts = {})
17
+ send_request :post, "/#{endpoint_name}/#{object_id(id)}/correct", rest_api_params(id), opts.merge(required_params: [:id])
18
+ end
19
+
20
+ def self.cancel(id, opts = {})
21
+ send_request :delete, "/#{endpoint_name}/#{object_id(id)}/cancel", rest_api_params(id), opts.merge(required_params: [:id])
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Eligible
4
+ module V1_0
5
+ class ClaimServiceLine < RestAPIBase
6
+ ENDPOINT_NAME = 'claim_service_lines'.freeze
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Eligible
4
+ module V1_0
5
+ class Contract < RestAPIBase
6
+ ENDPOINT_NAME = 'contracts'.freeze
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Eligible
4
+ module V1_0
5
+ class Device < RestAPIBase
6
+ ENDPOINT_NAME = 'devices'.freeze
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Eligible
4
+ module V1_0
5
+ class Discount < RestAPIBase
6
+ ENDPOINT_NAME = 'discounts'.freeze
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Eligible
4
+ module V1_0
5
+ class Enrollment < RestAPIBase
6
+ ENDPOINT_NAME = 'enrollments'.freeze
7
+
8
+ def self.summary(params, opts = {})
9
+ send_request :get, "/#{endpoint_name}/summary", rest_api_params(params), opts
10
+ end
11
+
12
+ def self.escalate(id, opts = {})
13
+ send_request :post, "/#{endpoint_name}/#{object_id(id)}/escalate", rest_api_params(id), opts.merge(required_params: [:id])
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Eligible
4
+ module V1_0
5
+ class Estimate < RestAPIBase
6
+ ENDPOINT_NAME = 'estimates'.freeze
7
+
8
+ def self.process(id, opts = {})
9
+ send_request :post, "/#{endpoint_name}/#{object_id(id)}/process", rest_api_params(id), opts.merge(required_params: [:id])
10
+ end
11
+
12
+ def self.reestimate(id, opts = {})
13
+ send_request :post, "/#{endpoint_name}/#{object_id(id)}/reestimate", rest_api_params(id), opts.merge(required_params: [:id])
14
+ end
15
+
16
+ def self.convert(id, opts = {})
17
+ send_request :post, "/#{endpoint_name}/#{object_id(id)}/convert", rest_api_params(id), opts.merge(required_params: [:id])
18
+ end
19
+
20
+ def self.update(_params, _opts = {})
21
+ fail NotImplementedError, "Not an allowed operation for this endpoint"
22
+ end
23
+
24
+ def self.delete(_params, _opts = {})
25
+ fail NotImplementedError, "Not an allowed operation for this endpoint"
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Eligible
4
+ module V1_0
5
+ class EstimateServiceLine < RestAPIBase
6
+ ENDPOINT_NAME = 'estimate_service_lines'.freeze
7
+ end
8
+
9
+ def self.update(_params, _opts = {})
10
+ fail NotImplementedError, "Not an allowed operation for this endpoint"
11
+ end
12
+
13
+ def self.delete(_params, _opts = {})
14
+ fail NotImplementedError, "Not an allowed operation for this endpoint"
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Eligible
4
+ module V1_0
5
+ class Fee < RestAPIBase
6
+ ENDPOINT_NAME = 'fees'.freeze
7
+
8
+ def self.create(_params, _opts = {})
9
+ fail NotImplementedError, "Not an allowed operation for this endpoint"
10
+ end
11
+
12
+ def self.update(_params, _opts = {})
13
+ fail NotImplementedError, "Not an allowed operation for this endpoint"
14
+ end
15
+
16
+ def self.delete(_params, _opts = {})
17
+ fail NotImplementedError, "Not an allowed operation for this endpoint"
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Eligible
4
+ module V1_0
5
+ class FeeRefund < RestAPIBase
6
+ ENDPOINT_NAME = 'fee_refunds'.freeze
7
+
8
+ def self.retrieve(params, opts = {})
9
+ send_request :get, "#{fee_url(params)}/fee_refunds/#{fee_refund_id(params)}", rest_api_params(params), opts.merge(required_params: [:id, :fee])
10
+ end
11
+
12
+ def self.create(params, opts = {})
13
+ send_request :post, "#{fee_url(params)}/fee_refunds", rest_api_params(params), opts.merge(required_params: [:fee])
14
+ end
15
+
16
+ def self.update(params, opts = {})
17
+ send_request :put, "#{fee_url(params)}/fee_refunds/#{fee_refund_id(params)}", rest_api_params(params), opts.merge(required_params: [:id, :fee])
18
+ end
19
+
20
+ def self.list(params, opts = {})
21
+ send_request :get, "#{fee_url(params)}/fee_refunds", rest_api_params(params), opts.merge(required_params: [:fee])
22
+ end
23
+
24
+ def self.delete(_params, _opts = {})
25
+ fail NotImplementedError, "Not an allowed operation for this endpoint"
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Eligible
4
+ module V1_0
5
+ class File < RestAPIBase
6
+ ENDPOINT_NAME = 'files'.freeze
7
+
8
+ def self.update(_params, _opts = {})
9
+ fail NotImplementedError, "Not an allowed operation for this endpoint"
10
+ end
11
+
12
+ def self.delete(_params, _opts = {})
13
+ fail NotImplementedError, "Not an allowed operation for this endpoint"
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Eligible
4
+ module V1_0
5
+ class FileLink < RestAPIBase
6
+ ENDPOINT_NAME = 'file_links'.freeze
7
+
8
+ def self.delete(_params, _opts = {})
9
+ fail NotImplementedError, "Not an allowed operation for this endpoint"
10
+ end
11
+ end
12
+ end
13
+ end