stripe 5.55.0 → 8.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (125) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +122 -2
  3. data/Gemfile +1 -0
  4. data/Makefile +1 -1
  5. data/OPENAPI_VERSION +1 -0
  6. data/README.md +37 -3
  7. data/VERSION +1 -1
  8. data/lib/data/ca-certificates.crt +1241 -1937
  9. data/lib/stripe/api_operations/create.rb +6 -2
  10. data/lib/stripe/api_operations/delete.rb +12 -7
  11. data/lib/stripe/api_operations/list.rb +6 -9
  12. data/lib/stripe/api_operations/nested_resource.rb +62 -34
  13. data/lib/stripe/api_operations/request.rb +10 -0
  14. data/lib/stripe/api_operations/save.rb +11 -3
  15. data/lib/stripe/api_operations/search.rb +6 -9
  16. data/lib/stripe/api_resource.rb +1 -1
  17. data/lib/stripe/api_resource_test_helpers.rb +2 -0
  18. data/lib/stripe/api_version.rb +8 -0
  19. data/lib/stripe/instrumentation.rb +45 -7
  20. data/lib/stripe/object_types.rb +12 -10
  21. data/lib/stripe/resources/account.rb +36 -9
  22. data/lib/stripe/resources/account_link.rb +4 -0
  23. data/lib/stripe/resources/application_fee_refund.rb +5 -0
  24. data/lib/stripe/resources/apps/secret.rb +40 -0
  25. data/lib/stripe/resources/balance.rb +11 -0
  26. data/lib/stripe/resources/balance_transaction.rb +4 -0
  27. data/lib/stripe/resources/bank_account.rb +7 -0
  28. data/lib/stripe/resources/billing_portal/configuration.rb +1 -0
  29. data/lib/stripe/resources/billing_portal/session.rb +14 -0
  30. data/lib/stripe/resources/capability.rb +3 -0
  31. data/lib/stripe/resources/card.rb +6 -3
  32. data/lib/stripe/resources/cash_balance.rb +1 -0
  33. data/lib/stripe/resources/charge.rb +15 -3
  34. data/lib/stripe/resources/checkout/session.rb +41 -5
  35. data/lib/stripe/resources/country_spec.rb +6 -0
  36. data/lib/stripe/resources/coupon.rb +3 -0
  37. data/lib/stripe/resources/credit_note.rb +27 -9
  38. data/lib/stripe/resources/customer.rb +109 -19
  39. data/lib/stripe/resources/customer_balance_transaction.rb +6 -0
  40. data/lib/stripe/resources/customer_cash_balance_transaction.rb +14 -0
  41. data/lib/stripe/resources/discount.rb +4 -0
  42. data/lib/stripe/resources/dispute.rb +17 -3
  43. data/lib/stripe/resources/event.rb +29 -0
  44. data/lib/stripe/resources/exchange_rate.rb +11 -0
  45. data/lib/stripe/resources/file.rb +7 -0
  46. data/lib/stripe/resources/file_link.rb +3 -0
  47. data/lib/stripe/resources/financial_connections/account.rb +42 -6
  48. data/lib/stripe/resources/financial_connections/account_ownership.rb +1 -0
  49. data/lib/stripe/resources/financial_connections/session.rb +1 -0
  50. data/lib/stripe/resources/funding_instructions.rb +5 -0
  51. data/lib/stripe/resources/identity/verification_report.rb +11 -0
  52. data/lib/stripe/resources/identity/verification_session.rb +31 -5
  53. data/lib/stripe/resources/invoice.rb +96 -17
  54. data/lib/stripe/resources/invoice_item.rb +11 -0
  55. data/lib/stripe/resources/issuing/authorization.rb +25 -5
  56. data/lib/stripe/resources/issuing/card.rb +78 -8
  57. data/lib/stripe/resources/issuing/cardholder.rb +3 -0
  58. data/lib/stripe/resources/issuing/dispute.rb +13 -3
  59. data/lib/stripe/resources/issuing/transaction.rb +5 -0
  60. data/lib/stripe/resources/line_item.rb +1 -0
  61. data/lib/stripe/resources/mandate.rb +1 -0
  62. data/lib/stripe/resources/payment_intent.rb +71 -13
  63. data/lib/stripe/resources/payment_link.rb +15 -3
  64. data/lib/stripe/resources/payment_method.rb +25 -5
  65. data/lib/stripe/resources/payout.rb +28 -5
  66. data/lib/stripe/resources/person.rb +6 -0
  67. data/lib/stripe/resources/plan.rb +8 -0
  68. data/lib/stripe/resources/price.rb +6 -0
  69. data/lib/stripe/resources/product.rb +8 -0
  70. data/lib/stripe/resources/promotion_code.rb +2 -0
  71. data/lib/stripe/resources/quote.rb +52 -11
  72. data/lib/stripe/resources/radar/early_fraud_warning.rb +4 -0
  73. data/lib/stripe/resources/radar/value_list.rb +3 -0
  74. data/lib/stripe/resources/radar/value_list_item.rb +3 -0
  75. data/lib/stripe/resources/refund.rb +24 -5
  76. data/lib/stripe/resources/reporting/report_run.rb +8 -0
  77. data/lib/stripe/resources/reporting/report_type.rb +8 -1
  78. data/lib/stripe/resources/reversal.rb +13 -0
  79. data/lib/stripe/resources/review.rb +14 -3
  80. data/lib/stripe/resources/setup_attempt.rb +4 -0
  81. data/lib/stripe/resources/setup_intent.rb +52 -7
  82. data/lib/stripe/resources/shipping_rate.rb +3 -0
  83. data/lib/stripe/resources/sigma/scheduled_query_run.rb +4 -0
  84. data/lib/stripe/resources/source.rb +26 -6
  85. data/lib/stripe/resources/source_transaction.rb +4 -0
  86. data/lib/stripe/resources/subscription.rb +48 -3
  87. data/lib/stripe/resources/subscription_item.rb +2 -7
  88. data/lib/stripe/resources/subscription_schedule.rb +23 -5
  89. data/lib/stripe/resources/tax_code.rb +1 -0
  90. data/lib/stripe/resources/tax_id.rb +4 -0
  91. data/lib/stripe/resources/tax_rate.rb +3 -0
  92. data/lib/stripe/resources/terminal/configuration.rb +1 -0
  93. data/lib/stripe/resources/terminal/connection_token.rb +3 -0
  94. data/lib/stripe/resources/terminal/location.rb +3 -0
  95. data/lib/stripe/resources/terminal/reader.rb +70 -11
  96. data/lib/stripe/resources/test_helpers/test_clock.rb +13 -3
  97. data/lib/stripe/resources/token.rb +22 -0
  98. data/lib/stripe/resources/topup.rb +15 -3
  99. data/lib/stripe/resources/transfer.rb +10 -11
  100. data/lib/stripe/resources/treasury/credit_reversal.rb +14 -0
  101. data/lib/stripe/resources/treasury/debit_reversal.rb +14 -0
  102. data/lib/stripe/resources/treasury/financial_account.rb +52 -0
  103. data/lib/stripe/resources/treasury/inbound_transfer.rb +94 -0
  104. data/lib/stripe/resources/treasury/outbound_payment.rb +96 -0
  105. data/lib/stripe/resources/treasury/outbound_transfer.rb +100 -0
  106. data/lib/stripe/resources/treasury/received_credit.rb +30 -0
  107. data/lib/stripe/resources/treasury/received_debit.rb +30 -0
  108. data/lib/stripe/resources/treasury/transaction.rb +13 -0
  109. data/lib/stripe/resources/treasury/transaction_entry.rb +17 -0
  110. data/lib/stripe/resources/usage_record.rb +4 -0
  111. data/lib/stripe/resources/webhook_endpoint.rb +7 -0
  112. data/lib/stripe/resources.rb +12 -10
  113. data/lib/stripe/stripe_client.rb +25 -17
  114. data/lib/stripe/stripe_object.rb +2 -2
  115. data/lib/stripe/util.rb +38 -3
  116. data/lib/stripe/version.rb +1 -1
  117. metadata +17 -11
  118. data/lib/stripe/resources/bitcoin_receiver.rb +0 -24
  119. data/lib/stripe/resources/bitcoin_transaction.rb +0 -16
  120. data/lib/stripe/resources/issuing/card_details.rb +0 -10
  121. data/lib/stripe/resources/order.rb +0 -33
  122. data/lib/stripe/resources/order_return.rb +0 -10
  123. data/lib/stripe/resources/recipient.rb +0 -14
  124. data/lib/stripe/resources/sku.rb +0 -13
  125. data/lib/stripe/resources/three_d_secure.rb +0 -14
