modern_treasury 0.8.0 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +28 -0
  3. data/README.md +1 -1
  4. data/lib/modern_treasury/internal/transport/base_client.rb +7 -1
  5. data/lib/modern_treasury/internal/transport/pooled_net_requester.rb +36 -26
  6. data/lib/modern_treasury/models/counterparty_create_params.rb +9 -9
  7. data/lib/modern_treasury/models/external_account_create_params.rb +9 -9
  8. data/lib/modern_treasury/models/payment_order_subtype.rb +1 -0
  9. data/lib/modern_treasury/resources/counterparties.rb +14 -16
  10. data/lib/modern_treasury/resources/external_accounts.rb +16 -18
  11. data/lib/modern_treasury/version.rb +1 -1
  12. data/lib/modern_treasury.rb +1 -0
  13. data/manifest.yaml +1 -0
  14. data/rbi/modern_treasury/internal/transport/base_client.rbi +5 -0
  15. data/rbi/modern_treasury/internal/transport/pooled_net_requester.rbi +6 -2
  16. data/rbi/modern_treasury/internal/type/base_model.rbi +8 -4
  17. data/rbi/modern_treasury/models/counterparty_create_params.rbi +8 -8
  18. data/rbi/modern_treasury/models/external_account_create_params.rbi +8 -8
  19. data/rbi/modern_treasury/models/payment_order_subtype.rbi +1 -0
  20. data/rbi/modern_treasury/resources/counterparties.rbi +15 -17
  21. data/rbi/modern_treasury/resources/external_accounts.rbi +16 -22
  22. data/sig/modern_treasury/internal/transport/base_client.rbs +2 -0
  23. data/sig/modern_treasury/internal/transport/pooled_net_requester.rbs +4 -1
  24. data/sig/modern_treasury/models/counterparty_create_params.rbs +5 -5
  25. data/sig/modern_treasury/models/external_account_create_params.rbs +5 -5
  26. data/sig/modern_treasury/models/payment_order_subtype.rbs +2 -0
  27. data/sig/modern_treasury/resources/counterparties.rbs +1 -1
  28. data/sig/modern_treasury/resources/external_accounts.rbs +1 -1
  29. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 25abe3b7c9d18cc9670f02a34f74f8a452008226e9c3b123c2f919f09569e70e
4
- data.tar.gz: f32a2a119a1c17def50b2e9fe8476316706f8b9a0d605106a3d0eda6b3395db5
3
+ metadata.gz: bba19b0f28cfaad870097e1d626bc513c3faba14cdf81123ee93c46bfc8c94c8
4
+ data.tar.gz: bf483c9083e538e9deaf8706481f93466d4454c54dcc0fbde24fbd7f27f01400
5
5
  SHA512:
