unit_ruby_sdk 1.0.5 → 1.2.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.
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