whop_sdk 0.0.3 → 0.0.5

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 (267) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +47 -0
  3. data/README.md +1 -1
  4. data/lib/whop_sdk/client.rb +8 -0
  5. data/lib/whop_sdk/internal/transport/base_client.rb +7 -1
  6. data/lib/whop_sdk/internal/transport/pooled_net_requester.rb +6 -2
  7. data/lib/whop_sdk/models/access_level.rb +1 -1
  8. data/lib/whop_sdk/models/access_pass_type.rb +2 -1
  9. data/lib/whop_sdk/models/access_token_create_params.rb +67 -0
  10. data/lib/whop_sdk/models/access_token_create_response.rb +27 -0
  11. data/lib/whop_sdk/models/app_build_create_params.rb +53 -29
  12. data/lib/whop_sdk/models/app_update_params.rb +53 -29
  13. data/lib/whop_sdk/models/checkout_configuration_create_params.rb +119 -43
  14. data/lib/whop_sdk/models/company.rb +13 -1
  15. data/lib/whop_sdk/models/company_create_params.rb +46 -0
  16. data/lib/whop_sdk/models/company_list_params.rb +62 -0
  17. data/lib/whop_sdk/models/company_list_response.rb +175 -0
  18. data/lib/whop_sdk/models/course.rb +18 -1
  19. data/lib/whop_sdk/models/course_create_params.rb +94 -30
  20. data/lib/whop_sdk/models/course_lesson_create_params.rb +77 -1
  21. data/lib/whop_sdk/models/course_lesson_list_response.rb +43 -1
  22. data/lib/whop_sdk/models/course_lesson_update_params.rb +280 -83
  23. data/lib/whop_sdk/models/course_list_response.rb +18 -1
  24. data/lib/whop_sdk/models/course_student_list_params.rb +62 -0
  25. data/lib/whop_sdk/models/course_student_list_response.rb +97 -0
  26. data/lib/whop_sdk/models/course_student_retrieve_params.rb +14 -0
  27. data/lib/whop_sdk/models/course_student_retrieve_response.rb +149 -0
  28. data/lib/whop_sdk/models/course_update_params.rb +70 -28
  29. data/lib/whop_sdk/models/course_visibilities.rb +17 -0
  30. data/lib/whop_sdk/models/embed_type.rb +16 -0
  31. data/lib/whop_sdk/models/entry.rb +3 -3
  32. data/lib/whop_sdk/models/entry_list_response.rb +3 -3
  33. data/lib/whop_sdk/models/experience.rb +5 -6
  34. data/lib/whop_sdk/models/experience_update_params.rb +53 -29
  35. data/lib/whop_sdk/models/forum_post.rb +2 -2
  36. data/lib/whop_sdk/models/forum_post_create_params.rb +51 -27
  37. data/lib/whop_sdk/models/forum_post_list_response.rb +2 -2
  38. data/lib/whop_sdk/models/forum_post_update_params.rb +51 -27
  39. data/lib/whop_sdk/models/global_affiliate_status.rb +1 -1
  40. data/lib/whop_sdk/models/invoice_create_params.rb +50 -34
  41. data/lib/whop_sdk/models/invoice_list_params.rb +27 -40
  42. data/lib/whop_sdk/models/lesson.rb +59 -9
  43. data/lib/whop_sdk/models/member_list_params.rb +11 -11
  44. data/lib/whop_sdk/models/member_list_response.rb +3 -3
  45. data/lib/whop_sdk/models/member_retrieve_response.rb +3 -3
  46. data/lib/whop_sdk/models/membership_list_params.rb +9 -9
  47. data/lib/whop_sdk/models/message.rb +2 -2
  48. data/lib/whop_sdk/models/message_create_params.rb +51 -27
  49. data/lib/whop_sdk/models/message_list_response.rb +2 -2
  50. data/lib/whop_sdk/models/message_update_params.rb +51 -27
  51. data/lib/whop_sdk/models/payment.rb +13 -4
  52. data/lib/whop_sdk/models/payment_list_response.rb +13 -4
  53. data/lib/whop_sdk/models/payment_method_types.rb +2 -1
  54. data/lib/whop_sdk/models/plan.rb +54 -5
  55. data/lib/whop_sdk/models/plan_create_params.rb +99 -24
  56. data/lib/whop_sdk/models/plan_list_response.rb +57 -5
  57. data/lib/whop_sdk/models/plan_type.rb +1 -1
  58. data/lib/whop_sdk/models/plan_update_params.rb +97 -22
  59. data/lib/whop_sdk/models/product.rb +1 -1
  60. data/lib/whop_sdk/models/product_create_params.rb +6 -6
  61. data/lib/whop_sdk/models/product_list_item.rb +1 -1
  62. data/lib/whop_sdk/models/product_update_params.rb +57 -33
  63. data/lib/whop_sdk/models/promo_code.rb +3 -3
  64. data/lib/whop_sdk/models/promo_code_list_response.rb +3 -3
  65. data/lib/whop_sdk/models/transfer.rb +9 -1
  66. data/lib/whop_sdk/models/transfer_create_params.rb +9 -1
  67. data/lib/whop_sdk/models/transfer_list_response.rb +9 -1
  68. data/lib/whop_sdk/models.rb +14 -0
  69. data/lib/whop_sdk/resources/access_tokens.rb +46 -0
  70. data/lib/whop_sdk/resources/app_builds.rb +5 -3
  71. data/lib/whop_sdk/resources/apps.rb +4 -3
  72. data/lib/whop_sdk/resources/authorized_users.rb +2 -1
  73. data/lib/whop_sdk/resources/chat_channels.rb +9 -2
  74. data/lib/whop_sdk/resources/checkout_configurations.rb +8 -7
  75. data/lib/whop_sdk/resources/companies.rb +72 -1
  76. data/lib/whop_sdk/resources/course_chapters.rb +5 -3
  77. data/lib/whop_sdk/resources/course_lesson_interactions.rb +4 -3
  78. data/lib/whop_sdk/resources/course_lessons.rb +25 -7
  79. data/lib/whop_sdk/resources/course_students.rb +77 -0
  80. data/lib/whop_sdk/resources/courses.rb +24 -7
  81. data/lib/whop_sdk/resources/entries.rb +6 -3
  82. data/lib/whop_sdk/resources/experiences.rb +9 -7
  83. data/lib/whop_sdk/resources/forum_posts.rb +5 -4
  84. data/lib/whop_sdk/resources/forums.rb +3 -2
  85. data/lib/whop_sdk/resources/invoices.rb +22 -16
  86. data/lib/whop_sdk/resources/ledger_accounts.rb +6 -2
  87. data/lib/whop_sdk/resources/members.rb +6 -5
  88. data/lib/whop_sdk/resources/memberships.rb +10 -8
  89. data/lib/whop_sdk/resources/messages.rb +5 -4
  90. data/lib/whop_sdk/resources/payments.rb +7 -4
  91. data/lib/whop_sdk/resources/plans.rb +14 -8
  92. data/lib/whop_sdk/resources/products.rb +10 -8
  93. data/lib/whop_sdk/resources/promo_codes.rb +4 -2
  94. data/lib/whop_sdk/resources/reactions.rb +2 -1
  95. data/lib/whop_sdk/resources/reviews.rb +2 -1
  96. data/lib/whop_sdk/resources/shipments.rb +2 -1
  97. data/lib/whop_sdk/resources/support_channels.rb +2 -1
  98. data/lib/whop_sdk/resources/transfers.rb +5 -2
  99. data/lib/whop_sdk/resources/users.rb +9 -3
  100. data/lib/whop_sdk/version.rb +1 -1
  101. data/lib/whop_sdk.rb +14 -1
  102. data/manifest.yaml +1 -0
  103. data/rbi/whop_sdk/client.rbi +6 -0
  104. data/rbi/whop_sdk/internal/transport/base_client.rbi +5 -0
  105. data/rbi/whop_sdk/internal/transport/pooled_net_requester.rbi +6 -2
  106. data/rbi/whop_sdk/internal/type/base_model.rbi +8 -4
  107. data/rbi/whop_sdk/models/access_level.rbi +1 -1
  108. data/rbi/whop_sdk/models/access_pass_type.rbi +2 -1
  109. data/rbi/whop_sdk/models/access_token_create_params.rbi +126 -0
  110. data/rbi/whop_sdk/models/access_token_create_response.rbi +37 -0
  111. data/rbi/whop_sdk/models/app_build_create_params.rbi +80 -40
  112. data/rbi/whop_sdk/models/app_update_params.rbi +86 -37
  113. data/rbi/whop_sdk/models/checkout_configuration_create_params.rbi +196 -68
  114. data/rbi/whop_sdk/models/company.rbi +10 -0
  115. data/rbi/whop_sdk/models/company_create_params.rbi +67 -0
  116. data/rbi/whop_sdk/models/company_list_params.rbi +83 -0
  117. data/rbi/whop_sdk/models/company_list_response.rbi +235 -0
  118. data/rbi/whop_sdk/models/course.rbi +21 -3
  119. data/rbi/whop_sdk/models/course_create_params.rbi +126 -38
  120. data/rbi/whop_sdk/models/course_lesson_create_params.rbi +126 -0
  121. data/rbi/whop_sdk/models/course_lesson_list_response.rbi +68 -0
  122. data/rbi/whop_sdk/models/course_lesson_update_params.rbi +449 -111
  123. data/rbi/whop_sdk/models/course_list_response.rbi +21 -3
  124. data/rbi/whop_sdk/models/course_student_list_params.rbi +83 -0
  125. data/rbi/whop_sdk/models/course_student_list_response.rbi +142 -0
  126. data/rbi/whop_sdk/models/course_student_retrieve_params.rbi +30 -0
  127. data/rbi/whop_sdk/models/course_student_retrieve_response.rbi +250 -0
  128. data/rbi/whop_sdk/models/course_update_params.rbi +104 -38
  129. data/rbi/whop_sdk/models/course_visibilities.rbi +23 -0
  130. data/rbi/whop_sdk/models/embed_type.rbi +20 -0
  131. data/rbi/whop_sdk/models/entry.rbi +3 -3
  132. data/rbi/whop_sdk/models/entry_list_response.rbi +3 -3
  133. data/rbi/whop_sdk/models/experience.rbi +7 -9
  134. data/rbi/whop_sdk/models/experience_update_params.rbi +84 -38
  135. data/rbi/whop_sdk/models/forum_post.rbi +2 -2
  136. data/rbi/whop_sdk/models/forum_post_create_params.rbi +85 -32
  137. data/rbi/whop_sdk/models/forum_post_list_response.rbi +2 -2
  138. data/rbi/whop_sdk/models/forum_post_update_params.rbi +85 -32
  139. data/rbi/whop_sdk/models/global_affiliate_status.rbi +1 -1
  140. data/rbi/whop_sdk/models/invoice_create_params.rbi +60 -46
  141. data/rbi/whop_sdk/models/invoice_list_params.rbi +26 -71
  142. data/rbi/whop_sdk/models/lesson.rbi +68 -10
  143. data/rbi/whop_sdk/models/member_list_params.rbi +10 -10
  144. data/rbi/whop_sdk/models/member_list_response.rbi +6 -6
  145. data/rbi/whop_sdk/models/member_retrieve_response.rbi +6 -6
  146. data/rbi/whop_sdk/models/membership_list_params.rbi +8 -8
  147. data/rbi/whop_sdk/models/message.rbi +2 -2
  148. data/rbi/whop_sdk/models/message_create_params.rbi +85 -32
  149. data/rbi/whop_sdk/models/message_list_response.rbi +2 -2
  150. data/rbi/whop_sdk/models/message_update_params.rbi +85 -32
  151. data/rbi/whop_sdk/models/payment.rbi +13 -3
  152. data/rbi/whop_sdk/models/payment_list_response.rbi +13 -3
  153. data/rbi/whop_sdk/models/payment_method_types.rbi +3 -1
  154. data/rbi/whop_sdk/models/plan.rbi +88 -4
  155. data/rbi/whop_sdk/models/plan_create_params.rbi +176 -34
  156. data/rbi/whop_sdk/models/plan_list_response.rbi +100 -4
  157. data/rbi/whop_sdk/models/plan_type.rbi +1 -1
  158. data/rbi/whop_sdk/models/plan_update_params.rbi +174 -32
  159. data/rbi/whop_sdk/models/product.rbi +1 -1
  160. data/rbi/whop_sdk/models/product_create_params.rbi +6 -6
  161. data/rbi/whop_sdk/models/product_list_item.rbi +1 -1
  162. data/rbi/whop_sdk/models/product_update_params.rbi +87 -43
  163. data/rbi/whop_sdk/models/promo_code.rbi +3 -3
  164. data/rbi/whop_sdk/models/promo_code_list_response.rbi +3 -3
  165. data/rbi/whop_sdk/models/transfer.rbi +8 -0
  166. data/rbi/whop_sdk/models/transfer_create_params.rbi +8 -0
  167. data/rbi/whop_sdk/models/transfer_list_response.rbi +8 -0
  168. data/rbi/whop_sdk/models.rbi +14 -0
  169. data/rbi/whop_sdk/resources/access_tokens.rbi +41 -0
  170. data/rbi/whop_sdk/resources/app_builds.rbi +15 -3
  171. data/rbi/whop_sdk/resources/apps.rbi +13 -2
  172. data/rbi/whop_sdk/resources/authorized_users.rbi +5 -1
  173. data/rbi/whop_sdk/resources/chat_channels.rbi +8 -1
  174. data/rbi/whop_sdk/resources/checkout_configurations.rbi +11 -8
  175. data/rbi/whop_sdk/resources/companies.rbi +68 -1
  176. data/rbi/whop_sdk/resources/course_chapters.rbi +11 -2
  177. data/rbi/whop_sdk/resources/course_lesson_interactions.rbi +7 -3
  178. data/rbi/whop_sdk/resources/course_lessons.rbi +62 -4
  179. data/rbi/whop_sdk/resources/course_students.rbi +69 -0
  180. data/rbi/whop_sdk/resources/courses.rbi +50 -4
  181. data/rbi/whop_sdk/resources/entries.rbi +15 -3
  182. data/rbi/whop_sdk/resources/experiences.rbi +21 -3
  183. data/rbi/whop_sdk/resources/forum_posts.rbi +18 -3
  184. data/rbi/whop_sdk/resources/forums.rbi +6 -1
  185. data/rbi/whop_sdk/resources/invoices.rbi +38 -23
  186. data/rbi/whop_sdk/resources/ledger_accounts.rbi +7 -2
  187. data/rbi/whop_sdk/resources/members.rbi +9 -5
  188. data/rbi/whop_sdk/resources/memberships.rbi +16 -5
  189. data/rbi/whop_sdk/resources/messages.rbi +18 -3
  190. data/rbi/whop_sdk/resources/payments.rbi +16 -3
  191. data/rbi/whop_sdk/resources/plans.rbi +40 -5
  192. data/rbi/whop_sdk/resources/products.rbi +21 -7
  193. data/rbi/whop_sdk/resources/promo_codes.rbi +10 -2
  194. data/rbi/whop_sdk/resources/reactions.rbi +5 -1
  195. data/rbi/whop_sdk/resources/reviews.rbi +5 -1
  196. data/rbi/whop_sdk/resources/shipments.rbi +5 -1
  197. data/rbi/whop_sdk/resources/support_channels.rbi +5 -1
  198. data/rbi/whop_sdk/resources/transfers.rbi +8 -1
  199. data/rbi/whop_sdk/resources/users.rbi +13 -2
  200. data/sig/whop_sdk/client.rbs +4 -0
  201. data/sig/whop_sdk/internal/transport/base_client.rbs +2 -0
  202. data/sig/whop_sdk/internal/transport/pooled_net_requester.rbs +4 -1
  203. data/sig/whop_sdk/models/access_token_create_params.rbs +56 -0
  204. data/sig/whop_sdk/models/access_token_create_response.rbs +15 -0
  205. data/sig/whop_sdk/models/app_build_create_params.rbs +29 -10
  206. data/sig/whop_sdk/models/app_update_params.rbs +29 -10
  207. data/sig/whop_sdk/models/checkout_configuration_create_params.rbs +72 -21
  208. data/sig/whop_sdk/models/company.rbs +5 -0
  209. data/sig/whop_sdk/models/company_create_params.rbs +41 -0
  210. data/sig/whop_sdk/models/company_list_params.rbs +51 -0
  211. data/sig/whop_sdk/models/company_list_response.rbs +109 -0
  212. data/sig/whop_sdk/models/course.rbs +13 -3
  213. data/sig/whop_sdk/models/course_create_params.rbs +49 -10
  214. data/sig/whop_sdk/models/course_lesson_create_params.rbs +46 -0
  215. data/sig/whop_sdk/models/course_lesson_list_response.rbs +25 -0
  216. data/sig/whop_sdk/models/course_lesson_update_params.rbs +162 -30
  217. data/sig/whop_sdk/models/course_list_response.rbs +13 -3
  218. data/sig/whop_sdk/models/course_student_list_params.rbs +51 -0
  219. data/sig/whop_sdk/models/course_student_list_response.rbs +64 -0
  220. data/sig/whop_sdk/models/course_student_retrieve_params.rbs +15 -0
  221. data/sig/whop_sdk/models/course_student_retrieve_response.rbs +106 -0
  222. data/sig/whop_sdk/models/course_update_params.rbs +40 -11
  223. data/sig/whop_sdk/models/course_visibilities.rbs +14 -0
  224. data/sig/whop_sdk/models/embed_type.rbs +14 -0
  225. data/sig/whop_sdk/models/experience_update_params.rbs +29 -10
  226. data/sig/whop_sdk/models/forum_post_create_params.rbs +29 -10
  227. data/sig/whop_sdk/models/forum_post_update_params.rbs +29 -10
  228. data/sig/whop_sdk/models/invoice_create_params.rbs +28 -18
  229. data/sig/whop_sdk/models/invoice_list_params.rbs +16 -33
  230. data/sig/whop_sdk/models/lesson.rbs +33 -8
  231. data/sig/whop_sdk/models/member_list_params.rbs +5 -5
  232. data/sig/whop_sdk/models/membership_list_params.rbs +5 -5
  233. data/sig/whop_sdk/models/message_create_params.rbs +29 -10
  234. data/sig/whop_sdk/models/message_update_params.rbs +29 -10
  235. data/sig/whop_sdk/models/payment.rbs +5 -0
  236. data/sig/whop_sdk/models/payment_list_response.rbs +5 -0
  237. data/sig/whop_sdk/models/payment_method_types.rbs +4 -2
  238. data/sig/whop_sdk/models/plan.rbs +32 -0
  239. data/sig/whop_sdk/models/plan_create_params.rbs +61 -10
  240. data/sig/whop_sdk/models/plan_list_response.rbs +32 -0
  241. data/sig/whop_sdk/models/plan_update_params.rbs +61 -10
  242. data/sig/whop_sdk/models/product_update_params.rbs +29 -10
  243. data/sig/whop_sdk/models/transfer.rbs +5 -0
  244. data/sig/whop_sdk/models/transfer_create_params.rbs +5 -0
  245. data/sig/whop_sdk/models/transfer_list_response.rbs +5 -0
  246. data/sig/whop_sdk/models.rbs +14 -0
  247. data/sig/whop_sdk/resources/access_tokens.rbs +15 -0
  248. data/sig/whop_sdk/resources/app_builds.rbs +1 -1
  249. data/sig/whop_sdk/resources/apps.rbs +1 -1
  250. data/sig/whop_sdk/resources/checkout_configurations.rbs +2 -2
  251. data/sig/whop_sdk/resources/companies.rbs +18 -0
  252. data/sig/whop_sdk/resources/course_lessons.rbs +10 -2
  253. data/sig/whop_sdk/resources/course_students.rbs +22 -0
  254. data/sig/whop_sdk/resources/courses.rbs +8 -2
  255. data/sig/whop_sdk/resources/experiences.rbs +1 -1
  256. data/sig/whop_sdk/resources/forum_posts.rbs +2 -2
  257. data/sig/whop_sdk/resources/invoices.rbs +8 -6
  258. data/sig/whop_sdk/resources/members.rbs +1 -1
  259. data/sig/whop_sdk/resources/memberships.rbs +1 -1
  260. data/sig/whop_sdk/resources/messages.rbs +2 -2
  261. data/sig/whop_sdk/resources/plans.rbs +4 -2
  262. data/sig/whop_sdk/resources/products.rbs +1 -1
  263. data/sig/whop_sdk/resources/transfers.rbs +1 -0
  264. metadata +41 -5
  265. data/lib/whop_sdk/models/invoice_create_response.rb +0 -27
  266. data/rbi/whop_sdk/models/invoice_create_response.rbi +0 -49
  267. data/sig/whop_sdk/models/invoice_create_response.rbs +0 -19