@@ -2,6 +2,11 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Stripe
5
+ # PaymentMethod objects represent your customer's payment instruments.
6
+ # You can use them with [PaymentIntents](https://stripe.com/docs/payments/payment-intents) to collect payments or save them to
7
+ # Customer objects to store instrument details for future payments.
8
+ #
9
+ # Related guides: [Payment Methods](https://stripe.com/docs/payments/payment-methods) and [More Payment Scenarios](https://stripe.com/docs/payments/more-payment-scenarios).
5
10
  class PaymentMethod < APIResource
6
11
  extend Stripe::APIOperations::Create
7
12
  extend Stripe::APIOperations::List
@@ -9,13 +14,10 @@ module Stripe
9
14
 
10
15
  OBJECT_NAME = "payment_method"
11
16
 
12
- custom_method :attach, http_verb: :post
13
- custom_method :detach, http_verb: :post
14
-
15
17
  def attach(params = {}, opts = {})
16
18
  request_stripe_object(
17
19
  method: :post,
18
- path: resource_url + "/attach",
20
+ path: format("/v1/payment_methods/%<payment_method>s/attach", { payment_method: CGI.escape(self["id"]) }),
19
21
  params: params,
20
22
  opts: opts
21
23
  )
@@ -24,7 +26,25 @@ module Stripe
24
26
  def detach(params = {}, opts = {})
