unit_ruby_sdk 1.0.5 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (92) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +190 -19
  3. data/lib/unit/api_resources/application_form_resource.rb +40 -0
  4. data/lib/unit/api_resources/authorization_request_resource.rb +49 -0
  5. data/lib/unit/api_resources/authorization_resource.rb +31 -0
  6. data/lib/unit/api_resources/card_resource.rb +8 -0
  7. data/lib/unit/api_resources/event_resource.rb +40 -0
  8. data/lib/unit/api_resources/fee_resource.rb +32 -0
  9. data/lib/unit/api_resources/payment_resource.rb +17 -0
  10. data/lib/unit/api_resources/received_payment_resource.rb +47 -0
  11. data/lib/unit/api_resources/recurring_payment_resource.rb +55 -0
  12. data/lib/unit/api_resources/repayment_resource.rb +41 -0
  13. data/lib/unit/api_resources/reward_resource.rb +41 -0
  14. data/lib/unit/api_resources/webhook_resource.rb +65 -0
  15. data/lib/unit/models/application/application.rb +98 -10
  16. data/lib/unit/models/application/create_business_application_request.rb +34 -13
  17. data/lib/unit/models/application/create_individual_application_request.rb +12 -8
  18. data/lib/unit/models/application/create_sole_proprietor_application_request.rb +113 -0
  19. data/lib/unit/models/application/create_trust_application_request.rb +67 -0
  20. data/lib/unit/models/application/patch_trust_application_request.rb +31 -0
  21. data/lib/unit/models/application_form/application_form.rb +43 -0
  22. data/lib/unit/models/application_form/create_application_form_request.rb +48 -0
  23. data/lib/unit/models/application_form/list_application_form_params.rb +30 -0
  24. data/lib/unit/models/authorization/authorization.rb +42 -0
  25. data/lib/unit/models/authorization/get_request.rb +22 -0
  26. data/lib/unit/models/authorization/list_request.rb +67 -0
  27. data/lib/unit/models/authorization_request/approve_request.rb +37 -0
  28. data/lib/unit/models/authorization_request/authorization_request.rb +55 -0
  29. data/lib/unit/models/authorization_request/decline_request.rb +31 -0
  30. data/lib/unit/models/authorization_request/list_authorization_params.rb +44 -0
  31. data/lib/unit/models/card/card.rb +102 -4
  32. data/lib/unit/models/card/create_business_credit_card_request.rb +29 -0
  33. data/lib/unit/models/card/create_business_debit_card_request.rb +10 -6
  34. data/lib/unit/models/card/create_business_virtual_credit_card_request.rb +25 -0
  35. data/lib/unit/models/card/create_business_virtual_debit_card_request.rb +10 -6
  36. data/lib/unit/models/card/create_individual_debit_card_request.rb +7 -3
  37. data/lib/unit/models/card/create_individual_virtual_card_request.rb +6 -3
  38. data/lib/unit/models/card/patch_business_card_request.rb +50 -0
  39. data/lib/unit/models/card/patch_business_credit_card_request.rb +22 -0
  40. data/lib/unit/models/card/patch_business_virtual_card_request.rb +43 -0
  41. data/lib/unit/models/card/patch_business_virtual_credit_card_request.rb +20 -0
  42. data/lib/unit/models/customer/list_customer_params.rb +4 -2
  43. data/lib/unit/models/event/event.rb +37 -0
  44. data/lib/unit/models/event/list_event_params.rb +37 -0
  45. data/lib/unit/models/fee/create_fee_request.rb +43 -0
  46. data/lib/unit/models/fee/fee.rb +34 -0
  47. data/lib/unit/models/fee/reverse_fee_request.rb +43 -0
  48. data/lib/unit/models/payment/batch_release_request_builder.rb +21 -0
  49. data/lib/unit/models/payment/bulk_payment_request.rb +15 -0
  50. data/lib/unit/models/payment/create_ach_payment_inline_request.rb +29 -19
  51. data/lib/unit/models/payment/create_batch_release_request.rb +54 -0
  52. data/lib/unit/models/payment/create_book_payment_request.rb +24 -14
  53. data/lib/unit/models/payment/create_payment_linked_request.rb +31 -21
  54. data/lib/unit/models/payment/create_wire_payment_request.rb +22 -12
  55. data/lib/unit/models/payment/create_with_plaid_token_request.rb +32 -22
  56. data/lib/unit/models/payment/payment.rb +40 -12
  57. data/lib/unit/models/received_payment/list_payment_params.rb +51 -0
  58. data/lib/unit/models/received_payment/patch_payment_request.rb +31 -0
  59. data/lib/unit/models/received_payment/received_payment.rb +54 -0
  60. data/lib/unit/models/recurring_payment/create_recurring_credit_ach_payment_request.rb +52 -0
  61. data/lib/unit/models/recurring_payment/create_recurring_credit_book_payment_request.rb +54 -0
  62. data/lib/unit/models/recurring_payment/create_recurring_debit_ach_payment_request.rb +60 -0
  63. data/lib/unit/models/recurring_payment/list_recurring_payment_params.rb +60 -0
  64. data/lib/unit/models/recurring_payment/recurring_payment.rb +106 -0
  65. data/lib/unit/models/repayment/create_ach_repayment_request.rb +57 -0
  66. data/lib/unit/models/repayment/create_book_repayment_request.rb +53 -0
  67. data/lib/unit/models/repayment/list_repayment_params.rb +48 -0
  68. data/lib/unit/models/repayment/repayment.rb +67 -0
  69. data/lib/unit/models/reward/create_reward_request.rb +49 -0
  70. data/lib/unit/models/reward/get_request.rb +22 -0
  71. data/lib/unit/models/reward/list_reward_params.rb +65 -0
  72. data/lib/unit/models/reward/reward.rb +55 -0
  73. data/lib/unit/models/unit_response.rb +1 -1
  74. data/lib/unit/models/webhook/create_webhook_request.rb +49 -0
  75. data/lib/unit/models/webhook/list_webhook_params.rb +39 -0
  76. data/lib/unit/models/webhook/patch_webhook_request.rb +47 -0
  77. data/lib/unit/models/webhook/webhook.rb +80 -0
  78. data/lib/unit/types/application_form_prefill.rb +84 -0
  79. data/lib/unit/types/application_form_settings_override.rb +51 -0
  80. data/lib/unit/types/beneficial_owner.rb +15 -10
  81. data/lib/unit/types/beneficiary.rb +25 -0
  82. data/lib/unit/types/create_schedule.rb +38 -0
  83. data/lib/unit/types/evaluation_params.rb +4 -4
  84. data/lib/unit/types/grantor.rb +37 -0
  85. data/lib/unit/types/officer.rb +26 -13
  86. data/lib/unit/types/power_of_attorney_agent.rb +5 -12
  87. data/lib/unit/types/require_id_verification.rb +29 -0
  88. data/lib/unit/types/trust_contact.rb +34 -0
  89. data/lib/unit/types/trustee.rb +37 -0
  90. data/lib/unit/version.rb +1 -1
  91. data/lib/unit_ruby_sdk.rb +28 -0
  92. metadata +67 -2
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ # frozen_string_literal: true
4
+
5
+ require_relative "./base_resource"
6
+ require_relative "../utils/http_helper"
7
+
8
+ # class for creating requests for repayments to Unit API and parsing responses
9
+ # @see https://docs.unit.co/repayments
10
+ module Unit
11
+ module Resource
12
+ class RepaymentResource < Unit::Resource::BaseResource
13
+ class << self
14
+ # Get a repayment by calling Unit's API
15
+ # @param request [GetRequest]
16
+ # @return [UnitResponse, UnitError]
17
+ def get(repayment_id)
18
+ response = HttpHelper.get("#{api_url}/repayments/#{repayment_id}", headers: headers)
19
+ response_handler(response)
20
+ end
21
+
22
+ # List repayments by calling Unit's API
23
+ # @param request [ListRepaymentParams]
24
+ # @return [UnitResponse, UnitError]
25
+ def list(params = nil)
26
+ response = HttpHelper.get("#{api_url}/repayments", params: params&.to_hash, headers: headers)
27
+ response_handler(response)
28
+ end
29
+
30
+ # Create a repayment by calling Unit's API
31
+ # @param request [CreateAchRepaymentRequest, CreateBookRepaymentRequest]
32
+ # @return [UnitResponse, UnitError]
33
+ def create(request)
34
+ payload = request.to_json_api
35
+ response = HttpHelper.post("#{api_url}/repayments", body: payload, headers: headers)
36
+ response_handler(response)
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "./base_resource"
4
+ require_relative "../utils/http_helper"
5
+ require "json"
6
+
7
+ # class for creating request for rewards to Unit API and parsing responses
8
+ # @see https://docs.unit.co/Rewards
9
+ module Unit
10
+ module Resource
11
+ class RewardResource < Unit::Resource::BaseResource
12
+ class << self
13
+ # Create a new reward by calling Unit's API
14
+ # @param request [CreateRewardRequest]
15
+ # @return [UnitResponse, UnitError]
16
+ def create_reward(request)
17
+ payload = request.to_json_api
18
+ response = HttpHelper.post("#{api_url}/rewards", body: payload, headers: headers)
19
+ response_handler(response)
20
+ end
21
+
22
+ # Get a reward by calling Unit's API
23
+ # @param request [GetRequest]
24
+ # @return [UnitResponse, UnitError]
25
+ def get_reward(request)
26
+ payload = request.to_hash
27
+ response = HttpHelper.get("#{api_url}/rewards/#{request.reward_id}", params: payload, headers: headers)
28
+ response_handler(response)
29
+ end
30
+
31
+ # List rewards by calling Unit's API
32
+ # @param params [ListRewardParams]
33
+ # @return [UnitResponse, UnitError]
34
+ def list_rewards(params = nil)
35
+ response = HttpHelper.get("#{api_url}/rewards", params: params&.to_hash, headers: headers)
36
+ response_handler(response)
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,65 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "./base_resource"
4
+ require_relative "../utils/http_helper"
5
+ require "json"
6
+
7
+ # class for creating requests for webhooks
8
+ # @see https://docs.unit.co/webhooks/#webhook
9
+ module Unit
10
+ module Resource
11
+ class WebhookResource < Unit::Resource::BaseResource
12
+ class << self
13
+ # Create a webhook by calling Unit's API
14
+ # @param request [CreateWebhookRequest]
15
+ # @return [UnitResponse, UnitError]
16
+ def create_webhook(request)
17
+ payload = request.to_json_api
18
+ response = HttpHelper.post("#{api_url}/webhooks", body: payload, headers: headers)
19
+ response_handler(response)
20
+ end
21
+
22
+ # Get a webhook by calling Unit's API
23
+ # @param webhook_id [String]
24
+ # @return [UnitResponse, UnitError]
25
+ def get_webhook(webhook_id)
26
+ response = HttpHelper.get("#{api_url}/webhooks/#{webhook_id}", headers: headers)
27
+ response_handler(response)
28
+ end
29
+
30
+ # List webhooks by calling Unit's API
31
+ # @param params [ListWebhookParams]
32
+ # @return [UnitResponse, UnitError]
33
+ def list_webhooks(params = nil)
34
+ response = HttpHelper.get("#{api_url}/webhooks", params: params.to_hash, headers: headers)
35
+ response_handler(response)
36
+ end
37
+
38
+ # Update a webhook by calling Unit's API
39
+ # @param request [PatchWebhookRequest]
40
+ # @return [UnitResponse, UnitError]
41
+ def update_webhook(request)
42
+ payload = request.to_json_api
43
+ response = HttpHelper.patch("#{api_url}/webhooks/#{request.webhook_id}", body: payload, headers: headers)
44
+ response_handler(response)
45
+ end
46
+
47
+ # Enable a webhook by calling Unit's API
48
+ # @param webhook_id [String]
49
+ # @return [UnitResponse, UnitError]
50
+ def enable_webhook(webhook_id)
51
+ response = HttpHelper.post("#{api_url}/webhooks/#{webhook_id}/enable", headers: headers)
52
+ response_handler(response)
53
+ end
54
+
55
+ # Disable a webhook by calling Unit's API
56
+ # @param webhook_id [String]
57
+ # @return [UnitResponse, UnitError]
58
+ def disable_webhook(webhook_id)
59
+ response = HttpHelper.post("#{api_url}/webhooks/#{webhook_id}/disable", headers: headers)
60
+ response_handler(response)
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
@@ -5,43 +5,55 @@ module Unit
5
5
  APPLICATION_LIST_OFFSET = 0
