whop_sdk 0.0.9 → 0.0.10

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 (78) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +9 -0
  3. data/README.md +1 -1
  4. data/lib/whop_sdk/client.rb +8 -0
  5. data/lib/whop_sdk/models/app_build_create_params.rb +9 -1
  6. data/lib/whop_sdk/models/payment.rb +90 -1
  7. data/lib/whop_sdk/models/payment_create_params.rb +307 -0
  8. data/lib/whop_sdk/models/payment_list_response.rb +90 -1
  9. data/lib/whop_sdk/models/payment_token_list_params.rb +78 -0
  10. data/lib/whop_sdk/models/payment_token_list_response.rb +86 -0
  11. data/lib/whop_sdk/models/payment_token_retrieve_params.rb +22 -0
  12. data/lib/whop_sdk/models/payment_token_retrieve_response.rb +86 -0
  13. data/lib/whop_sdk/models/setup_intent.rb +253 -0
  14. data/lib/whop_sdk/models/setup_intent_canceled_webhook_event.rb +52 -0
  15. data/lib/whop_sdk/models/setup_intent_list_params.rb +78 -0
  16. data/lib/whop_sdk/models/setup_intent_list_response.rb +255 -0
  17. data/lib/whop_sdk/models/setup_intent_requires_action_webhook_event.rb +52 -0
  18. data/lib/whop_sdk/models/setup_intent_retrieve_params.rb +14 -0
  19. data/lib/whop_sdk/models/setup_intent_status.rb +18 -0
  20. data/lib/whop_sdk/models/setup_intent_succeeded_webhook_event.rb +52 -0
  21. data/lib/whop_sdk/models/unwrap_webhook_event.rb +7 -1
  22. data/lib/whop_sdk/models.rb +20 -0
  23. data/lib/whop_sdk/resources/app_builds.rb +3 -1
  24. data/lib/whop_sdk/resources/payment_tokens.rb +83 -0
  25. data/lib/whop_sdk/resources/payments.rb +48 -0
  26. data/lib/whop_sdk/resources/setup_intents.rb +83 -0
  27. data/lib/whop_sdk/resources/webhooks.rb +1 -1
  28. data/lib/whop_sdk/version.rb +1 -1
  29. data/lib/whop_sdk.rb +15 -0
  30. data/rbi/whop_sdk/client.rbi +6 -0
  31. data/rbi/whop_sdk/models/app_build_create_params.rbi +8 -0
  32. data/rbi/whop_sdk/models/payment.rbi +142 -0
  33. data/rbi/whop_sdk/models/payment_create_params.rbi +384 -0
  34. data/rbi/whop_sdk/models/payment_list_response.rbi +167 -0
  35. data/rbi/whop_sdk/models/payment_token_list_params.rbi +99 -0
  36. data/rbi/whop_sdk/models/payment_token_list_response.rbi +139 -0
  37. data/rbi/whop_sdk/models/payment_token_retrieve_params.rbi +40 -0
  38. data/rbi/whop_sdk/models/payment_token_retrieve_response.rbi +144 -0
  39. data/rbi/whop_sdk/models/setup_intent.rbi +412 -0
  40. data/rbi/whop_sdk/models/setup_intent_canceled_webhook_event.rbi +77 -0
  41. data/rbi/whop_sdk/models/setup_intent_list_params.rbi +99 -0
  42. data/rbi/whop_sdk/models/setup_intent_list_response.rbi +492 -0
  43. data/rbi/whop_sdk/models/setup_intent_requires_action_webhook_event.rbi +77 -0
  44. data/rbi/whop_sdk/models/setup_intent_retrieve_params.rbi +27 -0
  45. data/rbi/whop_sdk/models/setup_intent_status.rbi +25 -0
  46. data/rbi/whop_sdk/models/setup_intent_succeeded_webhook_event.rbi +77 -0
  47. data/rbi/whop_sdk/models/unwrap_webhook_event.rbi +3 -0
  48. data/rbi/whop_sdk/models.rbi +23 -0
  49. data/rbi/whop_sdk/resources/app_builds.rbi +3 -0
  50. data/rbi/whop_sdk/resources/payment_tokens.rbi +76 -0
  51. data/rbi/whop_sdk/resources/payments.rbi +42 -0
  52. data/rbi/whop_sdk/resources/setup_intents.rbi +77 -0
  53. data/rbi/whop_sdk/resources/webhooks.rbi +3 -0
  54. data/sig/whop_sdk/client.rbs +4 -0
  55. data/sig/whop_sdk/models/app_build_create_params.rbs +5 -0
  56. data/sig/whop_sdk/models/payment.rbs +69 -0
  57. data/sig/whop_sdk/models/payment_create_params.rbs +210 -0
  58. data/sig/whop_sdk/models/payment_list_response.rbs +69 -0
  59. data/sig/whop_sdk/models/payment_token_list_params.rbs +61 -0
  60. data/sig/whop_sdk/models/payment_token_list_response.rbs +67 -0
  61. data/sig/whop_sdk/models/payment_token_retrieve_params.rbs +23 -0
  62. data/sig/whop_sdk/models/payment_token_retrieve_response.rbs +67 -0
  63. data/sig/whop_sdk/models/setup_intent.rbs +189 -0
  64. data/sig/whop_sdk/models/setup_intent_canceled_webhook_event.rbs +40 -0
  65. data/sig/whop_sdk/models/setup_intent_list_params.rbs +61 -0
  66. data/sig/whop_sdk/models/setup_intent_list_response.rbs +193 -0
  67. data/sig/whop_sdk/models/setup_intent_requires_action_webhook_event.rbs +40 -0
  68. data/sig/whop_sdk/models/setup_intent_retrieve_params.rbs +15 -0
  69. data/sig/whop_sdk/models/setup_intent_status.rbs +17 -0
  70. data/sig/whop_sdk/models/setup_intent_succeeded_webhook_event.rbs +40 -0
  71. data/sig/whop_sdk/models/unwrap_webhook_event.rbs +3 -0
  72. data/sig/whop_sdk/models.rbs +20 -0
  73. data/sig/whop_sdk/resources/app_builds.rbs +1 -0
  74. data/sig/whop_sdk/resources/payment_tokens.rbs +25 -0
  75. data/sig/whop_sdk/resources/payments.rbs +9 -0
  76. data/sig/whop_sdk/resources/setup_intents.rbs +24 -0
  77. data/sig/whop_sdk/resources/webhooks.rbs +3 -0
  78. metadata +47 -2
