root_insurance 1.7.4 → 1.8.0
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +7 -0
- data/README.md +10 -3
- data/lib/root_insurance/api/payment.rb +37 -0
- data/lib/root_insurance/api/policy.rb +104 -9
- data/lib/root_insurance/api/policy_holder.rb +94 -4
- data/lib/root_insurance/api/quote.rb +35 -0
- data/lib/root_insurance/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 38199c8ed87d9e97b257db82410699f7ad6e4d1e
|
4
|
+
data.tar.gz: c9dc7652916e3f573f88362cb1444043c84eb043
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 19350f52a045b3ebf508c34c11f74d9e68ee25241a4e672930a290c377f50b5a7ce0190a5c0e25b06b9f61cf68fc26a88df8e9793663332e09eedd112c48becc
|
7
|
+
data.tar.gz: 5b55dffc3ea93c055f3e0bf86e44ed6bb5179d34df4bd96a2474bc9e317ace06c4f5d0f5ccc58132e03532df96855bccd05f13555b12c11df7df68286de72d5f
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,12 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
# 1.8.0 - Release date: 2018-17-05
|
4
|
+
* Removed old replace_policy method
|
5
|
+
* Add support to filter on id number when listing policy holders
|
6
|
+
* Added support to include oblects when getting a list of policy holders and a individual policy holder
|
7
|
+
* Added more documentation
|
8
|
+
|
9
|
+
|
3
10
|
# 1.7.4 - Release date: 2018-16-05
|
4
11
|
* Added claim and call documentation
|
5
12
|
|
data/README.md
CHANGED
@@ -22,11 +22,18 @@ gem 'root_insurance'
|
|
22
22
|
|
23
23
|
And then execute:
|
24
24
|
|
25
|
-
|
25
|
+
```bash
|
26
|
+
bundle
|
27
|
+
```
|
26
28
|
|
27
|
-
##
|
29
|
+
## Quick start
|
30
|
+
1. Create an instance of `RootInsurance::Client`
|
31
|
+
```ruby
|
32
|
+
client = RootInsurance::Client.new("test_key_tYILz1640w9q5n5kNQUZ", '', :sandbox)
|
33
|
+
```
|
28
34
|
|
29
|
-
|
35
|
+
2. Use the api
|
36
|
+
See the documentation [here](https://www.rubydoc.info/gems/root_insurance/).
|
30
37
|
|
31
38
|
## Contributing
|
32
39
|
If you wish to contribute to this repository, please fork it and send a PR our way.
|
@@ -1,5 +1,32 @@
|
|
1
1
|
module RootInsurance::Api
|
2
2
|
module Payment
|
3
|
+
|
4
|
+
# Create a payment method
|
5
|
+
#
|
6
|
+
# @param [String] policy_holder_id The unique identifier of the policy holder.
|
7
|
+
# @param [String] type The payment method type. Curently only +'debit_order'+ is supported. If omitted, defaults to +'debit_order'+ (optional)
|
8
|
+
# @param [Hash] bank_details Bank details to use for the debit order. See below for details.
|
9
|
+
# @param [String] policy_ids The date on the which the incident occured. (optional)
|
10
|
+
# @return [Hash]
|
11
|
+
#
|
12
|
+
## == Bank details
|
13
|
+
# [account_holder (string)] Name of account holder.
|
14
|
+
# [bank (string)] Bank name - one of [+absa+, +capitec+, +fnb+, +investec+, +nedbank+, +postbank+, +standard_bank+]
|
15
|
+
# [branch_code (string)] Branch code for bank account
|
16
|
+
# [account_number (string)] Bank account number
|
17
|
+
#
|
18
|
+
# @example
|
19
|
+
# bank_details = {
|
20
|
+
# first_name: "Erlich",
|
21
|
+
# last_name: "Bachman",
|
22
|
+
# bank: "absa",
|
23
|
+
# branch_code: "12345",
|
24
|
+
# account_number: "123456789"
|
25
|
+
# }
|
26
|
+
# client.create_payment_method(
|
27
|
+
# policy_holder_id: "128ba0c0-3f6a-4f8b-9b40-e2066b02b59e",
|
28
|
+
# bank_details: bank_details)
|
29
|
+
#
|
3
30
|
def create_payment_method(policy_holder_id:, type: 'debit_order', bank_details: {}, policy_ids: nil)
|
4
31
|
validate_bank_details(bank_details)
|
5
32
|
|
@@ -17,6 +44,16 @@ module RootInsurance::Api
|
|
17
44
|
post("policyholders/#{policy_holder_id}/payment-methods", data)
|
18
45
|
end
|
19
46
|
|
47
|
+
# Link a payment method to a policy
|
48
|
+
#
|
49
|
+
# @param [String] policy_id The unique identifier of the policy.
|
50
|
+
# @param [String] payment_method_id The unique identifier of the payment method.
|
51
|
+
#
|
52
|
+
# @example
|
53
|
+
# client.link_payment_method(
|
54
|
+
# policy_id: "128ba0c0-3f6a-4f8b-9b40-e2066b02b59e",
|
55
|
+
# payment_method_id: "e0b7b222-772f-47ac-b08d-c7ba38aa1b25")
|
56
|
+
#
|
20
57
|
def link_payment_method(policy_id:, payment_method_id:)
|
21
58
|
data = {payment_method_id: payment_method_id}
|
22
59
|
|
@@ -1,5 +1,17 @@
|
|
1
1
|
module RootInsurance::Api
|
2
2
|
module Policy
|
3
|
+
|
4
|
+
# Issue a policy
|
5
|
+
#
|
6
|
+
# @param [String] application_id The unique identifier of the application.
|
7
|
+
# @param [Hash, nil] app_data An object containing additional custom data for the policy.
|
8
|
+
# @return [Hash]
|
9
|
+
#
|
10
|
+
# @example
|
11
|
+
# client.issue_policy(
|
12
|
+
# application_id: "128ba0c0-3f6a-4f8b-9b40-e2066b02b59e",
|
13
|
+
# app_data: {gadget_colour: "Space Grey"})
|
14
|
+
#
|
3
15
|
def issue_policy(application_id:, app_data: nil)
|
4
16
|
data = {
|
5
17
|
application_id: application_id,
|
@@ -10,57 +22,140 @@ module RootInsurance::Api
|
|
10
22
|
post(:policies, data)
|
11
23
|
end
|
12
24
|
|
13
|
-
|
25
|
+
# Add a benificiary to a policy
|
26
|
+
#
|
27
|
+
# @param [String] policy_id The unique identifier of the policy.
|
28
|
+
# @param [String] first_name The beneficiary's first name
|
29
|
+
# @param [String] last_name The beneficiary's last name
|
30
|
+
# @param [Hash] id An hash containing the beneficiary's identification number, type and country. See below.
|
31
|
+
# @param [Integer] percentage An integer representing the percentage of a claim payout that the beneficiary should receive.
|
32
|
+
# @param [String] cellphone Hash containing beneficiary's cellphone number and country. See below for details. (optional)
|
33
|
+
# @return [Hash]
|
34
|
+
#
|
35
|
+
## == ID
|
36
|
+
# [type (string or symbol)] Either +:id+ or +:passport+
|
37
|
+
# [number (string)] The id or passport number
|
38
|
+
# [country (string)] The ISO Alpha-2 country code of the country of the id/passport number.
|
39
|
+
#
|
40
|
+
## == Cellphone
|
41
|
+
# [number (string)] The cellphone number
|
42
|
+
# [country (string)] The ISO Alpha-2 country code of the country of the cellphone number.
|
43
|
+
#
|
44
|
+
# @example
|
45
|
+
# client.add_policy_beneficiary(
|
46
|
+
# policy_id: "128ba0c0-3f6a-4f8b-9b40-e2066b02b59e",
|
47
|
+
# first_name: "Jared"
|
48
|
+
# last_name: "Dunn",
|
49
|
+
# id: {type: :id, number: "8704094800082", country: "ZA"},
|
50
|
+
# percentage: 100)
|
51
|
+
#
|
52
|
+
def add_policy_beneficiary(policy_id:, id:, first_name:, last_name:, percentage:, cellphone: nil)
|
14
53
|
raise ArgumentError.new('id needs to be a hash') unless id.is_a? Hash
|
15
54
|
|
16
55
|
data = {
|
17
56
|
id: id,
|
18
57
|
first_name: first_name,
|
19
58
|
last_name: last_name,
|
20
|
-
percentage: percentage
|
21
|
-
|
59
|
+
percentage: percentage,
|
60
|
+
cellphone: cellphone
|
61
|
+
}.reject { |k, v| v.nil? }
|
22
62
|
|
23
63
|
put("policies/#{policy_id}/beneficiaries", data)
|
24
64
|
end
|
25
65
|
|
66
|
+
# List policies
|
67
|
+
#
|
68
|
+
# @param [String] id_number The National ID Number of the policyholder (optional)
|
69
|
+
# @return [Array<Hash>]
|
70
|
+
#
|
71
|
+
# @example
|
72
|
+
# client.list_policies(id_number: "8704094800082")
|
73
|
+
#
|
26
74
|
def list_policies(id_number: nil)
|
27
75
|
query = id_number ? {id_number: id_number} : nil
|
28
76
|
|
29
77
|
get(:policies, query)
|
30
78
|
end
|
31
79
|
|
80
|
+
# Get a policy
|
81
|
+
#
|
82
|
+
# @param [String] id The unique identifier of the policy
|
83
|
+
# @return [Hash]
|
84
|
+
#
|
85
|
+
# @example
|
86
|
+
# client.get_policy(id: "128ba0c0-3f6a-4f8b-9b40-e2066b02b59e")
|
87
|
+
#
|
32
88
|
def get_policy(id:)
|
33
89
|
get("policies/#{id}")
|
34
90
|
end
|
35
91
|
|
92
|
+
# Cancel a policy
|
93
|
+
#
|
94
|
+
# @param [String] id The unique identifier of the policy
|
95
|
+
# @param [String] reason A reason for why this policy is being cancelled.
|
96
|
+
# @return [Hash]
|
97
|
+
#
|
98
|
+
# @example
|
99
|
+
# client.cancel_policy(id: "128ba0c0-3f6a-4f8b-9b40-e2066b02b59e", reason: "Not needed anymore")
|
100
|
+
#
|
36
101
|
def cancel_policy(id:, reason:)
|
37
102
|
data = {reason: reason}
|
38
103
|
|
39
104
|
post("policies/#{id}/cancel", data)
|
40
105
|
end
|
41
106
|
|
107
|
+
# Update a policy.
|
108
|
+
# Currently, only updating the app_data object is supported
|
109
|
+
#
|
110
|
+
# @param [String] id The unique identifier of the policy
|
111
|
+
# @param [Hash] app_data An object containing additional custom data for the policy.
|
112
|
+
# @return [Hash]
|
113
|
+
#
|
114
|
+
# @example
|
115
|
+
# app_data = {gadget_color: "Space Grey", has_screen_cover: true}
|
116
|
+
# client.update_policy(id: "128ba0c0-3f6a-4f8b-9b40-e2066b02b59e", app_data: app_data)
|
117
|
+
#
|
42
118
|
def update_policy(id:, app_data:)
|
43
119
|
data = {app_data: app_data}
|
44
120
|
|
45
121
|
patch("policies/#{id}", data)
|
46
122
|
end
|
47
123
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
124
|
+
# Update a policy's billing amount.
|
125
|
+
#
|
126
|
+
# @param [String] id The unique identifier of the policy
|
127
|
+
# @param [Integer] billing_amount The billing amount to be set on the policy in cents.
|
128
|
+
# @return [Hash]
|
129
|
+
#
|
130
|
+
# @example
|
131
|
+
# client.update_policy_billing_amount(id: "128ba0c0-3f6a-4f8b-9b40-e2066b02b59e", billing_amount: 45000)
|
132
|
+
#
|
54
133
|
def update_policy_billing_amount(id:, billing_amount:)
|
55
134
|
data = {billing_amount: billing_amount}
|
56
135
|
|
57
136
|
post("policies/#{id}/billing_amount", data)
|
58
137
|
end
|
59
138
|
|
139
|
+
# List a policy's bebeficiaries
|
140
|
+
#
|
141
|
+
# @param [String] id The unique identifier of the policy
|
142
|
+
# @return [Array<Hash>]
|
143
|
+
#
|
144
|
+
# @example
|
145
|
+
# client.list_policy_beneficiaries(id: "128ba0c0-3f6a-4f8b-9b40-e2066b02b59e")
|
146
|
+
#
|
60
147
|
def list_policy_beneficiaries(id:)
|
61
148
|
get("policies/#{id}/beneficiaries")
|
62
149
|
end
|
63
150
|
|
151
|
+
# List all the events which are applicable to this policy.
|
152
|
+
#
|
153
|
+
# @param [String] id The unique identifier of the policy
|
154
|
+
# @return [Array<Hash>]
|
155
|
+
#
|
156
|
+
# @example
|
157
|
+
# client.list_policy_events(id: "128ba0c0-3f6a-4f8b-9b40-e2066b02b59e")
|
158
|
+
#
|
64
159
|
def list_policy_events(id:)
|
65
160
|
get("policies/#{id}/events")
|
66
161
|
end
|
@@ -1,5 +1,33 @@
|
|
1
1
|
module RootInsurance::Api
|
2
2
|
module PolicyHolder
|
3
|
+
# Create a policy holder
|
4
|
+
#
|
5
|
+
# @param [Hash] id Hash containing policyholder's identification number, type and country. See below for details.
|
6
|
+
# @param [String] first_name Policyholder's legal first name.
|
7
|
+
# @param [String] last_name Policyholder's legal last name.
|
8
|
+
# @param [String] email Policyholder's contact email address. (Optional)
|
9
|
+
# @param [String] date_of_birth The policyholder's date of birth in the format YYYYMMDD. This field may be omitted if the policyholder's id type is +id+.
|
10
|
+
# @param [Hash] cellphone Hash containing policyholder's cellphone number and country. See below for details. (Optional)
|
11
|
+
# @param [Hash] app_data A hash containing additional custom data for the policy holder.
|
12
|
+
# @return [Hash]
|
13
|
+
#
|
14
|
+
## == ID
|
15
|
+
# [type (string or symbol)] Either +:id+ or +:passport+
|
16
|
+
# [number (string)] The id or passport number
|
17
|
+
# [country (string)] The ISO Alpha-2 country code of the country of the id/passport number.
|
18
|
+
#
|
19
|
+
## == Cellphone
|
20
|
+
# [number (string)] The cellphone number
|
21
|
+
# [country (string)] The ISO Alpha-2 country code of the country of the cellphone number.
|
22
|
+
#
|
23
|
+
# @example
|
24
|
+
# client.create_policy_holder(
|
25
|
+
# id: {type: :id, number: "6801015800084", country: "ZA"},
|
26
|
+
# first_name: 'Erlich',
|
27
|
+
# last_name: 'Bachman',
|
28
|
+
# email: 'erlich@avaito.com',
|
29
|
+
# app_data: {company: 'Aviato'})
|
30
|
+
#
|
3
31
|
def create_policy_holder(id:, first_name:, last_name:, email: nil, date_of_birth: nil, cellphone: nil, app_data: nil)
|
4
32
|
raise ArgumentError.new('id needs to be a hash') unless id.is_a? Hash
|
5
33
|
|
@@ -16,14 +44,58 @@ module RootInsurance::Api
|
|
16
44
|
post(:policyholders, data)
|
17
45
|
end
|
18
46
|
|
19
|
-
|
20
|
-
|
47
|
+
# List policy holders
|
48
|
+
#
|
49
|
+
# @param [Hash] id_number An optional ID or passport number to filter by.
|
50
|
+
# @param [Array<String, Symbol>, String, Symbol] included_objects An optional list, or single item, of underlying objects to include, e.g. +?include=policies+. Currently, only +policies+ is supported, which will include all policies owned by the policyholder.
|
51
|
+
# @return [Array<Hash>]
|
52
|
+
#
|
53
|
+
# @example
|
54
|
+
# client.list_policy_holders(id_number: "128ba0c0-3f6a-4f8b-9b40-e2066b02b59e", included_objects: :policies)
|
55
|
+
def list_policy_holders(id_number: nil, included_objects: nil)
|
56
|
+
query = {
|
57
|
+
include: format_included_objects(included_objects),
|
58
|
+
id_number: id_number
|
59
|
+
}.reject { |_, v| v.nil? }
|
60
|
+
|
61
|
+
get(:policyholders, query)
|
21
62
|
end
|
22
63
|
|
23
|
-
|
24
|
-
|
64
|
+
# Get a policy holder
|
65
|
+
#
|
66
|
+
# @param [String] id The unique identifier of the policy holder
|
67
|
+
# @param [Array<String, Symbol>, String, Symbol] included_objects An optional list, or single item, of underlying objects to include, e.g. +?include=policies+. Currently, only +policies+ is supported, which will include all policies owned by the policyholder.
|
68
|
+
# @return [Hash]
|
69
|
+
#
|
70
|
+
# @example
|
71
|
+
# client.get_policy_holder(id: "128ba0c0-3f6a-4f8b-9b40-e2066b02b59e", included_objects: :policies)
|
72
|
+
#
|
73
|
+
def get_policy_holder(id:, included_objects: nil)
|
74
|
+
query = {
|
75
|
+
include: format_included_objects(included_objects),
|
76
|
+
}.reject { |_, v| v.nil? }
|
77
|
+
|
78
|
+
get("policyholders/#{id}", query)
|
25
79
|
end
|
26
80
|
|
81
|
+
# Update a policy holder
|
82
|
+
#
|
83
|
+
# @param [String] id The unique identifier of the policy holder
|
84
|
+
# @param [String] email Policyholder's contact email address. (Optional)
|
85
|
+
# @param [Hash] cellphone Hash containing policyholder's cellphone number and country. See below for details. (Optional)
|
86
|
+
# @param [Hash] app_data A hash containing additional custom data for the policy holder.
|
87
|
+
# @return [Hash]
|
88
|
+
#
|
89
|
+
## == Cellphone
|
90
|
+
# [number (string)] The cellphone number
|
91
|
+
# [country (string)] The ISO Alpha-2 country code of the country of the cellphone number.
|
92
|
+
#
|
93
|
+
# @example
|
94
|
+
# client.update_policy_holders(
|
95
|
+
# id: 'bf1ada91-eecb-4f47-9bfa-1258bb1e0055',
|
96
|
+
# cellphone: {number: '07741011337', country: 'ZA'},
|
97
|
+
# app_data: {company: 'Pied Piper'})
|
98
|
+
#
|
27
99
|
def update_policy_holder(id:, email: nil, cellphone: nil, app_data: nil)
|
28
100
|
data = {
|
29
101
|
email: email,
|
@@ -34,8 +106,26 @@ module RootInsurance::Api
|
|
34
106
|
patch("policyholders/#{id}", data)
|
35
107
|
end
|
36
108
|
|
109
|
+
# List all the events which are applicable to this policy holder.
|
110
|
+
#
|
111
|
+
# @param [String] id The unique identifier of the policy holder
|
112
|
+
# @return [Array<Hash>]
|
113
|
+
#
|
114
|
+
# @example
|
115
|
+
# client.list_policy_holder_events(id: "128ba0c0-3f6a-4f8b-9b40-e2066b02b59e")
|
116
|
+
#
|
37
117
|
def list_policy_holder_events(id:)
|
38
118
|
get("policyholders/#{id}/events")
|
39
119
|
end
|
120
|
+
|
121
|
+
private
|
122
|
+
def format_included_objects(included_objects)
|
123
|
+
case included_objects
|
124
|
+
when String, Symbol
|
125
|
+
included_objects
|
126
|
+
when Array
|
127
|
+
included_objects.join(",")
|
128
|
+
end
|
129
|
+
end
|
40
130
|
end
|
41
131
|
end
|
@@ -1,5 +1,33 @@
|
|
1
1
|
module RootInsurance::Api
|
2
2
|
module Quote
|
3
|
+
# Create a quote
|
4
|
+
#
|
5
|
+
# @param [Hash] opts The quote details. Depending on +:type+, different options are available. Available types are: +:root_gadgets+, +:root_term+ and +:root_funeral+ See below for details
|
6
|
+
# @return [Hash]
|
7
|
+
#
|
8
|
+
## == +:root_gadgets+
|
9
|
+
# [model_name (String)] The model name of the gadget
|
10
|
+
#
|
11
|
+
## == +:root_term+
|
12
|
+
# [cover_amount (Integer)] Amount to cover, in cents. Should be between R100 000 and R5 000 000, inclusive.
|
13
|
+
# [cover_period (String or Symbol)] Duration to cover: +:1_year+, +:2_years+, +:5_years+, +:10_years+, +:15_years+, +:20_years+ or +:whole_life+.
|
14
|
+
# [basic_income_per_month (Integer)] Policyholder's basic monthly income, in cents.
|
15
|
+
# [education_status (String or Symbol)] Policyholder’s education class: +:grade_12_no_matric+, +:grade_12_matric+, +:diploma_or_btech+, +:undergraduate_degree+ or +:professional_degree+
|
16
|
+
# [smoker (Boolean)] Is the policyholder a smoker.
|
17
|
+
# [gender (String or Symbol)] Gender of policyholder. Should be either +:male+ or +:female+.
|
18
|
+
# [age (Integer)] Age of policyholder. Should be between 18 and 63, inclusive.
|
19
|
+
#
|
20
|
+
# == +:root_funeral+
|
21
|
+
# [cover_amount (Integer)] Amount to cover, in cents. Should be between R10k and R50k, inclusive.
|
22
|
+
# [has_spouse (Boolean)] Should a spouse also be covered.
|
23
|
+
# [number_of_children (Integer)] Number of children to include in the policy. Should be between 0 and 8, inclusive
|
24
|
+
# [extended_family_ages (Array<Integer>)] Ages of extended family members to cover.
|
25
|
+
#
|
26
|
+
# @example
|
27
|
+
# client.create_quote(
|
28
|
+
# type: :root_gadgets,
|
29
|
+
# model_name: 'iPhone 6s 64GB LTE')
|
30
|
+
#
|
3
31
|
def create_quote(opts={})
|
4
32
|
type = opts[:type]
|
5
33
|
|
@@ -15,6 +43,13 @@ module RootInsurance::Api
|
|
15
43
|
end
|
16
44
|
end
|
17
45
|
|
46
|
+
# List available gadget models
|
47
|
+
#
|
48
|
+
# @return [Array<Hash>]
|
49
|
+
#
|
50
|
+
# @example
|
51
|
+
# client.list_gadget_models
|
52
|
+
#
|
18
53
|
def list_gadget_models
|
19
54
|
get('gadgets/models')
|
20
55
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: root_insurance
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Root Wealth
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-05-
|
11
|
+
date: 2018-05-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httparty
|