6
6
  APPLICATION_LIST_LIMIT = 100
7
7
  autoload :CreateBusinessApplicationRequest, "unit/models/application/create_business_application_request"
8
+ autoload :CreateSoleProprietorApplicationRequest, "unit/models/application/create_sole_proprietor_application_request"
8
9
  autoload :CreateIndividualApplicationRequest, "unit/models/application/create_individual_application_request"
9
10
  autoload :ListApplicationParams, "unit/models/application/list_application_params"
10
11
  autoload :PatchApplicationRequest, "unit/models/application/patch_application_request"
11
12
  autoload :UploadDocumentRequest, "unit/models/application/upload_document_request"
12
-
13
+ autoload :CreateTrustApplicationRequest, "unit/models/application/create_trust_application_request"
14
+ autoload :PatchTrustApplicationRequest, "unit/models/application/patch_trust_application_request"
13
15
  class << self
14
16
  # Create a new business application by calling Unit's API
17
+ # @see https://docs.unit.co/applications#create-business-application
15
18
  # @param name [String]
16
19
  # @param address [Address]
17
20
  # @param phone [Phone]
18
21
  # @param state_of_incorporation [String]
19
22
  # @param ein [String]
20
- # @param industry [String]
21
23
  # @param contact [BusinessContact]
22
24
  # @param officer [Officer]
