voltaria_sdk 2.35.1 → 2.36.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: abe6a466be2eedeb875e8d9ce9bd749a21da41069f5efd61e01e3d7c29936ae0
4
- data.tar.gz: e30aa8304123fe9eedd4a71999719d515d30436e3db1143f89db6d2d3aa8fd50
3
+ metadata.gz: 9836b67d10650a01d57609c2bc8e7d21391ab1aadbc388afaf4659d750b18bb7
4
+ data.tar.gz: 06b7d596c188da302a4763a2902fc0bb18bdb98c9f33f585004ea38387fec05a
5
5
  SHA512:
6
- metadata.gz: 9b1950202c4869e476a0e60694a3cf149fe33604c4ea39f88183fce1e8bb74ac72ee2c2fbd67412810b9c6cfc8f3416d23cf0ad3b038acee7a5d24711320b3ba
7
- data.tar.gz: 5d2b21297f6175e8bb98fc9afbbad77927d5c8edc460a9a3342502ec83794635a903434e4600f75be3a3b355b9cbaab188a47b3ce1efcad0b9b4448b66c2a558
6
+ metadata.gz: d25d3f726323d99db0250540220c95b312f82af9ccf2f7fa14f07464d79d1b970c33384bc785bfb3d26bed197ee58762d66807157a59df717e6bd77937f067ee
7
+ data.tar.gz: fe3c0885be9b15d28242c42ed600f2ed1b0e912a9517cd298795759dd30336aacfb4d8eb3fe8617dbc5a7459d2052e7bdf32bd807dac3d5df0b97e6e0759aaee
@@ -61,6 +61,11 @@ module Voltaria
61
61
  @partners ||= Voltaria::Partners::Client.new(client: @raw_client)
62
62
  end
63
63
 
64
+ # @return [Voltaria::Recoveries::Client]
65
+ def recoveries
66
+ @recoveries ||= Voltaria::Recoveries::Client.new(client: @raw_client)
67
+ end
68
+
64
69
  # @return [Voltaria::Webhooks::Client]
65
70
  def webhooks
66
71
  @webhooks ||= Voltaria::Webhooks::Client.new(client: @raw_client)