@@ -0,0 +1,83 @@
1
+ # frozen_string_literal: true
2
+
3
+ module WhopSDK
4
+ module Resources
5
+ class SetupIntents
6
+ # Retrieves a Setup Intent by ID
7
+ #
8
+ # Required permissions:
9
+ #
10
+ # - `payment:setup_intent:read`
11
+ # - `member:basic:read`
12
+ # - `member:email:read`
13
+ #
14
+ # @overload retrieve(id, request_options: {})
15
+ #
16
+ # @param id [String] The ID of the Setup Intent
17
+ #
18
+ # @param request_options [WhopSDK::RequestOptions, Hash{Symbol=>Object}, nil]
19
+ #
20
+ # @return [WhopSDK::Models::SetupIntent]
21
+ #
22
+ # @see WhopSDK::Models::SetupIntentRetrieveParams
23
+ def retrieve(id, params = {})
24
+ @client.request(
25
+ method: :get,
26
+ path: ["setup_intents/%1$s", id],
27
+ model: WhopSDK::SetupIntent,
28
+ options: params[:request_options]
29
+ )
30
+ end
31
+
32
+ # Lists Setup Intents
33
+ #
34
+ # Required permissions:
35
+ #
36
+ # - `payment:setup_intent:read`
37
+ # - `member:basic:read`
38
+ # - `member:email:read`
39
+ #
40
+ # @overload list(company_id:, after: nil, before: nil, created_after: nil, created_before: nil, direction: nil, first: nil, last: nil, request_options: {})
41
+ #
42
+ # @param company_id [String] The ID of the company to list setup intents for
43
+ #
44
+ # @param after [String, nil] Returns the elements in the list that come after the specified cursor.
45
+ #
46
+ # @param before [String, nil] Returns the elements in the list that come before the specified cursor.
47
+ #
48
+ # @param created_after [Time, nil] The minimum creation date to filter by
49
+ #
50
+ # @param created_before [Time, nil] The maximum creation date to filter by
51
+ #
52
+ # @param direction [Symbol, WhopSDK::Models::Direction, nil] The direction of the sort.
53
+ #
54
+ # @param first [Integer, nil] Returns the first _n_ elements from the list.
55
+ #
56
+ # @param last [Integer, nil] Returns the last _n_ elements from the list.
57
+ #
58
+ # @param request_options [WhopSDK::RequestOptions, Hash{Symbol=>Object}, nil]
59
+ #
60
+ # @return [WhopSDK::Internal::CursorPage<WhopSDK::Models::SetupIntentListResponse>]
61
+ #
62
+ # @see WhopSDK::Models::SetupIntentListParams
63
+ def list(params)
64
+ parsed, options = WhopSDK::SetupIntentListParams.dump_request(params)
65
+ @client.request(
66
+ method: :get,
67
+ path: "setup_intents",
68
+ query: parsed,
69
+ page: WhopSDK::Internal::CursorPage,
70
+ model: WhopSDK::Models::SetupIntentListResponse,
71
+ options: options
72
+ )
73
+ end
74
+
75
+ # @api private
76
+ #
77
+ # @param client [WhopSDK::Client]
78
+ def initialize(client:)
79
+ @client = client
80
+ end
81
+ end
82
+ end
83
+ end
@@ -5,7 +5,7 @@ module WhopSDK
5
5
  class Webhooks
