inttegro 4.3.0 → 5.0.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 +4 -4
- data/CHANGELOG.md +9 -0
- data/README.md +2 -0
- data/Rakefile +13 -0
- data/lib/inttegro/generated/enums.rb +9 -2
- data/lib/inttegro/generated/models.rb +404 -400
- data/lib/inttegro/generated/operations.rb +1 -4
- data/lib/inttegro/http_client.rb +5 -4
- data/lib/inttegro/models.rb +35 -7
- data/lib/inttegro/resources/balances.rb +1 -1
- data/lib/inttegro/resources/orders.rb +0 -30
- data/lib/inttegro/resources/payouts.rb +2 -2
- data/lib/inttegro/version.rb +1 -1
- data/rbi/inttegro/generated.rbi +0 -6
- metadata +3 -2
|
@@ -48,7 +48,6 @@ module Inttegro
|
|
|
48
48
|
"/orders/send_receipt" => Inttegro::OrderDocumentDeliveryResult,
|
|
49
49
|
"/orders/page" => Inttegro::PageOrdersEnvelope,
|
|
50
50
|
"/refunds/create" => Inttegro::RefundResponse,
|
|
51
|
-
"/orders/refund" => Inttegro::RefundResponse,
|
|
52
51
|
"/refunds/cancel" => Inttegro::RefundResponse,
|
|
53
52
|
"/refunds/lookup" => Inttegro::RefundResponse,
|
|
54
53
|
"/refunds/page" => Inttegro::RefundPageResponse,
|
|
@@ -72,7 +71,7 @@ module Inttegro
|
|
|
72
71
|
"/financial_accounts/reconnect" => Inttegro::ReconnectFinancialAccountResponse,
|
|
73
72
|
"/financial_accounts/enable_pull" => Inttegro::EnableFinancialAccountPullResponse,
|
|
74
73
|
"/financial_accounts/disable_pull" => Inttegro::DisableFinancialAccountPullResponse,
|
|
75
|
-
"/balances" => Inttegro::
|
|
74
|
+
"/balances" => Inttegro::BalanceSnapshotResponse,
|
|
76
75
|
"/balance_transactions/lookup" => Inttegro::BalanceTransactionResponse,
|
|
77
76
|
"/balance_transactions/page" => Inttegro::BalanceTransactionPageResponse,
|
|
78
77
|
"/payouts/schedule" => Inttegro::SchedulePayoutResponse,
|
|
@@ -171,7 +170,6 @@ module Inttegro
|
|
|
171
170
|
"/orders/send_receipt" => "Inttegro::OrderDocumentDeliveryRequest",
|
|
172
171
|
"/orders/page" => "Inttegro::PageOrdersRequest",
|
|
173
172
|
"/refunds/create" => "Inttegro::CreateRefundRequest",
|
|
174
|
-
"/orders/refund" => "Inttegro::CreateRefundRequest",
|
|
175
173
|
"/refunds/cancel" => "Inttegro::CancelRefundRequest",
|
|
176
174
|
"/refunds/lookup" => "Inttegro::LookupRefundRequest",
|
|
177
175
|
"/refunds/page" => "Inttegro::PageRefundsRequest",
|
|
@@ -292,7 +290,6 @@ module Inttegro
|
|
|
292
290
|
"/orders/send_receipt" => "sendOrderReceipt",
|
|
293
291
|
"/orders/page" => "pageOrders",
|
|
294
292
|
"/refunds/create" => "createRefund",
|
|
295
|
-
"/orders/refund" => "createRefundAlias",
|
|
296
293
|
"/refunds/cancel" => "cancelRefund",
|
|
297
294
|
"/refunds/lookup" => "lookupRefund",
|
|
298
295
|
"/refunds/page" => "pageRefunds",
|
data/lib/inttegro/http_client.rb
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
require "json"
|
|
5
5
|
require "net/http"
|
|
6
6
|
require "securerandom"
|
|
7
|
+
require "time"
|
|
7
8
|
require "uri"
|
|
8
9
|
|
|
9
10
|
require_relative "errors"
|
|
@@ -626,8 +627,6 @@ module Inttegro
|
|
|
626
627
|
|
|
627
628
|
sig { params(path: String).returns(T.nilable(T::Class[T::Struct])) }
|
|
628
629
|
def response_model_for(path)
|
|
629
|
-
return T.cast(Inttegro.const_get(:OrderEnvelope), T::Class[T::Struct]) if path == "/orders/new"
|
|
630
|
-
|
|
631
630
|
Inttegro::Operations::RESPONSE_MODELS[path]
|
|
632
631
|
end
|
|
633
632
|
|
|
@@ -654,11 +653,11 @@ module Inttegro
|
|
|
654
653
|
require_keys(body, %w[product_id price_id], path)
|
|
655
654
|
when "/products/lookup", "/products/update", "/products/publish", "/products/unpublish", "/products/archive"
|
|
656
655
|
require_keys(body, %w[product_id], path)
|
|
657
|
-
when "/orders/create"
|
|
656
|
+
when "/orders/create"
|
|
658
657
|
require_any(body, %w[customer_data customer_id], path)
|
|
659
658
|
require_keys(body, %w[line_items], path)
|
|
660
659
|
when "/orders/lookup", "/orders/update", "/orders/request_confirmation", "/orders/finalize",
|
|
661
|
-
"/orders/cancel", "/orders/
|
|
660
|
+
"/orders/cancel", "/orders/complete"
|
|
662
661
|
require_keys(body, %w[order_id], path)
|
|
663
662
|
when "/orders/confirm_payment"
|
|
664
663
|
require_keys(body, %w[order_id token], path)
|
|
@@ -727,6 +726,8 @@ module Inttegro
|
|
|
727
726
|
normalize_payload(value.serialize)
|
|
728
727
|
when T::Enum
|
|
729
728
|
value.serialize
|
|
729
|
+
when Time
|
|
730
|
+
value.iso8601(9)
|
|
730
731
|
when Hash
|
|
731
732
|
normalize_payload(value)
|
|
732
733
|
when Array
|
data/lib/inttegro/models.rb
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
# typed: strict
|
|
3
3
|
|
|
4
4
|
require "sorbet-runtime"
|
|
5
|
+
require "set"
|
|
6
|
+
require "time"
|
|
5
7
|
|
|
6
8
|
require_relative "generated/models"
|
|
7
9
|
require_relative "types"
|
|
@@ -9,6 +11,21 @@ require_relative "types"
|
|
|
9
11
|
module Inttegro
|
|
10
12
|
extend T::Sig
|
|
11
13
|
|
|
14
|
+
TEMPORAL_FIELDS = T.let(%w[
|
|
15
|
+
after archived_at as_of at attempted_at available_at canceled_at checked_at
|
|
16
|
+
claimed_at completed_at created_after created_at created_before deleted_at
|
|
17
|
+
delivered_at disconnected_at due_at enabled_at execute_after executed_at
|
|
18
|
+
expected_at expired_at expires_at expires_on failed_at fulfilled_at inactive_at
|
|
19
|
+
includes_transactions_before initialized_at initiated_at issued_at last_accessed_at
|
|
20
|
+
last_attempted_at last_email_event_at last_used_at occurred_at paid_at payment_due_at
|
|
21
|
+
processing_at published_at queued_at reviewed_at revoked_at scheduled_at sealed_at
|
|
22
|
+
send_after sent_at succeeded_at supplied_at suppressed_at token_sent_at updated_at
|
|
23
|
+
uploading_at valid_until verified_at
|
|
24
|
+
].to_set.freeze, T::Set[String])
|
|
25
|
+
OPAQUE_TIMESTAMP_CONTAINERS = T.let(%w[
|
|
26
|
+
custom_data details headers json_ld mandate metadata variables
|
|
27
|
+
].to_set.freeze, T::Set[String])
|
|
28
|
+
|
|
12
29
|
# Amount primitives live under Money so the namespace can grow to include
|
|
13
30
|
# currency conversion and formatting helpers without treating money as a
|
|
14
31
|
# single value type.
|
|
@@ -100,31 +117,42 @@ module Inttegro
|
|
|
100
117
|
|
|
101
118
|
sig { returns(T::Boolean) }
|
|
102
119
|
def valid?
|
|
103
|
-
!id.empty? && !order_id.empty? &&
|
|
120
|
+
!id.empty? && !order_id.empty? && valid_source?
|
|
104
121
|
end
|
|
105
122
|
end
|
|
106
123
|
|
|
107
124
|
sig { params(value: Object, klass: T::Class[T::Struct]).returns(T::Struct) }
|
|
108
125
|
def self.deserialize(value, klass)
|
|
109
|
-
data = stringify_json_keys(value)
|
|
126
|
+
data = stringify_json_keys(value, decode_timestamps: true)
|
|
110
127
|
raise TypeError, "expected an object for #{klass}, got #{data.class}" unless data.is_a?(Hash)
|
|
111
128
|
|
|
112
129
|
T.cast(klass, T.class_of(T::Struct)).from_hash(data)
|
|
113
130
|
end
|
|
114
131
|
|
|
115
|
-
sig { params(value: Object).returns(Object) }
|
|
116
|
-
def self.stringify_json_keys(value)
|
|
132
|
+
sig { params(value: Object, decode_timestamps: T::Boolean).returns(Object) }
|
|
133
|
+
def self.stringify_json_keys(value, decode_timestamps: false)
|
|
117
134
|
case value
|
|
118
135
|
when T::Struct
|
|
119
|
-
stringify_json_keys(value.serialize)
|
|
136
|
+
stringify_json_keys(value.serialize, decode_timestamps: decode_timestamps)
|
|
120
137
|
when T::Enum
|
|
121
138
|
value.serialize
|
|
122
139
|
when Hash
|
|
123
140
|
value.each_with_object({}) do |(key, item), output|
|
|
124
|
-
|
|
141
|
+
field = key.to_s
|
|
142
|
+
child_decode = decode_timestamps && !OPAQUE_TIMESTAMP_CONTAINERS.include?(field)
|
|
143
|
+
output[field] = if child_decode && TEMPORAL_FIELDS.include?(field) && item.is_a?(String)
|
|
144
|
+
unless item.match?(/(?:Z|[+-]\d{2}:\d{2})\z/)
|
|
145
|
+
raise ArgumentError, "timestamp #{field} must include a UTC offset"
|
|
146
|
+
end
|
|
147
|
+
Time.iso8601(item)
|
|
148
|
+
else
|
|
149
|
+
stringify_json_keys(item, decode_timestamps: child_decode)
|
|
150
|
+
end
|
|
125
151
|
end
|
|
126
152
|
when Array
|
|
127
|
-
value.map { |item| stringify_json_keys(item) }
|
|
153
|
+
value.map { |item| stringify_json_keys(item, decode_timestamps: decode_timestamps) }
|
|
154
|
+
when Time
|
|
155
|
+
value.iso8601(9)
|
|
128
156
|
else
|
|
129
157
|
value
|
|
130
158
|
end
|
|
@@ -103,10 +103,6 @@ module Inttegro
|
|
|
103
103
|
@http.post_resource("/orders/create", Inttegro::Order, :order, payload)
|
|
104
104
|
end
|
|
105
105
|
|
|
106
|
-
def new(payload)
|
|
107
|
-
@http.post_resource("/orders/new", Inttegro::Order, :order, payload)
|
|
108
|
-
end
|
|
109
|
-
|
|
110
106
|
# Retrieve an existing order by its ID.
|
|
111
107
|
#
|
|
112
108
|
# Returns full order details including customer, line items, payment state, and invoice information.
|
|
@@ -358,32 +354,6 @@ module Inttegro
|
|
|
358
354
|
)
|
|
359
355
|
end
|
|
360
356
|
|
|
361
|
-
# Create a refund through the /orders/refund compatibility alias.
|
|
362
|
-
#
|
|
363
|
-
# This accepts the same line-item payload as client.refunds.create and returns
|
|
364
|
-
# the created Refund directly. New integrations should use that canonical method.
|
|
365
|
-
#
|
|
366
|
-
# @param payload [Hash] Create-refund payload containing order_id, reason, and line_items
|
|
367
|
-
#
|
|
368
|
-
# @return [Inttegro::Refund] Created refund
|
|
369
|
-
#
|
|
370
|
-
# @example Refund an order
|
|
371
|
-
# refund = client.orders.refund(
|
|
372
|
-
# order_id: 'or_0123456789abcdefghijklmnopqrstuvwxyzABCD',
|
|
373
|
-
# reason: 'requested_by_customer',
|
|
374
|
-
# line_items: [{
|
|
375
|
-
# order_line_item_id: 'oli_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMN',
|
|
376
|
-
# refund_amount: { currency: 'ghs', value: 2500 }
|
|
377
|
-
# }]
|
|
378
|
-
# )
|
|
379
|
-
#
|
|
380
|
-
# puts "Refund created: #{refund.id}"
|
|
381
|
-
#
|
|
382
|
-
# @see https://studio.inttegro.com/refunds
|
|
383
|
-
def refund(payload)
|
|
384
|
-
@http.post_resource("/orders/refund", Inttegro::Refund, :refund, payload)
|
|
385
|
-
end
|
|
386
|
-
|
|
387
357
|
# Retrieve a paginated list of orders.
|
|
388
358
|
#
|
|
389
359
|
# Returns orders in reverse chronological order (most recent first).
|
|
@@ -144,8 +144,8 @@ module Inttegro
|
|
|
144
144
|
# @option payload [Integer] :page Page number to retrieve (minimum 1, default: 1)
|
|
145
145
|
# @option payload [Integer] :per_page Number of results per page (minimum 1, maximum 100, default: 10)
|
|
146
146
|
# @option payload [String] :status Filter by payout status (e.g., 'pending', 'paid', 'failed')
|
|
147
|
-
# @option payload [
|
|
148
|
-
# @option payload [
|
|
147
|
+
# @option payload [Time] :created_after Filter payouts created after this timestamp
|
|
148
|
+
# @option payload [Time] :created_before Filter payouts created before this timestamp
|
|
149
149
|
#
|
|
150
150
|
# @return [Inttegro::PayoutPage] Paginated list of payouts
|
|
151
151
|
#
|
data/lib/inttegro/version.rb
CHANGED
data/rbi/inttegro/generated.rbi
CHANGED
|
@@ -256,18 +256,12 @@ module Inttegro
|
|
|
256
256
|
sig { params(order_id: String, options: Inttegro::Types::Payload).returns(Inttegro::Order) }
|
|
257
257
|
def lookup(order_id:, **options); end
|
|
258
258
|
|
|
259
|
-
sig { params(payload: T.any(T.any(Inttegro::CreateOrderNewCustomer, Inttegro::CreateOrderExistingCustomer), Inttegro::Types::Payload)).returns(Inttegro::Order) }
|
|
260
|
-
def new(payload); end
|
|
261
|
-
|
|
262
259
|
sig { params(payload: T.nilable(T.any(Inttegro::PageOrdersRequest, Inttegro::Types::Payload))).returns(Inttegro::OrderPage) }
|
|
263
260
|
def page(payload = nil); end
|
|
264
261
|
|
|
265
262
|
sig { params(payload: T.any(Inttegro::PayOrderRequest, Inttegro::Types::Payload)).returns(Inttegro::Order) }
|
|
266
263
|
def pay(payload); end
|
|
267
264
|
|
|
268
|
-
sig { params(payload: T.any(Inttegro::CreateRefundRequest, Inttegro::Types::Payload)).returns(Inttegro::Refund) }
|
|
269
|
-
def refund(payload); end
|
|
270
|
-
|
|
271
265
|
sig { params(order_id: String, request_meta: T.nilable(Inttegro::Types::Payload)).returns(Inttegro::Order) }
|
|
272
266
|
def request_confirmation(order_id:, request_meta: nil); end
|
|
273
267
|
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: inttegro
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 5.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Inttegro Engineering
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-09-
|
|
11
|
+
date: 2026-09-10 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: sorbet-runtime
|
|
@@ -126,6 +126,7 @@ licenses:
|
|
|
126
126
|
metadata:
|
|
127
127
|
homepage_uri: https://studio.inttegro.com
|
|
128
128
|
source_code_uri: https://github.com/zebodotdev/inttegro-sdk-ruby
|
|
129
|
+
documentation_uri: https://ruby.inttegro.dev/
|
|
129
130
|
changelog_uri: https://github.com/zebodotdev/inttegro-sdk-ruby/blob/master/CHANGELOG.md
|
|
130
131
|
github_repo: ssh://github.com/zebodotdev/inttegro-sdk-ruby
|
|
131
132
|
rubygems_mfa_required: 'true'
|