23
25
  # @param beneficial_owners [Array]
24
26
  # @param entity_type [String]
27
+ # @param industry [String] - optional
25
28
  # @param dba [String] - optional
26
29
  # @param ip [String] - optional
27
30
  # @param website [String] - optional
28
31
  # @param tags [Hash] - optional
29
32
  # @param idempotency_key [String] - optional
30
33
  # @param device_fingerprints [DeviceFingerprint] - optional
31
- # @return [UnitResponse, UnitError]
32
- def create_business_application(name:, address:, phone:, state_of_incorporation:, ein:, industry:, contact:,
33
- officer:, beneficial_owners:, entity_type:, dba: nil, ip: nil, website: nil,
34
- tags: nil, idempotency_key: nil, device_fingerprints: nil)
34
+ # @param annual_revenue [String] - optional
35
+ # @param number_of_employees [String] - optional
36
+ # @param cash_flow [String] - optional
37
+ # @param year_of_incorporation [String] - optional
38
+ # @param countries_of_operation [Array<String>] - optional
39
+ # @param stock_symbol [String] - optional
40
+ # @param business_vertical [String] - optional
41
+ def create_business_application(name:, address:, phone:, state_of_incorporation:, ein:, contact:,
42
+ officer:, beneficial_owners:, entity_type:, industry: nil, dba: nil, ip: nil, website: nil,
43
+ tags: nil, idempotency_key: nil, device_fingerprints: nil, annual_revenue: nil, number_of_employees: nil,
44
+ cash_flow: nil, year_of_incorporation: nil, countries_of_operation: nil, stock_symbol: nil, business_vertical: nil)
35
45
 