6
6
  # @param payload [String] The raw webhook payload as a string
7
7
  #
8
- # @return [WhopSDK::Models::InvoiceCreatedWebhookEvent, WhopSDK::Models::InvoicePaidWebhookEvent, WhopSDK::Models::InvoicePastDueWebhookEvent, WhopSDK::Models::InvoiceVoidedWebhookEvent, WhopSDK::Models::MembershipActivatedWebhookEvent, WhopSDK::Models::MembershipDeactivatedWebhookEvent, WhopSDK::Models::EntryCreatedWebhookEvent, WhopSDK::Models::EntryApprovedWebhookEvent, WhopSDK::Models::EntryDeniedWebhookEvent, WhopSDK::Models::EntryDeletedWebhookEvent, WhopSDK::Models::CourseLessonInteractionCompletedWebhookEvent, WhopSDK::Models::PaymentSucceededWebhookEvent, WhopSDK::Models::PaymentFailedWebhookEvent, WhopSDK::Models::PaymentPendingWebhookEvent, WhopSDK::Models::DisputeCreatedWebhookEvent, WhopSDK::Models::DisputeUpdatedWebhookEvent, WhopSDK::Models::RefundCreatedWebhookEvent, WhopSDK::Models::RefundUpdatedWebhookEvent]
8
+ # @return [WhopSDK::Models::InvoiceCreatedWebhookEvent, WhopSDK::Models::InvoicePaidWebhookEvent, WhopSDK::Models::InvoicePastDueWebhookEvent, WhopSDK::Models::InvoiceVoidedWebhookEvent, WhopSDK::Models::MembershipActivatedWebhookEvent, WhopSDK::Models::MembershipDeactivatedWebhookEvent, WhopSDK::Models::EntryCreatedWebhookEvent, WhopSDK::Models::EntryApprovedWebhookEvent, WhopSDK::Models::EntryDeniedWebhookEvent, WhopSDK::Models::EntryDeletedWebhookEvent, WhopSDK::Models::SetupIntentRequiresActionWebhookEvent, WhopSDK::Models::SetupIntentSucceededWebhookEvent, WhopSDK::Models::SetupIntentCanceledWebhookEvent, WhopSDK::Models::CourseLessonInteractionCompletedWebhookEvent, WhopSDK::Models::PaymentSucceededWebhookEvent, WhopSDK::Models::PaymentFailedWebhookEvent, WhopSDK::Models::PaymentPendingWebhookEvent, WhopSDK::Models::DisputeCreatedWebhookEvent, WhopSDK::Models::DisputeUpdatedWebhookEvent, WhopSDK::Models::RefundCreatedWebhookEvent, WhopSDK::Models::RefundUpdatedWebhookEvent]
9
9
  def unwrap(payload)
10
10
  parsed = JSON.parse(payload, symbolize_names: true)
11
11
  WhopSDK::Internal::Type::Converter.coerce(WhopSDK::Models::UnwrapWebhookEvent, parsed)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module WhopSDK
4
- VERSION = "0.0.9"
4
+ VERSION = "0.0.10"
5
5
  end