25
27
  request_stripe_object(
26
28
  method: :post,
27
- path: resource_url + "/detach",
29
+ path: format("/v1/payment_methods/%<payment_method>s/detach", { payment_method: CGI.escape(self["id"]) }),
30
+ params: params,
31
+ opts: opts
32
+ )
33
+ end
34
+
35
+ def self.attach(payment_method, params = {}, opts = {})
36
+ request_stripe_object(
37
+ method: :post,
38
+ path: format("/v1/payment_methods/%<payment_method>s/attach", { payment_method: CGI.escape(payment_method) }),
39
+ params: params,
40
+ opts: opts
41
+ )
42
+ end
43
+
44
+ def self.detach(payment_method, params = {}, opts = {})
45
+ request_stripe_object(
46
+ method: :post,
47
+ path: format("/v1/payment_methods/%<payment_method>s/detach", { payment_method: CGI.escape(payment_method) }),
28
48
  params: params,
29
49
  opts: opts
30
50
  )
@@ -2,6 +2,14 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Stripe
5
+ # A `Payout` object is created when you receive funds from Stripe, or when you
6
+ # initiate a payout to either a bank account or debit card of a [connected
7
+ # Stripe account](https://stripe.com/docs/connect/bank-debit-card-payouts). You can retrieve individual payouts,
8
+ # as well as list all payouts. Payouts are made on [varying
9
+ # schedules](https://stripe.com/docs/connect/manage-payout-schedule), depending on your country and
10
+ # industry.
11
+ #
12
+ # Related guide: [Receiving Payouts](https://stripe.com/docs/payouts).
5
13
  class Payout < APIResource
6
14
  extend Stripe::APIOperations::Create
7
15
  extend Stripe::APIOperations::List
@@ -9,13 +17,10 @@ module Stripe
9
17
 
10
18
  OBJECT_NAME = "payout"
11
19
 
12
- custom_method :cancel, http_verb: :post
13
- custom_method :reverse, http_verb: :post
14
-
15
20
  def cancel(params = {}, opts = {})
16
21
  request_stripe_object(
17
22
  method: :post,
18
- path: resource_url + "/cancel",
23
+ path: format("/v1/payouts/%<payout>s/cancel", { payout: CGI.escape(self["id"]) }),
19
24
  params: params,
20
25
  opts: opts
21
26
  )
@@ -24,7 +29,25 @@ module Stripe
24
29
  def reverse(params = {}, opts = {})
25
30
  request_stripe_object(
26
31
  method: :post,
27
- path: resource_url + "/reverse",
32
+ path: format("/v1/payouts/%<payout>s/reverse", { payout: CGI.escape(self["id"]) }),
33
+ params: params,
34
+ opts: opts
35
+ )
36
+ end
37
+
38
+ def self.cancel(payout, params = {}, opts = {})
39
+ request_stripe_object(
40
+ method: :post,
41
+ path: format("/v1/payouts/%<payout>s/cancel", { payout: CGI.escape(payout) }),
42
+ params: params,
43
+ opts: opts
44
+ )
45
+ end
46
+
47
+ def self.reverse(payout, params = {}, opts = {})
48
+ request_stripe_object(
49
+ method: :post,
50
+ path: format("/v1/payouts/%<payout>s/reverse", { payout: CGI.escape(payout) }),
28
51
  params: params,
29
52
  opts: opts
30
53
  )
@@ -2,6 +2,12 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Stripe
5
+ # This is an object representing a person associated with a Stripe account.
6
+ #
7
+ # A platform cannot access a Standard or Express account's persons after the account starts onboarding, such as after generating an account link for the account.
8
+ # See the [Standard onboarding](https://stripe.com/docs/connect/standard-accounts) or [Express onboarding documentation](https://stripe.com/docs/connect/express-accounts) for information about platform pre-filling and account onboarding steps.
9
+ #
10
+ # Related guide: [Handling Identity Verification with the API](https://stripe.com/docs/connect/identity-verification-api#person-information).
5
11
  class Person < APIResource
6
12
  extend Stripe::APIOperations::List
7
13
  include Stripe::APIOperations::Save