36
46
  request = CreateBusinessApplicationRequest.new(
37
- name, address, phone, state_of_incorporation, ein, industry, contact, officer,
38
- beneficial_owners, entity_type, dba, ip, website, tags, idempotency_key, device_fingerprints
47
+ name, address, phone, state_of_incorporation, ein, contact, officer,
48
+ beneficial_owners, entity_type, industry, dba, ip, website, tags, idempotency_key, device_fingerprints,
49
+ annual_revenue, number_of_employees, cash_flow, year_of_incorporation, countries_of_operation, stock_symbol, business_vertical
39
50
  )
40
51
 
41
52
  Unit::Resource::ApplicationResource.create_application(request)
42
53
  end
43
54
 
44
55
  # Create a new individual application by calling Unit's API
56
+ # @see https://docs.unit.co/applications#create-individual-application
45
57
  # @param ssn [String]
46
58
  # @param full_name [FullName]
47
59
  # @param date_of_birth [Date]
@@ -61,21 +73,67 @@ module Unit
61
73
  # @param jwt_subject [String] - optional
62
74
  # @param power_of_attorney_agent [PowerOfAttorneyAgent] - optional
63
75
  # @param evaluation_params [EvaluationParams] - optional
76
+ # @param occupation [String] - optional
77
+ # @param annual_income [String] - optional
78
+ # @param source_of_income [String] - optional
64
79
  # @return [UnitResponse, UnitError]
65
80
  def create_individual_application(ssn:, full_name:, date_of_birth:, address:, email:, phone:, ip: nil, ein: nil,
66
81
  industry: nil, dba: nil, sole_proprietorship: nil, passport: nil, nationality: nil,
67
82
  device_fingerprints: nil, idempotency_key: nil, tags: nil, jwt_subject: nil,
68
- power_of_attorney_agent: nil, evaluation_params: nil)
83
+ power_of_attorney_agent: nil, evaluation_params: nil, occupation: nil, annual_income: nil, source_of_income: nil)
69
84
 
70
85
  request = CreateIndividualApplicationRequest.new(
71
86
  ssn, full_name, date_of_birth, address, email, phone, ip, ein, industry, dba, sole_proprietorship, passport,
72
- nationality, device_fingerprints, idempotency_key, tags, jwt_subject, power_of_attorney_agent, evaluation_params
87
+ nationality, device_fingerprints, idempotency_key, tags, jwt_subject, power_of_attorney_agent, evaluation_params,
88
+ occupation, annual_income, source_of_income
73
89
  )
90
+ Unit::Resource::ApplicationResource.create_application(request)
91
+ end
74
92
 