data/lib/whop_sdk.rb CHANGED
@@ -239,6 +239,7 @@ require_relative "whop_sdk/models/notification_create_params"
239
239
  require_relative "whop_sdk/models/notification_create_response"
240
240
  require_relative "whop_sdk/models/page_info"
241
241
  require_relative "whop_sdk/models/payment"
242
+ require_relative "whop_sdk/models/payment_create_params"
242
243
  require_relative "whop_sdk/models/payment_failed_webhook_event"
243
244
  require_relative "whop_sdk/models/payment_list_params"
244
245
  require_relative "whop_sdk/models/payment_list_response"
@@ -249,6 +250,10 @@ require_relative "whop_sdk/models/payment_refund_params"
249
250
  require_relative "whop_sdk/models/payment_retrieve_params"
250
251
  require_relative "whop_sdk/models/payment_retry_params"
251
252
  require_relative "whop_sdk/models/payment_succeeded_webhook_event"
253
+ require_relative "whop_sdk/models/payment_token_list_params"
254
+ require_relative "whop_sdk/models/payment_token_list_response"
255
+ require_relative "whop_sdk/models/payment_token_retrieve_params"
256
+ require_relative "whop_sdk/models/payment_token_retrieve_response"
252
257
  require_relative "whop_sdk/models/payment_void_params"
253
258
  require_relative "whop_sdk/models/plan"
254
259
  require_relative "whop_sdk/models/plan_create_params"
@@ -298,6 +303,14 @@ require_relative "whop_sdk/models/review_list_response"
298
303
  require_relative "whop_sdk/models/review_retrieve_params"
299
304
  require_relative "whop_sdk/models/review_retrieve_response"
300
305
  require_relative "whop_sdk/models/review_status"
306
+ require_relative "whop_sdk/models/setup_intent"
307
+ require_relative "whop_sdk/models/setup_intent_canceled_webhook_event"
308
+ require_relative "whop_sdk/models/setup_intent_list_params"
309
+ require_relative "whop_sdk/models/setup_intent_list_response"
310
+ require_relative "whop_sdk/models/setup_intent_requires_action_webhook_event"
311
+ require_relative "whop_sdk/models/setup_intent_retrieve_params"
312
+ require_relative "whop_sdk/models/setup_intent_status"
313
+ require_relative "whop_sdk/models/setup_intent_succeeded_webhook_event"
301
314
  require_relative "whop_sdk/models/shipment"
302
315
  require_relative "whop_sdk/models/shipment_carrier"
303
316
  require_relative "whop_sdk/models/shipment_create_params"
@@ -363,12 +376,14 @@ require_relative "whop_sdk/resources/memberships"
363
376
  require_relative "whop_sdk/resources/messages"
364
377
  require_relative "whop_sdk/resources/notifications"
365
378
  require_relative "whop_sdk/resources/payments"
379
+ require_relative "whop_sdk/resources/payment_tokens"
366
380
  require_relative "whop_sdk/resources/plans"
367
381
  require_relative "whop_sdk/resources/products"
368
382
  require_relative "whop_sdk/resources/promo_codes"
369
383
  require_relative "whop_sdk/resources/reactions"
370
384
  require_relative "whop_sdk/resources/refunds"
371
385
  require_relative "whop_sdk/resources/reviews"
386
+ require_relative "whop_sdk/resources/setup_intents"
372
387
  require_relative "whop_sdk/resources/shipments"
373
388
  require_relative "whop_sdk/resources/support_channels"
374
389
  require_relative "whop_sdk/resources/transfers"
@@ -130,6 +130,12 @@ module WhopSDK
130
130
  sig { returns(WhopSDK::Resources::AccountLinks) }
131
131
  attr_reader :account_links
132
132
 
133
+ sig { returns(WhopSDK::Resources::SetupIntents) }
134
+ attr_reader :setup_intents
135
+
136
+ sig { returns(WhopSDK::Resources::PaymentTokens) }
137
+ attr_reader :payment_tokens
138
+
133
139
  # @api private
134
140
  sig { override.returns(T::Hash[String, String]) }
135
141
  private def auth_headers
@@ -34,6 +34,10 @@ module WhopSDK
34
34
  sig { returns(WhopSDK::AppBuildPlatforms::OrSymbol) }
35
35
  attr_accessor :platform
36
36
 