@@ -34,13 +34,17 @@ module WhopSDK
34
34
  attr_accessor :expiration_days
35
35
 
36
36
  # An image for the plan. This will be visible on the product page to customers.
37
- sig { returns(T.nilable(WhopSDK::PlanUpdateParams::Image)) }
38
- attr_reader :image
39
-
40
37
  sig do
41
- params(image: T.nilable(WhopSDK::PlanUpdateParams::Image::OrHash)).void
38
+ returns(
39
+ T.nilable(
40
+ T.any(
41
+ WhopSDK::PlanUpdateParams::Image::AttachmentInputWithDirectUploadID,
42
+ WhopSDK::PlanUpdateParams::Image::AttachmentInputWithID
43
+ )
44
+ )
45
+ )
42
46
  end
43
- attr_writer :image
47
+ attr_accessor :image
44
48
 
45
49
  # An additional amount charged upon first purchase.
46
50
  sig { returns(T.nilable(Float)) }
@@ -59,6 +63,25 @@ module WhopSDK
59
63
  sig { returns(T.nilable(WhopSDK::TaxType::OrSymbol)) }
60
64
  attr_accessor :override_tax_type
61
65
 
66
+ # The explicit payment method configuration for the plan. If sent as null, the
67
+ # custom configuration will be removed.
68
+ sig do
69
+ returns(
70
+ T.nilable(WhopSDK::PlanUpdateParams::PaymentMethodConfiguration)
71
+ )
72
+ end
73
+ attr_reader :payment_method_configuration
74
+
75
+ sig do
76
+ params(
77
+ payment_method_configuration:
78
+ T.nilable(
79
+ WhopSDK::PlanUpdateParams::PaymentMethodConfiguration::OrHash
80
+ )
81
+ ).void
82
+ end
83
+ attr_writer :payment_method_configuration
84
+
62
85
  # The amount the customer is charged every billing period.