93
+ # Create a new sole proprietor application by calling Unit's API
94
+ # @see https://docs.unit.co/applications#create-sole-proprietor-application
95
+ # @param nationality [String]
96
+ # @param full_name [FullName]
97
+ # @param date_of_birth [Date]
98
+ # @param address [Address]
99
+ # @param phone [Phone]
100
+ # @param email [String]
101
+ # @param sole_proprietorship [Boolean]
102
+ # @param industry [String]
103
+ # @param ssn [String] - optional
104
+ # @param passport [String] - optional
105
+ # @param ein [String] - optional
106
+ # @param dba [String] - optional
107
+ # @param power_of_attorney_agent [PowerOfAttorneyAgent] - optional
108
+ # @param evaluation_params [EvaluationParams] - optional
109
+ # @param occupation [String] - optional
110
+ # @param annual_income [String] - optional
111
+ # @param source_of_income [String] - optional
112
+ # @param annual_revenue [String] - optional
113
+ # @param number_of_employees [String] - optional
114
+ # @param business_vertical [String] - optional
115
+ # @param website [String] - optional
116
+ # @param ip [String] - optional
117
+ # @param tags [Hash] - optional
118
+ # @param idempotency_key [String] - optional
119
+ # @param device_fingerprints [Array<DeviceFingerprint>] - optional
120
+ # @param jwt_subject [String] - optional
121
+ # @return [UnitResponse, UnitError]
122
+ def create_sole_proprietor_application(nationality:, full_name:, date_of_birth:, address:, phone:,
123
+ email:, industry:, ssn: nil, passport: nil, ein: nil, dba: nil, power_of_attorney_agent: nil, evaluation_params: nil,
124
+ occupation: nil, annual_income: nil, source_of_income: nil, annual_revenue: nil,
125
+ number_of_employees: nil, business_vertical: nil, website: nil, ip: nil, tags: nil,
126
+ idempotency_key: nil, device_fingerprints: nil, jwt_subject: nil, sole_proprietorship: true)
127
+ request = CreateSoleProprietorApplicationRequest.new(nationality, full_name, date_of_birth, address, phone,
128
+ email, industry, ssn, passport, ein, dba, power_of_attorney_agent, evaluation_params,
129
+ occupation, annual_income, source_of_income, annual_revenue, number_of_employees,
130
+ business_vertical, website, ip, tags, idempotency_key,
131
+ device_fingerprints, jwt_subject, sole_proprietorship: sole_proprietorship)
75
132
  Unit::Resource::ApplicationResource.create_application(request)
76
133
  end
77
134
 
78
135
  # Update an application by calling Unit's API
136
+ # @see https://docs.unit.co/applications#update-individual-application
79
137
  # @param application_id [String] The application id
80
138
  # @param type [String] The type
81
139
  # @param tags [Hash] The tags
@@ -86,6 +144,7 @@ module Unit
86
144
  end
87
145
 
88
146
  # List applications by calling Unit's API
147
+ # @see https://docs.unit.co/applications#list-applications
89
148
  # @param offset [Integer] Number of resources to skip.
90
149
  # @param limit [Integer] The limit Maximum number of resources that will be returned.
91
150
  # @param email [String] Filter applications by email address (case sensitive).
@@ -102,6 +161,7 @@ module Unit
102
161
  end
103
162
 
104
163
  # Get an application by calling Unit's API
164
+ # @see https://docs.unit.co/applications#get-application-by-id
105
165
  # @param [String] application_id
106
166
  # @return [UnitResponse, UnitError]
107
167
  def get_application(application_id)
@@ -109,6 +169,7 @@ module Unit
109
169
  end
110
170
 
111
171
  # Upload an application document by calling Unit's API
172
+ # @see https://docs.unit.co/application-documents#upload-document
112
173
  # @param application_id [String] The application ID
113
174
  # @param document_id [String] The document ID
114
175
  # @param file [String] The file content
@@ -119,6 +180,33 @@ module Unit
119
180
  request = UploadDocumentRequest.new(application_id, document_id, file, file_type, is_back_side: is_back_side)
120
181
  Unit::Resource::ApplicationResource.upload(request)
121
182
  end
183
+
184
+ # Create a trust application
185
+ # @see https://docs.unit.co/applications/#create-trust-application
186
+ # @param name [String]
187
+ # @param state_of_incorporation [String]
188
+ # @param revocability [String]
189
+ # @param source_of_funds [String]
190
+ # @param tax_id [String]
191
+ # @param grantor [Grantor]
192
+ # @param trustees [Array<Trustee>]
193
+ # @param beneficiaries [Array<Beneficiary>]
194
+ # @param contact [TrustContact]
195
+ # @param ip [String] - optional
196
+ # @param tags [Hash] - optional
197
+ # @param idempotency_key [String] - optional
198
+ # @param device_fingerprints [Array<DeviceFingerprint>] - optional
199
+ def create_trust_application(name:, state_of_incorporation:, revocability:, source_of_funds:, tax_id:,
200
+ grantor:, trustees:, beneficiaries:, contact:, ip: nil, tags: nil, idempotency_key: nil, device_fingerprints: nil)
201
+ request = CreateTrustApplicationRequest.new(name, state_of_incorporation, revocability, source_of_funds, tax_id,
202
+ grantor, trustees, beneficiaries, contact, ip, tags, idempotency_key, device_fingerprints)
203
+ Unit::Resource::ApplicationResource.create_application(request)
204
+ end
205
+
206
+ def update_trust_application(application_id:, tags: nil)
207
+ request = PatchTrustApplicationRequest.new(application_id, tags)
208
+ Unit::Resource::ApplicationResource.update(request)
209
+ end
122
210
  end
123
211
  end
124
212
  end