@@ -2,6 +2,14 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Stripe
5
+ # You can now model subscriptions more flexibly using the [Prices API](https://stripe.com/docs/api#prices). It replaces the Plans API and is backwards compatible to simplify your migration.
6
+ #
7
+ # Plans define the base price, currency, and billing cycle for recurring purchases of products.
8
+ # [Products](https://stripe.com/docs/api#products) help you track inventory or provisioning, and plans help you track pricing. Different physical goods or levels of service should be represented by products, and pricing options should be represented by plans. This approach lets you change prices without having to change your provisioning scheme.
9
+ #
10
+ # For example, you might have a single "gold" product that has plans for $10/month, $100/year, €9/month, and €90/year.
11
+ #
12
+ # Related guides: [Set up a subscription](https://stripe.com/docs/billing/subscriptions/set-up-subscription) and more about [products and prices](https://stripe.com/docs/products-prices/overview).
5
13
  class Plan < APIResource
6
14
  extend Stripe::APIOperations::Create
7
15
  include Stripe::APIOperations::Delete
@@ -2,6 +2,12 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Stripe
5
+ # Prices define the unit cost, currency, and (optional) billing cycle for both recurring and one-time purchases of products.
6
+ # [Products](https://stripe.com/docs/api#products) help you track inventory or provisioning, and prices help you track payment terms. Different physical goods or levels of service should be represented by products, and pricing options should be represented by prices. This approach lets you change prices without having to change your provisioning scheme.
7
+ #
8
+ # For example, you might have a single "gold" product that has prices for $10/month, $100/year, and €9 once.
9
+ #
10
+ # Related guides: [Set up a subscription](https://stripe.com/docs/billing/subscriptions/set-up-subscription), [create an invoice](https://stripe.com/docs/billing/invoices/create), and more about [products and prices](https://stripe.com/docs/products-prices/overview).
5
11
  class Price < APIResource
6
12
  extend Stripe::APIOperations::Create
7
13
  extend Stripe::APIOperations::List
@@ -2,6 +2,14 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Stripe
5
+ # Products describe the specific goods or services you offer to your customers.
6
+ # For example, you might offer a Standard and Premium version of your goods or service; each version would be a separate Product.
7
+ # They can be used in conjunction with [Prices](https://stripe.com/docs/api#prices) to configure pricing in Payment Links, Checkout, and Subscriptions.
8
+ #
9
+ # Related guides: [Set up a subscription](https://stripe.com/docs/billing/subscriptions/set-up-subscription),
10
+ # [share a Payment Link](https://stripe.com/docs/payments/payment-links/overview),
11
+ # [accept payments with Checkout](https://stripe.com/docs/payments/accept-a-payment#create-product-prices-upfront),
12
+ # and more about [Products and Prices](https://stripe.com/docs/products-prices/overview)
5
13
  class Product < APIResource
6
14
  extend Stripe::APIOperations::Create
7
15
  include Stripe::APIOperations::Delete
@@ -2,6 +2,8 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Stripe
5
+ # A Promotion Code represents a customer-redeemable code for a [coupon](https://stripe.com/docs/api#coupons). It can be used to
6
+ # create multiple codes for a single coupon.
5
7
  class PromotionCode < APIResource
6
8
  extend Stripe::APIOperations::Create
7
9
  extend Stripe::APIOperations::List
@@ -2,6 +2,8 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Stripe
5
+ # A Quote is a way to model prices that you'd like to provide to a customer.
6
+ # Once accepted, it will automatically create an invoice, subscription or subscription schedule.
5
7
  class Quote < APIResource
6
8
  extend Stripe::APIOperations::Create
7
9
  extend Stripe::APIOperations::List
@@ -9,16 +11,10 @@ module Stripe
9
11
 
10
12
  OBJECT_NAME = "quote"
11
13
 
12
- custom_method :accept, http_verb: :post
13
- custom_method :cancel, http_verb: :post
14
- custom_method :finalize_quote, http_verb: :post, http_path: "finalize"
15
- custom_method :list_computed_upfront_line_items, http_verb: :get, http_path: "computed_upfront_line_items"
16
- custom_method :list_line_items, http_verb: :get, http_path: "line_items"
17
-
18
14
  def accept(params = {}, opts = {})
19
15
  request_stripe_object(
20
16
  method: :post,
21
- path: resource_url + "/accept",
17
+ path: format("/v1/quotes/%<quote>s/accept", { quote: CGI.escape(self["id"]) }),
22
18
  params: params,
23
19
  opts: opts
24
20
  )
@@ -27,7 +23,7 @@ module Stripe
27
23
  def cancel(params = {}, opts = {})
28
24
  request_stripe_object(
29
25
  method: :post,
30
- path: resource_url + "/cancel",
26
+ path: format("/v1/quotes/%<quote>s/cancel", { quote: CGI.escape(self["id"]) }),
31
27
  params: params,
32
28
  opts: opts
33
29
  )
@@ -36,7 +32,7 @@ module Stripe
36
32
  def finalize_quote(params = {}, opts = {})