63
86
  sig { returns(T.nilable(Float)) }
64
87
  attr_accessor :renewal_price
@@ -101,11 +124,21 @@ module WhopSDK
101
124
  T.nilable(T::Array[WhopSDK::PlanUpdateParams::CustomField::OrHash]),
102
125
  description: T.nilable(String),
103
126
  expiration_days: T.nilable(Integer),
104
- image: T.nilable(WhopSDK::PlanUpdateParams::Image::OrHash),
127
+ image:
128
+ T.nilable(
129
+ T.any(
130
+ WhopSDK::PlanUpdateParams::Image::AttachmentInputWithDirectUploadID::OrHash,
131
+ WhopSDK::PlanUpdateParams::Image::AttachmentInputWithID::OrHash
132
+ )
133
+ ),
105
134
  initial_price: T.nilable(Float),
106
135
  internal_notes: T.nilable(String),
107
136
  offer_cancel_discount: T.nilable(T::Boolean),
108
137
  override_tax_type: T.nilable(WhopSDK::TaxType::OrSymbol),
138
+ payment_method_configuration:
139
+ T.nilable(
140
+ WhopSDK::PlanUpdateParams::PaymentMethodConfiguration::OrHash
141
+ ),
109
142
  renewal_price: T.nilable(Float),
110
143
  stock: T.nilable(Integer),