@@ -0,0 +1,98 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Voltaria
4
+ module Recoveries
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 recoveries recorded against your loans. Supports filtering by client or loan.
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 [Integer, nil] :page
25
+ # @option params [Integer, nil] :page_size
26
+ # @option params [String, nil] :order_by
27
+ # @option params [String, nil] :q
28
+ #
29
+ # @return [Voltaria::Types::PaginatedResponseRecoveryResponse]
30
+ def list_recoveries(request_options: {}, **params)
31
+ params = Voltaria::Internal::Types::Utils.normalize_keys(params)
32
+ query_param_names = %i[client_id loan_id page page_size order_by q]
33
+ query_params = {}
34
+ query_params["client_id"] = params[:client_id] if params.key?(:client_id)
35
+ query_params["loan_id"] = params[:loan_id] if params.key?(:loan_id)
36
+ query_params["page"] = params[:page] if params.key?(:page)
37
+ query_params["page_size"] = params[:page_size] if params.key?(:page_size)
38
+ query_params["order_by"] = params[:order_by] if params.key?(:order_by)
39
+ query_params["q"] = params[:q] if params.key?(:q)
40
+ params.except(*query_param_names)
41
+
42
+ request = Voltaria::Internal::JSON::Request.new(
43
+ base_url: request_options[:base_url],
44
+ method: "GET",
45
+ path: "v2/recoveries",
46
+ query: query_params,
47
+ request_options: request_options
48
+ )
49
+ begin
50
+ response = @client.send(request)
51
+ rescue Net::HTTPRequestTimeout
52
+ raise Voltaria::Errors::TimeoutError
53
+ end
54
+ code = response.code.to_i
55
+ if code.between?(200, 299)
56
+ Voltaria::Types::PaginatedResponseRecoveryResponse.load(response.body)
57
+ else
58
+ error_class = Voltaria::Errors::ResponseError.subclass_for_code(code)
59
+ raise error_class.new(response.body, code: code)
60
+ end
61
+ end
62
+
63
+ # Record a new recovery against one of your loans.
64
+ #
65
+ # @param request_options [Hash]
66
+ # @param params [Voltaria::Recoveries::Types::RecoveryCreatePayload]
67
+ # @option request_options [String] :base_url
68
+ # @option request_options [Hash{String => Object}] :additional_headers
69
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
70
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
71
+ # @option request_options [Integer] :timeout_in_seconds
72
+ #
73
+ # @return [Voltaria::Types::RecoveryResponse]
74
+ def create_recovery(request_options: {}, **params)
75
+ params = Voltaria::Internal::Types::Utils.normalize_keys(params)
76
+ request = Voltaria::Internal::JSON::Request.new(
77
+ base_url: request_options[:base_url],
78
+ method: "POST",
79
+ path: "v2/recoveries",
80
+ body: Voltaria::Recoveries::Types::RecoveryCreatePayload.new(params).to_h,
81
+ request_options: request_options
82
+ )
83
+ begin
84
+ response = @client.send(request)
85
+ rescue Net::HTTPRequestTimeout
86
+ raise Voltaria::Errors::TimeoutError
87
+ end
88
+ code = response.code.to_i
89
+ if code.between?(200, 299)
90
+ Voltaria::Types::RecoveryResponse.load(response.body)
91
+ else
92
+ error_class = Voltaria::Errors::ResponseError.subclass_for_code(code)
93
+ raise error_class.new(response.body, code: code)
94
+ end
95
+ end
96
+ end
97
+ end
98
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Voltaria
4
+ module Recoveries
5
+ module Types
6
+ class ListRecoveriesRequest < Internal::Types::Model
7
+ field :client_id, -> { String }, optional: true, nullable: false
8
+ field :loan_id, -> { String }, optional: true, nullable: false
9
+ field :page, -> { Integer }, optional: true, nullable: false
10
+ field :page_size, -> { Integer }, optional: true, nullable: false
11
+ field :order_by, -> { String }, optional: true, nullable: false
12
+ field :q, -> { String }, optional: true, nullable: false
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Voltaria
4
+ module Recoveries
5
+ module Types
6
+ class RecoveryCreatePayload < Internal::Types::Model
7
+ field :loan_id, -> { String }, optional: false, nullable: false
8
+ field :amount, -> { Voltaria::Recoveries::Types::RecoveryCreatePayloadAmount }, optional: false, nullable: false
9
+ field :currency, -> { Voltaria::Types::CurrencyEnum }, optional: false, nullable: false
10
+ field :recovery_date, -> { String }, optional: false, nullable: false
11
+ field :notes, -> { String }, optional: true, nullable: false
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Voltaria
4
+ module Recoveries
5
+ module Types
6
+ # The amount recovered (must be > 0).
7
+ class RecoveryCreatePayloadAmount < 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,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Voltaria
4
+ module Types
5
+ class PaginatedResponseRecoveryResponse < Internal::Types::Model
6
+ field :items, -> { Internal::Types::Array[Voltaria::Types::RecoveryResponse] }, optional: false, nullable: false
7
+ field :page, -> { Integer }, optional: true, nullable: false
8
+ field :page_size, -> { Integer }, optional: true, nullable: false
9
+ field :items_in_page, -> { Integer }, optional: true, nullable: false
10
+ field :total_items, -> { Integer }, optional: true, nullable: false
11
+ field :total_pages, -> { Integer }, optional: true, nullable: false
12
+ field :has_next, -> { Internal::Types::Boolean }, optional: true, nullable: false
13
+ field :has_previous, -> { Internal::Types::Boolean }, optional: true, nullable: false
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Voltaria
4
+ module Types
5
+ class RecoveryResponse < Internal::Types::Model
6
+ field :id, -> { String }, optional: false, nullable: false
7
+ field :created_at, -> { String }, optional: false, nullable: false
8
+ field :updated_at, -> { String }, optional: false, nullable: false
9
+ field :partner_id, -> { String }, optional: false, nullable: false
10
+ field :client_id, -> { String }, optional: false, nullable: false
11
+ field :loan_id, -> { String }, optional: false, nullable: false
12
+ field :amount, -> { String }, optional: false, nullable: false
13
+ field :currency, -> { Voltaria::Types::CurrencyEnum }, optional: false, nullable: false
14
+ field :recovery_date, -> { String }, optional: false, nullable: false
15
+ field :notes, -> { String }, optional: true, nullable: false
16
+ end
17
+ end
18
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Voltaria
4
- VERSION = "2.35.1"
4
+ VERSION = "2.36.0"
5
5
  end
