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.
- checksums.yaml +7 -0
- data/.rubocop.yml +69 -0
- data/README.md +202 -0
- data/Rakefile +20 -0
- data/custom.gemspec.rb +16 -0
- data/lib/voltaria/accounts/client.rb +168 -0
- data/lib/voltaria/accounts/types/get_client_account_request.rb +12 -0
- data/lib/voltaria/accounts/types/list_client_account_fields_request.rb +11 -0
- data/lib/voltaria/accounts/types/list_client_accounts_request.rb +14 -0
- data/lib/voltaria/accounts/types/partner_client_account_create_request.rb +23 -0
- data/lib/voltaria/accounts/types/partner_client_account_create_request_status.rb +14 -0
- data/lib/voltaria/client.rb +74 -0
- data/lib/voltaria/clients/client.rb +557 -0
- data/lib/voltaria/clients/types/approve_onboarding_request.rb +11 -0
- data/lib/voltaria/clients/types/client_create_payload.rb +16 -0
- data/lib/voltaria/clients/types/client_data_create_payload.rb +12 -0
- data/lib/voltaria/clients/types/client_user_invite_request.rb +16 -0
- data/lib/voltaria/clients/types/delete_client_request.rb +11 -0
- data/lib/voltaria/clients/types/get_client_by_id_request.rb +11 -0
- data/lib/voltaria/clients/types/get_limit_request_request.rb +11 -0
- data/lib/voltaria/clients/types/limit_request_create_payload.rb +14 -0
- data/lib/voltaria/clients/types/limit_request_create_payload_requested_limit.rb +15 -0
- data/lib/voltaria/clients/types/list_client_checklist_summaries_request.rb +13 -0
- data/lib/voltaria/clients/types/list_client_waivers_request.rb +15 -0
- data/lib/voltaria/clients/types/list_clients_request.rb +14 -0
- data/lib/voltaria/clients/types/list_limit_requests_request.rb +15 -0
- data/lib/voltaria/clients/types/list_onboarding_clients_request.rb +12 -0
- data/lib/voltaria/clients/types/reject_onboarding_request.rb +11 -0
- data/lib/voltaria/documents/client.rb +221 -0
- data/lib/voltaria/documents/types/delete_document_request.rb +11 -0
- data/lib/voltaria/documents/types/document_create_payload.rb +14 -0
- data/lib/voltaria/documents/types/get_document_by_id_request.rb +11 -0
- data/lib/voltaria/documents/types/list_documents_request.rb +18 -0
- data/lib/voltaria/drawdowns/client.rb +141 -0
- data/lib/voltaria/drawdowns/types/drawdown_create_payload.rb +12 -0
- data/lib/voltaria/drawdowns/types/drawdown_create_payload_amount.rb +15 -0
- data/lib/voltaria/drawdowns/types/list_drawdown_checklists_request.rb +15 -0
- data/lib/voltaria/drawdowns/types/list_drawdowns_request.rb +14 -0
- data/lib/voltaria/environment.rb +8 -0
- data/lib/voltaria/errors/api_error.rb +8 -0
- data/lib/voltaria/errors/client_error.rb +17 -0
- data/lib/voltaria/errors/redirect_error.rb +8 -0
- data/lib/voltaria/errors/response_error.rb +42 -0
- data/lib/voltaria/errors/server_error.rb +11 -0
- data/lib/voltaria/errors/timeout_error.rb +8 -0
- data/lib/voltaria/installments/client.rb +292 -0
- data/lib/voltaria/installments/types/delete_installment_request.rb +11 -0
- data/lib/voltaria/installments/types/get_installment_by_id_request.rb +11 -0
- data/lib/voltaria/installments/types/installment_create_payload.rb +12 -0
- data/lib/voltaria/installments/types/installment_edit_payload.rb +13 -0
- data/lib/voltaria/installments/types/installment_edit_payload_amount.rb +15 -0
- data/lib/voltaria/installments/types/list_installments_request.rb +16 -0
- data/lib/voltaria/installments/types/list_payment_promises_request.rb +16 -0
- data/lib/voltaria/installments/types/payment_promise_create_payload.rb +14 -0
- data/lib/voltaria/installments/types/payment_promise_create_payload_amount.rb +15 -0
- data/lib/voltaria/internal/errors/constraint_error.rb +10 -0
- data/lib/voltaria/internal/errors/type_error.rb +10 -0
- data/lib/voltaria/internal/http/base_request.rb +51 -0
- data/lib/voltaria/internal/http/raw_client.rb +214 -0
- data/lib/voltaria/internal/iterators/cursor_item_iterator.rb +28 -0
- data/lib/voltaria/internal/iterators/cursor_page_iterator.rb +51 -0
- data/lib/voltaria/internal/iterators/item_iterator.rb +59 -0
- data/lib/voltaria/internal/iterators/offset_item_iterator.rb +30 -0
- data/lib/voltaria/internal/iterators/offset_page_iterator.rb +83 -0
- data/lib/voltaria/internal/json/request.rb +41 -0
- data/lib/voltaria/internal/json/serializable.rb +25 -0
- data/lib/voltaria/internal/multipart/multipart_encoder.rb +141 -0
- data/lib/voltaria/internal/multipart/multipart_form_data.rb +78 -0
- data/lib/voltaria/internal/multipart/multipart_form_data_part.rb +51 -0
- data/lib/voltaria/internal/multipart/multipart_request.rb +40 -0
- data/lib/voltaria/internal/types/array.rb +47 -0
- data/lib/voltaria/internal/types/boolean.rb +34 -0
- data/lib/voltaria/internal/types/enum.rb +56 -0
- data/lib/voltaria/internal/types/hash.rb +36 -0
- data/lib/voltaria/internal/types/model/field.rb +38 -0
- data/lib/voltaria/internal/types/model.rb +208 -0
- data/lib/voltaria/internal/types/type.rb +35 -0
- data/lib/voltaria/internal/types/union.rb +161 -0
- data/lib/voltaria/internal/types/unknown.rb +15 -0
- data/lib/voltaria/internal/types/utils.rb +116 -0
- data/lib/voltaria/investors/client.rb +312 -0
- data/lib/voltaria/investors/types/investor_get_client_request.rb +11 -0
- data/lib/voltaria/investors/types/investor_get_installment_request.rb +11 -0
- data/lib/voltaria/investors/types/investor_get_loan_request.rb +11 -0
- data/lib/voltaria/investors/types/investor_list_clients_request.rb +14 -0
- data/lib/voltaria/investors/types/investor_list_installments_request.rb +16 -0
- data/lib/voltaria/investors/types/investor_list_loans_request.rb +15 -0
- data/lib/voltaria/investors/types/investor_list_repayments_request.rb +17 -0
- data/lib/voltaria/loans/client.rb +271 -0
- data/lib/voltaria/loans/types/bulk_loan_create_payload.rb +11 -0
- data/lib/voltaria/loans/types/delete_loan_request.rb +11 -0
- data/lib/voltaria/loans/types/get_bulk_loan_status_request.rb +11 -0
- data/lib/voltaria/loans/types/get_loan_by_id_request.rb +11 -0
- data/lib/voltaria/loans/types/list_loans_request.rb +15 -0
- data/lib/voltaria/loans/types/loan_create_payload.rb +17 -0
- data/lib/voltaria/loans/types/loan_create_payload_amount.rb +15 -0
- data/lib/voltaria/loans/types/loan_default_payload.rb +13 -0
- data/lib/voltaria/loans/types/loan_default_payload_sold_amount.rb +15 -0
- data/lib/voltaria/partners/client.rb +129 -0
- data/lib/voltaria/partners/types/list_partner_waterfalls_request.rb +14 -0
- data/lib/voltaria/partners/types/partner_data_create_payload.rb +11 -0
- data/lib/voltaria/prefix_routing.rb +80 -0
- data/lib/voltaria/repayments/client.rb +183 -0
- data/lib/voltaria/repayments/types/bulk_repayment_create_payload.rb +11 -0
- data/lib/voltaria/repayments/types/get_bulk_repayment_status_request.rb +11 -0
- data/lib/voltaria/repayments/types/list_repayment_logs_request.rb +17 -0
- data/lib/voltaria/repayments/types/repayment_create_payload.rb +17 -0
- data/lib/voltaria/repayments/types/repayment_create_payload_amount.rb +15 -0
- data/lib/voltaria/sandbox/client.rb +124 -0
- data/lib/voltaria/sandbox/types/client_update_sandbox.rb +13 -0
- data/lib/voltaria/sandbox/types/client_update_sandbox_limit.rb +15 -0
- data/lib/voltaria/sandbox/types/loan_update_sandbox.rb +12 -0
- data/lib/voltaria/sandbox/types/webhook_test_sandbox.rb +12 -0
- data/lib/voltaria/types/account_address.rb +14 -0
- data/lib/voltaria/types/account_holder_type_enum.rb +12 -0
- data/lib/voltaria/types/account_status_enum.rb +13 -0
- data/lib/voltaria/types/available_document_categories_response.rb +9 -0
- data/lib/voltaria/types/available_funding.rb +15 -0
- data/lib/voltaria/types/bulk_loan_item_payload.rb +15 -0
- data/lib/voltaria/types/bulk_loan_item_payload_amount.rb +13 -0
- data/lib/voltaria/types/bulk_loan_item_result.rb +15 -0
- data/lib/voltaria/types/bulk_loan_result.rb +13 -0
- data/lib/voltaria/types/bulk_loan_task_response.rb +11 -0
- data/lib/voltaria/types/bulk_loan_task_status.rb +14 -0
- data/lib/voltaria/types/bulk_repayment_item_payload.rb +15 -0
- data/lib/voltaria/types/bulk_repayment_item_payload_amount.rb +13 -0
- data/lib/voltaria/types/bulk_repayment_item_result.rb +15 -0
- data/lib/voltaria/types/bulk_repayment_result.rb +13 -0
- data/lib/voltaria/types/bulk_repayment_task_response.rb +11 -0
- data/lib/voltaria/types/bulk_repayment_task_status.rb +14 -0
- data/lib/voltaria/types/checklist_summary_partner_response.rb +14 -0
- data/lib/voltaria/types/checklist_type_enum.rb +12 -0
- data/lib/voltaria/types/client_account_response.rb +21 -0
- data/lib/voltaria/types/client_base_info.rb +13 -0
- data/lib/voltaria/types/client_data_response.rb +12 -0
- data/lib/voltaria/types/client_investor_response.rb +17 -0
- data/lib/voltaria/types/client_limit_response.rb +16 -0
- data/lib/voltaria/types/client_response.rb +19 -0
- data/lib/voltaria/types/client_status_enum.rb +18 -0
- data/lib/voltaria/types/client_type_enum.rb +12 -0
- data/lib/voltaria/types/client_user_response.rb +24 -0
- data/lib/voltaria/types/client_user_status_enum.rb +13 -0
- data/lib/voltaria/types/currency_enum.rb +16 -0
- data/lib/voltaria/types/currency_field_spec.rb +10 -0
- data/lib/voltaria/types/document_response.rb +20 -0
- data/lib/voltaria/types/drawdown_checklist_response.rb +16 -0
- data/lib/voltaria/types/drawdown_response.rb +15 -0
- data/lib/voltaria/types/drawdown_status_enum.rb +13 -0
- data/lib/voltaria/types/http_validation_error.rb +9 -0
- data/lib/voltaria/types/installment_response.rb +24 -0
- data/lib/voltaria/types/installment_response_with_client_info.rb +25 -0
- data/lib/voltaria/types/installment_status_enum.rb +19 -0
- data/lib/voltaria/types/jurisdiction_enum.rb +13 -0
- data/lib/voltaria/types/kyc_status_enum.rb +14 -0
- data/lib/voltaria/types/limit_request_response.rb +16 -0
- data/lib/voltaria/types/limit_request_status_enum.rb +13 -0
- data/lib/voltaria/types/loan_installment_create_payload.rb +10 -0
- data/lib/voltaria/types/loan_installment_create_payload_amount.rb +13 -0
- data/lib/voltaria/types/loan_installment_response.rb +15 -0
- data/lib/voltaria/types/loan_investor_response.rb +27 -0
- data/lib/voltaria/types/loan_payment_status_enum.rb +12 -0
- data/lib/voltaria/types/loan_response_with_client_info.rb +26 -0
- data/lib/voltaria/types/loan_response_with_installments.rb +26 -0
- data/lib/voltaria/types/loan_status_enum.rb +21 -0
- data/lib/voltaria/types/paginated_response_checklist_summary_partner_response.rb +16 -0
- data/lib/voltaria/types/paginated_response_client_account_response.rb +16 -0
- data/lib/voltaria/types/paginated_response_client_investor_response.rb +16 -0
- data/lib/voltaria/types/paginated_response_client_response.rb +16 -0
- data/lib/voltaria/types/paginated_response_document_response.rb +16 -0
- data/lib/voltaria/types/paginated_response_drawdown_checklist_response.rb +16 -0
- data/lib/voltaria/types/paginated_response_drawdown_response.rb +16 -0
- data/lib/voltaria/types/paginated_response_installment_response_with_client_info.rb +16 -0
- data/lib/voltaria/types/paginated_response_limit_request_response.rb +16 -0
- data/lib/voltaria/types/paginated_response_loan_investor_response.rb +16 -0
- data/lib/voltaria/types/paginated_response_loan_response_with_client_info.rb +16 -0
- data/lib/voltaria/types/paginated_response_payment_promise_response.rb +16 -0
- data/lib/voltaria/types/paginated_response_repayment_response_with_client_info.rb +16 -0
- data/lib/voltaria/types/paginated_response_waiver_response.rb +16 -0
- data/lib/voltaria/types/paginated_response_waterfall_response.rb +16 -0
- data/lib/voltaria/types/paginated_response_webhook_log_response.rb +16 -0
- data/lib/voltaria/types/paginated_response_webhook_subscription_response.rb +16 -0
- data/lib/voltaria/types/partner_data_response.rb +11 -0
- data/lib/voltaria/types/payment_promise_response.rb +19 -0
- data/lib/voltaria/types/payment_promise_status_enum.rb +14 -0
- data/lib/voltaria/types/repayment_response.rb +21 -0
- data/lib/voltaria/types/repayment_response_with_client_info.rb +22 -0
- data/lib/voltaria/types/role_response.rb +11 -0
- data/lib/voltaria/types/validation_error.rb +13 -0
- data/lib/voltaria/types/validation_error_loc_item.rb +12 -0
- data/lib/voltaria/types/waiver_response.rb +18 -0
- data/lib/voltaria/types/waiver_status_enum.rb +14 -0
- data/lib/voltaria/types/waterfall_response.rb +19 -0
- data/lib/voltaria/types/waterfall_status_enum.rb +12 -0
- data/lib/voltaria/types/webhook_event_type_enum.rb +15 -0
- data/lib/voltaria/types/webhook_log_response.rb +19 -0
- data/lib/voltaria/types/webhook_log_response_request_body.rb +13 -0
- data/lib/voltaria/types/webhook_status_enum.rb +13 -0
- data/lib/voltaria/types/webhook_subscription_response.rb +17 -0
- data/lib/voltaria/version.rb +5 -0
- data/lib/voltaria/webhooks/client.rb +241 -0
- data/lib/voltaria/webhooks/types/delete_webhook_subscription_request.rb +11 -0
- data/lib/voltaria/webhooks/types/get_webhook_subscription_request.rb +11 -0
- data/lib/voltaria/webhooks/types/list_webhook_logs_request.rb +13 -0
- data/lib/voltaria/webhooks/types/list_webhook_subscriptions_request.rb +13 -0
- data/lib/voltaria/webhooks/types/webhook_create_payload.rb +16 -0
- data/lib/voltaria/webhooks/types/webhook_update_payload.rb +17 -0
- data/lib/voltaria.rb +205 -0
- data/reference.md +5135 -0
- metadata +250 -0
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Voltaria
|
|
4
|
+
module Clients
|
|
5
|
+
module Types
|
|
6
|
+
class ListClientChecklistSummariesRequest < Internal::Types::Model
|
|
7
|
+
field :client_id, -> { String }, optional: false, nullable: false
|
|
8
|
+
field :page, -> { Integer }, optional: true, nullable: false
|
|
9
|
+
field :page_size, -> { Integer }, optional: true, nullable: false
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Voltaria
|
|
4
|
+
module Clients
|
|
5
|
+
module Types
|
|
6
|
+
class ListClientWaiversRequest < Internal::Types::Model
|
|
7
|
+
field :client_id, -> { String }, optional: false, nullable: false
|
|
8
|
+
field :page, -> { Integer }, optional: true, nullable: false
|
|
9
|
+
field :page_size, -> { Integer }, optional: true, nullable: false
|
|
10
|
+
field :order_by, -> { String }, optional: true, nullable: false
|
|
11
|
+
field :q, -> { String }, optional: true, nullable: false
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Voltaria
|
|
4
|
+
module Clients
|
|
5
|
+
module Types
|
|
6
|
+
class ListClientsRequest < Internal::Types::Model
|
|
7
|
+
field :page, -> { Integer }, optional: true, nullable: false
|
|
8
|
+
field :page_size, -> { Integer }, optional: true, nullable: false
|
|
9
|
+
field :order_by, -> { String }, optional: true, nullable: false
|
|
10
|
+
field :q, -> { String }, 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
|
+
class ListLimitRequestsRequest < Internal::Types::Model
|
|
7
|
+
field :client_id, -> { String }, optional: true, nullable: false
|
|
8
|
+
field :page, -> { Integer }, optional: true, nullable: false
|
|
9
|
+
field :page_size, -> { Integer }, optional: true, nullable: false
|
|
10
|
+
field :order_by, -> { String }, optional: true, nullable: false
|
|
11
|
+
field :q, -> { String }, optional: true, nullable: false
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Voltaria
|
|
4
|
+
module Clients
|
|
5
|
+
module Types
|
|
6
|
+
class ListOnboardingClientsRequest < Internal::Types::Model
|
|
7
|
+
field :page, -> { Integer }, optional: true, nullable: false
|
|
8
|
+
field :page_size, -> { Integer }, optional: true, nullable: false
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Voltaria
|
|
4
|
+
module Documents
|
|
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 all documents linked to a client.
|
|
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 [String, nil] :client_id
|
|
23
|
+
# @option params [String, nil] :loan_id
|
|
24
|
+
# @option params [String, nil] :installment_id
|
|
25
|
+
# @option params [String, nil] :waterfall_id
|
|
26
|
+
# @option params [Integer, nil] :page
|
|
27
|
+
# @option params [Integer, nil] :page_size
|
|
28
|
+
# @option params [String, nil] :order_by
|
|
29
|
+
# @option params [String, nil] :q
|
|
30
|
+
#
|
|
31
|
+
# @return [Voltaria::Types::PaginatedResponseDocumentResponse]
|
|
32
|
+
def list_documents(request_options: {}, **params)
|
|
33
|
+
params = Voltaria::Internal::Types::Utils.normalize_keys(params)
|
|
34
|
+
query_param_names = %i[client_id loan_id installment_id waterfall_id page page_size order_by q]
|
|
35
|
+
query_params = {}
|
|
36
|
+
query_params["client_id"] = params[:client_id] if params.key?(:client_id)
|
|
37
|
+
query_params["loan_id"] = params[:loan_id] if params.key?(:loan_id)
|
|
38
|
+
query_params["installment_id"] = params[:installment_id] if params.key?(:installment_id)
|
|
39
|
+
query_params["waterfall_id"] = params[:waterfall_id] if params.key?(:waterfall_id)
|
|
40
|
+
query_params["page"] = params[:page] if params.key?(:page)
|
|
41
|
+
query_params["page_size"] = params[:page_size] if params.key?(:page_size)
|
|
42
|
+
query_params["order_by"] = params[:order_by] if params.key?(:order_by)
|
|
43
|
+
query_params["q"] = params[:q] if params.key?(:q)
|
|
44
|
+
params.except(*query_param_names)
|
|
45
|
+
|
|
46
|
+
request = Voltaria::Internal::JSON::Request.new(
|
|
47
|
+
base_url: request_options[:base_url],
|
|
48
|
+
method: "GET",
|
|
49
|
+
path: "v2/documents",
|
|
50
|
+
query: query_params,
|
|
51
|
+
request_options: request_options
|
|
52
|
+
)
|
|
53
|
+
begin
|
|
54
|
+
response = @client.send(request)
|
|
55
|
+
rescue Net::HTTPRequestTimeout
|
|
56
|
+
raise Voltaria::Errors::TimeoutError
|
|
57
|
+
end
|
|
58
|
+
code = response.code.to_i
|
|
59
|
+
if code.between?(200, 299)
|
|
60
|
+
Voltaria::Types::PaginatedResponseDocumentResponse.load(response.body)
|
|
61
|
+
else
|
|
62
|
+
error_class = Voltaria::Errors::ResponseError.subclass_for_code(code)
|
|
63
|
+
raise error_class.new(response.body, code: code)
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
# Upload a new document related to a client or loan, such as financial statements or KYC files.
|
|
68
|
+
#
|
|
69
|
+
# @param request_options [Hash]
|
|
70
|
+
# @param params [void]
|
|
71
|
+
# @option request_options [String] :base_url
|
|
72
|
+
# @option request_options [Hash{String => Object}] :additional_headers
|
|
73
|
+
# @option request_options [Hash{String => Object}] :additional_query_parameters
|
|
74
|
+
# @option request_options [Hash{String => Object}] :additional_body_parameters
|
|
75
|
+
# @option request_options [Integer] :timeout_in_seconds
|
|
76
|
+
# @option params [String, nil] :client_id
|
|
77
|
+
# @option params [String, nil] :loan_id
|
|
78
|
+
# @option params [String, nil] :installment_id
|
|
79
|
+
# @option params [String, nil] :waterfall_id
|
|
80
|
+
#
|
|
81
|
+
# @return [Voltaria::Types::DocumentResponse]
|
|
82
|
+
def upload_document(request_options: {}, **params)
|
|
83
|
+
params = Voltaria::Internal::Types::Utils.normalize_keys(params)
|
|
84
|
+
body = Internal::Multipart::FormData.new
|
|
85
|
+
|
|
86
|
+
if params[:category]
|
|
87
|
+
body.add(
|
|
88
|
+
name: "category",
|
|
89
|
+
value: params[:category]
|
|
90
|
+
)
|
|
91
|
+
end
|
|
92
|
+
if params[:file_name]
|
|
93
|
+
body.add(
|
|
94
|
+
name: "file_name",
|
|
95
|
+
value: params[:file_name]
|
|
96
|
+
)
|
|
97
|
+
end
|
|
98
|
+
body.add_part(params[:file].to_form_data_part(name: "file")) if params[:file]
|
|
99
|
+
|
|
100
|
+
request = Voltaria::Internal::Multipart::Request.new(
|
|
101
|
+
base_url: request_options[:base_url],
|
|
102
|
+
method: "POST",
|
|
103
|
+
path: "v2/documents",
|
|
104
|
+
body: body,
|
|
105
|
+
request_options: request_options
|
|
106
|
+
)
|
|
107
|
+
begin
|
|
108
|
+
response = @client.send(request)
|
|
109
|
+
rescue Net::HTTPRequestTimeout
|
|
110
|
+
raise Voltaria::Errors::TimeoutError
|
|
111
|
+
end
|
|
112
|
+
code = response.code.to_i
|
|
113
|
+
if code.between?(200, 299)
|
|
114
|
+
Voltaria::Types::DocumentResponse.load(response.body)
|
|
115
|
+
else
|
|
116
|
+
error_class = Voltaria::Errors::ResponseError.subclass_for_code(code)
|
|
117
|
+
raise error_class.new(response.body, code: code)
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
# Retrieve all available document categories.
|
|
122
|
+
#
|
|
123
|
+
# @param request_options [Hash]
|
|
124
|
+
# @param params [Hash]
|
|
125
|
+
# @option request_options [String] :base_url
|
|
126
|
+
# @option request_options [Hash{String => Object}] :additional_headers
|
|
127
|
+
# @option request_options [Hash{String => Object}] :additional_query_parameters
|
|
128
|
+
# @option request_options [Hash{String => Object}] :additional_body_parameters
|
|
129
|
+
# @option request_options [Integer] :timeout_in_seconds
|
|
130
|
+
#
|
|
131
|
+
# @return [Voltaria::Types::AvailableDocumentCategoriesResponse]
|
|
132
|
+
def get_available_document_categories(request_options: {}, **params)
|
|
133
|
+
Voltaria::Internal::Types::Utils.normalize_keys(params)
|
|
134
|
+
request = Voltaria::Internal::JSON::Request.new(
|
|
135
|
+
base_url: request_options[:base_url],
|
|
136
|
+
method: "GET",
|
|
137
|
+
path: "v2/documents/available-categories",
|
|
138
|
+
request_options: request_options
|
|
139
|
+
)
|
|
140
|
+
begin
|
|
141
|
+
response = @client.send(request)
|
|
142
|
+
rescue Net::HTTPRequestTimeout
|
|
143
|
+
raise Voltaria::Errors::TimeoutError
|
|
144
|
+
end
|
|
145
|
+
code = response.code.to_i
|
|
146
|
+
if code.between?(200, 299)
|
|
147
|
+
Voltaria::Types::AvailableDocumentCategoriesResponse.load(response.body)
|
|
148
|
+
else
|
|
149
|
+
error_class = Voltaria::Errors::ResponseError.subclass_for_code(code)
|
|
150
|
+
raise error_class.new(response.body, code: code)
|
|
151
|
+
end
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
# Retrieve details for a specific document using its document ID.
|
|
155
|
+
#
|
|
156
|
+
# @param request_options [Hash]
|
|
157
|
+
# @param params [Hash]
|
|
158
|
+
# @option request_options [String] :base_url
|
|
159
|
+
# @option request_options [Hash{String => Object}] :additional_headers
|
|
160
|
+
# @option request_options [Hash{String => Object}] :additional_query_parameters
|
|
161
|
+
# @option request_options [Hash{String => Object}] :additional_body_parameters
|
|
162
|
+
# @option request_options [Integer] :timeout_in_seconds
|
|
163
|
+
# @option params [String] :document_id
|
|
164
|
+
#
|
|
165
|
+
# @return [Voltaria::Types::DocumentResponse]
|
|
166
|
+
def get_document_by_id(request_options: {}, **params)
|
|
167
|
+
params = Voltaria::Internal::Types::Utils.normalize_keys(params)
|
|
168
|
+
request = Voltaria::Internal::JSON::Request.new(
|
|
169
|
+
base_url: request_options[:base_url],
|
|
170
|
+
method: "GET",
|
|
171
|
+
path: "v2/documents/#{URI.encode_uri_component(params[:document_id].to_s)}",
|
|
172
|
+
request_options: request_options
|
|
173
|
+
)
|
|
174
|
+
begin
|
|
175
|
+
response = @client.send(request)
|
|
176
|
+
rescue Net::HTTPRequestTimeout
|
|
177
|
+
raise Voltaria::Errors::TimeoutError
|
|
178
|
+
end
|
|
179
|
+
code = response.code.to_i
|
|
180
|
+
if code.between?(200, 299)
|
|
181
|
+
Voltaria::Types::DocumentResponse.load(response.body)
|
|
182
|
+
else
|
|
183
|
+
error_class = Voltaria::Errors::ResponseError.subclass_for_code(code)
|
|
184
|
+
raise error_class.new(response.body, code: code)
|
|
185
|
+
end
|
|
186
|
+
end
|
|
187
|
+
|
|
188
|
+
# Delete a specific document by using its document ID.
|
|
189
|
+
#
|
|
190
|
+
# @param request_options [Hash]
|
|
191
|
+
# @param params [Hash]
|
|
192
|
+
# @option request_options [String] :base_url
|
|
193
|
+
# @option request_options [Hash{String => Object}] :additional_headers
|
|
194
|
+
# @option request_options [Hash{String => Object}] :additional_query_parameters
|
|
195
|
+
# @option request_options [Hash{String => Object}] :additional_body_parameters
|
|
196
|
+
# @option request_options [Integer] :timeout_in_seconds
|
|
197
|
+
# @option params [String] :document_id
|
|
198
|
+
#
|
|
199
|
+
# @return [untyped]
|
|
200
|
+
def delete_document(request_options: {}, **params)
|
|
201
|
+
params = Voltaria::Internal::Types::Utils.normalize_keys(params)
|
|
202
|
+
request = Voltaria::Internal::JSON::Request.new(
|
|
203
|
+
base_url: request_options[:base_url],
|
|
204
|
+
method: "DELETE",
|
|
205
|
+
path: "v2/documents/#{URI.encode_uri_component(params[:document_id].to_s)}",
|
|
206
|
+
request_options: request_options
|
|
207
|
+
)
|
|
208
|
+
begin
|
|
209
|
+
response = @client.send(request)
|
|
210
|
+
rescue Net::HTTPRequestTimeout
|
|
211
|
+
raise Voltaria::Errors::TimeoutError
|
|
212
|
+
end
|
|
213
|
+
code = response.code.to_i
|
|
214
|
+
return if code.between?(200, 299)
|
|
215
|
+
|
|
216
|
+
error_class = Voltaria::Errors::ResponseError.subclass_for_code(code)
|
|
217
|
+
raise error_class.new(response.body, code: code)
|
|
218
|
+
end
|
|
219
|
+
end
|
|
220
|
+
end
|
|
221
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Voltaria
|
|
4
|
+
module Documents
|
|
5
|
+
module Types
|
|
6
|
+
class DocumentCreatePayload < Internal::Types::Model
|
|
7
|
+
field :client_id, -> { String }, optional: true, nullable: false
|
|
8
|
+
field :loan_id, -> { String }, optional: true, nullable: false
|
|
9
|
+
field :installment_id, -> { String }, optional: true, nullable: false
|
|
10
|
+
field :waterfall_id, -> { String }, optional: true, nullable: false
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Voltaria
|
|
4
|
+
module Documents
|
|
5
|
+
module Types
|
|
6
|
+
class ListDocumentsRequest < Internal::Types::Model
|
|
7
|
+
field :client_id, -> { String }, optional: true, nullable: false
|
|
8
|
+
field :loan_id, -> { String }, optional: true, nullable: false
|
|
9
|
+
field :installment_id, -> { String }, optional: true, nullable: false
|
|
10
|
+
field :waterfall_id, -> { String }, optional: true, nullable: false
|
|
11
|
+
field :page, -> { Integer }, optional: true, nullable: false
|
|
12
|
+
field :page_size, -> { Integer }, optional: true, nullable: false
|
|
13
|
+
field :order_by, -> { String }, optional: true, nullable: false
|
|
14
|
+
field :q, -> { String }, optional: true, nullable: false
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Voltaria
|
|
4
|
+
module Drawdowns
|
|
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 drawdowns.
|
|
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::PaginatedResponseDrawdownResponse]
|
|
28
|
+
def list_drawdowns(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/drawdowns",
|
|
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::PaginatedResponseDrawdownResponse.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 drawdown request.
|
|
60
|
+
#
|
|
61
|
+
# @param request_options [Hash]
|
|
62
|
+
# @param params [Voltaria::Drawdowns::Types::DrawdownCreatePayload]
|
|
63
|
+
# @option request_options [String] :base_url
|
|
64
|
+
# @option request_options [Hash{String => Object}] :additional_headers
|
|
65
|
+
# @option request_options [Hash{String => Object}] :additional_query_parameters
|
|
66
|
+
# @option request_options [Hash{String => Object}] :additional_body_parameters
|
|
67
|
+
# @option request_options [Integer] :timeout_in_seconds
|
|
68
|
+
#
|
|
69
|
+
# @return [Voltaria::Types::DrawdownResponse]
|
|
70
|
+
def create_drawdown_request(request_options: {}, **params)
|
|
71
|
+
params = Voltaria::Internal::Types::Utils.normalize_keys(params)
|
|
72
|
+
request = Voltaria::Internal::JSON::Request.new(
|
|
73
|
+
base_url: request_options[:base_url],
|
|
74
|
+
method: "POST",
|
|
75
|
+
path: "v2/drawdowns",
|
|
76
|
+
body: Voltaria::Drawdowns::Types::DrawdownCreatePayload.new(params).to_h,
|
|
77
|
+
request_options: request_options
|
|
78
|
+
)
|
|
79
|
+
begin
|
|
80
|
+
response = @client.send(request)
|
|
81
|
+
rescue Net::HTTPRequestTimeout
|
|
82
|
+
raise Voltaria::Errors::TimeoutError
|
|
83
|
+
end
|
|
84
|
+
code = response.code.to_i
|
|
85
|
+
if code.between?(200, 299)
|
|
86
|
+
Voltaria::Types::DrawdownResponse.load(response.body)
|
|
87
|
+
else
|
|
88
|
+
error_class = Voltaria::Errors::ResponseError.subclass_for_code(code)
|
|
89
|
+
raise error_class.new(response.body, code: code)
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
# Retrieve all checklist items for a specific drawdown
|
|
94
|
+
#
|
|
95
|
+
# @param request_options [Hash]
|
|
96
|
+
# @param params [Hash]
|
|
97
|
+
# @option request_options [String] :base_url
|
|
98
|
+
# @option request_options [Hash{String => Object}] :additional_headers
|
|
99
|
+
# @option request_options [Hash{String => Object}] :additional_query_parameters
|
|
100
|
+
# @option request_options [Hash{String => Object}] :additional_body_parameters
|
|
101
|
+
# @option request_options [Integer] :timeout_in_seconds
|
|
102
|
+
# @option params [String] :drawdown_id
|
|
103
|
+
# @option params [Integer, nil] :page
|
|
104
|
+
# @option params [Integer, nil] :page_size
|
|
105
|
+
# @option params [String, nil] :order_by
|
|
106
|
+
# @option params [String, nil] :q
|
|
107
|
+
#
|
|
108
|
+
# @return [Voltaria::Types::PaginatedResponseDrawdownChecklistResponse]
|
|
109
|
+
def list_drawdown_checklists(request_options: {}, **params)
|
|
110
|
+
params = Voltaria::Internal::Types::Utils.normalize_keys(params)
|
|
111
|
+
query_param_names = %i[page page_size order_by q]
|
|
112
|
+
query_params = {}
|
|
113
|
+
query_params["page"] = params[:page] if params.key?(:page)
|
|
114
|
+
query_params["page_size"] = params[:page_size] if params.key?(:page_size)
|
|
115
|
+
query_params["order_by"] = params[:order_by] if params.key?(:order_by)
|
|
116
|
+
query_params["q"] = params[:q] if params.key?(:q)
|
|
117
|
+
params = params.except(*query_param_names)
|
|
118
|
+
|
|
119
|
+
request = Voltaria::Internal::JSON::Request.new(
|
|
120
|
+
base_url: request_options[:base_url],
|
|
121
|
+
method: "GET",
|
|
122
|
+
path: "v2/drawdowns/#{URI.encode_uri_component(params[:drawdown_id].to_s)}/checklists",
|
|
123
|
+
query: query_params,
|
|
124
|
+
request_options: request_options
|
|
125
|
+
)
|
|
126
|
+
begin
|
|
127
|
+
response = @client.send(request)
|
|
128
|
+
rescue Net::HTTPRequestTimeout
|
|
129
|
+
raise Voltaria::Errors::TimeoutError
|
|
130
|
+
end
|
|
131
|
+
code = response.code.to_i
|
|
132
|
+
if code.between?(200, 299)
|
|
133
|
+
Voltaria::Types::PaginatedResponseDrawdownChecklistResponse.load(response.body)
|
|
134
|
+
else
|
|
135
|
+
error_class = Voltaria::Errors::ResponseError.subclass_for_code(code)
|
|
136
|
+
raise error_class.new(response.body, code: code)
|
|
137
|
+
end
|
|
138
|
+
end
|
|
139
|
+
end
|
|
140
|
+
end
|
|
141
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Voltaria
|
|
4
|
+
module Drawdowns
|
|
5
|
+
module Types
|
|
6
|
+
class DrawdownCreatePayload < Internal::Types::Model
|
|
7
|
+
field :amount, -> { Voltaria::Drawdowns::Types::DrawdownCreatePayloadAmount }, optional: false, nullable: false
|
|
8
|
+
field :drawdown_date, -> { String }, optional: true, nullable: false
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Voltaria
|
|
4
|
+
module Drawdowns
|
|
5
|
+
module Types
|
|
6
|
+
# The amount for the drawdown.
|
|
7
|
+
class DrawdownCreatePayloadAmount < Internal::Types::Model
|
|
8
|
+
extend Voltaria::Internal::Types::Union
|
|
9
|
+
|
|
10
|
+
member -> { Integer }
|
|
11
|
+
member -> { String }
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Voltaria
|
|
4
|
+
module Drawdowns
|
|
5
|
+
module Types
|
|
6
|
+
class ListDrawdownChecklistsRequest < Internal::Types::Model
|
|
7
|
+
field :drawdown_id, -> { String }, optional: false, nullable: false
|
|
8
|
+
field :page, -> { Integer }, optional: true, nullable: false
|
|
9
|
+
field :page_size, -> { Integer }, optional: true, nullable: false
|
|
10
|
+
field :order_by, -> { String }, optional: true, nullable: false
|
|
11
|
+
field :q, -> { String }, optional: true, nullable: false
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Voltaria
|
|
4
|
+
module Drawdowns
|
|
5
|
+
module Types
|
|
6
|
+
class ListDrawdownsRequest < Internal::Types::Model
|
|
7
|
+
field :page, -> { Integer }, optional: true, nullable: false
|
|
8
|
+
field :page_size, -> { Integer }, optional: true, nullable: false
|
|
9
|
+
field :order_by, -> { String }, optional: true, nullable: false
|
|
10
|
+
field :q, -> { String }, optional: true, nullable: false
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Voltaria
|
|
4
|
+
module Errors
|
|
5
|
+
class ClientError < ResponseError
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
class UnauthorizedError < ClientError
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
class ForbiddenError < ClientError
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
class NotFoundError < ClientError
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Voltaria
|
|
4
|
+
module Errors
|
|
5
|
+
class ResponseError < ApiError
|
|
6
|
+
attr_reader :code
|
|
7
|
+
|
|
8
|
+
def initialize(msg, code:)
|
|
9
|
+
@code = code
|
|
10
|
+
super(msg)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def inspect
|
|
14
|
+
"#<#{self.class.name} @code=#{code} @body=#{message}>"
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# Returns the most appropriate error class for the given code.
|
|
18
|
+
#
|
|
19
|
+
# @return [Class]
|
|
20
|
+
def self.subclass_for_code(code)
|
|
21
|
+
case code
|
|
22
|
+
when 300..399
|
|
23
|
+
RedirectError
|
|
24
|
+
when 401
|
|
25
|
+
UnauthorizedError
|
|
26
|
+
when 403
|
|
27
|
+
ForbiddenError
|
|
28
|
+
when 404
|
|
29
|
+
NotFoundError
|
|
30
|
+
when 400..499
|
|
31
|
+
ClientError
|
|
32
|
+
when 503
|
|
33
|
+
ServiceUnavailableError
|
|
34
|
+
when 500..599
|
|
35
|
+
ServerError
|
|
36
|
+
else
|
|
37
|
+
ResponseError
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|