37
33
  request_stripe_object(
38
34
  method: :post,
39
- path: resource_url + "/finalize",
35
+ path: format("/v1/quotes/%<quote>s/finalize", { quote: CGI.escape(self["id"]) }),
40
36
  params: params,
41
37
  opts: opts
42
38
  )
@@ -45,7 +41,7 @@ module Stripe
45
41
  def list_computed_upfront_line_items(params = {}, opts = {})
46
42
  request_stripe_object(
47
43
  method: :get,
48
- path: resource_url + "/computed_upfront_line_items",
44
+ path: format("/v1/quotes/%<quote>s/computed_upfront_line_items", { quote: CGI.escape(self["id"]) }),
49
45
  params: params,
50
46
  opts: opts
51
47
  )
@@ -54,7 +50,52 @@ module Stripe
54
50
  def list_line_items(params = {}, opts = {})
55
51
  request_stripe_object(
56
52
  method: :get,
57
- path: resource_url + "/line_items",
53
+ path: format("/v1/quotes/%<quote>s/line_items", { quote: CGI.escape(self["id"]) }),
54
+ params: params,
55
+ opts: opts
56
+ )
57
+ end
58
+
59
+ def self.accept(quote, params = {}, opts = {})
60
+ request_stripe_object(
61
+ method: :post,
62
+ path: format("/v1/quotes/%<quote>s/accept", { quote: CGI.escape(quote) }),
63
+ params: params,
64
+ opts: opts
65
+ )
66
+ end
67
+
68
+ def self.cancel(quote, params = {}, opts = {})
69
+ request_stripe_object(
70
+ method: :post,
71
+ path: format("/v1/quotes/%<quote>s/cancel", { quote: CGI.escape(quote) }),
72
+ params: params,
73
+ opts: opts
74
+ )
75
+ end
76
+
77
+ def self.finalize_quote(quote, params = {}, opts = {})
78
+ request_stripe_object(
79
+ method: :post,
80
+ path: format("/v1/quotes/%<quote>s/finalize", { quote: CGI.escape(quote) }),
81
+ params: params,
82
+ opts: opts
83
+ )
84
+ end
85
+
86
+ def self.list_computed_upfront_line_items(quote, params = {}, opts = {})
87
+ request_stripe_object(
88
+ method: :get,
89
+ path: format("/v1/quotes/%<quote>s/computed_upfront_line_items", { quote: CGI.escape(quote) }),
90
+ params: params,
91
+ opts: opts
92
+ )
93
+ end
94
+
95
+ def self.list_line_items(quote, params = {}, opts = {})
96
+ request_stripe_object(
97
+ method: :get,
98
+ path: format("/v1/quotes/%<quote>s/line_items", { quote: CGI.escape(quote) }),
58
99
  params: params,
59
100
  opts: opts
60
101
  )
@@ -3,6 +3,10 @@
3
3
 
4
4
  module Stripe
5
5
  module Radar
6
+ # An early fraud warning indicates that the card issuer has notified us that a
7
+ # charge may be fraudulent.
8
+ #
9
+ # Related guide: [Early Fraud Warnings](https://stripe.com/docs/disputes/measuring#early-fraud-warnings).
6
10
  class EarlyFraudWarning < APIResource
7
11
  extend Stripe::APIOperations::List
8
12
 
@@ -3,6 +3,9 @@
3
3
 
4
4
  module Stripe
5
5
  module Radar
6
+ # Value lists allow you to group values together which can then be referenced in rules.
7
+ #
8
+ # Related guide: [Default Stripe Lists](https://stripe.com/docs/radar/lists#managing-list-items).
6
9
  class ValueList < APIResource
7
10
  extend Stripe::APIOperations::Create
8
11
  include Stripe::APIOperations::Delete
@@ -3,6 +3,9 @@
3
3
 
4
4
  module Stripe
5
5
  module Radar
6
+ # Value list items allow you to add specific values to a given Radar value list, which can then be used in rules.
7
+ #
8
+ # Related guide: [Managing List Items](https://stripe.com/docs/radar/lists#managing-list-items).
6
9
  class ValueListItem < APIResource
7
10
  extend Stripe::APIOperations::Create
8
11
  include Stripe::APIOperations::Delete
@@ -2,6 +2,11 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Stripe
5
+ # `Refund` objects allow you to refund a charge that has previously been created
6
+ # but not yet refunded. Funds will be refunded to the credit or debit card that
7
+ # was originally charged.
8
+ #
9
+ # Related guide: [Refunds](https://stripe.com/docs/refunds).
5
10
  class Refund < APIResource
6
11
  extend Stripe::APIOperations::Create
7
12
  extend Stripe::APIOperations::List
@@ -9,12 +14,19 @@ module Stripe
9
14
 
10
15
  OBJECT_NAME = "refund"