37
+ # The id of the ai prompt that created this build
38
+ sig { returns(T.nilable(String)) }
39
+ attr_accessor :ai_prompt_id
40
+
37
41
  # The ID of the app to create a build for. By default the current app from the api
38
42
  # key is used.
39
43
  sig { returns(T.nilable(String)) }
@@ -53,6 +57,7 @@ module WhopSDK
53
57
  ),
54
58
  checksum: String,
55
59
  platform: WhopSDK::AppBuildPlatforms::OrSymbol,
60
+ ai_prompt_id: T.nilable(String),
56
61
  app_id: T.nilable(String),
57
62
  supported_app_view_types:
58
63
  T.nilable(T::Array[WhopSDK::AppViewType::OrSymbol]),
@@ -70,6 +75,8 @@ module WhopSDK
70
75
  checksum:,
71
76
  # The platform of the app build (ios, android, web)
72
77
  platform:,
78
+ # The id of the ai prompt that created this build
79
+ ai_prompt_id: nil,
73
80
  # The ID of the app to create a build for. By default the current app from the api
74
81
  # key is used.
75
82
  app_id: nil,
@@ -90,6 +97,7 @@ module WhopSDK
90
97
  ),
91
98
  checksum: String,
92
99
  platform: WhopSDK::AppBuildPlatforms::OrSymbol,
100
+ ai_prompt_id: T.nilable(String),
93
101
  app_id: T.nilable(String),
94
102
  supported_app_view_types:
95
103
  T.nilable(T::Array[WhopSDK::AppViewType::OrSymbol]),
@@ -97,6 +97,17 @@ module WhopSDK
97
97
  sig { returns(T.nilable(WhopSDK::PaymentMethodTypes::TaggedSymbol)) }
98
98
  attr_accessor :payment_method_type
99
99
 
100
+ # The payment token used for the payment, if available.
101
+ sig { returns(T.nilable(WhopSDK::Payment::PaymentToken)) }
102
+ attr_reader :payment_token
103
+
104
+ sig do
105
+ params(
106
+ payment_token: T.nilable(WhopSDK::Payment::PaymentToken::OrHash)
107
+ ).void
108
+ end
109
+ attr_writer :payment_token
110
+
100
111
  # The plan attached to this payment.
101
112
  sig { returns(T.nilable(WhopSDK::Payment::Plan)) }
102
113
  attr_reader :plan
@@ -192,6 +203,7 @@ module WhopSDK
192
203
  metadata: T.nilable(T::Hash[Symbol, T.anything]),
193
204
  paid_at: T.nilable(Time),
194
205
  payment_method_type: T.nilable(WhopSDK::PaymentMethodTypes::OrSymbol),
206
+ payment_token: T.nilable(WhopSDK::Payment::PaymentToken::OrHash),
195
207
  plan: T.nilable(WhopSDK::Payment::Plan::OrHash),
196
208
  product: T.nilable(WhopSDK::Payment::Product::OrHash),
197
209
  promo_code: T.nilable(WhopSDK::Payment::PromoCode::OrHash),
@@ -246,6 +258,8 @@ module WhopSDK
246
258
  paid_at:,
247
259
  # The different types of payment methods that can be used.
248
260
  payment_method_type:,
261
+ # The payment token used for the payment, if available.
262
+ payment_token:,
249
263
  # The plan attached to this payment.
250
264
  plan:,
251
265
  # The product this payment was made for
@@ -303,6 +317,7 @@ module WhopSDK
303
317
  paid_at: T.nilable(Time),
304
318
  payment_method_type:
305
319
  T.nilable(WhopSDK::PaymentMethodTypes::TaggedSymbol),
320
+ payment_token: T.nilable(WhopSDK::Payment::PaymentToken),
306
321
  plan: T.nilable(WhopSDK::Payment::Plan),
307
322
  product: T.nilable(WhopSDK::Payment::Product),
308
323
  promo_code: T.nilable(WhopSDK::Payment::PromoCode),
@@ -512,6 +527,133 @@ module WhopSDK
512
527
  end
513
528
  end
514
529
 