data/lib/voltaria.rb CHANGED
@@ -43,6 +43,7 @@ require_relative "voltaria/installments/types/payment_promise_create_payload_amo
43
43
  require_relative "voltaria/installments/types/installment_edit_payload_amount"
44
44
  require_relative "voltaria/loans/types/loan_create_payload_amount"
45
45
  require_relative "voltaria/loans/types/loan_default_payload_sold_amount"
46
+ require_relative "voltaria/recoveries/types/recovery_create_payload_amount"
46
47
  require_relative "voltaria/repayments/types/repayment_create_payload_amount"
47
48
  require_relative "voltaria/drawdowns/types/drawdown_create_payload_amount"
48
49
  require_relative "voltaria/types/account_address"
@@ -124,6 +125,8 @@ require_relative "voltaria/types/paginated_response_loan_review_request_response
124
125
  require_relative "voltaria/types/payment_promise_status_enum"
125
126
  require_relative "voltaria/types/payment_promise_response"
126
127
  require_relative "voltaria/types/paginated_response_payment_promise_response"
128
+ require_relative "voltaria/types/recovery_response"
129
+ require_relative "voltaria/types/paginated_response_recovery_response"
127
130
  require_relative "voltaria/types/repayment_response_with_client_info"
128
131
  require_relative "voltaria/types/paginated_response_repayment_response_with_client_info"
129
132
  require_relative "voltaria/types/waiver_status_enum"
@@ -206,6 +209,9 @@ require_relative "voltaria/loans/types/loan_default_payload"
206
209
  require_relative "voltaria/partners/client"
207
210
  require_relative "voltaria/partners/types/partner_data_create_payload"
208
211
  require_relative "voltaria/partners/types/list_partner_waterfalls_request"
212
+ require_relative "voltaria/recoveries/client"
213
+ require_relative "voltaria/recoveries/types/list_recoveries_request"
214
+ require_relative "voltaria/recoveries/types/recovery_create_payload"
209
215
  require_relative "voltaria/webhooks/client"
210
216
  require_relative "voltaria/webhooks/types/list_webhook_subscriptions_request"
211
217
  require_relative "voltaria/webhooks/types/webhook_create_payload"
data/reference.md CHANGED
@@ -4634,6 +4634,208 @@ client.partners.list_partner_waterfalls
4634
4634
  </dl>
4635
4635
 
4636
4636
 