@@ -1,39 +1,43 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "unit/types/full_name"
4
- require "unit/types/address"
5
- require "unit/types/phone"
6
- require "unit/types/business_contact"
7
- require "unit/types/beneficial_owner"
8
- require "unit/types/officer"
9
-
10
3
  # Request to create a business application
11
4
  # @see https://docs.unit.co/applications/#create-business-application
12
5
  module Unit
13
6
  module Application
14
7
  class CreateBusinessApplicationRequest
15
8
  attr_reader :name, :address, :phone, :state_of_incorporation, :ein, :industry, :contact, :officer, :beneficial_owners,
16
- :entity_type, :dba, :ip, :website, :tags, :idempotency_key, :device_fingerprints, :type
9
+ :entity_type, :dba, :ip, :website, :tags, :idempotency_key, :device_fingerprints,
10
+ :annual_revenue, :number_of_employees, :cash_flow, :year_of_incorporation,
11
+ :countries_of_operation, :stock_symbol, :business_vertical, :type
17
12
 
18
13
  # @param name [String]
19
14
  # @param address [Address]
20
15
  # @param phone [Phone]
21
16
  # @param state_of_incorporation [String]
22
17
  # @param ein [String]
23
- # @param industry [String]
24
18
  # @param contact [BusinessContact]
25
19
  # @param officer [Officer]
26
20
  # @param beneficial_owners [Array]
27
21
  # @param entity_type [String]
22
+ # @param industry [String] - optional
28
23
  # @param dba [String] - optional
29
24
  # @param ip [String] - optional
30
25
  # @param website [String] - optional
31
26
  # @param tags [Hash] - optional
32
27
  # @param idempotency_key [String] - optional
33
28
  # @param device_fingerprints [DeviceFingerprint] - optional
34
- def initialize(name, address, phone, state_of_incorporation, ein, industry, contact, officer,
35
- beneficial_owners, entity_type, dba = nil, ip = nil, website = nil, tags = nil, idempotency_key = nil,
36
- device_fingerprints = nil)
29
+ # @param annual_revenue [String] - optional
30
+ # @param number_of_employees [String] - optional
31
+ # @param cash_flow [String] - optional
32
+ # @param year_of_incorporation [String] - optional
33
+ # @param countries_of_operation [Array<String>] - optional
34
+ # @param stock_symbol [String] - optional
35
+ # @param business_vertical [String] - optional
36
+ def initialize(name, address, phone, state_of_incorporation, ein, contact, officer,
37
+ beneficial_owners, entity_type, industry = nil, dba = nil, ip = nil, website = nil, tags = nil, idempotency_key = nil,
38
+ device_fingerprints = nil, annual_revenue = nil, number_of_employees = nil,
39
+ cash_flow = nil, year_of_incorporation = nil, countries_of_operation = nil,
40
+ stock_symbol = nil, business_vertical = nil)
37
41
  @name = name
38
42
  @address = address
39
43
  @phone = phone
@@ -50,6 +54,13 @@ module Unit
50
54
  @tags = tags
51
55
  @idempotency_key = idempotency_key
52
56
  @device_fingerprints = device_fingerprints
57
+ @annual_revenue = annual_revenue
58
+ @number_of_employees = number_of_employees
59
+ @cash_flow = cash_flow
60
+ @year_of_incorporation = year_of_incorporation
61
+ @countries_of_operation = countries_of_operation
62
+ @stock_symbol = stock_symbol
63
+ @business_vertical = business_vertical
53
64
  @type = "businessApplication"
54
65
  end
55
66
 
@@ -70,7 +81,17 @@ module Unit
70
81
  entityType: entity_type,
71
82
  dba: dba,
72
83
  ip: ip,
73
- website: website
84
+ website: website,
85
+ tags: tags,
86
+ idempotency_key: idempotency_key,
87
+ device_fingerprints: device_fingerprints,
88
+ annual_revenue: annual_revenue,
89
+ number_of_employees: number_of_employees,
90
+ cashFlow: cash_flow,
91
+ yearOfIncorporation: year_of_incorporation,
92
+ countriesOfOperation: countries_of_operation&.join(","),
93
+ stockSymbol: stock_symbol,
94
+ businessVertical: business_vertical
74
95
  }
75
96
  }
76
97
  }
@@ -1,10 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "unit/types/full_name"
4
- require "unit/types/address"
5
- require "unit/types/phone"
6
- require "unit/types/device_fingerprint"
7
-
8
3
  # Request to create an individual application
9
4
  # @see https://docs.unit.co/applications/#create-individual-application
10
5
  module Unit
@@ -12,7 +7,7 @@ module Unit
12
7
  class CreateIndividualApplicationRequest
13
8
  attr_reader :type, :ssn, :full_name, :date_of_birth, :address, :email, :phone, :ip, :ein, :industry, :dba, :sole_proprietorship,
14
9
  :passport, :nationality, :device_fingerprints, :idempotency_key, :tags, :jwt_subject, :power_of_attorney_agent,