11
16
 
12
- custom_method :cancel, http_verb: :post
13
-
14
17
  def cancel(params = {}, opts = {})
15
18
  request_stripe_object(
16
19
  method: :post,
17
- path: resource_url + "/cancel",
20
+ path: format("/v1/refunds/%<refund>s/cancel", { refund: CGI.escape(self["id"]) }),
21
+ params: params,
22
+ opts: opts
23
+ )
24
+ end
25
+
26
+ def self.cancel(refund, params = {}, opts = {})
27
+ request_stripe_object(
28
+ method: :post,
29
+ path: format("/v1/refunds/%<refund>s/cancel", { refund: CGI.escape(refund) }),
18
30
  params: params,
19
31
  opts: opts
20
32
  )
@@ -27,12 +39,19 @@ module Stripe
27
39
  class TestHelpers < APIResourceTestHelpers
28
40
  RESOURCE_CLASS = Refund
29
41
 
30
- custom_method :expire, http_verb: :post
42
+ def self.expire(refund, params = {}, opts = {})
43
+ request_stripe_object(
44
+ method: :post,
45
+ path: format("/v1/test_helpers/refunds/%<refund>s/expire", { refund: CGI.escape(refund) }),
46
+ params: params,
47
+ opts: opts
48
+ )
49
+ end
31
50
 
32
51
  def expire(params = {}, opts = {})
33
52
  @resource.request_stripe_object(
34
53
  method: :post,
35
- path: resource_url + "/expire",
54
+ path: format("/v1/test_helpers/refunds/%<refund>s/expire", { refund: CGI.escape(@resource["id"]) }),
36
55
  params: params,
37
56
  opts: opts
38
57
  )
@@ -3,6 +3,14 @@
3
3
 
4
4
  module Stripe
5
5
  module Reporting
6
+ # The Report Run object represents an instance of a report type generated with
7
+ # specific run parameters. Once the object is created, Stripe begins processing the report.
8
+ # When the report has finished running, it will give you a reference to a file
9
+ # where you can retrieve your results. For an overview, see
10
+ # [API Access to Reports](https://stripe.com/docs/reporting/statements/api).
11
+ #
12
+ # Note that certain report types can only be run based on your live-mode data (not test-mode
13
+ # data), and will error when queried without a [live-mode API key](https://stripe.com/docs/keys#test-live-modes).
6
14
  class ReportRun < APIResource
7
15
  extend Stripe::APIOperations::Create
8
16
  extend Stripe::APIOperations::List
@@ -3,8 +3,15 @@
3
3
 
4
4
  module Stripe
5
5
  module Reporting
6
+ # The Report Type resource corresponds to a particular type of report, such as
7
+ # the "Activity summary" or "Itemized payouts" reports. These objects are
8
+ # identified by an ID belonging to a set of enumerated values. See
9
+ # [API Access to Reports documentation](https://stripe.com/docs/reporting/statements/api)
10
+ # for those Report Type IDs, along with required and optional parameters.
11
+ #
12
+ # Note that certain report types can only be run based on your live-mode data (not test-mode
13
+ # data), and will error when queried without a [live-mode API key](https://stripe.com/docs/keys#test-live-modes).
6
14
  class ReportType < APIResource
7
- extend Stripe::APIOperations::Create
8
15
  extend Stripe::APIOperations::List
9
16
 
10
17
  OBJECT_NAME = "reporting.report_type"
@@ -2,6 +2,19 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Stripe
5
+ # [Stripe Connect](https://stripe.com/docs/connect) platforms can reverse transfers made to a
6
+ # connected account, either entirely or partially, and can also specify whether
7
+ # to refund any related application fees. Transfer reversals add to the
8
+ # platform's balance and subtract from the destination account's balance.
9
+ #
10
+ # Reversing a transfer that was made for a [destination
11
+ # charge](https://stripe.com/docs/connect/destination-charges) is allowed only up to the amount of
12
+ # the charge. It is possible to reverse a
13
+ # [transfer_group](https://stripe.com/docs/connect/charges-transfers#transfer-options)
14
+ # transfer only if the destination account has enough balance to cover the
15
+ # reversal.
16
+ #
17
+ # Related guide: [Reversing Transfers](https://stripe.com/docs/connect/charges-transfers#reversing-transfers).
5
18
  class Reversal < APIResource
6
19
  extend Stripe::APIOperations::List
7
20
  include Stripe::APIOperations::Save
@@ -2,17 +2,28 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Stripe
5
+ # Reviews can be used to supplement automated fraud detection with human expertise.
6
+ #
7
+ # Learn more about [Radar](https://stripe.com/radar) and reviewing payments
8
+ # [here](https://stripe.com/docs/radar/reviews).
5
9
  class Review < APIResource
6
10
  extend Stripe::APIOperations::List
7
11
 
