voltaria_sdk 2.34.5

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 (209) hide show
  1. checksums.yaml +7 -0
  2. data/.rubocop.yml +69 -0
  3. data/README.md +202 -0
  4. data/Rakefile +20 -0
  5. data/custom.gemspec.rb +16 -0
  6. data/lib/voltaria/accounts/client.rb +168 -0
  7. data/lib/voltaria/accounts/types/get_client_account_request.rb +12 -0
  8. data/lib/voltaria/accounts/types/list_client_account_fields_request.rb +11 -0
  9. data/lib/voltaria/accounts/types/list_client_accounts_request.rb +14 -0
  10. data/lib/voltaria/accounts/types/partner_client_account_create_request.rb +23 -0
  11. data/lib/voltaria/accounts/types/partner_client_account_create_request_status.rb +14 -0
  12. data/lib/voltaria/client.rb +74 -0
  13. data/lib/voltaria/clients/client.rb +557 -0
  14. data/lib/voltaria/clients/types/approve_onboarding_request.rb +11 -0
  15. data/lib/voltaria/clients/types/client_create_payload.rb +16 -0
  16. data/lib/voltaria/clients/types/client_data_create_payload.rb +12 -0
  17. data/lib/voltaria/clients/types/client_user_invite_request.rb +16 -0
  18. data/lib/voltaria/clients/types/delete_client_request.rb +11 -0
  19. data/lib/voltaria/clients/types/get_client_by_id_request.rb +11 -0
  20. data/lib/voltaria/clients/types/get_limit_request_request.rb +11 -0
  21. data/lib/voltaria/clients/types/limit_request_create_payload.rb +14 -0
  22. data/lib/voltaria/clients/types/limit_request_create_payload_requested_limit.rb +15 -0
  23. data/lib/voltaria/clients/types/list_client_checklist_summaries_request.rb +13 -0
  24. data/lib/voltaria/clients/types/list_client_waivers_request.rb +15 -0
  25. data/lib/voltaria/clients/types/list_clients_request.rb +14 -0
  26. data/lib/voltaria/clients/types/list_limit_requests_request.rb +15 -0
  27. data/lib/voltaria/clients/types/list_onboarding_clients_request.rb +12 -0
  28. data/lib/voltaria/clients/types/reject_onboarding_request.rb +11 -0
  29. data/lib/voltaria/documents/client.rb +221 -0
  30. data/lib/voltaria/documents/types/delete_document_request.rb +11 -0
  31. data/lib/voltaria/documents/types/document_create_payload.rb +14 -0
  32. data/lib/voltaria/documents/types/get_document_by_id_request.rb +11 -0
  33. data/lib/voltaria/documents/types/list_documents_request.rb +18 -0
  34. data/lib/voltaria/drawdowns/client.rb +141 -0
  35. data/lib/voltaria/drawdowns/types/drawdown_create_payload.rb +12 -0
  36. data/lib/voltaria/drawdowns/types/drawdown_create_payload_amount.rb +15 -0
  37. data/lib/voltaria/drawdowns/types/list_drawdown_checklists_request.rb +15 -0
  38. data/lib/voltaria/drawdowns/types/list_drawdowns_request.rb +14 -0
  39. data/lib/voltaria/environment.rb +8 -0
  40. data/lib/voltaria/errors/api_error.rb +8 -0
  41. data/lib/voltaria/errors/client_error.rb +17 -0
  42. data/lib/voltaria/errors/redirect_error.rb +8 -0
  43. data/lib/voltaria/errors/response_error.rb +42 -0
  44. data/lib/voltaria/errors/server_error.rb +11 -0
  45. data/lib/voltaria/errors/timeout_error.rb +8 -0
  46. data/lib/voltaria/installments/client.rb +292 -0
  47. data/lib/voltaria/installments/types/delete_installment_request.rb +11 -0
  48. data/lib/voltaria/installments/types/get_installment_by_id_request.rb +11 -0
  49. data/lib/voltaria/installments/types/installment_create_payload.rb +12 -0
  50. data/lib/voltaria/installments/types/installment_edit_payload.rb +13 -0
  51. data/lib/voltaria/installments/types/installment_edit_payload_amount.rb +15 -0
  52. data/lib/voltaria/installments/types/list_installments_request.rb +16 -0
  53. data/lib/voltaria/installments/types/list_payment_promises_request.rb +16 -0
  54. data/lib/voltaria/installments/types/payment_promise_create_payload.rb +14 -0
  55. data/lib/voltaria/installments/types/payment_promise_create_payload_amount.rb +15 -0
  56. data/lib/voltaria/internal/errors/constraint_error.rb +10 -0
  57. data/lib/voltaria/internal/errors/type_error.rb +10 -0
  58. data/lib/voltaria/internal/http/base_request.rb +51 -0
  59. data/lib/voltaria/internal/http/raw_client.rb +214 -0
  60. data/lib/voltaria/internal/iterators/cursor_item_iterator.rb +28 -0
  61. data/lib/voltaria/internal/iterators/cursor_page_iterator.rb +51 -0
  62. data/lib/voltaria/internal/iterators/item_iterator.rb +59 -0
  63. data/lib/voltaria/internal/iterators/offset_item_iterator.rb +30 -0
  64. data/lib/voltaria/internal/iterators/offset_page_iterator.rb +83 -0
  65. data/lib/voltaria/internal/json/request.rb +41 -0
  66. data/lib/voltaria/internal/json/serializable.rb +25 -0
  67. data/lib/voltaria/internal/multipart/multipart_encoder.rb +141 -0
  68. data/lib/voltaria/internal/multipart/multipart_form_data.rb +78 -0
  69. data/lib/voltaria/internal/multipart/multipart_form_data_part.rb +51 -0
  70. data/lib/voltaria/internal/multipart/multipart_request.rb +40 -0
  71. data/lib/voltaria/internal/types/array.rb +47 -0
  72. data/lib/voltaria/internal/types/boolean.rb +34 -0
  73. data/lib/voltaria/internal/types/enum.rb +56 -0
  74. data/lib/voltaria/internal/types/hash.rb +36 -0
  75. data/lib/voltaria/internal/types/model/field.rb +38 -0
  76. data/lib/voltaria/internal/types/model.rb +208 -0
  77. data/lib/voltaria/internal/types/type.rb +35 -0
  78. data/lib/voltaria/internal/types/union.rb +161 -0
  79. data/lib/voltaria/internal/types/unknown.rb +15 -0
  80. data/lib/voltaria/internal/types/utils.rb +116 -0
  81. data/lib/voltaria/investors/client.rb +312 -0
  82. data/lib/voltaria/investors/types/investor_get_client_request.rb +11 -0
  83. data/lib/voltaria/investors/types/investor_get_installment_request.rb +11 -0
  84. data/lib/voltaria/investors/types/investor_get_loan_request.rb +11 -0
  85. data/lib/voltaria/investors/types/investor_list_clients_request.rb +14 -0
  86. data/lib/voltaria/investors/types/investor_list_installments_request.rb +16 -0
  87. data/lib/voltaria/investors/types/investor_list_loans_request.rb +15 -0
  88. data/lib/voltaria/investors/types/investor_list_repayments_request.rb +17 -0
  89. data/lib/voltaria/loans/client.rb +271 -0
  90. data/lib/voltaria/loans/types/bulk_loan_create_payload.rb +11 -0
  91. data/lib/voltaria/loans/types/delete_loan_request.rb +11 -0
  92. data/lib/voltaria/loans/types/get_bulk_loan_status_request.rb +11 -0
  93. data/lib/voltaria/loans/types/get_loan_by_id_request.rb +11 -0
  94. data/lib/voltaria/loans/types/list_loans_request.rb +15 -0
  95. data/lib/voltaria/loans/types/loan_create_payload.rb +17 -0
  96. data/lib/voltaria/loans/types/loan_create_payload_amount.rb +15 -0
  97. data/lib/voltaria/loans/types/loan_default_payload.rb +13 -0
  98. data/lib/voltaria/loans/types/loan_default_payload_sold_amount.rb +15 -0
  99. data/lib/voltaria/partners/client.rb +129 -0
  100. data/lib/voltaria/partners/types/list_partner_waterfalls_request.rb +14 -0
  101. data/lib/voltaria/partners/types/partner_data_create_payload.rb +11 -0
  102. data/lib/voltaria/prefix_routing.rb +80 -0
  103. data/lib/voltaria/repayments/client.rb +183 -0
  104. data/lib/voltaria/repayments/types/bulk_repayment_create_payload.rb +11 -0
  105. data/lib/voltaria/repayments/types/get_bulk_repayment_status_request.rb +11 -0
  106. data/lib/voltaria/repayments/types/list_repayment_logs_request.rb +17 -0
  107. data/lib/voltaria/repayments/types/repayment_create_payload.rb +17 -0
  108. data/lib/voltaria/repayments/types/repayment_create_payload_amount.rb +15 -0
  109. data/lib/voltaria/sandbox/client.rb +124 -0
  110. data/lib/voltaria/sandbox/types/client_update_sandbox.rb +13 -0
  111. data/lib/voltaria/sandbox/types/client_update_sandbox_limit.rb +15 -0
  112. data/lib/voltaria/sandbox/types/loan_update_sandbox.rb +12 -0
  113. data/lib/voltaria/sandbox/types/webhook_test_sandbox.rb +12 -0
  114. data/lib/voltaria/types/account_address.rb +14 -0
  115. data/lib/voltaria/types/account_holder_type_enum.rb +12 -0
  116. data/lib/voltaria/types/account_status_enum.rb +13 -0
  117. data/lib/voltaria/types/available_document_categories_response.rb +9 -0
  118. data/lib/voltaria/types/available_funding.rb +15 -0
  119. data/lib/voltaria/types/bulk_loan_item_payload.rb +15 -0
  120. data/lib/voltaria/types/bulk_loan_item_payload_amount.rb +13 -0
  121. data/lib/voltaria/types/bulk_loan_item_result.rb +15 -0
  122. data/lib/voltaria/types/bulk_loan_result.rb +13 -0
  123. data/lib/voltaria/types/bulk_loan_task_response.rb +11 -0
  124. data/lib/voltaria/types/bulk_loan_task_status.rb +14 -0
  125. data/lib/voltaria/types/bulk_repayment_item_payload.rb +15 -0
  126. data/lib/voltaria/types/bulk_repayment_item_payload_amount.rb +13 -0
  127. data/lib/voltaria/types/bulk_repayment_item_result.rb +15 -0
  128. data/lib/voltaria/types/bulk_repayment_result.rb +13 -0
  129. data/lib/voltaria/types/bulk_repayment_task_response.rb +11 -0
  130. data/lib/voltaria/types/bulk_repayment_task_status.rb +14 -0
  131. data/lib/voltaria/types/checklist_summary_partner_response.rb +14 -0
  132. data/lib/voltaria/types/checklist_type_enum.rb +12 -0
  133. data/lib/voltaria/types/client_account_response.rb +21 -0
  134. data/lib/voltaria/types/client_base_info.rb +13 -0
  135. data/lib/voltaria/types/client_data_response.rb +12 -0
  136. data/lib/voltaria/types/client_investor_response.rb +17 -0
  137. data/lib/voltaria/types/client_limit_response.rb +16 -0
  138. data/lib/voltaria/types/client_response.rb +19 -0
  139. data/lib/voltaria/types/client_status_enum.rb +18 -0
  140. data/lib/voltaria/types/client_type_enum.rb +12 -0
  141. data/lib/voltaria/types/client_user_response.rb +24 -0
  142. data/lib/voltaria/types/client_user_status_enum.rb +13 -0
  143. data/lib/voltaria/types/currency_enum.rb +16 -0
  144. data/lib/voltaria/types/currency_field_spec.rb +10 -0
  145. data/lib/voltaria/types/document_response.rb +20 -0
  146. data/lib/voltaria/types/drawdown_checklist_response.rb +16 -0
  147. data/lib/voltaria/types/drawdown_response.rb +15 -0
  148. data/lib/voltaria/types/drawdown_status_enum.rb +13 -0
  149. data/lib/voltaria/types/http_validation_error.rb +9 -0
  150. data/lib/voltaria/types/installment_response.rb +24 -0
  151. data/lib/voltaria/types/installment_response_with_client_info.rb +25 -0
  152. data/lib/voltaria/types/installment_status_enum.rb +19 -0
  153. data/lib/voltaria/types/jurisdiction_enum.rb +13 -0
  154. data/lib/voltaria/types/kyc_status_enum.rb +14 -0
  155. data/lib/voltaria/types/limit_request_response.rb +16 -0
  156. data/lib/voltaria/types/limit_request_status_enum.rb +13 -0
  157. data/lib/voltaria/types/loan_installment_create_payload.rb +10 -0
  158. data/lib/voltaria/types/loan_installment_create_payload_amount.rb +13 -0
  159. data/lib/voltaria/types/loan_installment_response.rb +15 -0
  160. data/lib/voltaria/types/loan_investor_response.rb +27 -0
  161. data/lib/voltaria/types/loan_payment_status_enum.rb +12 -0
  162. data/lib/voltaria/types/loan_response_with_client_info.rb +26 -0
  163. data/lib/voltaria/types/loan_response_with_installments.rb +26 -0
  164. data/lib/voltaria/types/loan_status_enum.rb +21 -0
  165. data/lib/voltaria/types/paginated_response_checklist_summary_partner_response.rb +16 -0
  166. data/lib/voltaria/types/paginated_response_client_account_response.rb +16 -0
  167. data/lib/voltaria/types/paginated_response_client_investor_response.rb +16 -0
  168. data/lib/voltaria/types/paginated_response_client_response.rb +16 -0
  169. data/lib/voltaria/types/paginated_response_document_response.rb +16 -0
  170. data/lib/voltaria/types/paginated_response_drawdown_checklist_response.rb +16 -0
  171. data/lib/voltaria/types/paginated_response_drawdown_response.rb +16 -0
  172. data/lib/voltaria/types/paginated_response_installment_response_with_client_info.rb +16 -0
  173. data/lib/voltaria/types/paginated_response_limit_request_response.rb +16 -0
  174. data/lib/voltaria/types/paginated_response_loan_investor_response.rb +16 -0
  175. data/lib/voltaria/types/paginated_response_loan_response_with_client_info.rb +16 -0
  176. data/lib/voltaria/types/paginated_response_payment_promise_response.rb +16 -0
  177. data/lib/voltaria/types/paginated_response_repayment_response_with_client_info.rb +16 -0
  178. data/lib/voltaria/types/paginated_response_waiver_response.rb +16 -0
  179. data/lib/voltaria/types/paginated_response_waterfall_response.rb +16 -0
  180. data/lib/voltaria/types/paginated_response_webhook_log_response.rb +16 -0
  181. data/lib/voltaria/types/paginated_response_webhook_subscription_response.rb +16 -0
  182. data/lib/voltaria/types/partner_data_response.rb +11 -0
  183. data/lib/voltaria/types/payment_promise_response.rb +19 -0
  184. data/lib/voltaria/types/payment_promise_status_enum.rb +14 -0
  185. data/lib/voltaria/types/repayment_response.rb +21 -0
  186. data/lib/voltaria/types/repayment_response_with_client_info.rb +22 -0
  187. data/lib/voltaria/types/role_response.rb +11 -0
  188. data/lib/voltaria/types/validation_error.rb +13 -0
  189. data/lib/voltaria/types/validation_error_loc_item.rb +12 -0
  190. data/lib/voltaria/types/waiver_response.rb +18 -0
  191. data/lib/voltaria/types/waiver_status_enum.rb +14 -0
  192. data/lib/voltaria/types/waterfall_response.rb +19 -0
  193. data/lib/voltaria/types/waterfall_status_enum.rb +12 -0
  194. data/lib/voltaria/types/webhook_event_type_enum.rb +15 -0
  195. data/lib/voltaria/types/webhook_log_response.rb +19 -0
  196. data/lib/voltaria/types/webhook_log_response_request_body.rb +13 -0
  197. data/lib/voltaria/types/webhook_status_enum.rb +13 -0
  198. data/lib/voltaria/types/webhook_subscription_response.rb +17 -0
  199. data/lib/voltaria/version.rb +5 -0
  200. data/lib/voltaria/webhooks/client.rb +241 -0
  201. data/lib/voltaria/webhooks/types/delete_webhook_subscription_request.rb +11 -0
  202. data/lib/voltaria/webhooks/types/get_webhook_subscription_request.rb +11 -0
  203. data/lib/voltaria/webhooks/types/list_webhook_logs_request.rb +13 -0
  204. data/lib/voltaria/webhooks/types/list_webhook_subscriptions_request.rb +13 -0
  205. data/lib/voltaria/webhooks/types/webhook_create_payload.rb +16 -0
  206. data/lib/voltaria/webhooks/types/webhook_update_payload.rb +17 -0
  207. data/lib/voltaria.rb +205 -0
  208. data/reference.md +5135 -0
  209. metadata +250 -0