15
- :evaluation_params
10
+ :evaluation_params, :occupation, :annual_income, :source_of_income
16
11
 
17
12
  # @param ssn [String]
18
13
  # @param full_name [FullName]
@@ -33,9 +28,12 @@ module Unit
33
28
  # @param jwt_subject [String] - optional
34
29
  # @param power_of_attorney_agent [PowerOfAttorneyAgent] - optional
35
30
  # @param evaluation_params [EvaluationParams] - optional
31
+ # @param occupation [String] - optional
32
+ # @param annual_income [String] - optional
33
+ # @param source_of_income [String] - optional
36
34
  def initialize(ssn, full_name, date_of_birth, address, email, phone, ip = nil, ein = nil, industry = nil, dba = nil, sole_proprietorship = nil, passport = nil,
37
35
  nationality = nil, device_fingerprints = nil, idempotency_key = nil, tags = nil, jwt_subject = nil, power_of_attorney_agent = nil,
38
- evaluation_params = nil)
36
+ evaluation_params = nil, occupation = nil, annual_income = nil, source_of_income = nil)
39
37
  @ssn = ssn
40
38
  @full_name = full_name
41
39
  @date_of_birth = date_of_birth
@@ -55,6 +53,9 @@ module Unit
55
53
  @jwt_object = jwt_subject
56
54
  @power_of_attorney_agent = power_of_attorney_agent
57
55
  @evaluation_params = evaluation_params
56
+ @occupation = occupation
57
+ @annual_income = annual_income
58
+ @source_of_income = source_of_income
58
59
  @type = "individualApplication"
59
60
  end
60
61
 
@@ -80,7 +81,10 @@ module Unit
80
81
  tags: tags,
81
82
  jwtSubject: jwt_subject,
82
83
  powerOfAttorneyAgent: power_of_attorney_agent&.represent,
83
- evaluationParams: evaluation_params&.represent
84
+ evaluationParams: evaluation_params&.represent,
85
+ occupation: occupation,
86
+ annualIncome: annual_income,
87
+ sourceOfIncome: source_of_income
84
88
  }
85
89
  }
86
90
  }