111
144
  strike_through_initial_price: T.nilable(Float),
@@ -139,6 +172,9 @@ module WhopSDK
139
172
  # Whether or not the tax is included in a plan's price (or if it hasn't been set
140
173
  # up)
141
174
  override_tax_type: nil,
175
+ # The explicit payment method configuration for the plan. If sent as null, the
176
+ # custom configuration will be removed.
177
+ payment_method_configuration: nil,
142
178
  # The amount the customer is charged every billing period.
143
179
  renewal_price: nil,
144
180
  # The number of units available for purchase.
@@ -170,11 +206,19 @@ module WhopSDK
170
206
  T.nilable(T::Array[WhopSDK::PlanUpdateParams::CustomField]),
171
207
  description: T.nilable(String),
172
208
  expiration_days: T.nilable(Integer),
173
- image: T.nilable(WhopSDK::PlanUpdateParams::Image),
209
+ image:
210
+ T.nilable(
211
+ T.any(
212
+ WhopSDK::PlanUpdateParams::Image::AttachmentInputWithDirectUploadID,
213
+ WhopSDK::PlanUpdateParams::Image::AttachmentInputWithID
214
+ )
215
+ ),
174
216
  initial_price: T.nilable(Float),
175
217
  internal_notes: T.nilable(String),
176
218
  offer_cancel_discount: T.nilable(T::Boolean),
