finch-api 0.1.0.pre.alpha.32 → 0.1.0.pre.alpha.34

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: 4fbfa323b400fae895840756ee4bc6fe3df67a06c5ceae9911869b92c8a3cb38
4
- data.tar.gz: ad43f7d7accae26963aaf39a32c4e79165e88cc32c5c1173e5b623d7a64d78f5
3
+ metadata.gz: ede02583d2b0c445b277a885b7fd9618866a4d8507cf77fc55d22315bb738474
4
+ data.tar.gz: f2a3ea53b6308dfcdf758c8adc92ce32f97fbbe6833069da6e332a7927a185e7
5
5
  SHA512:
6
- metadata.gz: 527cfbb535eb068c6314d9c2373360a8a2b975f8a2cd7ada538bb5787f261be1bdb9aa1c2c64a055e7542c0f11da3a4c86778900125c1cdeb424ad35eb2760e9
7
- data.tar.gz: 7f7c577058e88294e8e9cbbe9352b5abe9bf0fe1f9dd22508995a752b06825a6aa4d4de8f995f3fee51a476b6bb981200afbb8fac97c23c073afd0098c50ebe8
6
+ metadata.gz: c597ba4db22f2703c89d7abbfa8abba5f5b777a0cd27006ac51dba6f8bc1e03fbbd1fa5865d2a85cad45402671d76fc1c88fb57e4e3a8141d13a79e8290b4260
7
+ data.tar.gz: 05fa8f40fe7583702b86c013419ef743f87f05f0f08a97a35a342d0e7363148b830a4370a8e6716eea654be5449dbf6c97927cfc18b6ca4425e119acf286cce8
data/CHANGELOG.md CHANGED
@@ -1,5 +1,27 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.0-alpha.34 (2025-11-04)
4
+
5
+ Full Changelog: [v0.1.0-alpha.33...v0.1.0-alpha.34](https://github.com/Finch-API/finch-api-ruby/compare/v0.1.0-alpha.33...v0.1.0-alpha.34)
6
+
7
+ ### Features
8
+
9
+ * **api:** update automated code reviewer selection ([783db04](https://github.com/Finch-API/finch-api-ruby/commit/783db04dbf3f2175cedd3b4e2aae34aa48977784))
10
+
11
+ ## 0.1.0-alpha.33 (2025-11-03)
12
+
13
+ Full Changelog: [v0.1.0-alpha.32...v0.1.0-alpha.33](https://github.com/Finch-API/finch-api-ruby/compare/v0.1.0-alpha.32...v0.1.0-alpha.33)
14
+
15
+ ### Features
16
+
17
+ * **api:** api update ([e2215da](https://github.com/Finch-API/finch-api-ruby/commit/e2215daac58922a19f110eb71249f5b0480bcfd4))
18
+
19
+
20
+ ### Chores
21
+
22
+ * bump dependency version and update sorbet types ([82af149](https://github.com/Finch-API/finch-api-ruby/commit/82af1496618cbd69a049591e5fcaca45907f3fa4))
23
+ * **client:** send user-agent header ([a1bdc99](https://github.com/Finch-API/finch-api-ruby/commit/a1bdc99fe97c31fcff475e4e46d9cba65893c4f3))
24
+
3
25
  ## 0.1.0-alpha.32 (2025-10-31)
4
26
 
5
27
  Full Changelog: [v0.1.0-alpha.31...v0.1.0-alpha.32](https://github.com/Finch-API/finch-api-ruby/compare/v0.1.0-alpha.31...v0.1.0-alpha.32)
data/README.md CHANGED
@@ -17,7 +17,7 @@ To use this gem, install via Bundler by adding the following to your application
17
17
  <!-- x-release-please-start-version -->
18
18
 
19
19
  ```ruby
20
- gem "finch-api", "~> 0.1.0.pre.alpha.32"
20
+ gem "finch-api", "~> 0.1.0.pre.alpha.34"
21
21
  ```
22
22
 
23
23
  <!-- x-release-please-end -->
@@ -201,7 +201,8 @@ module FinchAPI
201
201
  self.class::PLATFORM_HEADERS,
202
202
  {
203
203
  "accept" => "application/json",
204
- "content-type" => "application/json"
204
+ "content-type" => "application/json",
205
+ "user-agent" => user_agent
205
206
  },
206
207
  headers
207
208
  )
@@ -219,6 +220,11 @@ module FinchAPI
219
220
  # @return [Hash{String=>String}]
220
221
  private def auth_headers = {}
221
222
 
223
+ # @api private
224
+ #
225
+ # @return [String]
226
+ private def user_agent = "#{self.class.name}/Ruby #{FinchAPI::VERSION}"
227
+
222
228
  # @api private
223
229
  #
224
230
  # @return [String]
@@ -8,12 +8,6 @@ module FinchAPI
8
8
  extend FinchAPI::Internal::Type::RequestParameters::Converter
9
9
  include FinchAPI::Internal::Type::RequestParameters
10
10
 
11
- # @!attribute customer_email
12
- # Email address of the customer
13
- #
14
- # @return [String, nil]
15
- required :customer_email, String, nil?: true
16
-
17
11
  # @!attribute customer_id
18
12
  # Unique identifier for the customer
19
13
  #
@@ -26,89 +20,114 @@ module FinchAPI
26
20
  # @return [String]
27
21
  required :customer_name, String
28
22
 
23
+ # @!attribute products
24
+ # The Finch products to request access to
25
+ #
26
+ # @return [Array<Symbol, FinchAPI::Models::Connect::SessionNewParams::Product>]
27
+ required :products,
28
+ -> { FinchAPI::Internal::Type::ArrayOf[enum: FinchAPI::Connect::SessionNewParams::Product] }
29
+
30
+ # @!attribute customer_email
31
+ # Email address of the customer
32
+ #
33
+ # @return [String, nil]
34
+ optional :customer_email, String, nil?: true
35
+
29
36
  # @!attribute integration
30
37
  # Integration configuration for the connect session
31
38
  #
32
39
  # @return [FinchAPI::Models::Connect::SessionNewParams::Integration, nil]
33
- required :integration, -> { FinchAPI::Connect::SessionNewParams::Integration }, nil?: true
40
+ optional :integration, -> { FinchAPI::Connect::SessionNewParams::Integration }, nil?: true
34
41
 
35
42
  # @!attribute manual
36
43
  # Enable manual authentication mode
37
44
  #
38
45
  # @return [Boolean, nil]
39
- required :manual, FinchAPI::Internal::Type::Boolean, nil?: true
46
+ optional :manual, FinchAPI::Internal::Type::Boolean, nil?: true
40
47
 
41
48
  # @!attribute minutes_to_expire
42
49
  # The number of minutes until the session expires (defaults to 129,600, which is
43
50
  # 90 days)
44
51
  #
45
52
  # @return [Float, nil]
46
- required :minutes_to_expire, Float, nil?: true
47
-
48
- # @!attribute products
49
- # The Finch products to request access to
50
- #
51
- # @return [Array<Symbol, FinchAPI::Models::Connect::SessionNewParams::Product>]
52
- required :products,
53
- -> { FinchAPI::Internal::Type::ArrayOf[enum: FinchAPI::Connect::SessionNewParams::Product] }
53
+ optional :minutes_to_expire, Float, nil?: true
54
54
 
55
55
  # @!attribute redirect_uri
56
56
  # The URI to redirect to after the Connect flow is completed
57
57
  #
58
58
  # @return [String, nil]
59
- required :redirect_uri, String, nil?: true
59
+ optional :redirect_uri, String, nil?: true
60
60
 
61
61
  # @!attribute sandbox
62
62
  # Sandbox mode for testing
63
63
  #
64
64
  # @return [Symbol, FinchAPI::Models::Connect::SessionNewParams::Sandbox, nil]
65
- required :sandbox, enum: -> { FinchAPI::Connect::SessionNewParams::Sandbox }, nil?: true
65
+ optional :sandbox, enum: -> { FinchAPI::Connect::SessionNewParams::Sandbox }, nil?: true
66
66
 
67
- # @!method initialize(customer_email:, customer_id:, customer_name:, integration:, manual:, minutes_to_expire:, products:, redirect_uri:, sandbox:, request_options: {})
67
+ # @!method initialize(customer_id:, customer_name:, products:, customer_email: nil, integration: nil, manual: nil, minutes_to_expire: nil, redirect_uri: nil, sandbox: nil, request_options: {})
68
68
  # Some parameter documentations has been truncated, see
69
69
  # {FinchAPI::Models::Connect::SessionNewParams} for more details.
70
70
  #
71
- # @param customer_email [String, nil] Email address of the customer
72
- #
73
71
  # @param customer_id [String] Unique identifier for the customer
74
72
  #
75
73
  # @param customer_name [String] Name of the customer
76
74
  #
75
+ # @param products [Array<Symbol, FinchAPI::Models::Connect::SessionNewParams::Product>] The Finch products to request access to
76
+ #
77
+ # @param customer_email [String, nil] Email address of the customer
78
+ #
77
79
  # @param integration [FinchAPI::Models::Connect::SessionNewParams::Integration, nil] Integration configuration for the connect session
78
80
  #
79
81
  # @param manual [Boolean, nil] Enable manual authentication mode
80
82
  #
81
83
  # @param minutes_to_expire [Float, nil] The number of minutes until the session expires (defaults to 129,600, which is 9
82
84
  #
83
- # @param products [Array<Symbol, FinchAPI::Models::Connect::SessionNewParams::Product>] The Finch products to request access to
84
- #
85
85
  # @param redirect_uri [String, nil] The URI to redirect to after the Connect flow is completed
86
86
  #
87
87
  # @param sandbox [Symbol, FinchAPI::Models::Connect::SessionNewParams::Sandbox, nil] Sandbox mode for testing
88
88
  #
89
89
  # @param request_options [FinchAPI::RequestOptions, Hash{Symbol=>Object}]
90
90
 
91
+ # The Finch products that can be requested during the Connect flow.
92
+ module Product
93
+ extend FinchAPI::Internal::Type::Enum
94
+
95
+ BENEFITS = :benefits
96
+ COMPANY = :company
97
+ DEDUCTION = :deduction
98
+ DIRECTORY = :directory
99
+ DOCUMENTS = :documents
100
+ EMPLOYMENT = :employment
101
+ INDIVIDUAL = :individual
102
+ PAYMENT = :payment
103
+ PAY_STATEMENT = :pay_statement
104
+ SSN = :ssn
105
+
106
+ # @!method self.values
107
+ # @return [Array<Symbol>]
108
+ end
109
+
91
110
  class Integration < FinchAPI::Internal::Type::BaseModel
111
+ # @!attribute provider
112
+ # The provider to integrate with
113
+ #
114
+ # @return [String]
115
+ required :provider, String
116
+
92
117
  # @!attribute auth_method
93
118
  # The authentication method to use
94
119
  #
95
120
  # @return [Symbol, FinchAPI::Models::Connect::SessionNewParams::Integration::AuthMethod, nil]
96
- required :auth_method,
121
+ optional :auth_method,
97
122
  enum: -> { FinchAPI::Connect::SessionNewParams::Integration::AuthMethod },
98
123
  nil?: true
99
124
 
100
- # @!attribute provider
101
- # The provider to integrate with
102
- #
103
- # @return [String, nil]
104
- required :provider, String, nil?: true
105
-
106
- # @!method initialize(auth_method:, provider:)
125
+ # @!method initialize(provider:, auth_method: nil)
107
126
  # Integration configuration for the connect session
108
127
  #
109
- # @param auth_method [Symbol, FinchAPI::Models::Connect::SessionNewParams::Integration::AuthMethod, nil] The authentication method to use
128
+ # @param provider [String] The provider to integrate with
110
129
  #
111
- # @param provider [String, nil] The provider to integrate with
130
+ # @param auth_method [Symbol, FinchAPI::Models::Connect::SessionNewParams::Integration::AuthMethod, nil] The authentication method to use
112
131
 
113
132
  # The authentication method to use
114
133
  #
@@ -126,25 +145,6 @@ module FinchAPI
126
145
  end
127
146
  end
128
147
 
129
- # The Finch products that can be requested during the Connect flow.
130
- module Product
131
- extend FinchAPI::Internal::Type::Enum
132
-
133
- BENEFITS = :benefits
134
- COMPANY = :company
135
- DEDUCTION = :deduction
136
- DIRECTORY = :directory
137
- DOCUMENTS = :documents
138
- EMPLOYMENT = :employment
139
- INDIVIDUAL = :individual
140
- PAYMENT = :payment
141
- PAY_STATEMENT = :pay_statement
142
- SSN = :ssn
143
-
144
- # @!method self.values
145
- # @return [Array<Symbol>]
146
- end
147
-
148
148
  # Sandbox mode for testing
149
149
  module Sandbox
150
150
  extend FinchAPI::Internal::Type::Enum
@@ -18,14 +18,14 @@ module FinchAPI
18
18
  # The number of minutes until the session expires (defaults to 43,200, which is 30
19
19
  # days)
20
20
  #
21
- # @return [Integer]
22
- required :minutes_to_expire, Integer
21
+ # @return [Integer, nil]
22
+ optional :minutes_to_expire, Integer
23
23
 
24
24
  # @!attribute products
25
25
  # The products to request access to (optional for reauthentication)
26
26
  #
27
27
  # @return [Array<Symbol, FinchAPI::Models::Connect::SessionReauthenticateParams::Product>, nil]
28
- required :products,
28
+ optional :products,
29
29
  -> {
30
30
  FinchAPI::Internal::Type::ArrayOf[enum: FinchAPI::Connect::SessionReauthenticateParams::Product]
31
31
  },
@@ -35,9 +35,9 @@ module FinchAPI
35
35
  # The URI to redirect to after the Connect flow is completed
36
36
  #
37
37
  # @return [String, nil]
38
- required :redirect_uri, String, nil?: true
38
+ optional :redirect_uri, String, nil?: true
39
39
 
40
- # @!method initialize(connection_id:, minutes_to_expire:, products:, redirect_uri:, request_options: {})
40
+ # @!method initialize(connection_id:, minutes_to_expire: nil, products: nil, redirect_uri: nil, request_options: {})
41
41
  # Some parameter documentations has been truncated, see
42
42
  # {FinchAPI::Models::Connect::SessionReauthenticateParams} for more details.
43
43
  #
@@ -9,22 +9,22 @@ module FinchAPI
9
9
  #
10
10
  # Create a new connect session for an employer
11
11
  #
12
- # @overload new(customer_email:, customer_id:, customer_name:, integration:, manual:, minutes_to_expire:, products:, redirect_uri:, sandbox:, request_options: {})
13
- #
14
- # @param customer_email [String, nil] Email address of the customer
12
+ # @overload new(customer_id:, customer_name:, products:, customer_email: nil, integration: nil, manual: nil, minutes_to_expire: nil, redirect_uri: nil, sandbox: nil, request_options: {})
15
13
  #
16
14
  # @param customer_id [String] Unique identifier for the customer
17
15
  #
18
16
  # @param customer_name [String] Name of the customer
19
17
  #
18
+ # @param products [Array<Symbol, FinchAPI::Models::Connect::SessionNewParams::Product>] The Finch products to request access to
19
+ #
20
+ # @param customer_email [String, nil] Email address of the customer
21
+ #
20
22
  # @param integration [FinchAPI::Models::Connect::SessionNewParams::Integration, nil] Integration configuration for the connect session
21
23
  #
22
24
  # @param manual [Boolean, nil] Enable manual authentication mode
23
25
  #
24
26
  # @param minutes_to_expire [Float, nil] The number of minutes until the session expires (defaults to 129,600, which is 9
25
27
  #
26
- # @param products [Array<Symbol, FinchAPI::Models::Connect::SessionNewParams::Product>] The Finch products to request access to
27
- #
28
28
  # @param redirect_uri [String, nil] The URI to redirect to after the Connect flow is completed
29
29
  #
30
30
  # @param sandbox [Symbol, FinchAPI::Models::Connect::SessionNewParams::Sandbox, nil] Sandbox mode for testing
@@ -50,7 +50,7 @@ module FinchAPI
50
50
  #
51
51
  # Create a new Connect session for reauthenticating an existing connection
52
52
  #
53
- # @overload reauthenticate(connection_id:, minutes_to_expire:, products:, redirect_uri:, request_options: {})
53
+ # @overload reauthenticate(connection_id:, minutes_to_expire: nil, products: nil, redirect_uri: nil, request_options: {})
54
54
  #
55
55
  # @param connection_id [String] The ID of the existing connection to reauthenticate
56
56
  #
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module FinchAPI
4
- VERSION = "0.1.0.pre.alpha.32"
4
+ VERSION = "0.1.0.pre.alpha.34"
5
5
  end
@@ -176,6 +176,11 @@ module FinchAPI
176
176
  private def auth_headers
177
177
  end
178
178
 
179
+ # @api private
180
+ sig { returns(String) }
181
+ private def user_agent
182
+ end
183
+
179
184
  # @api private
180
185
  sig { returns(String) }
181
186
  private def generate_idempotency_key
@@ -31,7 +31,7 @@ module FinchAPI
31
31
  #
32
32
  # Assumes superclass fields are totally defined before fields are accessed /
33
33
  # defined on subclasses.
34
- sig { params(child: T.self_type).void }
34
+ sig { params(child: FinchAPI::Internal::Type::BaseModel).void }
35
35
  def inherited(child)
36
36
  end
37
37
 
@@ -274,9 +274,13 @@ module FinchAPI
274
274
 
275
275
  # Create a new instance of a model.
276
276
  sig do
277
- params(data: T.any(T::Hash[Symbol, T.anything], T.self_type)).returns(
278
- T.attached_class
279
- )
277
+ params(
278
+ data:
279
+ T.any(
280
+ T::Hash[Symbol, T.anything],
281
+ FinchAPI::Internal::Type::BaseModel
282
+ )
283
+ ).returns(T.attached_class)
280
284
  end
281
285
  def self.new(data = {})
282
286
  end
@@ -15,10 +15,6 @@ module FinchAPI
15
15
  )
16
16
  end
17
17
 
18
- # Email address of the customer
19
- sig { returns(T.nilable(String)) }
20
- attr_accessor :customer_email
21
-
22
18
  # Unique identifier for the customer
23
19
  sig { returns(String) }
24
20
  attr_accessor :customer_id
@@ -27,6 +23,18 @@ module FinchAPI
27
23
  sig { returns(String) }
28
24
  attr_accessor :customer_name
29
25
 
26
+ # The Finch products to request access to
27
+ sig do
28
+ returns(
29
+ T::Array[FinchAPI::Connect::SessionNewParams::Product::OrSymbol]
30
+ )
31
+ end
32
+ attr_accessor :products
33
+
34
+ # Email address of the customer
35
+ sig { returns(T.nilable(String)) }
36
+ attr_accessor :customer_email
37
+
30
38
  # Integration configuration for the connect session
31
39
  sig do
32
40
  returns(T.nilable(FinchAPI::Connect::SessionNewParams::Integration))
@@ -52,14 +60,6 @@ module FinchAPI
52
60
  sig { returns(T.nilable(Float)) }
53
61
  attr_accessor :minutes_to_expire
54
62
 
55
- # The Finch products to request access to
56
- sig do
57
- returns(
58
- T::Array[FinchAPI::Connect::SessionNewParams::Product::OrSymbol]
59
- )
60
- end
61
- attr_accessor :products
62
-
63
63
  # The URI to redirect to after the Connect flow is completed
64
64
  sig { returns(T.nilable(String)) }
65
65
  attr_accessor :redirect_uri
@@ -74,17 +74,17 @@ module FinchAPI
74
74
 
75
75
  sig do
76
76
  params(
77
- customer_email: T.nilable(String),
78
77
  customer_id: String,
79
78
  customer_name: String,
79
+ products:
80
+ T::Array[FinchAPI::Connect::SessionNewParams::Product::OrSymbol],
81
+ customer_email: T.nilable(String),
80
82
  integration:
81
83
  T.nilable(
82
84
  FinchAPI::Connect::SessionNewParams::Integration::OrHash
83
85
  ),
84
86
  manual: T.nilable(T::Boolean),
85
87
  minutes_to_expire: T.nilable(Float),
86
- products:
87
- T::Array[FinchAPI::Connect::SessionNewParams::Product::OrSymbol],
88
88
  redirect_uri: T.nilable(String),
89
89
  sandbox:
90
90
  T.nilable(FinchAPI::Connect::SessionNewParams::Sandbox::OrSymbol),
@@ -92,25 +92,25 @@ module FinchAPI
92
92
  ).returns(T.attached_class)
93
93
  end
94
94
  def self.new(
95
- # Email address of the customer
96
- customer_email:,
97
95
  # Unique identifier for the customer
98
96
  customer_id:,
99
97
  # Name of the customer
100
98
  customer_name:,
99
+ # The Finch products to request access to
100
+ products:,
101
+ # Email address of the customer
102
+ customer_email: nil,
101
103
  # Integration configuration for the connect session
102
- integration:,
104
+ integration: nil,
103
105
  # Enable manual authentication mode
104
- manual:,
106
+ manual: nil,
105
107
  # The number of minutes until the session expires (defaults to 129,600, which is
106
108
  # 90 days)
107
- minutes_to_expire:,
108
- # The Finch products to request access to
109
- products:,
109
+ minutes_to_expire: nil,
110
110
  # The URI to redirect to after the Connect flow is completed
111
- redirect_uri:,
111
+ redirect_uri: nil,
112
112
  # Sandbox mode for testing
113
- sandbox:,
113
+ sandbox: nil,
114
114
  request_options: {}
115
115
  )
116
116
  end
@@ -118,17 +118,17 @@ module FinchAPI
118
118
  sig do
119
119
  override.returns(
120
120
  {
121
- customer_email: T.nilable(String),
122
121
  customer_id: String,
123
122
  customer_name: String,
124
- integration:
125
- T.nilable(FinchAPI::Connect::SessionNewParams::Integration),
126
- manual: T.nilable(T::Boolean),
127
- minutes_to_expire: T.nilable(Float),
128
123
  products:
129
124
  T::Array[
130
125
  FinchAPI::Connect::SessionNewParams::Product::OrSymbol
131
126
  ],
127
+ customer_email: T.nilable(String),
128
+ integration:
129
+ T.nilable(FinchAPI::Connect::SessionNewParams::Integration),
130
+ manual: T.nilable(T::Boolean),
131
+ minutes_to_expire: T.nilable(Float),
132
132
  redirect_uri: T.nilable(String),
133
133
  sandbox:
134
134
  T.nilable(
@@ -141,6 +141,78 @@ module FinchAPI
141
141
  def to_hash
142
142
  end
143
143
 
144
+ # The Finch products that can be requested during the Connect flow.
145
+ module Product
146
+ extend FinchAPI::Internal::Type::Enum
147
+
148
+ TaggedSymbol =
149
+ T.type_alias do
150
+ T.all(Symbol, FinchAPI::Connect::SessionNewParams::Product)
151
+ end
152
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
153
+
154
+ BENEFITS =
155
+ T.let(
156
+ :benefits,
157
+ FinchAPI::Connect::SessionNewParams::Product::TaggedSymbol
158
+ )
159
+ COMPANY =
160
+ T.let(
161
+ :company,
162
+ FinchAPI::Connect::SessionNewParams::Product::TaggedSymbol
163
+ )
164
+ DEDUCTION =
165
+ T.let(
166
+ :deduction,
167
+ FinchAPI::Connect::SessionNewParams::Product::TaggedSymbol
168
+ )
169
+ DIRECTORY =
170
+ T.let(
171
+ :directory,
172
+ FinchAPI::Connect::SessionNewParams::Product::TaggedSymbol
173
+ )
174
+ DOCUMENTS =
175
+ T.let(
176
+ :documents,
177
+ FinchAPI::Connect::SessionNewParams::Product::TaggedSymbol
178
+ )
179
+ EMPLOYMENT =
180
+ T.let(
181
+ :employment,
182
+ FinchAPI::Connect::SessionNewParams::Product::TaggedSymbol
183
+ )
184
+ INDIVIDUAL =
185
+ T.let(
186
+ :individual,
187
+ FinchAPI::Connect::SessionNewParams::Product::TaggedSymbol
188
+ )
189
+ PAYMENT =
190
+ T.let(
191
+ :payment,
192
+ FinchAPI::Connect::SessionNewParams::Product::TaggedSymbol
193
+ )
194
+ PAY_STATEMENT =
195
+ T.let(
196
+ :pay_statement,
197
+ FinchAPI::Connect::SessionNewParams::Product::TaggedSymbol
198
+ )
199
+ SSN =
200
+ T.let(
201
+ :ssn,
202
+ FinchAPI::Connect::SessionNewParams::Product::TaggedSymbol
203
+ )
204
+
205
+ sig do
206
+ override.returns(
207
+ T::Array[
208
+ FinchAPI::Connect::SessionNewParams::Product::TaggedSymbol
209
+ ]
210
+ )
211
+ end
212
+ def self.values
213
+ end
214
+ end
215
+
144
216
  class Integration < FinchAPI::Internal::Type::BaseModel
145
217
  OrHash =
146
218
  T.type_alias do
@@ -150,6 +222,10 @@ module FinchAPI
150
222
  )
151
223
  end
152
224
 
225
+ # The provider to integrate with
226
+ sig { returns(String) }
227
+ attr_accessor :provider
228
+
153
229
  # The authentication method to use
154
230
  sig do
155
231
  returns(
@@ -160,36 +236,32 @@ module FinchAPI
160
236
  end
161
237
  attr_accessor :auth_method
162
238
 
163
- # The provider to integrate with
164
- sig { returns(T.nilable(String)) }
165
- attr_accessor :provider
166
-
167
239
  # Integration configuration for the connect session
168
240
  sig do
169
241
  params(
242
+ provider: String,
170
243
  auth_method:
171
244
  T.nilable(
172
245
  FinchAPI::Connect::SessionNewParams::Integration::AuthMethod::OrSymbol
173
- ),
174
- provider: T.nilable(String)
246
+ )
175
247
  ).returns(T.attached_class)
176
248
  end
177
249
  def self.new(
178
- # The authentication method to use
179
- auth_method:,
180
250
  # The provider to integrate with
181
- provider:
251
+ provider:,
252
+ # The authentication method to use
253
+ auth_method: nil
182
254
  )
183
255
  end
184
256
 
185
257
  sig do
186
258
  override.returns(
187
259
  {
260
+ provider: String,
188
261
  auth_method:
189
262
  T.nilable(
190
263
  FinchAPI::Connect::SessionNewParams::Integration::AuthMethod::OrSymbol
191
- ),
192
- provider: T.nilable(String)
264
+ )
193
265
  }
194
266
  )
195
267
  end
@@ -242,78 +314,6 @@ module FinchAPI
242
314
  end
243
315
  end
244
316
 
245
- # The Finch products that can be requested during the Connect flow.
246
- module Product
247
- extend FinchAPI::Internal::Type::Enum
248
-
249
- TaggedSymbol =
250
- T.type_alias do
251
- T.all(Symbol, FinchAPI::Connect::SessionNewParams::Product)
252
- end
253
- OrSymbol = T.type_alias { T.any(Symbol, String) }
254
-
255
- BENEFITS =
256
- T.let(
257
- :benefits,
258
- FinchAPI::Connect::SessionNewParams::Product::TaggedSymbol
259
- )
260
- COMPANY =
261
- T.let(
262
- :company,
263
- FinchAPI::Connect::SessionNewParams::Product::TaggedSymbol
264
- )
265
- DEDUCTION =
266
- T.let(
267
- :deduction,
268
- FinchAPI::Connect::SessionNewParams::Product::TaggedSymbol
269
- )
270
- DIRECTORY =
271
- T.let(
272
- :directory,
273
- FinchAPI::Connect::SessionNewParams::Product::TaggedSymbol
274
- )
275
- DOCUMENTS =
276
- T.let(
277
- :documents,
278
- FinchAPI::Connect::SessionNewParams::Product::TaggedSymbol
279
- )
280
- EMPLOYMENT =
281
- T.let(
282
- :employment,
283
- FinchAPI::Connect::SessionNewParams::Product::TaggedSymbol
284
- )
285
- INDIVIDUAL =
286
- T.let(
287
- :individual,
288
- FinchAPI::Connect::SessionNewParams::Product::TaggedSymbol
289
- )
290
- PAYMENT =
291
- T.let(
292
- :payment,
293
- FinchAPI::Connect::SessionNewParams::Product::TaggedSymbol
294
- )
295
- PAY_STATEMENT =
296
- T.let(
297
- :pay_statement,
298
- FinchAPI::Connect::SessionNewParams::Product::TaggedSymbol
299
- )
300
- SSN =
301
- T.let(
302
- :ssn,
303
- FinchAPI::Connect::SessionNewParams::Product::TaggedSymbol
304
- )
305
-
306
- sig do
307
- override.returns(
308
- T::Array[
309
- FinchAPI::Connect::SessionNewParams::Product::TaggedSymbol
310
- ]
311
- )
312
- end
313
- def self.values
314
- end
315
- end
316
-
317
317
  # Sandbox mode for testing
318
318
  module Sandbox
319
319
  extend FinchAPI::Internal::Type::Enum
@@ -21,8 +21,11 @@ module FinchAPI
21
21
 
22
22
  # The number of minutes until the session expires (defaults to 43,200, which is 30
23
23
  # days)
24
- sig { returns(Integer) }
25
- attr_accessor :minutes_to_expire
24
+ sig { returns(T.nilable(Integer)) }
25
+ attr_reader :minutes_to_expire
26
+
27
+ sig { params(minutes_to_expire: Integer).void }
28
+ attr_writer :minutes_to_expire
26
29
 
27
30
  # The products to request access to (optional for reauthentication)
28
31
  sig do
@@ -59,11 +62,11 @@ module FinchAPI
59
62
  connection_id:,
60
63
  # The number of minutes until the session expires (defaults to 43,200, which is 30
61
64
  # days)
62
- minutes_to_expire:,
65
+ minutes_to_expire: nil,
63
66
  # The products to request access to (optional for reauthentication)
64
- products:,
67
+ products: nil,
65
68
  # The URI to redirect to after the Connect flow is completed
66
- redirect_uri:,
69
+ redirect_uri: nil,
67
70
  request_options: {}
68
71
  )
69
72
  end
@@ -7,17 +7,17 @@ module FinchAPI
7
7
  # Create a new connect session for an employer
8
8
  sig do
9
9
  params(
10
- customer_email: T.nilable(String),
11
10
  customer_id: String,
12
11
  customer_name: String,
12
+ products:
13
+ T::Array[FinchAPI::Connect::SessionNewParams::Product::OrSymbol],
14
+ customer_email: T.nilable(String),
13
15
  integration:
14
16
  T.nilable(
15
17
  FinchAPI::Connect::SessionNewParams::Integration::OrHash
16
18
  ),
17
19
  manual: T.nilable(T::Boolean),
18
20
  minutes_to_expire: T.nilable(Float),
19
- products:
20
- T::Array[FinchAPI::Connect::SessionNewParams::Product::OrSymbol],
21
21
  redirect_uri: T.nilable(String),
22
22
  sandbox:
23
23
  T.nilable(FinchAPI::Connect::SessionNewParams::Sandbox::OrSymbol),
@@ -25,25 +25,25 @@ module FinchAPI
25
25
  ).returns(FinchAPI::Models::Connect::SessionNewResponse)
26
26
  end
27
27
  def new(
28
- # Email address of the customer
29
- customer_email:,
30
28
  # Unique identifier for the customer
31
29
  customer_id:,
32
30
  # Name of the customer
33
31
  customer_name:,
32
+ # The Finch products to request access to
33
+ products:,
34
+ # Email address of the customer
35
+ customer_email: nil,
34
36
  # Integration configuration for the connect session
35
- integration:,
37
+ integration: nil,
36
38
  # Enable manual authentication mode
37
- manual:,
39
+ manual: nil,
38
40
  # The number of minutes until the session expires (defaults to 129,600, which is
39
41
  # 90 days)
40
- minutes_to_expire:,
41
- # The Finch products to request access to
42
- products:,
42
+ minutes_to_expire: nil,
43
43
  # The URI to redirect to after the Connect flow is completed
44
- redirect_uri:,
44
+ redirect_uri: nil,
45
45
  # Sandbox mode for testing
46
- sandbox:,
46
+ sandbox: nil,
47
47
  request_options: {}
48
48
  )
49
49
  end
@@ -68,11 +68,11 @@ module FinchAPI
68
68
  connection_id:,
69
69
  # The number of minutes until the session expires (defaults to 43,200, which is 30
70
70
  # days)
71
- minutes_to_expire:,
71
+ minutes_to_expire: nil,
72
72
  # The products to request access to (optional for reauthentication)
73
- products:,
73
+ products: nil,
74
74
  # The URI to redirect to after the Connect flow is completed
75
- redirect_uri:,
75
+ redirect_uri: nil,
76
76
  request_options: {}
77
77
  )
78
78
  end
@@ -87,6 +87,8 @@ module FinchAPI
87
87
 
88
88
  private def auth_headers: -> ::Hash[String, String]
89
89
 
90
+ private def user_agent: -> String
91
+
90
92
  private def generate_idempotency_key: -> String
91
93
 
92
94
  private def build_request: (
@@ -3,13 +3,13 @@ module FinchAPI
3
3
  module Connect
4
4
  type session_new_params =
5
5
  {
6
- customer_email: String?,
7
6
  customer_id: String,
8
7
  customer_name: String,
8
+ products: ::Array[FinchAPI::Models::Connect::SessionNewParams::product],
9
+ customer_email: String?,
9
10
  integration: FinchAPI::Connect::SessionNewParams::Integration?,
10
11
  manual: bool?,
11
12
  minutes_to_expire: Float?,
12
- products: ::Array[FinchAPI::Models::Connect::SessionNewParams::product],
13
13
  redirect_uri: String?,
14
14
  sandbox: FinchAPI::Models::Connect::SessionNewParams::sandbox?
15
15
  }
@@ -19,85 +19,50 @@ module FinchAPI
19
19
  extend FinchAPI::Internal::Type::RequestParameters::Converter
20
20
  include FinchAPI::Internal::Type::RequestParameters
21
21
 
22
- attr_accessor customer_email: String?
23
-
24
22
  attr_accessor customer_id: String
25
23
 
26
24
  attr_accessor customer_name: String
27
25
 
26
+ attr_accessor products: ::Array[FinchAPI::Models::Connect::SessionNewParams::product]
27
+
28
+ attr_accessor customer_email: String?
29
+
28
30
  attr_accessor integration: FinchAPI::Connect::SessionNewParams::Integration?
29
31
 
30
32
  attr_accessor manual: bool?
31
33
 
32
34
  attr_accessor minutes_to_expire: Float?
33
35
 
34
- attr_accessor products: ::Array[FinchAPI::Models::Connect::SessionNewParams::product]
35
-
36
36
  attr_accessor redirect_uri: String?
37
37
 
38
38
  attr_accessor sandbox: FinchAPI::Models::Connect::SessionNewParams::sandbox?
39
39
 
40
40
  def initialize: (
41
- customer_email: String?,
42
41
  customer_id: String,
43
42
  customer_name: String,
44
- integration: FinchAPI::Connect::SessionNewParams::Integration?,
45
- manual: bool?,
46
- minutes_to_expire: Float?,
47
43
  products: ::Array[FinchAPI::Models::Connect::SessionNewParams::product],
48
- redirect_uri: String?,
49
- sandbox: FinchAPI::Models::Connect::SessionNewParams::sandbox?,
44
+ ?customer_email: String?,
45
+ ?integration: FinchAPI::Connect::SessionNewParams::Integration?,
46
+ ?manual: bool?,
47
+ ?minutes_to_expire: Float?,
48
+ ?redirect_uri: String?,
49
+ ?sandbox: FinchAPI::Models::Connect::SessionNewParams::sandbox?,
50
50
  ?request_options: FinchAPI::request_opts
51
51
  ) -> void
52
52
 
53
53
  def to_hash: -> {
54
- customer_email: String?,
55
54
  customer_id: String,
56
55
  customer_name: String,
56
+ products: ::Array[FinchAPI::Models::Connect::SessionNewParams::product],
57
+ customer_email: String?,
57
58
  integration: FinchAPI::Connect::SessionNewParams::Integration?,
58
59
  manual: bool?,
59
60
  minutes_to_expire: Float?,
60
- products: ::Array[FinchAPI::Models::Connect::SessionNewParams::product],
61
61
  redirect_uri: String?,
62
62
  sandbox: FinchAPI::Models::Connect::SessionNewParams::sandbox?,
63
63
  request_options: FinchAPI::RequestOptions
64
64
  }
65
65
 
66
- type integration =
67
- {
68
- auth_method: FinchAPI::Models::Connect::SessionNewParams::Integration::auth_method?,
69
- provider: String?
70
- }
71
-
72
- class Integration < FinchAPI::Internal::Type::BaseModel
73
- attr_accessor auth_method: FinchAPI::Models::Connect::SessionNewParams::Integration::auth_method?
74
-
75
- attr_accessor provider: String?
76
-
77
- def initialize: (
78
- auth_method: FinchAPI::Models::Connect::SessionNewParams::Integration::auth_method?,
79
- provider: String?
80
- ) -> void
81
-
82
- def to_hash: -> {
83
- auth_method: FinchAPI::Models::Connect::SessionNewParams::Integration::auth_method?,
84
- provider: String?
85
- }
86
-
87
- type auth_method = :assisted | :credential | :oauth | :api_token
88
-
89
- module AuthMethod
90
- extend FinchAPI::Internal::Type::Enum
91
-
92
- ASSISTED: :assisted
93
- CREDENTIAL: :credential
94
- OAUTH: :oauth
95
- API_TOKEN: :api_token
96
-
97
- def self?.values: -> ::Array[FinchAPI::Models::Connect::SessionNewParams::Integration::auth_method]
98
- end
99
- end
100
-
101
66
  type product =
102
67
  :benefits
103
68
  | :company
@@ -127,6 +92,41 @@ module FinchAPI
127
92
  def self?.values: -> ::Array[FinchAPI::Models::Connect::SessionNewParams::product]
128
93
  end
129
94
 
95
+ type integration =
96
+ {
97
+ provider: String,
98
+ auth_method: FinchAPI::Models::Connect::SessionNewParams::Integration::auth_method?
99
+ }
100
+
101
+ class Integration < FinchAPI::Internal::Type::BaseModel
102
+ attr_accessor provider: String
103
+
104
+ attr_accessor auth_method: FinchAPI::Models::Connect::SessionNewParams::Integration::auth_method?
105
+
106
+ def initialize: (
107
+ provider: String,
108
+ ?auth_method: FinchAPI::Models::Connect::SessionNewParams::Integration::auth_method?
109
+ ) -> void
110
+
111
+ def to_hash: -> {
112
+ provider: String,
113
+ auth_method: FinchAPI::Models::Connect::SessionNewParams::Integration::auth_method?
114
+ }
115
+
116
+ type auth_method = :assisted | :credential | :oauth | :api_token
117
+
118
+ module AuthMethod
119
+ extend FinchAPI::Internal::Type::Enum
120
+
121
+ ASSISTED: :assisted
122
+ CREDENTIAL: :credential
123
+ OAUTH: :oauth
124
+ API_TOKEN: :api_token
125
+
126
+ def self?.values: -> ::Array[FinchAPI::Models::Connect::SessionNewParams::Integration::auth_method]
127
+ end
128
+ end
129
+
130
130
  type sandbox = :finch | :provider
131
131
 
132
132
  module Sandbox
@@ -16,7 +16,9 @@ module FinchAPI
16
16
 
17
17
  attr_accessor connection_id: String
18
18
 
19
- attr_accessor minutes_to_expire: Integer
19
+ attr_reader minutes_to_expire: Integer?
20
+
21
+ def minutes_to_expire=: (Integer) -> Integer
20
22
 
21
23
  attr_accessor products: ::Array[FinchAPI::Models::Connect::SessionReauthenticateParams::product]?
22
24
 
@@ -24,9 +26,9 @@ module FinchAPI
24
26
 
25
27
  def initialize: (
26
28
  connection_id: String,
27
- minutes_to_expire: Integer,
28
- products: ::Array[FinchAPI::Models::Connect::SessionReauthenticateParams::product]?,
29
- redirect_uri: String?,
29
+ ?minutes_to_expire: Integer,
30
+ ?products: ::Array[FinchAPI::Models::Connect::SessionReauthenticateParams::product]?,
31
+ ?redirect_uri: String?,
30
32
  ?request_options: FinchAPI::request_opts
31
33
  ) -> void
32
34
 
@@ -3,23 +3,23 @@ module FinchAPI
3
3
  class Connect
4
4
  class Sessions
5
5
  def new: (
6
- customer_email: String?,
7
6
  customer_id: String,
8
7
  customer_name: String,
9
- integration: FinchAPI::Connect::SessionNewParams::Integration?,
10
- manual: bool?,
11
- minutes_to_expire: Float?,
12
8
  products: ::Array[FinchAPI::Models::Connect::SessionNewParams::product],
13
- redirect_uri: String?,
14
- sandbox: FinchAPI::Models::Connect::SessionNewParams::sandbox?,
9
+ ?customer_email: String?,
10
+ ?integration: FinchAPI::Connect::SessionNewParams::Integration?,
11
+ ?manual: bool?,
12
+ ?minutes_to_expire: Float?,
13
+ ?redirect_uri: String?,
14
+ ?sandbox: FinchAPI::Models::Connect::SessionNewParams::sandbox?,
15
15
  ?request_options: FinchAPI::request_opts
16
16
  ) -> FinchAPI::Models::Connect::SessionNewResponse
17
17
 
18
18
  def reauthenticate: (
19
19
  connection_id: String,
20
- minutes_to_expire: Integer,
21
- products: ::Array[FinchAPI::Models::Connect::SessionReauthenticateParams::product]?,
22
- redirect_uri: String?,
20
+ ?minutes_to_expire: Integer,
21
+ ?products: ::Array[FinchAPI::Models::Connect::SessionReauthenticateParams::product]?,
22
+ ?redirect_uri: String?,
23
23
  ?request_options: FinchAPI::request_opts
24
24
  ) -> FinchAPI::Models::Connect::SessionReauthenticateResponse
25
25
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: finch-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0.pre.alpha.32
4
+ version: 0.1.0.pre.alpha.34
5
5
  platform: ruby
6
6
  authors:
7
7
  - Finch
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-10-31 00:00:00.000000000 Z
11
+ date: 2025-11-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: connection_pool