8
12
  OBJECT_NAME = "review"
9
13
 
10
- custom_method :approve, http_verb: :post
11
-
12
14
  def approve(params = {}, opts = {})
13
15
  request_stripe_object(
14
16
  method: :post,
15
- path: resource_url + "/approve",
17
+ path: format("/v1/reviews/%<review>s/approve", { review: CGI.escape(self["id"]) }),
18
+ params: params,
19
+ opts: opts
20
+ )
21
+ end
22
+
23
+ def self.approve(review, params = {}, opts = {})
24
+ request_stripe_object(
25
+ method: :post,
26
+ path: format("/v1/reviews/%<review>s/approve", { review: CGI.escape(review) }),
16
27
  params: params,
17
28
  opts: opts
18
29
  )
@@ -2,6 +2,10 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Stripe
5
+ # A SetupAttempt describes one attempted confirmation of a SetupIntent,
6
+ # whether that confirmation was successful or unsuccessful. You can use
7
+ # SetupAttempts to inspect details of a specific attempt at setting up a
8
+ # payment method using a SetupIntent.
5
9
  class SetupAttempt < APIResource
6
10
  extend Stripe::APIOperations::List
7
11
 
@@ -2,6 +2,28 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Stripe
5
+ # A SetupIntent guides you through the process of setting up and saving a customer's payment credentials for future payments.
6
+ # For example, you could use a SetupIntent to set up and save your customer's card without immediately collecting a payment.
7
+ # Later, you can use [PaymentIntents](https://stripe.com/docs/api#payment_intents) to drive the payment flow.
8
+ #
9
+ # Create a SetupIntent as soon as you're ready to collect your customer's payment credentials.
10
+ # Do not maintain long-lived, unconfirmed SetupIntents as they may no longer be valid.
11
+ # The SetupIntent then transitions through multiple [statuses](https://stripe.com/docs/payments/intents#intent-statuses) as it guides
12
+ # you through the setup process.
13
+ #
14
+ # Successful SetupIntents result in payment credentials that are optimized for future payments.
15
+ # For example, cardholders in [certain regions](https://stripe.com/guides/strong-customer-authentication) may need to be run through
16
+ # [Strong Customer Authentication](https://stripe.com/docs/strong-customer-authentication) at the time of payment method collection
17
+ # in order to streamline later [off-session payments](https://stripe.com/docs/payments/setup-intents).
18
+ # If the SetupIntent is used with a [Customer](https://stripe.com/docs/api#setup_intent_object-customer), upon success,
19
+ # it will automatically attach the resulting payment method to that Customer.
20
+ # We recommend using SetupIntents or [setup_future_usage](https://stripe.com/docs/api#payment_intent_object-setup_future_usage) on
21
+ # PaymentIntents to save payment methods in order to prevent saving invalid or unoptimized payment methods.
22
+ #
23
+ # By using SetupIntents, you ensure that your customers experience the minimum set of required friction,
24
+ # even as regulations change over time.
25
+ #
26
+ # Related guide: [Setup Intents API](https://stripe.com/docs/payments/setup-intents).
5
27
  class SetupIntent < APIResource
6
28
  extend Stripe::APIOperations::Create
7
29
  extend Stripe::APIOperations::List
@@ -9,14 +31,10 @@ module Stripe
9
31
 
10
32
  OBJECT_NAME = "setup_intent"
11
33
 
12
- custom_method :cancel, http_verb: :post
13
- custom_method :confirm, http_verb: :post
14
- custom_method :verify_microdeposits, http_verb: :post
15
-
16
34
  def cancel(params = {}, opts = {})
17
35
  request_stripe_object(
18
36
  method: :post,
19
- path: resource_url + "/cancel",
37
+ path: format("/v1/setup_intents/%<intent>s/cancel", { intent: CGI.escape(self["id"]) }),
20
38
  params: params,
21
39
  opts: opts
22
40
  )
@@ -25,7 +43,7 @@ module Stripe
25
43
  def confirm(params = {}, opts = {})
26
44
  request_stripe_object(
27
45
  method: :post,
28
- path: resource_url + "/confirm",
46
+ path: format("/v1/setup_intents/%<intent>s/confirm", { intent: CGI.escape(self["id"]) }),
29
47
  params: params,
30
48
  opts: opts
31
49
  )
@@ -34,7 +52,34 @@ module Stripe
34
52
  def verify_microdeposits(params = {}, opts = {})