177
219
  override_tax_type: T.nilable(WhopSDK::TaxType::OrSymbol),
220
+ payment_method_configuration:
221
+ T.nilable(WhopSDK::PlanUpdateParams::PaymentMethodConfiguration),
178
222
  renewal_price: T.nilable(Float),
179
223
  stock: T.nilable(Integer),
180
224
  strike_through_initial_price: T.nilable(Float),
@@ -265,46 +309,144 @@ module WhopSDK
265
309
  end
266
310
  end
267
311
 
268
- class Image < WhopSDK::Internal::Type::BaseModel
269
- OrHash =
312
+ # An image for the plan. This will be visible on the product page to customers.
313
+ module Image
314
+ extend WhopSDK::Internal::Type::Union
315
+
316
+ Variants =
270
317
  T.type_alias do
271
- T.any(WhopSDK::PlanUpdateParams::Image, WhopSDK::Internal::AnyHash)
318
+ T.any(
319
+ WhopSDK::PlanUpdateParams::Image::AttachmentInputWithDirectUploadID,
320
+ WhopSDK::PlanUpdateParams::Image::AttachmentInputWithID
321
+ )
272
322
  end
273
323
 
274
- # The ID of an existing attachment object. Use this when updating a resource and
275
- # keeping a subset of the attachments. Don't use this unless you know what you're
276
- # doing.
277
- sig { returns(T.nilable(String)) }
278
- attr_accessor :id
324
+ class AttachmentInputWithDirectUploadID < WhopSDK::Internal::Type::BaseModel
325
+ OrHash =
326
+ T.type_alias do
327
+ T.any(
328
+ WhopSDK::PlanUpdateParams::Image::AttachmentInputWithDirectUploadID,
329
+ WhopSDK::Internal::AnyHash
330
+ )
331
+ end
279
332
 
280
- # This ID should be used the first time you upload an attachment. It is the ID of
281
- # the direct upload that was created when uploading the file to S3 via the
282
- # mediaDirectUpload mutation.
283
- sig { returns(T.nilable(String)) }
284
- attr_accessor :direct_upload_id
333
+ # This ID should be used the first time you upload an attachment. It is the ID of
334
+ # the direct upload that was created when uploading the file to S3 via the
335
+ # mediaDirectUpload mutation.
336
+ sig { returns(String) }
337
+ attr_accessor :direct_upload_id
338
+
339
+ # Input for an attachment
340
+ sig { params(direct_upload_id: String).returns(T.attached_class) }
341
+ def self.new(
342
+ # This ID should be used the first time you upload an attachment. It is the ID of
343
+ # the direct upload that was created when uploading the file to S3 via the
344
+ # mediaDirectUpload mutation.
345
+ direct_upload_id:
346
+ )
347
+ end
348
+
349
+ sig { override.returns({ direct_upload_id: String }) }
350
+ def to_hash
351
+ end
352
+ end
353
+
354
+ class AttachmentInputWithID < WhopSDK::Internal::Type::BaseModel
355
+ OrHash =
356
+ T.type_alias do
357
+ T.any(
358
+ WhopSDK::PlanUpdateParams::Image::AttachmentInputWithID,
359
+ WhopSDK::Internal::AnyHash
360
+ )
361
+ end
362
+
363
+ # The ID of an existing attachment object. Use this when updating a resource and
364
+ # keeping a subset of the attachments. Don't use this unless you know what you're
365
+ # doing.
366
+ sig { returns(String) }
367
+ attr_accessor :id
368
+
369
+ # Input for an attachment
370
+ sig { params(id: String).returns(T.attached_class) }
371
+ def self.new(
372
+ # The ID of an existing attachment object. Use this when updating a resource and
373
+ # keeping a subset of the attachments. Don't use this unless you know what you're
374
+ # doing.
375
+ id:
376
+ )
377
+ end
378
+
379
+ sig { override.returns({ id: String }) }
380
+ def to_hash
381
+ end
382
+ end
285
383
 
286
- # An image for the plan. This will be visible on the product page to customers.
384
+ sig do
385
+ override.returns(T::Array[WhopSDK::PlanUpdateParams::Image::Variants])
386
+ end
387
+ def self.variants
388
+ end
389
+ end
390
+
391
+ class PaymentMethodConfiguration < WhopSDK::Internal::Type::BaseModel
392
+ OrHash =
393
+ T.type_alias do
394
+ T.any(
395
+ WhopSDK::PlanUpdateParams::PaymentMethodConfiguration,
396
+ WhopSDK::Internal::AnyHash
397
+ )
398
+ end
399
+
400
+ # An array of payment method identifiers that are explicitly disabled. Only
401
+ # applies if the include_platform_defaults is true.
402
+ sig { returns(T::Array[WhopSDK::PaymentMethodTypes::OrSymbol]) }
403
+ attr_accessor :disabled
404
+
405
+ # An array of payment method identifiers that are explicitly enabled. This means
406
+ # these payment methods will be shown on checkout. Example use case is to only
407
+ # enable a specific payment method like cashapp, or extending the platform
408
+ # defaults with additional methods.
409
+ sig { returns(T::Array[WhopSDK::PaymentMethodTypes::OrSymbol]) }
410
+ attr_accessor :enabled
411
+
412
+ # Whether Whop's platform default payment method enablement settings are included
413
+ # in this configuration. The full list of default payment methods can be found in
414
+ # the documentation at docs.whop.com/payments.
415
+ sig { returns(T::Boolean) }
416
+ attr_accessor :include_platform_defaults
417
+
418
+ # The explicit payment method configuration for the plan. If sent as null, the
419
+ # custom configuration will be removed.
287
420
  sig do
288
421
  params(
289
- id: T.nilable(String),
290
- direct_upload_id: T.nilable(String)
422
+ disabled: T::Array[WhopSDK::PaymentMethodTypes::OrSymbol],
423
+ enabled: T::Array[WhopSDK::PaymentMethodTypes::OrSymbol],
424
+ include_platform_defaults: T::Boolean
291
425
  ).returns(T.attached_class)
292
426
  end