4637
+ </dd>
4638
+ </dl>
4639
+ </details>
4640
+
4641
+ ## Recoveries
4642
+ <details><summary><code>client.recoveries.<a href="/lib/voltaria/recoveries/client.rb">list_recoveries</a>() -> Voltaria::Types::PaginatedResponseRecoveryResponse</code></summary>
4643
+ <dl>
4644
+ <dd>
4645
+
4646
+ #### 📝 Description
4647
+
4648
+ <dl>
4649
+ <dd>
4650
+
4651
+ <dl>
4652
+ <dd>
4653
+
4654
+ Retrieve recoveries recorded against your loans. Supports filtering by client or loan.
4655
+ </dd>
4656
+ </dl>
4657
+ </dd>
4658
+ </dl>
4659
+
4660
+ #### 🔌 Usage
4661
+
4662
+ <dl>
4663
+ <dd>
4664
+
4665
+ <dl>
4666
+ <dd>
4667
+
4668
+ ```ruby
4669
+ client.recoveries.list_recoveries
4670
+ ```
4671
+ </dd>
4672
+ </dl>
4673
+ </dd>
4674
+ </dl>
4675
+
4676
+ #### ⚙️ Parameters
4677
+
4678
+ <dl>
4679
+ <dd>
4680
+
4681
+ <dl>
4682
+ <dd>
4683
+
4684
+ **client_id:** `String`
4685
+
4686
+ </dd>
4687
+ </dl>
4688
+
4689
+ <dl>
4690
+ <dd>
4691
+
4692
+ **loan_id:** `String`
4693
+
4694
+ </dd>
4695
+ </dl>
4696
+
4697
+ <dl>
4698
+ <dd>
4699
+
4700
+ **page:** `Integer`
4701
+
4702
+ </dd>
4703
+ </dl>
4704
+
4705
+ <dl>
4706
+ <dd>
4707
+
4708
+ **page_size:** `Integer`
4709
+
4710
+ </dd>
4711
+ </dl>
4712
+
4713
+ <dl>
4714
+ <dd>
4715
+
4716
+ **order_by:** `String` — Field to order the results by, e.g., 'created_at:desc,updated_at:asc'
4717
+
4718
+ </dd>
4719
+ </dl>
4720
+
4721
+ <dl>
4722
+ <dd>
4723
+
4724
+ **q:** `String` — Query string for filtering. Format: "field:operator:value;...". Supported fields: id, client_id, loan_id, currency, recovery_date, created_at. Supported operators: is, in, not_in, contains, not_contains, like, not_like, ilike, not_ilike, gt, gte, lt, lte, starts_with, ends_with, is_null, is_not_null.
4725
+
4726
+ </dd>
4727
+ </dl>
4728
+
4729
+ <dl>
4730
+ <dd>
4731
+
4732
+ **request_options:** `Voltaria::Recoveries::RequestOptions`
4733
+
4734
+ </dd>
4735
+ </dl>
4736
+ </dd>
4737
+ </dl>
4738
+
4739
+
4740
+ </dd>
4741
+ </dl>
4742
+ </details>
4743
+
4744
+ <details><summary><code>client.recoveries.<a href="/lib/voltaria/recoveries/client.rb">create_recovery</a>(request) -> Voltaria::Types::RecoveryResponse</code></summary>
4745
+ <dl>
4746
+ <dd>
4747
+
4748
+ #### 📝 Description
4749
+
4750
+ <dl>
4751
+ <dd>
4752
+
4753
+ <dl>
4754
+ <dd>
4755
+
4756
+ Record a new recovery against one of your loans.
4757
+ </dd>
4758
+ </dl>
4759
+ </dd>
4760
+ </dl>
4761
+
4762
+ #### 🔌 Usage
4763
+
4764
+ <dl>
4765
+ <dd>
4766
+
4767
+ <dl>
4768
+ <dd>
4769
+
4770
+ ```ruby
4771
+ client.recoveries.create_recovery(
4772
+ loan_id: "loan_abc123",
4773
+ amount: 1.1,
4774
+ currency: "eur",
4775
+ recovery_date: "2026-07-15"
4776
+ )
4777
+ ```
4778
+ </dd>
4779
+ </dl>
4780
+ </dd>
4781
+ </dl>
4782
+
4783
+ #### ⚙️ Parameters
4784
+
4785
+ <dl>
4786
+ <dd>
4787
+
4788
+ <dl>
4789
+ <dd>
4790
+
4791
+ **loan_id:** `String` — The ID of the loan this recovery is associated with.
4792
+
4793
+ </dd>
4794
+ </dl>
4795
+
4796
+ <dl>
4797
+ <dd>
4798
+
4799
+ **amount:** `Voltaria::Recoveries::Types::RecoveryCreatePayloadAmount` — The amount recovered (must be > 0).
4800
+
4801
+ </dd>
4802
+ </dl>
4803
+
4804
+ <dl>
4805
+ <dd>
4806
+
4807
+ **currency:** `Voltaria::Types::CurrencyEnum` — The currency of the recovered amount, must be one of the supported currencies: eur, gbp, usd, czk, pln, isk
4808
+
4809
+ </dd>
4810
+ </dl>
4811
+
4812
+ <dl>
4813
+ <dd>
4814
+
4815
+ **recovery_date:** `String` — The date the recovery was made.
4816
+
4817
+ </dd>
4818
+ </dl>
4819
+
4820
+ <dl>
4821
+ <dd>
4822
+
4823
+ **notes:** `String` — Optional notes about the recovery.
4824
+
4825
+ </dd>
4826
+ </dl>
4827
+
4828
+ <dl>
4829
+ <dd>
4830
+
4831
+ **request_options:** `Voltaria::Recoveries::RequestOptions`
4832
+
4833
+ </dd>
4834
+ </dl>
4835
+ </dd>
4836
+ </dl>
4837
+
4838
+
4637
4839
  </dd>