6
- metadata.gz: ace377f41016c6ba3fcd9e1e251a1c88557922dc0f74893abd9b0ed2930c9068464f987896b69de77f2df2ddde49f9cff0612097d118c07cf5f7c6786d4a087e
7
- data.tar.gz: 6acd215b3218153e08c5d6858b13dca068df9f9cf0e7d96dd7f9d44fc64d9b68ae8360a2972ebb74b43bc9539757b0474692182eedc46e6404380bf7815a912f
6
+ metadata.gz: 5698b10d64ba2b47e70cf9fe9d90f96218b9645dcbac38cb2ed0f2bb99c7e3176d43fcc487285532d6a07cecf57f257ffb719d0c4812aff9654d8967ec2042ae
7
+ data.tar.gz: fdb72458b43e57c9ae938e69103740bc1334ff81fc73a2848880a063164ccaef94a8cc49cc63efe0ebccd540310bf942f16756c8caad7988fcf82ebb9c77baf8
data/CHANGELOG.md CHANGED
@@ -1,5 +1,33 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.10.0 (2025-11-05)
4
+
5
+ Full Changelog: [v0.9.0...v0.10.0](https://github.com/Modern-Treasury/modern-treasury-ruby/compare/v0.9.0...v0.10.0)
6
+
7
+ ### Features
8
+
9
+ * **api:** api update ([7fb1734](https://github.com/Modern-Treasury/modern-treasury-ruby/commit/7fb17347c1b30ac236a1a4df294f5b49adc6647b))
10
+ * **api:** api update ([f5d639f](https://github.com/Modern-Treasury/modern-treasury-ruby/commit/f5d639f577bbe973d2a299282bee8815f9311aa3))
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * better thread safety via early initializing SSL store during HTTP client creation ([a56afe6](https://github.com/Modern-Treasury/modern-treasury-ruby/commit/a56afe6e3ad81b5baabd7e1f225341a68752a0cc))
16
+
17
+
18
+ ### Chores
19
+
20
+ * **client:** send user-agent header ([3301d2f](https://github.com/Modern-Treasury/modern-treasury-ruby/commit/3301d2f2b166f302c29ab5038708aed0f9ca325e))
21
+ * **internal:** codegen related update ([7f3208e](https://github.com/Modern-Treasury/modern-treasury-ruby/commit/7f3208e35064166fe4e49217c0701d5325e9f057))
22
+
23
+ ## 0.9.0 (2025-10-23)
24
+
25
+ Full Changelog: [v0.8.0...v0.9.0](https://github.com/Modern-Treasury/modern-treasury-ruby/compare/v0.8.0...v0.9.0)
26
+
27
+ ### Features
28
+
29
+ * handle thread interrupts in the core HTTP client ([6ba4bc5](https://github.com/Modern-Treasury/modern-treasury-ruby/commit/6ba4bc5503f416fc1acf57db52b250b66d07a26c))
30
+
3
31
  ## 0.8.0 (2025-10-22)
4
32
 
5
33
  Full Changelog: [v0.7.0...v0.8.0](https://github.com/Modern-Treasury/modern-treasury-ruby/compare/v0.7.0...v0.8.0)
data/README.md CHANGED
@@ -15,7 +15,7 @@ To use this gem, install via Bundler by adding the following to your application
15
15
  <!-- x-release-please-start-version -->
16
16
 
17
17
  ```ruby
18
- gem "modern_treasury", "~> 0.8.0"
18
+ gem "modern_treasury", "~> 0.10.0"
19
19
  ```
20
20
 
21
21
  <!-- x-release-please-end -->
@@ -201,7 +201,8 @@ module ModernTreasury
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 ModernTreasury
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 #{ModernTreasury::VERSION}"
227
+
222
228
  # @api private
223
229
  #
224
230
  # @return [String]
@@ -16,10 +16,11 @@ module ModernTreasury
16
16
  class << self
17
17
  # @api private
18
18
  #
19
+ # @param cert_store [OpenSSL::X509::Store]
19
20
  # @param url [URI::Generic]
20
21
  #
21
22
  # @return [Net::HTTP]
22
- def connect(url)
23
+ def connect(cert_store:, url:)
23
24
  port =
24
25
  case [url.port, url.scheme]
25
26
  in [Integer, _]
@@ -33,6 +34,8 @@ module ModernTreasury
33
34
  Net::HTTP.new(url.host, port).tap do
34
35
  _1.use_ssl = %w[https wss].include?(url.scheme)
35
36
  _1.max_retries = 0
37
+
38
+ (_1.cert_store = cert_store) if _1.use_ssl?
36
39
  end
37
40
  end
38
41
 
@@ -102,7 +105,7 @@ module ModernTreasury
102
105
  pool =
103
106
  @mutex.synchronize do
104
107
  @pools[origin] ||= ConnectionPool.new(size: @size) do
105
- self.class.connect(url)
108
+ self.class.connect(cert_store: @cert_store, url: url)
106
109
  end
107
110
  end
108
111
 
@@ -128,40 +131,48 @@ module ModernTreasury
128
131
  url, deadline = request.fetch_values(:url, :deadline)
129
132
 
130
133
  req = nil
131
- eof = false
132
134
  finished = false
133
- closing = nil
134
135
 
135
136
  # rubocop:disable Metrics/BlockLength
136
137
  enum = Enumerator.new do |y|
137
138
  next if finished
138
139
 
139
140
  with_pool(url, deadline: deadline) do |conn|
140
- req, closing = self.class.build_request(request) do
141
- self.class.calibrate_socket_timeout(conn, deadline)
142
- end
143
-
144
- self.class.calibrate_socket_timeout(conn, deadline)
145
- unless conn.started?
146
- conn.keep_alive_timeout = self.class::KEEP_ALIVE_TIMEOUT
147
- conn.start
148
- end
141
+ eof = false
142
+ closing = nil
143
+ ::Thread.handle_interrupt(Object => :never) do
144
+ ::Thread.handle_interrupt(Object => :immediate) do
145
+ req, closing = self.class.build_request(request) do
146
+ self.class.calibrate_socket_timeout(conn, deadline)
147
+ end
149
148
 
150
- self.class.calibrate_socket_timeout(conn, deadline)
151
- conn.request(req) do |rsp|
152
- y << [req, rsp]
153
- break if finished
154
-
155
- rsp.read_body do |bytes|
156
- y << bytes.force_encoding(Encoding::BINARY)
157
- break if finished
149
+ self.class.calibrate_socket_timeout(conn, deadline)
150
+ unless conn.started?
151
+ conn.keep_alive_timeout = self.class::KEEP_ALIVE_TIMEOUT
152
+ conn.start
153
+ end
158
154
 
159
155
  self.class.calibrate_socket_timeout(conn, deadline)
156
+ conn.request(req) do |rsp|
157
+ y << [req, rsp]
158
+ break if finished
159
+
160
+ rsp.read_body do |bytes|
161
+ y << bytes.force_encoding(Encoding::BINARY)
162
+ break if finished
163
+
164
+ self.class.calibrate_socket_timeout(conn, deadline)
165
+ end
166
+ eof = true
167
+ end
168
+ end
169
+ ensure
170
+ begin
171
+ conn.finish if !eof && conn&.started?
172
+ ensure
173
+ closing&.call
160
174
  end
161
- eof = true
162
175
  end
163
- ensure
164
- conn.finish if !eof && conn&.started?
165
176
  end
166
177
  rescue Timeout::Error
167
178
  raise ModernTreasury::Errors::APITimeoutError.new(url: url, request: req)
@@ -174,8 +185,6 @@ module ModernTreasury
174
185
  body = ModernTreasury::Internal::Util.fused_enum(enum, external: true) do
175
186
  finished = true
176
187
  loop { enum.next }
177
- ensure
178
- closing&.call
179
188
  end
180
189
  [Integer(response.code), response, body]
181
190
  end
@@ -186,6 +195,7 @@ module ModernTreasury
186
195
  def initialize(size: self.class::DEFAULT_MAX_CONNECTIONS)
187
196
  @mutex = Mutex.new
188
197
  @size = size
198
+ @cert_store = OpenSSL::X509::Store.new.tap(&:set_default_paths)
189
199
  @pools = {}
190
200
  end
191
201
 
@@ -13,12 +13,6 @@ module ModernTreasury
13
13
  # @return [String, nil]
14
14
  required :name, String, nil?: true
15
15
 
16
- # @!attribute body_external_id
17
- # An optional user-defined 180 character unique identifier.
18
- #
19
- # @return [String, nil]
20
- optional :body_external_id, String, api_name: :external_id, nil?: true
21
-
22
16
  # @!attribute accounting
23
17
  # @deprecated
24
18
  #
@@ -38,6 +32,12 @@ module ModernTreasury
38
32
  # @return [String, nil]
39
33
  optional :email, String, nil?: true
40
34
 
35
+ # @!attribute external_id
36
+ # An optional user-defined 180 character unique identifier.
37
+ #
38
+ # @return [String, nil]
39
+ optional :external_id, String, nil?: true
40
+
41
41
  # @!attribute ledger_type
42
42
  # @deprecated
43
43
  #
@@ -86,20 +86,20 @@ module ModernTreasury
86
86
  # @return [String, nil]
87
87
  optional :verification_status, String
88
88
 
89
- # @!method initialize(name:, body_external_id: nil, accounting: nil, accounts: nil, email: nil, ledger_type: nil, legal_entity: nil, legal_entity_id: nil, metadata: nil, send_remittance_advice: nil, taxpayer_identifier: nil, verification_status: nil, request_options: {})
89
+ # @!method initialize(name:, accounting: nil, accounts: nil, email: nil, external_id: nil, ledger_type: nil, legal_entity: nil, legal_entity_id: nil, metadata: nil, send_remittance_advice: nil, taxpayer_identifier: nil, verification_status: nil, request_options: {})
90
90
  # Some parameter documentations has been truncated, see
91
91
  # {ModernTreasury::Models::CounterpartyCreateParams} for more details.
92
92
  #
93
93
  # @param name [String, nil] A human friendly name for this counterparty.
94
94
  #
95
- # @param body_external_id [String, nil] An optional user-defined 180 character unique identifier.
96
- #
97
95
  # @param accounting [ModernTreasury::Models::CounterpartyCreateParams::Accounting]
98
96
  #
99
97
  # @param accounts [Array<ModernTreasury::Models::CounterpartyCreateParams::Account>] The accounts for this counterparty.
100
98
  #
101
99
  # @param email [String, nil] The counterparty's email.
102
100
  #
101
+ # @param external_id [String, nil] An optional user-defined 180 character unique identifier.
102
+ #
103
103
  # @param ledger_type [Symbol, ModernTreasury::Models::CounterpartyCreateParams::LedgerType] An optional type to auto-sync the counterparty to your ledger. Either `customer`
104
104
  #
105
105
  # @param legal_entity [ModernTreasury::Models::CounterpartyCreateParams::LegalEntity]
@@ -12,12 +12,6 @@ module ModernTreasury
12
12
  # @return [String, nil]
13
13
  required :counterparty_id, String, nil?: true
14
14
 
15
- # @!attribute body_external_id
16
- # An optional user-defined 180 character unique identifier.
17
- #
18
- # @return [String, nil]
19
- optional :body_external_id, String, api_name: :external_id, nil?: true
20
-
21
15
  # @!attribute account_details
22
16
  #
23
17
  # @return [Array<ModernTreasury::Models::ExternalAccountCreateParams::AccountDetail>, nil]
@@ -36,6 +30,12 @@ module ModernTreasury
36
30
  optional :contact_details,
37
31
  -> { ModernTreasury::Internal::Type::ArrayOf[ModernTreasury::ContactDetailCreateRequest] }
38
32
 
33
+ # @!attribute external_id
34
+ # An optional user-defined 180 character unique identifier.
35
+ #
36
+ # @return [String, nil]
37
+ optional :external_id, String, nil?: true
38
+
39
39
  # @!attribute ledger_account
40
40
  # Specifies a ledger account object that will be created with the external
41
41
  # account. The resulting ledger account is linked to the external account for
@@ -96,20 +96,20 @@ module ModernTreasury
96
96
  optional :routing_details,
97
97
  -> { ModernTreasury::Internal::Type::ArrayOf[ModernTreasury::ExternalAccountCreateParams::RoutingDetail] }
98
98
 
99
- # @!method initialize(counterparty_id:, body_external_id: nil, account_details: nil, account_type: nil, contact_details: nil, ledger_account: nil, metadata: nil, name: nil, party_address: nil, party_identifier: nil, party_name: nil, party_type: nil, plaid_processor_token: nil, routing_details: nil, request_options: {})
99
+ # @!method initialize(counterparty_id:, account_details: nil, account_type: nil, contact_details: nil, external_id: nil, ledger_account: nil, metadata: nil, name: nil, party_address: nil, party_identifier: nil, party_name: nil, party_type: nil, plaid_processor_token: nil, routing_details: nil, request_options: {})
100
100
  # Some parameter documentations has been truncated, see
101
101
  # {ModernTreasury::Models::ExternalAccountCreateParams} for more details.
102
102
  #
103
103
  # @param counterparty_id [String, nil]
104
104
  #
105
- # @param body_external_id [String, nil] An optional user-defined 180 character unique identifier.
106
- #
107
105
  # @param account_details [Array<ModernTreasury::Models::ExternalAccountCreateParams::AccountDetail>]
108
106
  #
109
107
  # @param account_type [Symbol, ModernTreasury::Models::ExternalAccountType] Can be `checking`, `savings` or `other`.
110
108
  #
111
109
  # @param contact_details [Array<ModernTreasury::Models::ContactDetailCreateRequest>]
112
110
  #
111
+ # @param external_id [String, nil] An optional user-defined 180 character unique identifier.
112
+ #
113
113
  # @param ledger_account [ModernTreasury::Models::LedgerAccountCreateRequest] Specifies a ledger account object that will be created with the external account
114
114
  #
115
115
  # @param metadata [Hash{Symbol=>String}] Additional data represented as key-value pairs. Both the key and value must be s
@@ -16,6 +16,7 @@ module ModernTreasury
16
16
  CIE = :CIE
17
17
  CTX = :CTX
18
18
  IAT = :IAT
19
+ POS = :POS
19
20
  PPD = :PPD
20
21
  TEL = :TEL
21
22
  WEB = :WEB
@@ -8,31 +8,31 @@ module ModernTreasury
8
8
  #
9
9
  # Create a new counterparty.
10
10
  #
11
- # @overload create(name:, body_external_id: nil, accounting: nil, accounts: nil, email: nil, ledger_type: nil, legal_entity: nil, legal_entity_id: nil, metadata: nil, send_remittance_advice: nil, taxpayer_identifier: nil, verification_status: nil, request_options: {})
11
+ # @overload create(name:, accounting: nil, accounts: nil, email: nil, external_id: nil, ledger_type: nil, legal_entity: nil, legal_entity_id: nil, metadata: nil, send_remittance_advice: nil, taxpayer_identifier: nil, verification_status: nil, request_options: {})
12
12
  #
13
- # @param name [String, nil] Body param: A human friendly name for this counterparty.
13
+ # @param name [String, nil] A human friendly name for this counterparty.
14
14
  #
15
- # @param body_external_id [String, nil] Body param: An optional user-defined 180 character unique identifier.
15
+ # @param accounting [ModernTreasury::Models::CounterpartyCreateParams::Accounting]
16
16
  #
17
- # @param accounting [ModernTreasury::Models::CounterpartyCreateParams::Accounting] Body param:
17
+ # @param accounts [Array<ModernTreasury::Models::CounterpartyCreateParams::Account>] The accounts for this counterparty.
18
18
  #
19
- # @param accounts [Array<ModernTreasury::Models::CounterpartyCreateParams::Account>] Body param: The accounts for this counterparty.
19
+ # @param email [String, nil] The counterparty's email.
20
20
  #
21
- # @param email [String, nil] Body param: The counterparty's email.
21
+ # @param external_id [String, nil] An optional user-defined 180 character unique identifier.
22
22
  #
23
- # @param ledger_type [Symbol, ModernTreasury::Models::CounterpartyCreateParams::LedgerType] Body param: An optional type to auto-sync the counterparty to your ledger. Eithe
23
+ # @param ledger_type [Symbol, ModernTreasury::Models::CounterpartyCreateParams::LedgerType] An optional type to auto-sync the counterparty to your ledger. Either `customer`
24
24
  #
25
- # @param legal_entity [ModernTreasury::Models::CounterpartyCreateParams::LegalEntity] Body param:
25
+ # @param legal_entity [ModernTreasury::Models::CounterpartyCreateParams::LegalEntity]
26
26
  #
27
- # @param legal_entity_id [String, nil] Body param: The id of the legal entity.
27
+ # @param legal_entity_id [String, nil] The id of the legal entity.
28
28
  #
29
- # @param metadata [Hash{Symbol=>String}] Body param: Additional data represented as key-value pairs. Both the key and val
29
+ # @param metadata [Hash{Symbol=>String}] Additional data represented as key-value pairs. Both the key and value must be s
30
30
  #
31
- # @param send_remittance_advice [Boolean] Body param: Send an email to the counterparty whenever an associated payment ord
31
+ # @param send_remittance_advice [Boolean] Send an email to the counterparty whenever an associated payment order is sent t
32
32
  #
33
- # @param taxpayer_identifier [String] Body param: Either a valid SSN or EIN.
33
+ # @param taxpayer_identifier [String] Either a valid SSN or EIN.
34
34
  #
35
- # @param verification_status [String] Body param: The verification status of the counterparty.
35
+ # @param verification_status [String] The verification status of the counterparty.
36
36
  #
37
37
  # @param request_options [ModernTreasury::RequestOptions, Hash{Symbol=>Object}, nil]
38
38
  #
@@ -41,12 +41,10 @@ module ModernTreasury
41
41
  # @see ModernTreasury::Models::CounterpartyCreateParams
42
42
  def create(params)
43
43
  parsed, options = ModernTreasury::CounterpartyCreateParams.dump_request(params)
44
- query_params = [:query_external_id]
45
44
  @client.request(
46
45
  method: :post,
47
46
  path: "api/counterparties",
48
- query: parsed.slice(*query_params).transform_keys(query_external_id: "external_id"),
49
- body: parsed.except(*query_params),
47
+ body: parsed,
50
48
  model: ModernTreasury::Counterparty,
51
49
  options: options
52
50
  )
@@ -8,35 +8,35 @@ module ModernTreasury
8
8
  #
9
9
  # create external account
10
10
  #
11
- # @overload create(counterparty_id:, body_external_id: nil, account_details: nil, account_type: nil, contact_details: nil, ledger_account: nil, metadata: nil, name: nil, party_address: nil, party_identifier: nil, party_name: nil, party_type: nil, plaid_processor_token: nil, routing_details: nil, request_options: {})
11
+ # @overload create(counterparty_id:, account_details: nil, account_type: nil, contact_details: nil, external_id: nil, ledger_account: nil, metadata: nil, name: nil, party_address: nil, party_identifier: nil, party_name: nil, party_type: nil, plaid_processor_token: nil, routing_details: nil, request_options: {})
12
12
  #
13
- # @param counterparty_id [String, nil] Body param:
13
+ # @param counterparty_id [String, nil]
14
14
  #
15
- # @param body_external_id [String, nil] Body param: An optional user-defined 180 character unique identifier.
15
+ # @param account_details [Array<ModernTreasury::Models::ExternalAccountCreateParams::AccountDetail>]
16
16
  #
17
- # @param account_details [Array<ModernTreasury::Models::ExternalAccountCreateParams::AccountDetail>] Body param:
17
+ # @param account_type [Symbol, ModernTreasury::Models::ExternalAccountType] Can be `checking`, `savings` or `other`.
18
18
  #
19
- # @param account_type [Symbol, ModernTreasury::Models::ExternalAccountType] Body param: Can be `checking`, `savings` or `other`.
19
+ # @param contact_details [Array<ModernTreasury::Models::ContactDetailCreateRequest>]
20
20
  #
21
- # @param contact_details [Array<ModernTreasury::Models::ContactDetailCreateRequest>] Body param:
21
+ # @param external_id [String, nil] An optional user-defined 180 character unique identifier.
22
22
  #
23
- # @param ledger_account [ModernTreasury::Models::LedgerAccountCreateRequest] Body param: Specifies a ledger account object that will be created with the exte
23
+ # @param ledger_account [ModernTreasury::Models::LedgerAccountCreateRequest] Specifies a ledger account object that will be created with the external account
24
24
  #
25
- # @param metadata [Hash{Symbol=>String}] Body param: Additional data represented as key-value pairs. Both the key and val
25
+ # @param metadata [Hash{Symbol=>String}] Additional data represented as key-value pairs. Both the key and value must be s
26
26
  #
27
- # @param name [String, nil] Body param: A nickname for the external account. This is only for internal usage
27
+ # @param name [String, nil] A nickname for the external account. This is only for internal usage and won't a
28
28
  #
29
- # @param party_address [ModernTreasury::Models::AddressRequest] Body param: Required if receiving wire payments.
29
+ # @param party_address [ModernTreasury::Models::AddressRequest] Required if receiving wire payments.
30
30
  #
31
- # @param party_identifier [String] Body param:
31
+ # @param party_identifier [String]
32
32
  #
33
- # @param party_name [String] Body param: If this value isn't provided, it will be inherited from the counterp
33
+ # @param party_name [String] If this value isn't provided, it will be inherited from the counterparty's name.
34
34
  #
35
- # @param party_type [Symbol, ModernTreasury::Models::ExternalAccountCreateParams::PartyType, nil] Body param: Either `individual` or `business`.
35
+ # @param party_type [Symbol, ModernTreasury::Models::ExternalAccountCreateParams::PartyType, nil] Either `individual` or `business`.
36
36
  #
37
- # @param plaid_processor_token [String] Body param: If you've enabled the Modern Treasury + Plaid integration in your Pl
37
+ # @param plaid_processor_token [String] If you've enabled the Modern Treasury + Plaid integration in your Plaid account,
38
38
  #
39
- # @param routing_details [Array<ModernTreasury::Models::ExternalAccountCreateParams::RoutingDetail>] Body param:
39
+ # @param routing_details [Array<ModernTreasury::Models::ExternalAccountCreateParams::RoutingDetail>]
40
40
  #
41
41
  # @param request_options [ModernTreasury::RequestOptions, Hash{Symbol=>Object}, nil]
42
42
  #
@@ -45,12 +45,10 @@ module ModernTreasury
45
45
  # @see ModernTreasury::Models::ExternalAccountCreateParams
46
46
  def create(params)
47
47
  parsed, options = ModernTreasury::ExternalAccountCreateParams.dump_request(params)
48
- query_params = [:query_external_id]
49
48
  @client.request(
50
49
  method: :post,
51
50
  path: "api/external_accounts",
52
- query: parsed.slice(*query_params).transform_keys(query_external_id: "external_id"),
53
- body: parsed.except(*query_params),
51
+ body: parsed,
54
52
  model: ModernTreasury::ExternalAccount,
55
53
  options: options
56
54
  )
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ModernTreasury
4
- VERSION = "0.8.0"
4
+ VERSION = "0.10.0"
5
5
  end
@@ -9,6 +9,7 @@ require "erb"
9
9
  require "etc"
10
10
  require "json"
11
11
  require "net/http"
12
+ require "openssl"
12
13
  require "pathname"
13
14
  require "rbconfig"
14
15
  require "securerandom"
data/manifest.yaml CHANGED
@@ -6,6 +6,7 @@ dependencies:
6
6
  - etc
7
7
  - json
8
8
  - net/http
9
+ - openssl
9
10
  - pathname
10
11
  - rbconfig
11
12
  - securerandom
@@ -182,6 +182,11 @@ module ModernTreasury
182
182
  private def auth_headers
183
183
  end
184
184
 
185
+ # @api private
186
+ sig { returns(String) }
187
+ private def user_agent
188
+ end
189
+
185
190
  # @api private
186
191
  sig { returns(String) }
187
192
  private def generate_idempotency_key
@@ -26,8 +26,12 @@ module ModernTreasury
26
26
 
27
27
  class << self
28
28
  # @api private
29
- sig { params(url: URI::Generic).returns(Net::HTTP) }
30
- def connect(url)
29
+ sig do
30
+ params(cert_store: OpenSSL::X509::Store, url: URI::Generic).returns(
31
+ Net::HTTP
32
+ )
33
+ end
34
+ def connect(cert_store:, url:)
31
35
  end
32
36
 
33
37
  # @api private
@@ -31,7 +31,7 @@ module ModernTreasury
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: ModernTreasury::Internal::Type::BaseModel).void }
35
35
  def inherited(child)
36
36
  end
37
37
 
@@ -282,9 +282,13 @@ module ModernTreasury
282
282
 
283
283
  # Create a new instance of a model.
284
284
  sig do
285
- params(data: T.any(T::Hash[Symbol, T.anything], T.self_type)).returns(
286
- T.attached_class
287
- )
285
+ params(
286
+ data:
287
+ T.any(
288
+ T::Hash[Symbol, T.anything],
289
+ ModernTreasury::Internal::Type::BaseModel
290
+ )
291
+ ).returns(T.attached_class)
288
292
  end
289
293
  def self.new(data = {})
290
294
  end
@@ -18,10 +18,6 @@ module ModernTreasury
18
18
  sig { returns(T.nilable(String)) }
19
19
  attr_accessor :name
20
20
 
21
- # An optional user-defined 180 character unique identifier.
22
- sig { returns(T.nilable(String)) }
23
- attr_accessor :body_external_id
24
-
25
21
  sig do
26
22
  returns(T.nilable(ModernTreasury::CounterpartyCreateParams::Accounting))
27
23
  end
@@ -55,6 +51,10 @@ module ModernTreasury
55
51
  sig { returns(T.nilable(String)) }
56
52
  attr_accessor :email
57
53
 
54
+ # An optional user-defined 180 character unique identifier.
55
+ sig { returns(T.nilable(String)) }
56
+ attr_accessor :external_id
57
+
58
58
  # An optional type to auto-sync the counterparty to your ledger. Either `customer`
59
59
  # or `vendor`.
60
60
  sig do
@@ -126,12 +126,12 @@ module ModernTreasury
126
126
  sig do
127
127
  params(
128
128
  name: T.nilable(String),
129
- body_external_id: T.nilable(String),
130
129
  accounting:
131
130
  ModernTreasury::CounterpartyCreateParams::Accounting::OrHash,
132
131
  accounts:
133
132
  T::Array[ModernTreasury::CounterpartyCreateParams::Account::OrHash],
134
133
  email: T.nilable(String),
134
+ external_id: T.nilable(String),
135
135
  ledger_type:
136
136
  ModernTreasury::CounterpartyCreateParams::LedgerType::OrSymbol,
137
137
  legal_entity:
@@ -147,13 +147,13 @@ module ModernTreasury
147
147
  def self.new(
148
148
  # A human friendly name for this counterparty.
149
149
  name:,
150
- # An optional user-defined 180 character unique identifier.
151
- body_external_id: nil,
152
150
  accounting: nil,
153
151
  # The accounts for this counterparty.
154
152
  accounts: nil,
155
153
  # The counterparty's email.
156
154
  email: nil,
155
+ # An optional user-defined 180 character unique identifier.
156
+ external_id: nil,
157
157
  # An optional type to auto-sync the counterparty to your ledger. Either `customer`
158
158
  # or `vendor`.
159
159
  ledger_type: nil,
@@ -178,11 +178,11 @@ module ModernTreasury
178
178
  override.returns(
179
179
  {
180
180
  name: T.nilable(String),
181
- body_external_id: T.nilable(String),
182
181
  accounting: ModernTreasury::CounterpartyCreateParams::Accounting,
183
182
  accounts:
184
183
  T::Array[ModernTreasury::CounterpartyCreateParams::Account],
185
184
  email: T.nilable(String),
185
+ external_id: T.nilable(String),
186
186
  ledger_type:
187
187
  ModernTreasury::CounterpartyCreateParams::LedgerType::OrSymbol,
188
188
  legal_entity: ModernTreasury::CounterpartyCreateParams::LegalEntity,
@@ -17,10 +17,6 @@ module ModernTreasury
17
17
  sig { returns(T.nilable(String)) }
18
18
  attr_accessor :counterparty_id
19
19
 
20
- # An optional user-defined 180 character unique identifier.
21
- sig { returns(T.nilable(String)) }
22
- attr_accessor :body_external_id
23
-
24
20
  sig do
25
21
  returns(
26
22
  T.nilable(
@@ -62,6 +58,10 @@ module ModernTreasury
62
58
  end
63
59
  attr_writer :contact_details
64
60
 
61
+ # An optional user-defined 180 character unique identifier.
62
+ sig { returns(T.nilable(String)) }
63
+ attr_accessor :external_id
64
+
65
65
  # Specifies a ledger account object that will be created with the external
66
66
  # account. The resulting ledger account is linked to the external account for
67
67
  # auto-ledgering Payment objects. See
@@ -150,7 +150,6 @@ module ModernTreasury
150
150
  sig do
151
151
  params(
152
152
  counterparty_id: T.nilable(String),
153
- body_external_id: T.nilable(String),
154
153
  account_details:
155
154
  T::Array[
156
155
  ModernTreasury::ExternalAccountCreateParams::AccountDetail::OrHash
@@ -158,6 +157,7 @@ module ModernTreasury
158
157
  account_type: ModernTreasury::ExternalAccountType::OrSymbol,
159
158
  contact_details:
160
159
  T::Array[ModernTreasury::ContactDetailCreateRequest::OrHash],
160
+ external_id: T.nilable(String),
161
161
  ledger_account: ModernTreasury::LedgerAccountCreateRequest::OrHash,
162
162
  metadata: T::Hash[Symbol, String],
163
163
  name: T.nilable(String),
@@ -178,12 +178,12 @@ module ModernTreasury
178
178
  end
179
179
  def self.new(
180
180
  counterparty_id:,
181
- # An optional user-defined 180 character unique identifier.
182
- body_external_id: nil,
183
181
  account_details: nil,
184
182
  # Can be `checking`, `savings` or `other`.
185
183
  account_type: nil,
186
184
  contact_details: nil,
185
+ # An optional user-defined 180 character unique identifier.
186
+ external_id: nil,
187
187
  # Specifies a ledger account object that will be created with the external
188
188
  # account. The resulting ledger account is linked to the external account for
189
189
  # auto-ledgering Payment objects. See
@@ -215,7 +215,6 @@ module ModernTreasury
215
215
  override.returns(
216
216
  {
217
217
  counterparty_id: T.nilable(String),
218
- body_external_id: T.nilable(String),
219
218
  account_details:
220
219
  T::Array[
221
220
  ModernTreasury::ExternalAccountCreateParams::AccountDetail
@@ -223,6 +222,7 @@ module ModernTreasury
223
222
  account_type: ModernTreasury::ExternalAccountType::OrSymbol,
224
223
  contact_details:
225
224
  T::Array[ModernTreasury::ContactDetailCreateRequest],
225
+ external_id: T.nilable(String),
226
226
  ledger_account: ModernTreasury::LedgerAccountCreateRequest,
227
227
  metadata: T::Hash[Symbol, String],
228
228
  name: T.nilable(String),
@@ -23,6 +23,7 @@ module ModernTreasury
23
23
  CIE = T.let(:CIE, ModernTreasury::PaymentOrderSubtype::TaggedSymbol)
24
24
  CTX = T.let(:CTX, ModernTreasury::PaymentOrderSubtype::TaggedSymbol)
25
25
  IAT = T.let(:IAT, ModernTreasury::PaymentOrderSubtype::TaggedSymbol)
26
+ POS = T.let(:POS, ModernTreasury::PaymentOrderSubtype::TaggedSymbol)
26
27
  PPD = T.let(:PPD, ModernTreasury::PaymentOrderSubtype::TaggedSymbol)
27
28
  TEL = T.let(:TEL, ModernTreasury::PaymentOrderSubtype::TaggedSymbol)
28
29
  WEB = T.let(:WEB, ModernTreasury::PaymentOrderSubtype::TaggedSymbol)
@@ -7,12 +7,12 @@ module ModernTreasury
7
7
  sig do
8
8
  params(
9
9
  name: T.nilable(String),
10
- body_external_id: T.nilable(String),
11
10
  accounting:
12
11
  ModernTreasury::CounterpartyCreateParams::Accounting::OrHash,
13
12
  accounts:
14
13
  T::Array[ModernTreasury::CounterpartyCreateParams::Account::OrHash],
15
14
  email: T.nilable(String),
15
+ external_id: T.nilable(String),
16
16
  ledger_type:
17
17
  ModernTreasury::CounterpartyCreateParams::LedgerType::OrSymbol,
18
18
  legal_entity:
@@ -26,32 +26,30 @@ module ModernTreasury
26
26
  ).returns(ModernTreasury::Counterparty)
27
27
  end
28
28
  def create(
29
- # Body param: A human friendly name for this counterparty.
29
+ # A human friendly name for this counterparty.
30
30
  name:,
31
- # Body param: An optional user-defined 180 character unique identifier.
32
- body_external_id: nil,
33
- # Body param:
34
31
  accounting: nil,
35
- # Body param: The accounts for this counterparty.
32
+ # The accounts for this counterparty.
36
33
  accounts: nil,
37
- # Body param: The counterparty's email.
34
+ # The counterparty's email.
38
35
  email: nil,
39
- # Body param: An optional type to auto-sync the counterparty to your ledger.
40
- # Either `customer` or `vendor`.
36
+ # An optional user-defined 180 character unique identifier.
37
+ external_id: nil,
38
+ # An optional type to auto-sync the counterparty to your ledger. Either `customer`
39
+ # or `vendor`.
41
40
  ledger_type: nil,
42
- # Body param:
43
41
  legal_entity: nil,
44
- # Body param: The id of the legal entity.
42
+ # The id of the legal entity.
45
43
  legal_entity_id: nil,
46
- # Body param: Additional data represented as key-value pairs. Both the key and
47
- # value must be strings.
44
+ # Additional data represented as key-value pairs. Both the key and value must be
45
+ # strings.
48
46
  metadata: nil,
49
- # Body param: Send an email to the counterparty whenever an associated payment
50
- # order is sent to the bank.
47
+ # Send an email to the counterparty whenever an associated payment order is sent
48
+ # to the bank.
51
49
  send_remittance_advice: nil,
52
- # Body param: Either a valid SSN or EIN.
50
+ # Either a valid SSN or EIN.
53
51
  taxpayer_identifier: nil,
54
- # Body param: The verification status of the counterparty.
52
+ # The verification status of the counterparty.
55
53
  verification_status: nil,
56
54
  request_options: {}
57
55
  )
@@ -7,7 +7,6 @@ module ModernTreasury
7
7
  sig do
8
8
  params(
9
9
  counterparty_id: T.nilable(String),
10
- body_external_id: T.nilable(String),
11
10
  account_details:
12
11
  T::Array[
13
12
  ModernTreasury::ExternalAccountCreateParams::AccountDetail::OrHash
@@ -15,6 +14,7 @@ module ModernTreasury
15
14
  account_type: ModernTreasury::ExternalAccountType::OrSymbol,
16
15
  contact_details:
17
16
  T::Array[ModernTreasury::ContactDetailCreateRequest::OrHash],
17
+ external_id: T.nilable(String),
18
18
  ledger_account: ModernTreasury::LedgerAccountCreateRequest::OrHash,
19
19
  metadata: T::Hash[Symbol, String],
20
20
  name: T.nilable(String),
@@ -34,41 +34,35 @@ module ModernTreasury
34
34
  ).returns(ModernTreasury::ExternalAccount)
35
35
  end
36
36
  def create(
37
- # Body param:
38
37
  counterparty_id:,
39
- # Body param: An optional user-defined 180 character unique identifier.
40
- body_external_id: nil,
41
- # Body param:
42
38
  account_details: nil,
43
- # Body param: Can be `checking`, `savings` or `other`.
39
+ # Can be `checking`, `savings` or `other`.
44
40
  account_type: nil,
45
- # Body param:
46
41
  contact_details: nil,
47
- # Body param: Specifies a ledger account object that will be created with the
48
- # external account. The resulting ledger account is linked to the external account
49
- # for auto-ledgering Payment objects. See
42
+ # An optional user-defined 180 character unique identifier.
43
+ external_id: nil,
44
+ # Specifies a ledger account object that will be created with the external
45
+ # account. The resulting ledger account is linked to the external account for
46
+ # auto-ledgering Payment objects. See
50
47
  # https://docs.moderntreasury.com/docs/linking-to-other-modern-treasury-objects
51
48
  # for more details.
52
49
  ledger_account: nil,
53
- # Body param: Additional data represented as key-value pairs. Both the key and
54
- # value must be strings.
50
+ # Additional data represented as key-value pairs. Both the key and value must be
51
+ # strings.
55
52
  metadata: nil,
56
- # Body param: A nickname for the external account. This is only for internal usage
57
- # and won't affect any payments
53
+ # A nickname for the external account. This is only for internal usage and won't
54
+ # affect any payments
58
55
  name: nil,
59
- # Body param: Required if receiving wire payments.
56
+ # Required if receiving wire payments.
60
57
  party_address: nil,
61
- # Body param:
62
58
  party_identifier: nil,
63
- # Body param: If this value isn't provided, it will be inherited from the
64
- # counterparty's name.
59
+ # If this value isn't provided, it will be inherited from the counterparty's name.
65
60
  party_name: nil,
66
- # Body param: Either `individual` or `business`.
61
+ # Either `individual` or `business`.
67
62
  party_type: nil,
68
- # Body param: If you've enabled the Modern Treasury + Plaid integration in your
69
- # Plaid account, you can pass the processor token in this field.
63
+ # If you've enabled the Modern Treasury + Plaid integration in your Plaid account,
64
+ # you can pass the processor token in this field.
70
65
  plaid_processor_token: nil,
71
- # Body param:
72
66
  routing_details: nil,
73
67
  request_options: {}
74
68
  )
@@ -87,6 +87,8 @@ module ModernTreasury
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: (
@@ -17,7 +17,10 @@ module ModernTreasury
17
17
 
18
18
  DEFAULT_MAX_CONNECTIONS: Integer
19
19
 
20
- def self.connect: (URI::Generic url) -> top
20
+ def self.connect: (
21
+ cert_store: OpenSSL::X509::Store,
22
+ url: URI::Generic
23
+ ) -> top
21
24
 
22
25
  def self.calibrate_socket_timeout: (top conn, Float deadline) -> void
23
26
 
@@ -3,10 +3,10 @@ module ModernTreasury
3
3
  type counterparty_create_params =
4
4
  {
5
5
  name: String?,
6
- body_external_id: String?,
7
6
  accounting: ModernTreasury::CounterpartyCreateParams::Accounting,
8
7
  accounts: ::Array[ModernTreasury::CounterpartyCreateParams::Account],
9
8
  email: String?,
9
+ external_id: String?,
10
10
  ledger_type: ModernTreasury::Models::CounterpartyCreateParams::ledger_type,
11
11
  legal_entity: ModernTreasury::CounterpartyCreateParams::LegalEntity,
12
12
  legal_entity_id: String?,
@@ -23,8 +23,6 @@ module ModernTreasury
23
23
 
24
24
  attr_accessor name: String?
25
25
 
26
- attr_accessor body_external_id: String?
27
-
28
26
  attr_reader accounting: ModernTreasury::CounterpartyCreateParams::Accounting?
29
27
 
30
28
  def accounting=: (
@@ -39,6 +37,8 @@ module ModernTreasury
39
37
 
40
38
  attr_accessor email: String?
41
39
 
40
+ attr_accessor external_id: String?
41
+
42
42
  attr_reader ledger_type: ModernTreasury::Models::CounterpartyCreateParams::ledger_type?
43
43
 
44
44
  def ledger_type=: (
@@ -71,10 +71,10 @@ module ModernTreasury
71
71
 
72
72
  def initialize: (
73
73
  name: String?,
74
- ?body_external_id: String?,
75
74
  ?accounting: ModernTreasury::CounterpartyCreateParams::Accounting,
76
75
  ?accounts: ::Array[ModernTreasury::CounterpartyCreateParams::Account],
77
76
  ?email: String?,
77
+ ?external_id: String?,
78
78
  ?ledger_type: ModernTreasury::Models::CounterpartyCreateParams::ledger_type,
79
79
  ?legal_entity: ModernTreasury::CounterpartyCreateParams::LegalEntity,
80
80
  ?legal_entity_id: String?,
@@ -87,10 +87,10 @@ module ModernTreasury
87
87
 
88
88
  def to_hash: -> {
89
89
  name: String?,
90
- body_external_id: String?,
91
90
  accounting: ModernTreasury::CounterpartyCreateParams::Accounting,
92
91
  accounts: ::Array[ModernTreasury::CounterpartyCreateParams::Account],
93
92
  email: String?,
93
+ external_id: String?,
94
94
  ledger_type: ModernTreasury::Models::CounterpartyCreateParams::ledger_type,
95
95
  legal_entity: ModernTreasury::CounterpartyCreateParams::LegalEntity,
96
96
  legal_entity_id: String?,
@@ -3,10 +3,10 @@ module ModernTreasury
3
3
  type external_account_create_params =
4
4
  {
5
5
  counterparty_id: String?,
6
- body_external_id: String?,
7
6
  account_details: ::Array[ModernTreasury::ExternalAccountCreateParams::AccountDetail],
8
7
  account_type: ModernTreasury::Models::external_account_type,
9
8
  contact_details: ::Array[ModernTreasury::ContactDetailCreateRequest],
9
+ external_id: String?,
10
10
  ledger_account: ModernTreasury::LedgerAccountCreateRequest,
11
11
  metadata: ::Hash[Symbol, String],
12
12
  name: String?,
@@ -25,8 +25,6 @@ module ModernTreasury
25
25
 
26
26
  attr_accessor counterparty_id: String?
27
27
 
28
- attr_accessor body_external_id: String?
29
-
30
28
  attr_reader account_details: ::Array[ModernTreasury::ExternalAccountCreateParams::AccountDetail]?
31
29
 
32
30
  def account_details=: (
@@ -45,6 +43,8 @@ module ModernTreasury
45
43
  ::Array[ModernTreasury::ContactDetailCreateRequest]
46
44
  ) -> ::Array[ModernTreasury::ContactDetailCreateRequest]
47
45
 
46
+ attr_accessor external_id: String?
47
+
48
48
  attr_reader ledger_account: ModernTreasury::LedgerAccountCreateRequest?
49
49
 
50
50
  def ledger_account=: (
@@ -85,10 +85,10 @@ module ModernTreasury
85
85
 
86
86
  def initialize: (
87
87
  counterparty_id: String?,
88
- ?body_external_id: String?,
89
88
  ?account_details: ::Array[ModernTreasury::ExternalAccountCreateParams::AccountDetail],
90
89
  ?account_type: ModernTreasury::Models::external_account_type,
91
90
  ?contact_details: ::Array[ModernTreasury::ContactDetailCreateRequest],
91
+ ?external_id: String?,
92
92
  ?ledger_account: ModernTreasury::LedgerAccountCreateRequest,
93
93
  ?metadata: ::Hash[Symbol, String],
94
94
  ?name: String?,
@@ -103,10 +103,10 @@ module ModernTreasury
103
103
 
104
104
  def to_hash: -> {
105
105
  counterparty_id: String?,
106
- body_external_id: String?,
107
106
  account_details: ::Array[ModernTreasury::ExternalAccountCreateParams::AccountDetail],
108
107
  account_type: ModernTreasury::Models::external_account_type,
109
108
  contact_details: ::Array[ModernTreasury::ContactDetailCreateRequest],
109
+ external_id: String?,
110
110
  ledger_account: ModernTreasury::LedgerAccountCreateRequest,
111
111
  metadata: ::Hash[Symbol, String],
112
112
  name: String?,
@@ -8,6 +8,7 @@ module ModernTreasury
8
8
  | :CIE
9
9
  | :CTX
10
10
  | :IAT
11
+ | :POS
11
12
  | :PPD
12
13
  | :TEL
13
14
  | :WEB
@@ -41,6 +42,7 @@ module ModernTreasury
41
42
  CIE: :CIE
42
43
  CTX: :CTX
43
44
  IAT: :IAT
45
+ POS: :POS
44
46
  PPD: :PPD
45
47
  TEL: :TEL
46
48
  WEB: :WEB
@@ -3,10 +3,10 @@ module ModernTreasury
3
3
  class Counterparties
4
4
  def create: (
5
5
  name: String?,
6
- ?body_external_id: String?,
7
6
  ?accounting: ModernTreasury::CounterpartyCreateParams::Accounting,
8
7
  ?accounts: ::Array[ModernTreasury::CounterpartyCreateParams::Account],
9
8
  ?email: String?,
9
+ ?external_id: String?,
10
10
  ?ledger_type: ModernTreasury::Models::CounterpartyCreateParams::ledger_type,
11
11
  ?legal_entity: ModernTreasury::CounterpartyCreateParams::LegalEntity,
12
12
  ?legal_entity_id: String?,
@@ -3,10 +3,10 @@ module ModernTreasury
3
3
  class ExternalAccounts
4
4
  def create: (
5
5
  counterparty_id: String?,
6
- ?body_external_id: String?,
7
6
  ?account_details: ::Array[ModernTreasury::ExternalAccountCreateParams::AccountDetail],
8
7
  ?account_type: ModernTreasury::Models::external_account_type,
9
8
  ?contact_details: ::Array[ModernTreasury::ContactDetailCreateRequest],
9
+ ?external_id: String?,
10
10
  ?ledger_account: ModernTreasury::LedgerAccountCreateRequest,
11
11
  ?metadata: ::Hash[Symbol, String],
12
12
  ?name: String?,
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: modern_treasury
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Modern Treasury
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-10-23 00:00:00.000000000 Z
11
+ date: 2025-11-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: connection_pool