293
427
  def self.new(
294
- # The ID of an existing attachment object. Use this when updating a resource and
295
- # keeping a subset of the attachments. Don't use this unless you know what you're
296
- # doing.
297
- id: nil,
298
- # This ID should be used the first time you upload an attachment. It is the ID of
299
- # the direct upload that was created when uploading the file to S3 via the
300
- # mediaDirectUpload mutation.
301
- direct_upload_id: nil
428
+ # An array of payment method identifiers that are explicitly disabled. Only
429
+ # applies if the include_platform_defaults is true.
430
+ disabled:,
431
+ # An array of payment method identifiers that are explicitly enabled. This means
432
+ # these payment methods will be shown on checkout. Example use case is to only
433
+ # enable a specific payment method like cashapp, or extending the platform
434
+ # defaults with additional methods.
435
+ enabled:,
436
+ # Whether Whop's platform default payment method enablement settings are included
437
+ # in this configuration. The full list of default payment methods can be found in
438
+ # the documentation at docs.whop.com/payments.
439
+ include_platform_defaults:
302
440
  )
303
441
  end
304
442
 
305
443
  sig do
306
444
  override.returns(
307
- { id: T.nilable(String), direct_upload_id: T.nilable(String) }
445
+ {
446
+ disabled: T::Array[WhopSDK::PaymentMethodTypes::OrSymbol],
447
+ enabled: T::Array[WhopSDK::PaymentMethodTypes::OrSymbol],
448
+ include_platform_defaults: T::Boolean
449
+ }
308
450
  )
309
451
  end
310
452
  def to_hash
@@ -119,7 +119,7 @@ module WhopSDK
119
119
  sig { returns(WhopSDK::Visibility::TaggedSymbol) }
120
120
  attr_accessor :visibility
121
121
 
122
- # An object representing a (sanitized) access pass.
122
+ # Represents a product on whop. Use products to sell anything on the platform.
123
123
  sig do