35
53
  request_stripe_object(
36
54
  method: :post,
37
- path: resource_url + "/verify_microdeposits",
55
+ path: format("/v1/setup_intents/%<intent>s/verify_microdeposits", { intent: CGI.escape(self["id"]) }),
56
+ params: params,
57
+ opts: opts
58
+ )
59
+ end
60
+
61
+ def self.cancel(intent, params = {}, opts = {})
62
+ request_stripe_object(
63
+ method: :post,
64
+ path: format("/v1/setup_intents/%<intent>s/cancel", { intent: CGI.escape(intent) }),
65
+ params: params,
66
+ opts: opts
67
+ )
68
+ end
69
+
70
+ def self.confirm(intent, params = {}, opts = {})
71
+ request_stripe_object(
72
+ method: :post,
73
+ path: format("/v1/setup_intents/%<intent>s/confirm", { intent: CGI.escape(intent) }),
74
+ params: params,
75
+ opts: opts
76
+ )
77
+ end
78
+
79
+ def self.verify_microdeposits(intent, params = {}, opts = {})
80
+ request_stripe_object(
81
+ method: :post,
82
+ path: format("/v1/setup_intents/%<intent>s/verify_microdeposits", { intent: CGI.escape(intent) }),
38
83
  params: params,
39
84
  opts: opts
40
85
  )
@@ -2,6 +2,9 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Stripe
5
+ # Shipping rates describe the price of shipping presented to your customers and can be
6
+ # applied to [Checkout Sessions](https://stripe.com/docs/payments/checkout/shipping)
7
+ # and [Orders](https://stripe.com/docs/orders/shipping) to collect shipping costs.
5
8
  class ShippingRate < APIResource
6
9
  extend Stripe::APIOperations::Create
7
10
  extend Stripe::APIOperations::List
@@ -3,6 +3,10 @@
3
3
 
4
4
  module Stripe
5
5
  module Sigma
6
+ # If you have [scheduled a Sigma query](https://stripe.com/docs/sigma/scheduled-queries), you'll
7
+ # receive a `sigma.scheduled_query_run.created` webhook each time the query
8
+ # runs. The webhook contains a `ScheduledQueryRun` object, which you can use to
9
+ # retrieve the query results.
6
10
  class ScheduledQueryRun < APIResource
7
11
  extend Stripe::APIOperations::List
8
12
 
@@ -2,6 +2,16 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Stripe
5
+ # `Source` objects allow you to accept a variety of payment methods. They
6
+ # represent a customer's payment instrument, and can be used with the Stripe API
7
+ # just like a `Card` object: once chargeable, they can be charged, or can be
8
+ # attached to customers.
9
+ #
10
+ # Stripe doesn't recommend using the deprecated [Sources API](https://stripe.com/docs/api/sources).
11
+ # We recommend that you adopt the [PaymentMethods API](https://stripe.com/docs/api/payment_methods).
12
+ # This newer API provides access to our latest features and payment method types.
13
+ #
14
+ # Related guides: [Sources API](https://stripe.com/docs/sources) and [Sources & Customers](https://stripe.com/docs/sources/customers).
5
15
  class Source < APIResource
6
16
  extend Stripe::APIOperations::Create
7
17
  include Stripe::APIOperations::Save
@@ -9,15 +19,22 @@ module Stripe
9
19
 
10
20
  OBJECT_NAME = "source"
11
21
 
12
- custom_method :verify, http_verb: :post
13
-
14
22
  nested_resource_class_methods :source_transaction,
15
23
  operations: %i[retrieve list]
16
24
 
17
25
  def verify(params = {}, opts = {})
18
26
  request_stripe_object(
19
27
  method: :post,
20
- path: resource_url + "/verify",
28
+ path: format("/v1/sources/%<source>s/verify", { source: CGI.escape(self["id"]) }),
29
+ params: params,
30
+ opts: opts
31
+ )
32
+ end
33
+
34
+ def self.verify(source, params = {}, opts = {})
35
+ request_stripe_object(
36
+ method: :post,
37
+ path: format("/v1/sources/%<source>s/verify", { source: CGI.escape(source) }),
21
38
  params: params,
22
39
  opts: opts
23
40
  )
@@ -37,9 +54,12 @@ module Stripe
37
54
  end
38
55
 
39
56
  def source_transactions(params = {}, opts = {})
40
- resp, opts = execute_resource_request(:get, resource_url + "/source_transactions", params,
41
- opts)
42
- Util.convert_to_stripe_object(resp.data, opts)
57
+ request_stripe_object(
58
+ method: :get,
59
+ path: resource_url + "/source_transactions",
60
+ params: params,
61
+ opts: opts
62
+ )
43
63
  end
44
64
  extend Gem::Deprecate
45
65
  deprecate :source_transactions, :"Source.list_source_transactions", 2020, 1
@@ -2,6 +2,10 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Stripe
5
+ # Some payment methods have no required amount that a customer must send.
6
+ # Customers can be instructed to send any amount, and it can be made up of
7
+ # multiple transactions. As such, sources can have multiple associated
8
+ # transactions.
5
9
  class SourceTransaction < StripeObject
6
10
  OBJECT_NAME = "source_transaction"
7
11
  end