@@ -0,0 +1,557 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Voltaria
4
+ module Clients
5
+ class Client
6
+ # @param client [Voltaria::Internal::Http::RawClient]
7
+ #
8
+ # @return [void]
9
+ def initialize(client:)
10
+ @client = client
11
+ end
12
+
13
+ # Retrieve a list of all clients associated with your partner account.
14
+ #
15
+ # @param request_options [Hash]
16
+ # @param params [Hash]
17
+ # @option request_options [String] :base_url
18
+ # @option request_options [Hash{String => Object}] :additional_headers
19
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
20
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
21
+ # @option request_options [Integer] :timeout_in_seconds
22
+ # @option params [Integer, nil] :page
23
+ # @option params [Integer, nil] :page_size
24
+ # @option params [String, nil] :order_by
25
+ # @option params [String, nil] :q
26
+ #
27
+ # @return [Voltaria::Types::PaginatedResponseClientResponse]
28
+ def list_clients(request_options: {}, **params)
29
+ params = Voltaria::Internal::Types::Utils.normalize_keys(params)
30
+ query_param_names = %i[page page_size order_by q]
31
+ query_params = {}
32
+ query_params["page"] = params[:page] if params.key?(:page)
33
+ query_params["page_size"] = params[:page_size] if params.key?(:page_size)
34
+ query_params["order_by"] = params[:order_by] if params.key?(:order_by)
35
+ query_params["q"] = params[:q] if params.key?(:q)
36
+ params.except(*query_param_names)
37
+
38
+ request = Voltaria::Internal::JSON::Request.new(
39
+ base_url: request_options[:base_url],
40
+ method: "GET",
41
+ path: "v2/clients",
42
+ query: query_params,
43
+ request_options: request_options
44
+ )
45
+ begin
46
+ response = @client.send(request)
47
+ rescue Net::HTTPRequestTimeout
48
+ raise Voltaria::Errors::TimeoutError
49
+ end
50
+ code = response.code.to_i
51
+ if code.between?(200, 299)
52
+ Voltaria::Types::PaginatedResponseClientResponse.load(response.body)
53
+ else
54
+ error_class = Voltaria::Errors::ResponseError.subclass_for_code(code)
55
+ raise error_class.new(response.body, code: code)
56
+ end
57
+ end
58
+
59
+ # Create a new client under your partner account. The client will remain in a pending state until reviewed by
60
+ # Winyield.
61
+ #
62
+ # @param request_options [Hash]
63
+ # @param params [Voltaria::Clients::Types::ClientCreatePayload]
64
+ # @option request_options [String] :base_url
65
+ # @option request_options [Hash{String => Object}] :additional_headers
66
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
67
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
68
+ # @option request_options [Integer] :timeout_in_seconds
69
+ #
70
+ # @return [Voltaria::Types::ClientResponse]
71
+ def create_client(request_options: {}, **params)
72
+ params = Voltaria::Internal::Types::Utils.normalize_keys(params)
73
+ request = Voltaria::Internal::JSON::Request.new(
74
+ base_url: request_options[:base_url],
75
+ method: "POST",
76
+ path: "v2/clients",
77
+ body: Voltaria::Clients::Types::ClientCreatePayload.new(params).to_h,
78
+ request_options: request_options
79
+ )
80
+ begin
81
+ response = @client.send(request)
82
+ rescue Net::HTTPRequestTimeout
83
+ raise Voltaria::Errors::TimeoutError
84
+ end
85
+ code = response.code.to_i
86
+ if code.between?(200, 299)
87
+ Voltaria::Types::ClientResponse.load(response.body)
88
+ else
89
+ error_class = Voltaria::Errors::ResponseError.subclass_for_code(code)
90
+ raise error_class.new(response.body, code: code)
91
+ end
92
+ end
93
+
94
+ # Upload supplementary client information, such as bank account balance, accounting figures, or other relevant
95
+ # details.
96
+ #
97
+ # @param request_options [Hash]
98
+ # @param params [Voltaria::Clients::Types::ClientDataCreatePayload]
99
+ # @option request_options [String] :base_url
100
+ # @option request_options [Hash{String => Object}] :additional_headers
101
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
102
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
103
+ # @option request_options [Integer] :timeout_in_seconds
104
+ #
105
+ # @return [Voltaria::Types::ClientDataResponse]
106
+ def create_client_data(request_options: {}, **params)
107
+ params = Voltaria::Internal::Types::Utils.normalize_keys(params)
108
+ request = Voltaria::Internal::JSON::Request.new(
109
+ base_url: request_options[:base_url],
110
+ method: "POST",
111
+ path: "v2/clients/data",
112
+ body: Voltaria::Clients::Types::ClientDataCreatePayload.new(params).to_h,
113
+ request_options: request_options
114
+ )
115
+ begin
116
+ response = @client.send(request)
117
+ rescue Net::HTTPRequestTimeout
118
+ raise Voltaria::Errors::TimeoutError
119
+ end
120
+ code = response.code.to_i
121
+ if code.between?(200, 299)
122
+ Voltaria::Types::ClientDataResponse.load(response.body)
123
+ else
124
+ error_class = Voltaria::Errors::ResponseError.subclass_for_code(code)
125
+ raise error_class.new(response.body, code: code)
126
+ end
127
+ end
128
+
129
+ # Retrieve a list of all limit requests associated with your partner account.
130
+ #
131
+ # @param request_options [Hash]
132
+ # @param params [Hash]
133
+ # @option request_options [String] :base_url
134
+ # @option request_options [Hash{String => Object}] :additional_headers
135
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
136
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
137
+ # @option request_options [Integer] :timeout_in_seconds
138
+ # @option params [String, nil] :client_id
139
+ # @option params [Integer, nil] :page
140
+ # @option params [Integer, nil] :page_size
141
+ # @option params [String, nil] :order_by
142
+ # @option params [String, nil] :q
143
+ #
144
+ # @return [Voltaria::Types::PaginatedResponseLimitRequestResponse]
145
+ def list_limit_requests(request_options: {}, **params)
146
+ params = Voltaria::Internal::Types::Utils.normalize_keys(params)
147
+ query_param_names = %i[client_id page page_size order_by q]
148
+ query_params = {}
149
+ query_params["client_id"] = params[:client_id] if params.key?(:client_id)
150
+ query_params["page"] = params[:page] if params.key?(:page)
151
+ query_params["page_size"] = params[:page_size] if params.key?(:page_size)
152
+ query_params["order_by"] = params[:order_by] if params.key?(:order_by)
153
+ query_params["q"] = params[:q] if params.key?(:q)
154
+ params.except(*query_param_names)
155
+
156
+ request = Voltaria::Internal::JSON::Request.new(
157
+ base_url: request_options[:base_url],
158
+ method: "GET",
159
+ path: "v2/clients/limit-requests",
160
+ query: query_params,
161
+ request_options: request_options
162
+ )
163
+ begin
164
+ response = @client.send(request)
165
+ rescue Net::HTTPRequestTimeout
166
+ raise Voltaria::Errors::TimeoutError
167
+ end
168
+ code = response.code.to_i
169
+ if code.between?(200, 299)
170
+ Voltaria::Types::PaginatedResponseLimitRequestResponse.load(response.body)
171
+ else
172
+ error_class = Voltaria::Errors::ResponseError.subclass_for_code(code)
173
+ raise error_class.new(response.body, code: code)
174
+ end
175
+ end
176
+
177
+ # Create a limit review request for a client. The request will remain in a pending state until reviewed by
178
+ # Winyield.
179
+ #
180
+ # @param request_options [Hash]
181
+ # @param params [Voltaria::Clients::Types::LimitRequestCreatePayload]
182
+ # @option request_options [String] :base_url
183
+ # @option request_options [Hash{String => Object}] :additional_headers
184
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
185
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
186
+ # @option request_options [Integer] :timeout_in_seconds
187
+ #
188
+ # @return [Voltaria::Types::LimitRequestResponse]
189
+ def create_limit_request(request_options: {}, **params)
190
+ params = Voltaria::Internal::Types::Utils.normalize_keys(params)
191
+ request = Voltaria::Internal::JSON::Request.new(
192
+ base_url: request_options[:base_url],
193
+ method: "POST",
194
+ path: "v2/clients/limit-requests",
195
+ body: Voltaria::Clients::Types::LimitRequestCreatePayload.new(params).to_h,
196
+ request_options: request_options
197
+ )
198
+ begin
199
+ response = @client.send(request)
200
+ rescue Net::HTTPRequestTimeout
201
+ raise Voltaria::Errors::TimeoutError
202
+ end
203
+ code = response.code.to_i
204
+ if code.between?(200, 299)
205
+ Voltaria::Types::LimitRequestResponse.load(response.body)
206
+ else
207
+ error_class = Voltaria::Errors::ResponseError.subclass_for_code(code)
208
+ raise error_class.new(response.body, code: code)
209
+ end
210
+ end
211
+
212
+ # Retrieve a specific limit request by its ID.
213
+ #
214
+ # @param request_options [Hash]
215
+ # @param params [Hash]
216
+ # @option request_options [String] :base_url
217
+ # @option request_options [Hash{String => Object}] :additional_headers
218
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
219
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
220
+ # @option request_options [Integer] :timeout_in_seconds
221
+ # @option params [String] :request_id
222
+ #
223
+ # @return [Voltaria::Types::LimitRequestResponse]
224
+ def get_limit_request(request_options: {}, **params)
225
+ params = Voltaria::Internal::Types::Utils.normalize_keys(params)
226
+ request = Voltaria::Internal::JSON::Request.new(
227
+ base_url: request_options[:base_url],
228
+ method: "GET",
229
+ path: "v2/clients/limit-requests/#{URI.encode_uri_component(params[:request_id].to_s)}",
230
+ request_options: request_options
231
+ )
232
+ begin
233
+ response = @client.send(request)
234
+ rescue Net::HTTPRequestTimeout
235
+ raise Voltaria::Errors::TimeoutError
236
+ end
237
+ code = response.code.to_i
238
+ if code.between?(200, 299)
239
+ Voltaria::Types::LimitRequestResponse.load(response.body)
240
+ else
241
+ error_class = Voltaria::Errors::ResponseError.subclass_for_code(code)
242
+ raise error_class.new(response.body, code: code)
243
+ end
244
+ end
245
+
246
+ # Retrieve all clients that have self-registered via the portal and are awaiting partner approval.
247
+ #
248
+ # @param request_options [Hash]
249
+ # @param params [Hash]
250
+ # @option request_options [String] :base_url
251
+ # @option request_options [Hash{String => Object}] :additional_headers
252
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
253
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
254
+ # @option request_options [Integer] :timeout_in_seconds
255
+ # @option params [Integer, nil] :page
256
+ # @option params [Integer, nil] :page_size
257
+ #
258
+ # @return [Voltaria::Types::PaginatedResponseClientResponse]
259
+ def list_onboarding_clients(request_options: {}, **params)
260
+ params = Voltaria::Internal::Types::Utils.normalize_keys(params)
261
+ query_param_names = %i[page page_size]
262
+ query_params = {}
263
+ query_params["page"] = params[:page] if params.key?(:page)
264
+ query_params["page_size"] = params[:page_size] if params.key?(:page_size)
265
+ params.except(*query_param_names)
266
+
267
+ request = Voltaria::Internal::JSON::Request.new(
268
+ base_url: request_options[:base_url],
269
+ method: "GET",
270
+ path: "v2/clients/onboarding",
271
+ query: query_params,
272
+ request_options: request_options
273
+ )
274
+ begin
275
+ response = @client.send(request)
276
+ rescue Net::HTTPRequestTimeout
277
+ raise Voltaria::Errors::TimeoutError
278
+ end
279
+ code = response.code.to_i
280
+ if code.between?(200, 299)
281
+ Voltaria::Types::PaginatedResponseClientResponse.load(response.body)
282
+ else
283
+ error_class = Voltaria::Errors::ResponseError.subclass_for_code(code)
284
+ raise error_class.new(response.body, code: code)
285
+ end
286
+ end
287
+
288
+ # Accept a self-onboarded client. The client status moves to 'pending' and the owner's portal account is activated
289
+ # so they can begin submitting documents.
290
+ #
291
+ # @param request_options [Hash]
292
+ # @param params [Hash]
293
+ # @option request_options [String] :base_url
294
+ # @option request_options [Hash{String => Object}] :additional_headers
295
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
296
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
297
+ # @option request_options [Integer] :timeout_in_seconds
298
+ # @option params [String] :client_id
299
+ #
300
+ # @return [Voltaria::Types::ClientResponse]
301
+ def approve_onboarding(request_options: {}, **params)
302
+ params = Voltaria::Internal::Types::Utils.normalize_keys(params)
303
+ request = Voltaria::Internal::JSON::Request.new(
304
+ base_url: request_options[:base_url],
305
+ method: "POST",
306
+ path: "v2/clients/onboarding/#{URI.encode_uri_component(params[:client_id].to_s)}/approve",
307
+ request_options: request_options
308
+ )
309
+ begin
310
+ response = @client.send(request)
311
+ rescue Net::HTTPRequestTimeout
312
+ raise Voltaria::Errors::TimeoutError
313
+ end
314
+ code = response.code.to_i
315
+ if code.between?(200, 299)
316
+ Voltaria::Types::ClientResponse.load(response.body)
317
+ else
318
+ error_class = Voltaria::Errors::ResponseError.subclass_for_code(code)
319
+ raise error_class.new(response.body, code: code)
320
+ end
321
+ end
322
+
323
+ # Reject a self-onboarded client. The client record is kept with 'rejected' status for audit history and is not
324
+ # deleted.
325
+ #
326
+ # @param request_options [Hash]
327
+ # @param params [Hash]
328
+ # @option request_options [String] :base_url
329
+ # @option request_options [Hash{String => Object}] :additional_headers
330
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
331
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
332
+ # @option request_options [Integer] :timeout_in_seconds
333
+ # @option params [String] :client_id
334
+ #
335
+ # @return [Voltaria::Types::ClientResponse]
336
+ def reject_onboarding(request_options: {}, **params)
337
+ params = Voltaria::Internal::Types::Utils.normalize_keys(params)
338
+ request = Voltaria::Internal::JSON::Request.new(
339
+ base_url: request_options[:base_url],
340
+ method: "POST",
341
+ path: "v2/clients/onboarding/#{URI.encode_uri_component(params[:client_id].to_s)}/reject",
342
+ request_options: request_options
343
+ )
344
+ begin
345
+ response = @client.send(request)
346
+ rescue Net::HTTPRequestTimeout
347
+ raise Voltaria::Errors::TimeoutError
348
+ end
349
+ code = response.code.to_i
350
+ if code.between?(200, 299)
351
+ Voltaria::Types::ClientResponse.load(response.body)
352
+ else
353
+ error_class = Voltaria::Errors::ResponseError.subclass_for_code(code)
354
+ raise error_class.new(response.body, code: code)
355
+ end
356
+ end
357
+
358
+ # Invite a new user to a client's portal account. The invited user will receive an email with a one-time link to
359
+ # set their password. Partner can assign any role: 'owner', 'admin', or 'viewer'.
360
+ #
361
+ # @param request_options [Hash]
362
+ # @param params [Voltaria::Clients::Types::ClientUserInviteRequest]
363
+ # @option request_options [String] :base_url
364
+ # @option request_options [Hash{String => Object}] :additional_headers
365
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
366
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
367
+ # @option request_options [Integer] :timeout_in_seconds
368
+ # @option params [String] :client_id
369
+ #
370
+ # @return [Voltaria::Types::ClientUserResponse]
371
+ def add_client_portal_user(request_options: {}, **params)
372
+ params = Voltaria::Internal::Types::Utils.normalize_keys(params)
373
+ request_data = Voltaria::Clients::Types::ClientUserInviteRequest.new(params).to_h
374
+ non_body_param_names = ["client_id"]
375
+ body = request_data.except(*non_body_param_names)
376
+
377
+ request = Voltaria::Internal::JSON::Request.new(
378
+ base_url: request_options[:base_url],
379
+ method: "POST",
380
+ path: "v2/clients/#{URI.encode_uri_component(params[:client_id].to_s)}/users",
381
+ body: body,
382
+ request_options: request_options
383
+ )
384
+ begin
385
+ response = @client.send(request)
386
+ rescue Net::HTTPRequestTimeout
387
+ raise Voltaria::Errors::TimeoutError
388
+ end
389
+ code = response.code.to_i
390
+ if code.between?(200, 299)
391
+ Voltaria::Types::ClientUserResponse.load(response.body)
392
+ else
393
+ error_class = Voltaria::Errors::ResponseError.subclass_for_code(code)
394
+ raise error_class.new(response.body, code: code)
395
+ end
396
+ end
397
+
398
+ # Retrieve all waivers associated with a specific client.
399
+ #
400
+ # @param request_options [Hash]
401
+ # @param params [Hash]
402
+ # @option request_options [String] :base_url
403
+ # @option request_options [Hash{String => Object}] :additional_headers
404
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
405
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
406
+ # @option request_options [Integer] :timeout_in_seconds
407
+ # @option params [String] :client_id
408
+ # @option params [Integer, nil] :page
409
+ # @option params [Integer, nil] :page_size
410
+ # @option params [String, nil] :order_by
411
+ # @option params [String, nil] :q
412
+ #
413
+ # @return [Voltaria::Types::PaginatedResponseWaiverResponse]
414
+ def list_client_waivers(request_options: {}, **params)
415
+ params = Voltaria::Internal::Types::Utils.normalize_keys(params)
416
+ query_param_names = %i[page page_size order_by q]
417
+ query_params = {}
418
+ query_params["page"] = params[:page] if params.key?(:page)
419
+ query_params["page_size"] = params[:page_size] if params.key?(:page_size)
420
+ query_params["order_by"] = params[:order_by] if params.key?(:order_by)
421
+ query_params["q"] = params[:q] if params.key?(:q)
422
+ params = params.except(*query_param_names)
423
+
424
+ request = Voltaria::Internal::JSON::Request.new(
425
+ base_url: request_options[:base_url],
426
+ method: "GET",
427
+ path: "v2/clients/#{URI.encode_uri_component(params[:client_id].to_s)}/waivers",
428
+ query: query_params,
429
+ request_options: request_options
430
+ )
431
+ begin
432
+ response = @client.send(request)
433
+ rescue Net::HTTPRequestTimeout
434
+ raise Voltaria::Errors::TimeoutError
435
+ end
436
+ code = response.code.to_i
437
+ if code.between?(200, 299)
438
+ Voltaria::Types::PaginatedResponseWaiverResponse.load(response.body)
439
+ else
440
+ error_class = Voltaria::Errors::ResponseError.subclass_for_code(code)
441
+ raise error_class.new(response.body, code: code)
442
+ end
443
+ end
444
+
445
+ # Retrieve detailed information for a specific client using their client ID.
446
+ #
447
+ # @param request_options [Hash]
448
+ # @param params [Hash]
449
+ # @option request_options [String] :base_url
450
+ # @option request_options [Hash{String => Object}] :additional_headers
451
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
452
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
453
+ # @option request_options [Integer] :timeout_in_seconds
454
+ # @option params [String] :client_id
455
+ #
456
+ # @return [Voltaria::Types::ClientResponse]
457
+ def get_client_by_id(request_options: {}, **params)
458
+ params = Voltaria::Internal::Types::Utils.normalize_keys(params)
459
+ request = Voltaria::Internal::JSON::Request.new(
460
+ base_url: request_options[:base_url],
461
+ method: "GET",
462
+ path: "v2/clients/#{URI.encode_uri_component(params[:client_id].to_s)}",
463
+ request_options: request_options
464
+ )
465
+ begin
466
+ response = @client.send(request)
467
+ rescue Net::HTTPRequestTimeout
468
+ raise Voltaria::Errors::TimeoutError
469
+ end
470
+ code = response.code.to_i
471
+ if code.between?(200, 299)
472
+ Voltaria::Types::ClientResponse.load(response.body)
473
+ else
474
+ error_class = Voltaria::Errors::ResponseError.subclass_for_code(code)
475
+ raise error_class.new(response.body, code: code)
476
+ end
477
+ end
478
+
479
+ # Delete a client by ID. Only clients with 'pending' status can be deleted. All client's loans must also be in
480
+ # 'pending' status.
481
+ #
482
+ # @param request_options [Hash]
483
+ # @param params [Hash]
484
+ # @option request_options [String] :base_url
485
+ # @option request_options [Hash{String => Object}] :additional_headers
486
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
487
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
488
+ # @option request_options [Integer] :timeout_in_seconds
489
+ # @option params [String] :client_id
490
+ #
491
+ # @return [Hash[String, Object], nil]
492
+ def delete_client(request_options: {}, **params)
493
+ params = Voltaria::Internal::Types::Utils.normalize_keys(params)
494
+ request = Voltaria::Internal::JSON::Request.new(
495
+ base_url: request_options[:base_url],
496
+ method: "DELETE",
497
+ path: "v2/clients/#{URI.encode_uri_component(params[:client_id].to_s)}",
498
+ request_options: request_options
499
+ )
500
+ begin
501
+ response = @client.send(request)
502
+ rescue Net::HTTPRequestTimeout
503
+ raise Voltaria::Errors::TimeoutError
504
+ end
505
+ code = response.code.to_i
506
+ return if code.between?(200, 299)
507
+
508
+ error_class = Voltaria::Errors::ResponseError.subclass_for_code(code)
509
+ raise error_class.new(response.body, code: code)
510
+ end
511
+
512
+ # Retrieve the checklist summaries for one of your clients, including the AI description and item completion
513
+ # counts.
514
+ #
515
+ # @param request_options [Hash]
516
+ # @param params [Hash]
517
+ # @option request_options [String] :base_url
518
+ # @option request_options [Hash{String => Object}] :additional_headers
519
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
520
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
521
+ # @option request_options [Integer] :timeout_in_seconds
522
+ # @option params [String] :client_id
523
+ # @option params [Integer, nil] :page
524
+ # @option params [Integer, nil] :page_size
525
+ #
526
+ # @return [Voltaria::Types::PaginatedResponseChecklistSummaryPartnerResponse]
527
+ def list_client_checklist_summaries(request_options: {}, **params)
528
+ params = Voltaria::Internal::Types::Utils.normalize_keys(params)
529
+ query_param_names = %i[page page_size]
530
+ query_params = {}
531
+ query_params["page"] = params[:page] if params.key?(:page)
532
+ query_params["page_size"] = params[:page_size] if params.key?(:page_size)
533
+ params = params.except(*query_param_names)
534
+
535
+ request = Voltaria::Internal::JSON::Request.new(
536
+ base_url: request_options[:base_url],
537
+ method: "GET",
538
+ path: "v2/clients/#{URI.encode_uri_component(params[:client_id].to_s)}/checklist-summaries",
539
+ query: query_params,
540
+ request_options: request_options
541
+ )
542
+ begin
543
+ response = @client.send(request)
544
+ rescue Net::HTTPRequestTimeout
545
+ raise Voltaria::Errors::TimeoutError
546
+ end
547
+ code = response.code.to_i
548
+ if code.between?(200, 299)
549
+ Voltaria::Types::PaginatedResponseChecklistSummaryPartnerResponse.load(response.body)
550
+ else
551
+ error_class = Voltaria::Errors::ResponseError.subclass_for_code(code)
552
+ raise error_class.new(response.body, code: code)
553
+ end
554
+ end
555
+ end
556
+ end
557
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Voltaria
4
+ module Clients
5
+ module Types
6
+ class ApproveOnboardingRequest < Internal::Types::Model
7
+ field :client_id, -> { String }, optional: false, nullable: false
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Voltaria
4
+ module Clients
5
+ module Types
6
+ class ClientCreatePayload < Internal::Types::Model
7
+ field :correlation_id, -> { String }, optional: true, nullable: false
8
+ field :name, -> { String }, optional: false, nullable: false
9
+ field :type, -> { Voltaria::Types::ClientTypeEnum }, optional: true, nullable: false
10
+ field :jurisdiction, -> { Voltaria::Types::JurisdictionEnum }, optional: false, nullable: false
11
+ field :company_number, -> { String }, optional: true, nullable: false
12
+ field :data, -> { Internal::Types::Hash[String, Object] }, optional: true, nullable: false
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Voltaria
4
+ module Clients
5
+ module Types
6
+ class ClientDataCreatePayload < Internal::Types::Model
7
+ field :client_id, -> { String }, optional: false, nullable: false
8
+ field :data, -> { Internal::Types::Hash[String, Object] }, optional: false, nullable: false
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Voltaria
4
+ module Clients
5
+ module Types
6
+ class ClientUserInviteRequest < Internal::Types::Model
7
+ field :client_id, -> { String }, optional: false, nullable: false
8
+ field :first_name, -> { String }, optional: false, nullable: false
9
+ field :last_name, -> { String }, optional: false, nullable: false
10
+ field :email, -> { String }, optional: false, nullable: false
11
+ field :phone, -> { String }, optional: true, nullable: false
12
+ field :role_type, -> { String }, optional: false, nullable: false
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Voltaria
4
+ module Clients
5
+ module Types
6
+ class DeleteClientRequest < Internal::Types::Model
7
+ field :client_id, -> { String }, optional: false, nullable: false
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Voltaria
4
+ module Clients
5
+ module Types
6
+ class GetClientByIDRequest < Internal::Types::Model
7
+ field :client_id, -> { String }, optional: false, nullable: false
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Voltaria
4
+ module Clients
5
+ module Types
6
+ class GetLimitRequestRequest < Internal::Types::Model
7
+ field :request_id, -> { String }, optional: false, nullable: false
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Voltaria
4
+ module Clients
5
+ module Types
6
+ class LimitRequestCreatePayload < Internal::Types::Model
7
+ field :client_id, -> { String }, optional: false, nullable: false
8
+ field :requested_limit, -> { Voltaria::Clients::Types::LimitRequestCreatePayloadRequestedLimit }, optional: false, nullable: false
9
+ field :reason, -> { String }, optional: false, nullable: false
10
+ field :waiver_request, -> { Internal::Types::Boolean }, optional: true, nullable: false
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Voltaria
4
+ module Clients
5
+ module Types
6
+ # The requested credit limit amount
7
+ class LimitRequestCreatePayloadRequestedLimit < Internal::Types::Model
8
+ extend Voltaria::Internal::Types::Union
9
+
10
+ member -> { Integer }
11
+ member -> { String }
12
+ end
13
+ end
14
+ end
15
+ end