@@ -0,0 +1,113 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Request to create a proprietor application
4
+ # @see https://docs.unit.co/applications#create-sole-proprietor-application
5
+ module Unit
6
+ module Application
7
+ class CreateSoleProprietorApplicationRequest
8
+ attr_reader :ssn, :passport, :nationality, :full_name, :date_of_birth,
9
+ :address, :phone, :email, :sole_proprietorship, :ein, :industry,
10
+ :dba, :power_of_attorney_agent, :evaluation_params, :occupation,
11
+ :annual_income, :source_of_income, :annual_revenue, :number_of_employees,
12
+ :business_vertical, :website, :ip, :tags, :idempotency_key,
13
+ :device_fingerprints, :jwt_subject
14
+
15
+ # @param nationality [String]
16
+ # @param full_name [FullName]
17
+ # @param date_of_birth [Date]
18
+ # @param address [Address]
19
+ # @param phone [Phone]
20
+ # @param email [String]
21
+ # @param sole_proprietorship [Boolean]
22
+ # @param industry [String]
23
+ # @param ssn [String] - optional
24
+ # @param passport [String] - optional
25
+ # @param ein [String] - optional
26
+ # @param dba [String] - optional
27
+ # @param power_of_attorney_agent [PowerOfAttorneyAgent] - optional
28
+ # @param evaluation_params [EvaluationParams] - optional
29
+ # @param occupation [String] - optional
30
+ # @param annual_income [String] - optional
31
+ # @param source_of_income [String] - optional
32
+ # @param annual_revenue [String] - optional
33
+ # @param number_of_employees [String] - optional
34
+ # @param business_vertical [String] - optional
35
+ # @param website [String] - optional
36
+ # @param ip [String] - optional
37
+ # @param tags [Hash] - optional
38
+ # @param idempotency_key [String] - optional
39
+ # @param device_fingerprints [Array<DeviceFingerprint>] - optional
40
+ # @param jwt_subject [String] - optional
41
+ def initialize(nationality, full_name, date_of_birth, address, phone,
42
+ email, industry, ssn = nil, passport = nil, ein = nil, dba = nil, power_of_attorney_agent = nil, evaluation_params = nil,
43
+ occupation = nil, annual_income = nil, source_of_income = nil, annual_revenue = nil,
44
+ number_of_employees = nil, business_vertical = nil, website = nil, ip = nil, tags = nil,
45
+ idempotency_key = nil, device_fingerprints = nil, jwt_subject = nil, sole_proprietorship: true)
46
+ @ssn = ssn
47
+ @passport = passport
48
+ @nationality = nationality
49
+ @full_name = full_name
50
+ @date_of_birth = date_of_birth
51
+ @address = address
52
+ @phone = phone
53
+ @email = email
54
+ @sole_proprietorship = sole_proprietorship
55
+ @ein = ein
56
+ @industry = industry
57
+ @dba = dba
58
+ @power_of_attorney_agent = power_of_attorney_agent
59
+ @evaluation_params = evaluation_params
60
+ @occupation = occupation
61
+ @annual_income = annual_income
62
+ @source_of_income = source_of_income
63
+ @annual_revenue = annual_revenue
64
+ @number_of_employees = number_of_employees
65
+ @business_vertical = business_vertical
66
+ @website = website
67
+ @ip = ip
68
+ @tags = tags
69
+ @idempotency_key = idempotency_key
70
+ @device_fingerprints = device_fingerprints
71
+ @jwt_subject = jwt_subject
72
+ end
73
+
74
+ def to_json_api
75
+ payload = {
76
+ data: {
77
+ type: "individualApplication",
78
+ attributes: {
79
+ ssn: ssn,
80
+ passport: passport,
81
+ nationality: nationality,
82
+ fullName: full_name.represent,
83
+ dateOfBirth: date_of_birth,
84
+ address: address.represent,
85
+ phone: phone&.represent,
86
+ email: email,
87
+ soleProprietorship: sole_proprietorship,
88
+ ein: ein,
89
+ industry: industry,
90
+ dba: dba,
91
+ powerOfAttorneyAgent: power_of_attorney_agent&.represent,
92
+ evaluationParams: evaluation_params&.represent,
93
+ occupation: occupation,
94
+ annualIncome: annual_income,
95
+ sourceOfIncome: source_of_income,
96
+ annualRevenue: annual_revenue,
97
+ numberOfEmployees: number_of_employees,
98
+ businessVertical: business_vertical,
99
+ website: website,
100
+ ip: ip,
101
+ tags: tags,
102
+ idempotencyKey: idempotency_key,
103
+ deviceFingerprints: device_fingerprints&.map(&:represent),
104
+ jwtSubject: jwt_subject
105
+ }
106
+ }
107
+ }
108
+ payload[:data][:attributes].compact!
109
+ payload.to_json
110
+ end
111
+ end
112
+ end
113
+ end
@@ -0,0 +1,67 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Request to create a trust application
4
+ # @see https://docs.unit.co/applications#create-trust-application
5
+ module Unit
6
+ module Application
7
+ class CreateTrustApplicationRequest
8
+ attr_reader :name, :state_of_incorporation, :revocability, :source_of_funds, :tax_id,
9
+ :grantor, :trustees, :beneficiaries, :contact, :ip, :tags, :idempotency_key, :device_fingerprints
10
+
11
+ # @param name [String]
12
+ # @param state_of_incorporation [String]
13
+ # @param revocability [String]
14
+ # @param source_of_funds [String]
15
+ # @param tax_id [String]
16
+ # @param grantor [Grantor]
17
+ # @param trustees [Array<Trustee>]
18
+ # @param beneficiaries [Array<Beneficiary>]
19
+ # @param contact [TrustContact]
20
+ # @param ip [String] - optional
21
+ # @param tags [Hash] - optional
22
+ # @param idempotency_key [String] - optional
23
+ # @param device_fingerprints [Array<DeviceFingerprint>] - optional
24
+ def initialize(name, state_of_incorporation, revocability, source_of_funds, tax_id,
25
+ grantor, trustees, beneficiaries, contact, ip = nil, tags = nil, idempotency_key = nil, device_fingerprints = nil)
26
+ @name = name
27
+ @state_of_incorporation = state_of_incorporation
28
+ @revocability = revocability
29
+ @source_of_funds = source_of_funds
30
+ @tax_id = tax_id
31
+ @grantor = grantor
32
+ @trustees = trustees
33
+ @beneficiaries = beneficiaries
34
+ @contact = contact
35
+ @ip = ip
36
+ @tags = tags
37
+ @idempotency_key = idempotency_key
38
+ @device_fingerprints = device_fingerprints
39
+ end
40
+
41
+ def to_json_api
42
+ payload = {
43
+ data: {
44
+ type: "trustApplication",
45
+ attributes: {
46
+ name: name,
47
+ stateOfIncorporation: state_of_incorporation,
48
+ revocability: revocability,
49
+ sourceOfFunds: source_of_funds,
50
+ taxId: tax_id,
51
+ grantor: grantor&.represent,
52
+ trustees: trustees,
53
+ beneficiaries: beneficiaries,
54
+ contact: contact&.represent,
55
+ ip: ip,
56
+ tags: tags,
57
+ idempotencyKey: idempotency_key,
58
+ deviceFingerprints: device_fingerprints
59
+ }
60
+ }
61
+ }
62
+ payload[:data][:attributes].compact!
63
+ payload.to_json
64
+ end
65
+ end
66
+ end
67
+ end