eligible 1.0 → 3.0.0.beta17

Sign up to get free protection for your applications and to get access to all the features.
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