530
+ class PaymentToken < WhopSDK::Internal::Type::BaseModel
531
+ OrHash =
532
+ T.type_alias do
533
+ T.any(WhopSDK::Payment::PaymentToken, WhopSDK::Internal::AnyHash)
534
+ end
535
+
536
+ # The ID of the payment token
537
+ sig { returns(String) }
538
+ attr_accessor :id
539
+
540
+ # The card data associated with the payment token, if its a debit or credit card
541
+ # token.
542
+ sig { returns(T.nilable(WhopSDK::Payment::PaymentToken::Card)) }
543
+ attr_reader :card
544
+
545
+ sig do
546
+ params(
547
+ card: T.nilable(WhopSDK::Payment::PaymentToken::Card::OrHash)
548
+ ).void
549
+ end
550
+ attr_writer :card
551
+
552
+ # The date and time the payment token was created
553
+ sig { returns(Time) }
554
+ attr_accessor :created_at
555
+
556
+ # The payment method type of the payment token
557
+ sig { returns(WhopSDK::PaymentMethodTypes::TaggedSymbol) }
558
+ attr_accessor :payment_method_type
559
+
560
+ # The payment token used for the payment, if available.
561
+ sig do
562
+ params(
563
+ id: String,
564
+ card: T.nilable(WhopSDK::Payment::PaymentToken::Card::OrHash),
565
+ created_at: Time,
566
+ payment_method_type: WhopSDK::PaymentMethodTypes::OrSymbol
567
+ ).returns(T.attached_class)
568
+ end
569
+ def self.new(
570
+ # The ID of the payment token
571
+ id:,
572
+ # The card data associated with the payment token, if its a debit or credit card
573
+ # token.
574
+ card:,
575
+ # The date and time the payment token was created
576
+ created_at:,
577
+ # The payment method type of the payment token
578
+ payment_method_type:
579
+ )
580
+ end
581
+
582
+ sig do
583
+ override.returns(
584
+ {
585
+ id: String,
586
+ card: T.nilable(WhopSDK::Payment::PaymentToken::Card),
587
+ created_at: Time,
588
+ payment_method_type: WhopSDK::PaymentMethodTypes::TaggedSymbol
589
+ }
590
+ )
591
+ end
592
+ def to_hash
593
+ end
594
+
595
+ class Card < WhopSDK::Internal::Type::BaseModel
596
+ OrHash =
597
+ T.type_alias do
598
+ T.any(
599
+ WhopSDK::Payment::PaymentToken::Card,
600
+ WhopSDK::Internal::AnyHash
601
+ )
602
+ end
603
+
604
+ # Possible card brands that a payment token can have
605
+ sig { returns(T.nilable(WhopSDK::CardBrands::TaggedSymbol)) }
606
+ attr_accessor :brand
607
+
608
+ # Card expiration month, like 03 for March.
609
+ sig { returns(T.nilable(Integer)) }
610
+ attr_accessor :exp_month
611
+
612
+ # Card expiration year, like 27 for 2027.
613
+ sig { returns(T.nilable(Integer)) }
614
+ attr_accessor :exp_year
615
+
616
+ # Last four digits of the card.
617
+ sig { returns(T.nilable(String)) }
618
+ attr_accessor :last4
619
+
620
+ # The card data associated with the payment token, if its a debit or credit card
621
+ # token.
622
+ sig do
623
+ params(
624
+ brand: T.nilable(WhopSDK::CardBrands::OrSymbol),
625
+ exp_month: T.nilable(Integer),
626
+ exp_year: T.nilable(Integer),
627
+ last4: T.nilable(String)
628
+ ).returns(T.attached_class)
629
+ end
630
+ def self.new(
631
+ # Possible card brands that a payment token can have
632
+ brand:,
633
+ # Card expiration month, like 03 for March.
634
+ exp_month:,
635
+ # Card expiration year, like 27 for 2027.
636
+ exp_year:,
637
+ # Last four digits of the card.
638
+ last4:
639
+ )
640
+ end
641
+
642
+ sig do
643
+ override.returns(
644
+ {
645
+ brand: T.nilable(WhopSDK::CardBrands::TaggedSymbol),
646
+ exp_month: T.nilable(Integer),
647
+ exp_year: T.nilable(Integer),
648
+ last4: T.nilable(String)
649
+ }
650
+ )
651
+ end
652
+ def to_hash
653
+ end
654
+ end
655
+ end
656
+
515
657
  class Plan < WhopSDK::Internal::Type::BaseModel
516
658
  OrHash =
517
659
  T.type_alias do