124
124
  params(
125
125
  id: String,
@@ -53,7 +53,7 @@ module WhopSDK
53
53
  sig { returns(T.nilable(Float)) }
54
54
  attr_accessor :global_affiliate_percentage
55
55
 
56
- # The different statuses of the global affiliate program for an access pass.
56
+ # The different statuses of the global affiliate program for a product.
57
57
  sig { returns(T.nilable(WhopSDK::GlobalAffiliateStatus::OrSymbol)) }
58
58
  attr_accessor :global_affiliate_status
59
59
 
@@ -69,7 +69,7 @@ module WhopSDK
69
69
  sig { returns(T.nilable(Float)) }
70
70
  attr_accessor :member_affiliate_percentage
71
71
 
72
- # The different statuses of the global affiliate program for an access pass.
72
+ # The different statuses of the global affiliate program for a product.
73
73
  sig { returns(T.nilable(WhopSDK::GlobalAffiliateStatus::OrSymbol)) }
74
74
  attr_accessor :member_affiliate_status
75
75
 
@@ -164,7 +164,7 @@ module WhopSDK
164
164
  experience_ids: nil,
165
165
  # The percentage of the revenue that goes to the global affiliate program.
166
166
  global_affiliate_percentage: nil,
167
- # The different statuses of the global affiliate program for an access pass.
167
+ # The different statuses of the global affiliate program for a product.
168
168
  global_affiliate_status: nil,
169
169
  # The headline of the product.
170
170
  headline: nil,
@@ -172,7 +172,7 @@ module WhopSDK
172
172
  industry_type: nil,
173
173
  # The percentage of the revenue that goes to the member affiliate program.
174
174
  member_affiliate_percentage: nil,
175
- # The different statuses of the global affiliate program for an access pass.
175
+ # The different statuses of the global affiliate program for a product.
176
176
  member_affiliate_status: nil,
177
177
  # The details to assign an autogenerated plan.
178
178
  plan_options: nil,
@@ -257,7 +257,7 @@ module WhopSDK
257
257
  sig { returns(T.nilable(Float)) }
258
258
  attr_accessor :initial_price
259
259
 
260
- # The type of plan that can be attached to an access pass
260
+ # The type of plan that can be attached to a product
261
261
  sig { returns(T.nilable(WhopSDK::PlanType::OrSymbol)) }
262
262
  attr_accessor :plan_type
263
263
 
@@ -300,7 +300,7 @@ module WhopSDK
300
300
  custom_fields: nil,
301
301
  # An additional amount charged upon first purchase.
302
302
  initial_price: nil,
303
- # The type of plan that can be attached to an access pass
303
+ # The type of plan that can be attached to a product
304
304
  plan_type: nil,
305
305
  # The methods of how a plan can be released.
306
306
  release_method: nil,
@@ -62,7 +62,7 @@ module WhopSDK
62
62
  sig { returns(WhopSDK::Visibility::TaggedSymbol) }
63
63
  attr_accessor :visibility
64
64
 
65
- # An object representing a (sanitized) access pass.
65
+ # Represents a product on whop. Use products to sell anything on the platform.
66
66
  sig do
67
67
  params(
68
68
  id: String,
@@ -12,16 +12,17 @@ module WhopSDK
12
12
  end
13
13
 
14
14
  # A banner image for the product in png, jpeg format
15
- sig { returns(T.nilable(WhopSDK::ProductUpdateParams::BannerImage)) }
16
- attr_reader :banner_image
17
-
18
15
  sig do
19
- params(
20
- banner_image:
21
- T.nilable(WhopSDK::ProductUpdateParams::BannerImage::OrHash)
22
- ).void
16
+ returns(
17
+ T.nilable(
18
+ T.any(
19
+ WhopSDK::ProductUpdateParams::BannerImage::AttachmentInputWithDirectUploadID,
20
+ WhopSDK::ProductUpdateParams::BannerImage::AttachmentInputWithID
21
+ )
22
+ )
23
+ )
23
24
  end
24
- attr_writer :banner_image
25
+ attr_accessor :banner_image
25
26
 
26
27
  # The different business types a company can be.
27
28
  sig { returns(T.nilable(WhopSDK::BusinessTypes::OrSymbol)) }
@@ -53,7 +54,7 @@ module WhopSDK
53
54
  sig { returns(T.nilable(Float)) }
54
55
  attr_accessor :global_affiliate_percentage
55
56
 
56
- # The different statuses of the global affiliate program for an access pass.
57
+ # The different statuses of the global affiliate program for a product.
57
58
  sig { returns(T.nilable(WhopSDK::GlobalAffiliateStatus::OrSymbol)) }
58
59
  attr_accessor :global_affiliate_status
59
60
 
@@ -69,7 +70,7 @@ module WhopSDK
69
70
  sig { returns(T.nilable(Float)) }
70
71
  attr_accessor :member_affiliate_percentage
71
72
 
72
- # The different statuses of the global affiliate program for an access pass.
73
+ # The different statuses of the global affiliate program for a product.
73
74
  sig { returns(T.nilable(WhopSDK::GlobalAffiliateStatus::OrSymbol)) }
74
75
  attr_accessor :member_affiliate_status
75
76
 
@@ -108,7 +109,12 @@ module WhopSDK
108
109
  sig do
109
110
  params(
110
111
  banner_image:
111
- T.nilable(WhopSDK::ProductUpdateParams::BannerImage::OrHash),
112
+ T.nilable(
113
+ T.any(
114
+ WhopSDK::ProductUpdateParams::BannerImage::AttachmentInputWithDirectUploadID::OrHash,
115
+ WhopSDK::ProductUpdateParams::BannerImage::AttachmentInputWithID::OrHash
116
+ )
117
+ ),
112
118
  business_type: T.nilable(WhopSDK::BusinessTypes::OrSymbol),
113
119
  collect_shipping_address: T.nilable(T::Boolean),
114
120
  custom_cta: T.nilable(WhopSDK::CustomCta::OrSymbol),
@@ -152,7 +158,7 @@ module WhopSDK
152
158
  description: nil,
153
159
  # The percentage of the revenue that goes to the global affiliate program.
154
160
  global_affiliate_percentage: nil,
155
- # The different statuses of the global affiliate program for an access pass.
161
+ # The different statuses of the global affiliate program for a product.
156
162
  global_affiliate_status: nil,
157
163
  # The headline of the product.
158
164
  headline: nil,
@@ -160,7 +166,7 @@ module WhopSDK
160
166
  industry_type: nil,
161
167
  # The percentage of the revenue that goes to the member affiliate program.
162
168
  member_affiliate_percentage: nil,
163
- # The different statuses of the global affiliate program for an access pass.
169
+ # The different statuses of the global affiliate program for a product.
164
170
  member_affiliate_status: nil,
165
171
  # The ID of the product tax code to apply to this product.
166
172
  product_tax_code_id: nil,
@@ -181,7 +187,13 @@ module WhopSDK
181
187
  sig do
182
188
  override.returns(
183
189
  {
184
- banner_image: T.nilable(WhopSDK::ProductUpdateParams::BannerImage),
190
+ banner_image:
191
+ T.nilable(
192
+ T.any(
193
+ WhopSDK::ProductUpdateParams::BannerImage::AttachmentInputWithDirectUploadID,
194
+ WhopSDK::ProductUpdateParams::BannerImage::AttachmentInputWithID
195
+ )
196
+ ),
185
197
  business_type: T.nilable(WhopSDK::BusinessTypes::OrSymbol),
186
198
  collect_shipping_address: T.nilable(T::Boolean),
187
199
  custom_cta: T.nilable(WhopSDK::CustomCta::OrSymbol),
@@ -210,52 +222,84 @@ module WhopSDK
210
222
  def to_hash
211
223
  end
212
224
 
213
- class BannerImage < WhopSDK::Internal::Type::BaseModel
214
- OrHash =
225
+ # A banner image for the product in png, jpeg format
226
+ module BannerImage
227
+ extend WhopSDK::Internal::Type::Union
228
+
229
+ Variants =
215
230
  T.type_alias do
216
231
  T.any(
217
- WhopSDK::ProductUpdateParams::BannerImage,
218
- WhopSDK::Internal::AnyHash
232
+ WhopSDK::ProductUpdateParams::BannerImage::AttachmentInputWithDirectUploadID,
233
+ WhopSDK::ProductUpdateParams::BannerImage::AttachmentInputWithID
219
234
  )
220
235
  end
221
236
 
222
- # The ID of an existing attachment object. Use this when updating a resource and
223
- # keeping a subset of the attachments. Don't use this unless you know what you're
224
- # doing.
225
- sig { returns(T.nilable(String)) }
226
- attr_accessor :id
237
+ class AttachmentInputWithDirectUploadID < WhopSDK::Internal::Type::BaseModel
238
+ OrHash =
239
+ T.type_alias do
240
+ T.any(
241
+ WhopSDK::ProductUpdateParams::BannerImage::AttachmentInputWithDirectUploadID,
242
+ WhopSDK::Internal::AnyHash
243
+ )
244
+ end
227
245
 
228
- # This ID should be used the first time you upload an attachment. It is the ID of
229
- # the direct upload that was created when uploading the file to S3 via the
230
- # mediaDirectUpload mutation.
231
- sig { returns(T.nilable(String)) }
232
- attr_accessor :direct_upload_id
246
+ # This ID should be used the first time you upload an attachment. It is the ID of
247
+ # the direct upload that was created when uploading the file to S3 via the
248
+ # mediaDirectUpload mutation.
249
+ sig { returns(String) }
250
+ attr_accessor :direct_upload_id
251
+
252
+ # Input for an attachment
253
+ sig { params(direct_upload_id: String).returns(T.attached_class) }
254
+ def self.new(
255
+ # This ID should be used the first time you upload an attachment. It is the ID of
256
+ # the direct upload that was created when uploading the file to S3 via the
257
+ # mediaDirectUpload mutation.
258
+ direct_upload_id:
259
+ )
260
+ end
233
261
 
234
- # A banner image for the product in png, jpeg format
235
- sig do
236
- params(
237
- id: T.nilable(String),
238
- direct_upload_id: T.nilable(String)
239
- ).returns(T.attached_class)
262
+ sig { override.returns({ direct_upload_id: String }) }
263
+ def to_hash
264
+ end
240
265
  end
241
- def self.new(
266
+
267
+ class AttachmentInputWithID < WhopSDK::Internal::Type::BaseModel
268
+ OrHash =
269
+ T.type_alias do
270
+ T.any(
271
+ WhopSDK::ProductUpdateParams::BannerImage::AttachmentInputWithID,
272
+ WhopSDK::Internal::AnyHash
273
+ )
274
+ end
275
+
242
276
  # The ID of an existing attachment object. Use this when updating a resource and
243
277
  # keeping a subset of the attachments. Don't use this unless you know what you're
244
278
  # doing.
245
- id: nil,
246
- # This ID should be used the first time you upload an attachment. It is the ID of
247
- # the direct upload that was created when uploading the file to S3 via the
248
- # mediaDirectUpload mutation.
249
- direct_upload_id: nil
250
- )
279
+ sig { returns(String) }
280
+ attr_accessor :id
281
+
282
+ # Input for an attachment
283
+ sig { params(id: String).returns(T.attached_class) }
284
+ def self.new(
285
+ # The ID of an existing attachment object. Use this when updating a resource and
286
+ # keeping a subset of the attachments. Don't use this unless you know what you're
287
+ # doing.
288
+ id:
289
+ )
290
+ end
291
+
292
+ sig { override.returns({ id: String }) }
293
+ def to_hash
294
+ end
251
295
  end
252
296
 
253
297
  sig do
254
298
  override.returns(
255
- { id: T.nilable(String), direct_upload_id: T.nilable(String) }
299
+ T::Array[WhopSDK::ProductUpdateParams::BannerImage::Variants]
256
300
  )
257
301
  end
258
- def to_hash
302
+ def self.variants
259
303
  end
260
304
  end
261
305
 
@@ -58,7 +58,7 @@ module WhopSDK
58
58
  sig { returns(T::Boolean) }
59
59
  attr_accessor :one_per_customer
60
60
 
61
- # The access pass associated with the promo code.
61
+ # The product this promo code applies to
62
62
  sig { returns(T.nilable(WhopSDK::PromoCode::Product)) }
63
63
  attr_reader :product
64
64
 
@@ -141,7 +141,7 @@ module WhopSDK
141
141
  new_users_only:,
142
142
  # Restricts promo use to only be applied once per customer.
143
143
  one_per_customer:,
144
- # The access pass associated with the promo code.
144
+ # The product this promo code applies to
145
145
  product:,
146
146
  # The number of months the promo is applied for.
147
147
  promo_duration_months:,
@@ -229,7 +229,7 @@ module WhopSDK
229
229
  sig { returns(String) }
230
230
  attr_accessor :title
231
231
 
232
- # The access pass associated with the promo code.
232
+ # The product this promo code applies to
233
233
  sig { params(id: String, title: String).returns(T.attached_class) }
234
234
  def self.new(
235
235
  # The internal ID of the public product.
@@ -56,7 +56,7 @@ module WhopSDK
56
56
  sig { returns(T::Boolean) }
57
57
  attr_accessor :one_per_customer
58
58
 
59
- # The access pass associated with the promo code.
59
+ # The product this promo code applies to
60
60
  sig do
61
61
  returns(T.nilable(WhopSDK::Models::PromoCodeListResponse::Product))
62
62
  end
@@ -142,7 +142,7 @@ module WhopSDK
142
142
  new_users_only:,
143
143
  # Restricts promo use to only be applied once per customer.
144
144
  one_per_customer:,
145
- # The access pass associated with the promo code.
145
+ # The product this promo code applies to
146
146
  product:,
147
147
  # The number of months the promo is applied for.
148
148
  promo_duration_months:,
@@ -203,7 +203,7 @@ module WhopSDK
203
203
  sig { returns(String) }
204
204
  attr_accessor :title
205
205
 
206
- # The access pass associated with the promo code.
206
+ # The product this promo code applies to
207
207
  sig { params(id: String, title: String).returns(T.attached_class) }
208
208
  def self.new(
209
209
  # The internal ID of the public product.
@@ -34,6 +34,10 @@ module WhopSDK
34
34
  sig { returns(T.nilable(Float)) }
35
35
  attr_accessor :fee_amount
36
36
 
37
+ # A hash of metadata attached to the transfer
38
+ sig { returns(T.nilable(T::Hash[Symbol, T.anything])) }
39
+ attr_accessor :metadata
40
+
37
41
  # The notes of the credit transaction transfer
38
42
  sig { returns(T.nilable(String)) }
39
43
  attr_accessor :notes
@@ -62,6 +66,7 @@ module WhopSDK
62
66
  ),
63
67
  destination_ledger_account_id: String,
64
68
  fee_amount: T.nilable(Float),
69
+ metadata: T.nilable(T::Hash[Symbol, T.anything]),
65
70
  notes: T.nilable(String),
66
71
  origin:
67
72
  T.nilable(
@@ -88,6 +93,8 @@ module WhopSDK
88
93
  destination_ledger_account_id:,
89
94
  # The decimal fee of the credit transaction transfer
90
95
  fee_amount:,
96
+ # A hash of metadata attached to the transfer
97
+ metadata:,
91
98
  # The notes of the credit transaction transfer
92
99
  notes:,
93
100
  # The sender of the credit transaction transfer
@@ -107,6 +114,7 @@ module WhopSDK
107
114
  destination: T.nilable(WhopSDK::Transfer::Destination::Variants),
108
115
  destination_ledger_account_id: String,
109
116
  fee_amount: T.nilable(Float),
117
+ metadata: T.nilable(T::Hash[Symbol, T.anything]),
110
118
  notes: T.nilable(String),
111
119
  origin: T.nilable(WhopSDK::Transfer::Origin::Variants),
112
120
  origin_ledger_account_id: String
@@ -33,6 +33,10 @@ module WhopSDK
33
33
  sig { returns(T.nilable(String)) }
34
34
  attr_accessor :idempotence_key
35
35
 
36
+ # A hash of metadata to attach to the transfer.
37
+ sig { returns(T.nilable(T::Hash[Symbol, T.anything])) }
38
+ attr_accessor :metadata
39
+
36
40
  # Notes for the transfer. Maximum of 50 characters.
37
41
  sig { returns(T.nilable(String)) }
38
42
  attr_accessor :notes
@@ -44,6 +48,7 @@ module WhopSDK
44
48
  destination_id: String,
45
49
  origin_id: String,
46
50
  idempotence_key: T.nilable(String),
51
+ metadata: T.nilable(T::Hash[Symbol, T.anything]),
47
52
  notes: T.nilable(String),
48
53
  request_options: WhopSDK::RequestOptions::OrHash
49
54
  ).returns(T.attached_class)
@@ -61,6 +66,8 @@ module WhopSDK
61
66
  origin_id:,
62
67
  # A unique key to ensure idempotence. Use a UUID or similar.
63
68
  idempotence_key: nil,
69
+ # A hash of metadata to attach to the transfer.
70
+ metadata: nil,
64
71
  # Notes for the transfer. Maximum of 50 characters.
65
72
  notes: nil,
66
73
  request_options: {}
@@ -75,6 +82,7 @@ module WhopSDK
75
82
  destination_id: String,
76
83
  origin_id: String,
77
84
  idempotence_key: T.nilable(String),
85
+ metadata: T.nilable(T::Hash[Symbol, T.anything]),
78
86
  notes: T.nilable(String),
79
87
  request_options: WhopSDK::RequestOptions
80
88
  }