4638
4840
  </dl>
4639
4841
  </details>
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: voltaria_sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.35.1
4
+ version: 2.36.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Voltaria
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2026-07-13 00:00:00.000000000 Z
11
+ date: 2026-07-24 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: The Voltaria Ruby library provides convenient access to the Voltaria
14
14
  API from Ruby.
@@ -128,6 +128,10 @@ files:
128
128
  - lib/voltaria/partners/types/list_partner_waterfalls_request.rb
129
129
  - lib/voltaria/partners/types/partner_data_create_payload.rb
130
130
  - lib/voltaria/prefix_routing.rb
131
+ - lib/voltaria/recoveries/client.rb
132
+ - lib/voltaria/recoveries/types/list_recoveries_request.rb
133
+ - lib/voltaria/recoveries/types/recovery_create_payload.rb
134
+ - lib/voltaria/recoveries/types/recovery_create_payload_amount.rb
131
135
  - lib/voltaria/repayments/client.rb
132
136
  - lib/voltaria/repayments/types/bulk_repayment_create_payload.rb
133
137
  - lib/voltaria/repayments/types/get_bulk_repayment_status_request.rb
@@ -213,6 +217,7 @@ files:
213
217
  - lib/voltaria/types/paginated_response_loan_response_with_client_info.rb
214
218
  - lib/voltaria/types/paginated_response_loan_review_request_response.rb
215
219
  - lib/voltaria/types/paginated_response_payment_promise_response.rb
220
+ - lib/voltaria/types/paginated_response_recovery_response.rb
216
221
  - lib/voltaria/types/paginated_response_repayment_response_with_client_info.rb
217
222
  - lib/voltaria/types/paginated_response_waiver_response.rb
218
223
  - lib/voltaria/types/paginated_response_waterfall_response.rb
@@ -221,6 +226,7 @@ files:
221
226
  - lib/voltaria/types/partner_data_response.rb
222
227
  - lib/voltaria/types/payment_promise_response.rb
223
228
  - lib/voltaria/types/payment_promise_status_enum.rb
229
+ - lib/voltaria/types/recovery_response.rb
224
230
  - lib/voltaria/types/repayment_response.rb
225
231
  - lib/voltaria/types/repayment_response_with_client_info.rb
226
232
  - lib/voltaria/types/role_response.rb