dodopayments 2.34.0 → 2.36.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (256) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +17 -0
  3. data/README.md +21 -1
  4. data/lib/dodopayments/client.rb +133 -4
  5. data/lib/dodopayments/models/addon_delete_params.rb +20 -0
  6. data/lib/dodopayments/models/addon_list_params.rb +25 -1
  7. data/lib/dodopayments/models/addon_retrieve_params.rb +18 -1
  8. data/lib/dodopayments/models/addon_unarchive_params.rb +20 -0
  9. data/lib/dodopayments/models/addons/translation_delete_params.rb +36 -0
  10. data/lib/dodopayments/models/addons/translation_list_params.rb +35 -0
  11. data/lib/dodopayments/models/addons/translation_update_params.rb +52 -0
  12. data/lib/dodopayments/models/balance_ledger_entry.rb +1 -0
  13. data/lib/dodopayments/models/balance_retrieve_ledger_params.rb +1 -0
  14. data/lib/dodopayments/models/checkout_session_preview_params.rb +17 -1
  15. data/lib/dodopayments/models/create_new_customer.rb +12 -1
  16. data/lib/dodopayments/models/credit_entitlement_list_params.rb +17 -1
  17. data/lib/dodopayments/models/credit_entitlement_retrieve_params.rb +18 -1
  18. data/lib/dodopayments/models/credit_entitlements/credit_entitlement_translation.rb +47 -0
  19. data/lib/dodopayments/models/credit_entitlements/credit_entitlement_translations_list_response.rb +23 -0
  20. data/lib/dodopayments/models/credit_entitlements/translation_delete_params.rb +37 -0
  21. data/lib/dodopayments/models/credit_entitlements/translation_list_params.rb +36 -0
  22. data/lib/dodopayments/models/credit_entitlements/translation_update_params.rb +53 -0
  23. data/lib/dodopayments/models/customer.rb +9 -1
  24. data/lib/dodopayments/models/customer_create_params.rb +14 -1
  25. data/lib/dodopayments/models/customer_update_params.rb +14 -1
  26. data/lib/dodopayments/models/entitlement_list_params.rb +17 -1
  27. data/lib/dodopayments/models/entitlement_retrieve_params.rb +18 -1
  28. data/lib/dodopayments/models/entitlements/entitlement_translation.rb +67 -0
  29. data/lib/dodopayments/models/entitlements/entitlement_translations_list_response.rb +23 -0
  30. data/lib/dodopayments/models/entitlements/translation_delete_params.rb +36 -0
  31. data/lib/dodopayments/models/entitlements/translation_list_params.rb +35 -0
  32. data/lib/dodopayments/models/entitlements/translation_update_params.rb +69 -0
  33. data/lib/dodopayments/models/locale.rb +38 -0
  34. data/lib/dodopayments/models/locale_info.rb +34 -0
  35. data/lib/dodopayments/models/meter_list_params.rb +17 -1
  36. data/lib/dodopayments/models/meter_retrieve_params.rb +18 -1
  37. data/lib/dodopayments/models/meter_update_params.rb +49 -0
  38. data/lib/dodopayments/models/meters/translation_delete_params.rb +36 -0
  39. data/lib/dodopayments/models/meters/translation_list_params.rb +35 -0
  40. data/lib/dodopayments/models/meters/translation_update_params.rb +52 -0
  41. data/lib/dodopayments/models/misc_list_locales_params.rb +14 -0
  42. data/lib/dodopayments/models/misc_list_locales_response.rb +8 -0
  43. data/lib/dodopayments/models/payment.rb +29 -1
  44. data/lib/dodopayments/models/payment_list_response.rb +29 -1
  45. data/lib/dodopayments/models/payment_retrieve_line_items_params.rb +14 -1
  46. data/lib/dodopayments/models/payment_retrieve_line_items_response.rb +10 -1
  47. data/lib/dodopayments/models/payouts/breakup/detail_list_response.rb +3 -1
  48. data/lib/dodopayments/models/payouts/breakup_retrieve_response.rb +2 -1
  49. data/lib/dodopayments/models/product_collection_list_params.rb +17 -1
  50. data/lib/dodopayments/models/product_collection_retrieve_params.rb +18 -1
  51. data/lib/dodopayments/models/product_collections/translation_delete_params.rb +37 -0
  52. data/lib/dodopayments/models/product_collections/translation_list_params.rb +36 -0
  53. data/lib/dodopayments/models/product_collections/translation_update_params.rb +53 -0
  54. data/lib/dodopayments/models/product_list_params.rb +14 -1
  55. data/lib/dodopayments/models/product_retrieve_params.rb +18 -1
  56. data/lib/dodopayments/models/products/translation.rb +50 -0
  57. data/lib/dodopayments/models/products/translation_delete_params.rb +36 -0
  58. data/lib/dodopayments/models/products/translation_list_params.rb +35 -0
  59. data/lib/dodopayments/models/products/translation_update_params.rb +52 -0
  60. data/lib/dodopayments/models/products/translations_list_response.rb +20 -0
  61. data/lib/dodopayments/models/refund_create_params.rb +13 -1
  62. data/lib/dodopayments/models/subscription_list_params.rb +14 -1
  63. data/lib/dodopayments/models/subscription_retrieve_params.rb +18 -1
  64. data/lib/dodopayments/models/three_ds_flow.rb +16 -0
  65. data/lib/dodopayments/models/three_ds_status.rb +21 -0
  66. data/lib/dodopayments/models/update_subscription_plan_req.rb +10 -0
  67. data/lib/dodopayments/models.rb +20 -0
  68. data/lib/dodopayments/resources/addons/translations.rb +110 -0
  69. data/lib/dodopayments/resources/addons.rb +58 -3
  70. data/lib/dodopayments/resources/checkout_sessions.rb +31 -26
  71. data/lib/dodopayments/resources/credit_entitlements/translations.rb +113 -0
  72. data/lib/dodopayments/resources/credit_entitlements.rb +20 -3
  73. data/lib/dodopayments/resources/customers.rb +12 -2
  74. data/lib/dodopayments/resources/entitlements/translations.rb +114 -0
  75. data/lib/dodopayments/resources/entitlements.rb +20 -3
  76. data/lib/dodopayments/resources/meters/translations.rb +110 -0
  77. data/lib/dodopayments/resources/meters.rb +49 -3
  78. data/lib/dodopayments/resources/misc.rb +18 -0
  79. data/lib/dodopayments/resources/payments.rb +10 -2
  80. data/lib/dodopayments/resources/payouts/breakup/details.rb +5 -2
  81. data/lib/dodopayments/resources/payouts/breakup.rb +4 -1
  82. data/lib/dodopayments/resources/product_collections/translations.rb +113 -0
  83. data/lib/dodopayments/resources/product_collections.rb +20 -3
  84. data/lib/dodopayments/resources/products/translations.rb +110 -0
  85. data/lib/dodopayments/resources/products.rb +17 -3
  86. data/lib/dodopayments/resources/refunds.rb +6 -1
  87. data/lib/dodopayments/resources/subscriptions.rb +13 -3
  88. data/lib/dodopayments/version.rb +1 -1
  89. data/lib/dodopayments/workload_identity.rb +351 -0
  90. data/lib/dodopayments.rb +40 -0
  91. data/rbi/dodopayments/client.rbi +15 -2
  92. data/rbi/dodopayments/models/addon_delete_params.rbi +38 -0
  93. data/rbi/dodopayments/models/addon_list_params.rbi +32 -0
  94. data/rbi/dodopayments/models/addon_retrieve_params.rbi +29 -2
  95. data/rbi/dodopayments/models/addon_unarchive_params.rbi +38 -0
  96. data/rbi/dodopayments/models/addons/translation_delete_params.rbi +58 -0
  97. data/rbi/dodopayments/models/addons/translation_list_params.rbi +59 -0
  98. data/rbi/dodopayments/models/addons/translation_update_params.rbi +74 -0
  99. data/rbi/dodopayments/models/balance_ledger_entry.rbi +5 -0
  100. data/rbi/dodopayments/models/balance_retrieve_ledger_params.rbi +5 -0
  101. data/rbi/dodopayments/models/checkout_session_preview_params.rbi +29 -5
  102. data/rbi/dodopayments/models/create_new_customer.rbi +17 -3
  103. data/rbi/dodopayments/models/credit_entitlement_list_params.rbi +21 -0
  104. data/rbi/dodopayments/models/credit_entitlement_retrieve_params.rbi +29 -2
  105. data/rbi/dodopayments/models/credit_entitlements/credit_entitlement_translation.rbi +70 -0
  106. data/rbi/dodopayments/models/credit_entitlements/credit_entitlement_translations_list_response.rbi +54 -0
  107. data/rbi/dodopayments/models/credit_entitlements/translation_delete_params.rbi +58 -0
  108. data/rbi/dodopayments/models/credit_entitlements/translation_list_params.rbi +59 -0
  109. data/rbi/dodopayments/models/credit_entitlements/translation_update_params.rbi +74 -0
  110. data/rbi/dodopayments/models/customer.rbi +11 -3
  111. data/rbi/dodopayments/models/customer_create_params.rbi +12 -0
  112. data/rbi/dodopayments/models/customer_update_params.rbi +12 -0
  113. data/rbi/dodopayments/models/entitlement_list_params.rbi +21 -0
  114. data/rbi/dodopayments/models/entitlement_retrieve_params.rbi +29 -2
  115. data/rbi/dodopayments/models/entitlements/entitlement_translation.rbi +87 -0
  116. data/rbi/dodopayments/models/entitlements/entitlement_translations_list_response.rbi +48 -0
  117. data/rbi/dodopayments/models/entitlements/translation_delete_params.rbi +58 -0
  118. data/rbi/dodopayments/models/entitlements/translation_list_params.rbi +59 -0
  119. data/rbi/dodopayments/models/entitlements/translation_update_params.rbi +92 -0
  120. data/rbi/dodopayments/models/locale.rbi +42 -0
  121. data/rbi/dodopayments/models/locale_info.rbi +54 -0
  122. data/rbi/dodopayments/models/meter_list_params.rbi +21 -0
  123. data/rbi/dodopayments/models/meter_retrieve_params.rbi +29 -2
  124. data/rbi/dodopayments/models/meter_update_params.rbi +70 -0
  125. data/rbi/dodopayments/models/meters/translation_delete_params.rbi +58 -0
  126. data/rbi/dodopayments/models/meters/translation_list_params.rbi +59 -0
  127. data/rbi/dodopayments/models/meters/translation_update_params.rbi +74 -0
  128. data/rbi/dodopayments/models/misc_list_locales_params.rbi +32 -0
  129. data/rbi/dodopayments/models/misc_list_locales_response.rbi +11 -0
  130. data/rbi/dodopayments/models/payment.rbi +33 -0
  131. data/rbi/dodopayments/models/payment_list_response.rbi +36 -3
  132. data/rbi/dodopayments/models/payment_retrieve_line_items_params.rbi +21 -2
  133. data/rbi/dodopayments/models/payment_retrieve_line_items_response.rbi +14 -3
  134. data/rbi/dodopayments/models/payouts/breakup/detail_list_response.rbi +6 -2
  135. data/rbi/dodopayments/models/payouts/breakup_retrieve_response.rbi +4 -2
  136. data/rbi/dodopayments/models/product_collection_list_params.rbi +21 -0
  137. data/rbi/dodopayments/models/product_collection_retrieve_params.rbi +29 -2
  138. data/rbi/dodopayments/models/product_collections/translation_delete_params.rbi +58 -0
  139. data/rbi/dodopayments/models/product_collections/translation_list_params.rbi +59 -0
  140. data/rbi/dodopayments/models/product_collections/translation_update_params.rbi +74 -0
  141. data/rbi/dodopayments/models/product_list_params.rbi +21 -0
  142. data/rbi/dodopayments/models/product_retrieve_params.rbi +29 -2
  143. data/rbi/dodopayments/models/products/translation.rbi +70 -0
  144. data/rbi/dodopayments/models/products/translation_delete_params.rbi +58 -0
  145. data/rbi/dodopayments/models/products/translation_list_params.rbi +59 -0
  146. data/rbi/dodopayments/models/products/translation_update_params.rbi +74 -0
  147. data/rbi/dodopayments/models/products/translations_list_response.rbi +37 -0
  148. data/rbi/dodopayments/models/refund_create_params.rbi +10 -0
  149. data/rbi/dodopayments/models/subscription_list_params.rbi +21 -0
  150. data/rbi/dodopayments/models/subscription_retrieve_params.rbi +25 -1
  151. data/rbi/dodopayments/models/three_ds_flow.rbi +23 -0
  152. data/rbi/dodopayments/models/three_ds_status.rbi +31 -0
  153. data/rbi/dodopayments/models/update_subscription_plan_req.rbi +15 -0
  154. data/rbi/dodopayments/models.rbi +20 -0
  155. data/rbi/dodopayments/resources/addons/translations.rbi +77 -0
  156. data/rbi/dodopayments/resources/addons.rbi +48 -0
  157. data/rbi/dodopayments/resources/checkout_sessions.rbi +55 -39
  158. data/rbi/dodopayments/resources/credit_entitlements/translations.rbi +81 -0
  159. data/rbi/dodopayments/resources/credit_entitlements.rbi +19 -0
  160. data/rbi/dodopayments/resources/customers.rbi +10 -0
  161. data/rbi/dodopayments/resources/entitlements/translations.rbi +87 -0
  162. data/rbi/dodopayments/resources/entitlements.rbi +19 -0
  163. data/rbi/dodopayments/resources/meters/translations.rbi +77 -0
  164. data/rbi/dodopayments/resources/meters.rbi +42 -0
  165. data/rbi/dodopayments/resources/misc.rbi +9 -0
  166. data/rbi/dodopayments/resources/payments.rbi +4 -0
  167. data/rbi/dodopayments/resources/payouts/breakup/details.rbi +5 -2
  168. data/rbi/dodopayments/resources/payouts/breakup.rbi +4 -1
  169. data/rbi/dodopayments/resources/product_collections/translations.rbi +77 -0
  170. data/rbi/dodopayments/resources/product_collections.rbi +19 -0
  171. data/rbi/dodopayments/resources/products/translations.rbi +77 -0
  172. data/rbi/dodopayments/resources/products.rbi +19 -0
  173. data/rbi/dodopayments/resources/refunds.rbi +4 -0
  174. data/rbi/dodopayments/resources/subscriptions.rbi +26 -0
  175. data/rbi/dodopayments/workload_identity.rbi +219 -0
  176. data/sig/dodopayments/client.rbs +6 -1
  177. data/sig/dodopayments/models/addon_delete_params.rbs +23 -0
  178. data/sig/dodopayments/models/addon_list_params.rbs +18 -1
  179. data/sig/dodopayments/models/addon_retrieve_params.rbs +8 -1
  180. data/sig/dodopayments/models/addon_unarchive_params.rbs +23 -0
  181. data/sig/dodopayments/models/addons/translation_delete_params.rbs +30 -0
  182. data/sig/dodopayments/models/addons/translation_list_params.rbs +32 -0
  183. data/sig/dodopayments/models/addons/translation_update_params.rbs +43 -0
  184. data/sig/dodopayments/models/balance_ledger_entry.rbs +2 -0
  185. data/sig/dodopayments/models/balance_retrieve_ledger_params.rbs +2 -0
  186. data/sig/dodopayments/models/checkout_session_preview_params.rbs +13 -3
  187. data/sig/dodopayments/models/create_new_customer.rbs +8 -3
  188. data/sig/dodopayments/models/credit_entitlement_list_params.rbs +12 -1
  189. data/sig/dodopayments/models/credit_entitlement_retrieve_params.rbs +8 -1
  190. data/sig/dodopayments/models/credit_entitlements/credit_entitlement_translation.rbs +39 -0
  191. data/sig/dodopayments/models/credit_entitlements/credit_entitlement_translations_list_response.rbs +24 -0
  192. data/sig/dodopayments/models/credit_entitlements/translation_delete_params.rbs +30 -0
  193. data/sig/dodopayments/models/credit_entitlements/translation_list_params.rbs +32 -0
  194. data/sig/dodopayments/models/credit_entitlements/translation_update_params.rbs +43 -0
  195. data/sig/dodopayments/models/customer.rbs +8 -3
  196. data/sig/dodopayments/models/customer_create_params.rbs +6 -1
  197. data/sig/dodopayments/models/customer_update_params.rbs +6 -1
  198. data/sig/dodopayments/models/entitlement_list_params.rbs +7 -0
  199. data/sig/dodopayments/models/entitlement_retrieve_params.rbs +8 -1
  200. data/sig/dodopayments/models/entitlements/entitlement_translation.rbs +49 -0
  201. data/sig/dodopayments/models/entitlements/entitlement_translations_list_response.rbs +22 -0
  202. data/sig/dodopayments/models/entitlements/translation_delete_params.rbs +30 -0
  203. data/sig/dodopayments/models/entitlements/translation_list_params.rbs +32 -0
  204. data/sig/dodopayments/models/entitlements/translation_update_params.rbs +53 -0
  205. data/sig/dodopayments/models/locale.rbs +56 -0
  206. data/sig/dodopayments/models/locale_info.rbs +26 -0
  207. data/sig/dodopayments/models/meter_list_params.rbs +12 -1
  208. data/sig/dodopayments/models/meter_retrieve_params.rbs +8 -1
  209. data/sig/dodopayments/models/meter_update_params.rbs +41 -0
  210. data/sig/dodopayments/models/meters/translation_delete_params.rbs +30 -0
  211. data/sig/dodopayments/models/meters/translation_list_params.rbs +32 -0
  212. data/sig/dodopayments/models/meters/translation_update_params.rbs +43 -0
  213. data/sig/dodopayments/models/misc_list_locales_params.rbs +15 -0
  214. data/sig/dodopayments/models/misc_list_locales_response.rbs +7 -0
  215. data/sig/dodopayments/models/payment.rbs +15 -0
  216. data/sig/dodopayments/models/payment_list_response.rbs +18 -3
  217. data/sig/dodopayments/models/payment_retrieve_line_items_params.rbs +10 -1
  218. data/sig/dodopayments/models/payment_retrieve_line_items_response.rbs +8 -3
  219. data/sig/dodopayments/models/product_collection_list_params.rbs +7 -0
  220. data/sig/dodopayments/models/product_collection_retrieve_params.rbs +8 -1
  221. data/sig/dodopayments/models/product_collections/translation_delete_params.rbs +30 -0
  222. data/sig/dodopayments/models/product_collections/translation_list_params.rbs +32 -0
  223. data/sig/dodopayments/models/product_collections/translation_update_params.rbs +43 -0
  224. data/sig/dodopayments/models/product_list_params.rbs +7 -0
  225. data/sig/dodopayments/models/product_retrieve_params.rbs +8 -1
  226. data/sig/dodopayments/models/products/translation.rbs +37 -0
  227. data/sig/dodopayments/models/products/translation_delete_params.rbs +30 -0
  228. data/sig/dodopayments/models/products/translation_list_params.rbs +32 -0
  229. data/sig/dodopayments/models/products/translation_update_params.rbs +43 -0
  230. data/sig/dodopayments/models/products/translations_list_response.rbs +18 -0
  231. data/sig/dodopayments/models/refund_create_params.rbs +5 -0
  232. data/sig/dodopayments/models/subscription_list_params.rbs +7 -0
  233. data/sig/dodopayments/models/subscription_retrieve_params.rbs +7 -1
  234. data/sig/dodopayments/models/three_ds_flow.rbs +14 -0
  235. data/sig/dodopayments/models/three_ds_status.rbs +24 -0
  236. data/sig/dodopayments/models.rbs +20 -0
  237. data/sig/dodopayments/resources/addons/translations.rbs +29 -0
  238. data/sig/dodopayments/resources/addons.rbs +15 -0
  239. data/sig/dodopayments/resources/checkout_sessions.rbs +1 -0
  240. data/sig/dodopayments/resources/credit_entitlements/translations.rbs +29 -0
  241. data/sig/dodopayments/resources/credit_entitlements.rbs +4 -0
  242. data/sig/dodopayments/resources/customers.rbs +2 -0
  243. data/sig/dodopayments/resources/entitlements/translations.rbs +31 -0
  244. data/sig/dodopayments/resources/entitlements.rbs +4 -0
  245. data/sig/dodopayments/resources/meters/translations.rbs +29 -0
  246. data/sig/dodopayments/resources/meters.rbs +12 -0
  247. data/sig/dodopayments/resources/misc.rbs +4 -0
  248. data/sig/dodopayments/resources/payments.rbs +1 -0
  249. data/sig/dodopayments/resources/product_collections/translations.rbs +29 -0
  250. data/sig/dodopayments/resources/product_collections.rbs +4 -0
  251. data/sig/dodopayments/resources/products/translations.rbs +29 -0
  252. data/sig/dodopayments/resources/products.rbs +4 -0
  253. data/sig/dodopayments/resources/refunds.rbs +1 -0
  254. data/sig/dodopayments/resources/subscriptions.rbs +2 -0
  255. data/sig/dodopayments/workload_identity.rbs +89 -0
  256. metadata +122 -2
@@ -0,0 +1,351 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dodopayments
4
+ # Workload identity federation: exchange a short-lived OIDC token (JWT) from
5
+ # your platform for a short-lived API access token.
6
+ #
7
+ # @example
8
+ # client = Dodopayments::Client.new(
9
+ # workload_identity: Dodopayments::WorkloadIdentity::Config.new(
10
+ # identity_provider_id: "wip_...",
11
+ # provider: Dodopayments::WorkloadIdentity.github_actions
12
+ # )
13
+ # )
14
+ module WorkloadIdentity
15
+ # @api private
16
+ GRANT_TYPE = "urn:ietf:params:oauth:grant-type:token-exchange"
17
+
18
+ # @api private
19
+ SUBJECT_TOKEN_TYPE = "urn:ietf:params:oauth:token-type:jwt"
20
+
21
+ # The client refreshes the access token when this many seconds or less remain.
22
+ REFRESH_WINDOW_IN_SECONDS = 300
23
+
24
+ # @api private
25
+ PROVIDER_TIMEOUT_IN_SECONDS = 10
26
+
27
+ # @api private
28
+ KUBERNETES_TOKEN_PATH = "/var/run/secrets/tokens/dodo-token"
29
+
30
+ # @api private
31
+ GCP_METADATA_URL =
32
+ "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/identity"
33
+
34
+ # The values that a subject token provider gets on each token exchange.
35
+ class Context
36
+ # The base URL of the client.
37
+ # @return [URI::Generic]
38
+ attr_reader :base_url
39
+
40
+ # The default audience: the origin of the client base URL.
41
+ # @return [String]
42
+ attr_reader :audience
43
+
44
+ # @api private
45
+ #
46
+ # @param base_url [URI::Generic]
47
+ # @param audience [String]
48
+ def initialize(base_url:, audience:)
49
+ @base_url = base_url
50
+ @audience = audience
51
+ end
52
+ end
53
+
54
+ # The `workload_identity` option of {Dodopayments::Client}.
55
+ class Config
56
+ # @return [String]
57
+ attr_reader :identity_provider_id
58
+
59
+ # @return [#call]
60
+ attr_reader :provider
61
+
62
+ # @param provider [#call] Returns the subject token (a JWT string). It can take one
63
+ # argument, a {Dodopayments::WorkloadIdentity::Context}.
64
+ #
65
+ # @param identity_provider_id [String, nil] Defaults to `ENV["DODO_PAYMENTS_IDENTITY_PROVIDER_ID"]`
66
+ def initialize(provider:, identity_provider_id: ENV["DODO_PAYMENTS_IDENTITY_PROVIDER_ID"])
67
+ if identity_provider_id.nil? || identity_provider_id.to_s.empty?
68
+ raise ArgumentError.new(
69
+ "identity_provider_id is required, and can be set via environ: \"DODO_PAYMENTS_IDENTITY_PROVIDER_ID\""
70
+ )
71
+ end
72
+ unless provider.respond_to?(:call)
73
+ raise ArgumentError.new("provider must respond to `call`")
74
+ end
75
+
76
+ @identity_provider_id = identity_provider_id.to_s
77
+ @provider = provider
78
+ end
79
+
80
+ # @api private
81
+ #
82
+ # @param value [Dodopayments::WorkloadIdentity::Config, Hash{Symbol=>Object}]
83
+ #
84
+ # @return [Dodopayments::WorkloadIdentity::Config]
85
+ def self.coerce(value)
86
+ case value
87
+ in Dodopayments::WorkloadIdentity::Config
88
+ value
89
+ in Hash
90
+ new(**value)
91
+ else
92
+ raise ArgumentError.new("workload_identity must be a #{name} or a Hash, got #{value.class}")
93
+ end
94
+ end
95
+
96
+ # @return [String]
97
+ def inspect = "#<#{self.class.name} identity_provider_id=#{@identity_provider_id}>"
98
+ end
99
+
100
+ # Caches the access token of one client. All methods are thread-safe.
101
+ class Session
102
+ # @return [String]
103
+ attr_reader :identity_provider_id
104
+
105
+ # @api private
106
+ #
107
+ # @param config [Dodopayments::WorkloadIdentity::Config]
108
+ # @param context [Dodopayments::WorkloadIdentity::Context]
109
+ # @param transport [Proc] Sends a request without the client credentials.
110
+ def initialize(config:, context:, transport:)
111
+ @identity_provider_id = config.identity_provider_id
112
+ @provider = config.provider
113
+ @context = context
114
+ @transport = transport
115
+ @mutex = Mutex.new
116
+ @access_token = nil
117
+ @expires_at = nil
118
+ end
119
+
120
+ # Returns a valid access token. This method does a token exchange if no token is
121
+ # cached, or if 5 minutes or less remain. Concurrent callers share one exchange.
122
+ #
123
+ # @raise [Dodopayments::Errors::APIError]
124
+ # @return [String]
125
+ def access_token
126
+ @mutex.synchronize do
127
+ exchange! unless fresh?
128
+ @access_token.to_s
129
+ end
130
+ end
131
+
132
+ # @api private
133
+ #
134
+ # Clears the cache, but only if it still holds `token`.
135
+ #
136
+ # @param token [String, nil]
137
+ def invalidate(token = nil)
138
+ @mutex.synchronize do
139
+ clear! if token.nil? || token == @access_token
140
+ end
141
+ nil
142
+ end
143
+
144
+ # Revokes the cached access token and clears the cache. Does nothing if no token
145
+ # is cached.
146
+ #
147
+ # @raise [Dodopayments::Errors::APIError]
148
+ def revoke
149
+ token = @mutex.synchronize { @access_token }
150
+ return if token.nil?
151
+
152
+ begin
153
+ @transport.call(
154
+ method: :post,
155
+ path: "workload-identity/token/revoke",
156
+ headers: {"authorization" => "Bearer #{token}"},
157
+ body: nil
158
+ )
159
+ ensure
160
+ invalidate(token)
161
+ end
162
+ nil
163
+ end
164
+
165
+ # @return [String]
166
+ def inspect = "#<#{self.class.name} identity_provider_id=#{@identity_provider_id}>"
167
+
168
+ private def fresh?
169
+ !@access_token.nil? && !@expires_at.nil? && @expires_at - Time.now > REFRESH_WINDOW_IN_SECONDS
170
+ end
171
+
172
+ private def clear!
173
+ @access_token = nil
174
+ @expires_at = nil
175
+ end
176
+
177
+ private def subject_token
178
+ token = @provider.respond_to?(:arity) && @provider.arity.zero? ? @provider.call : @provider.call(@context)
179
+ if !token.is_a?(String) || token.strip.empty?
180
+ raise Dodopayments::Errors::Error.new("The workload identity provider did not return a token")
181
+ end
182
+ token.strip
183
+ end
184
+
185
+ private def exchange!
186
+ clear!
187
+ body = {
188
+ grant_type: GRANT_TYPE,
189
+ subject_token_type: SUBJECT_TOKEN_TYPE,
190
+ subject_token: subject_token,
191
+ identity_provider_id: @identity_provider_id
192
+ }
193
+ now = Time.now
194
+ response = @transport.call(method: :post, path: "workload-identity/token", headers: {}, body: body)
195
+ token = response.is_a?(Hash) ? response[:access_token] : nil
196
+ if !token.is_a?(String) || token.empty?
197
+ raise Dodopayments::Errors::Error.new("The token exchange response has no access_token")
198
+ end
199
+
200
+ @expires_at = expiry(response, now: now)
201
+ @access_token = token
202
+ end
203
+
204
+ private def expiry(response, now:)
205
+ expires_at = response[:expires_at]
206
+ if expires_at.is_a?(String)
207
+ begin
208
+ return Time.iso8601(expires_at)
209
+ rescue ArgumentError
210
+ nil
211
+ end
212
+ end
213
+ now + Float(response[:expires_in], exception: false).to_f
214
+ end
215
+ end
216
+
217
+ class << self
218
+ # GitHub Actions. The job must have the `id-token: write` permission.
219
+ #
220
+ # @param audience [String, nil] Defaults to the origin of the client base URL.
221
+ #
222
+ # @return [Proc]
223
+ def github_actions(audience: nil)
224
+ lambda do |context|
225
+ url = env!("ACTIONS_ID_TOKEN_REQUEST_URL")
226
+ request_token = env!("ACTIONS_ID_TOKEN_REQUEST_TOKEN")
227
+ separator = url.include?("?") ? "&" : "?"
228
+ uri = URI("#{url}#{separator}audience=#{CGI.escape(audience || context.audience)}")
229
+ body = http_get(uri, {"authorization" => "bearer #{request_token}"})
230
+ JSON.parse(body).fetch("value")
231
+ end
232
+ end
233
+
234
+ # GitLab CI/CD. Declare the token in `id_tokens` of the job.
235
+ #
236
+ # @param env_var [String]
237
+ #
238
+ # @return [Proc]
239
+ def gitlab(env_var: "DODO_PAYMENTS_ID_TOKEN") = ->(_context = nil) { env!(env_var) }
240
+
241
+ # HCP Terraform (Terraform Cloud) dynamic credentials.
242
+ #
243
+ # @return [Proc]
244
+ def terraform_cloud
245
+ lambda do |_context = nil|
246
+ ENV["TFC_WORKLOAD_IDENTITY_TOKEN"] || env!("TFC_WORKLOAD_IDENTITY_TOKEN_DODO")
247
+ end
248
+ end
249
+
250
+ # Google Cloud: the metadata server of the attached service account.
251
+ #
252
+ # @param audience [String, nil] Defaults to the origin of the client base URL.
253
+ #
254
+ # @return [Proc]
255
+ def gcp(audience: nil)
256
+ lambda do |context|
257
+ query = URI.encode_www_form(audience: audience || context.audience, format: "full")
258
+ http_get(URI("#{GCP_METADATA_URL}?#{query}"), {"metadata-flavor" => "Google"})
259
+ end
260
+ end
261
+
262
+ # Vercel OIDC federation.
263
+ #
264
+ # @return [Proc]
265
+ def vercel = ->(_context = nil) { env!("VERCEL_OIDC_TOKEN") }
266
+
267
+ # Kubernetes: a projected service account token. The file is read on each exchange.
268
+ #
269
+ # @param path [String]
270
+ #
271
+ # @return [Proc]
272
+ def kubernetes(path: KUBERNETES_TOKEN_PATH) = file(path: path)
273
+
274
+ # A token file. The file is read on each exchange.
275
+ #
276
+ # @param path [String, nil] Defaults to `ENV["DODO_PAYMENTS_IDENTITY_TOKEN_FILE"]`
277
+ #
278
+ # @return [Proc]
279
+ def file(path: ENV["DODO_PAYMENTS_IDENTITY_TOKEN_FILE"])
280
+ if path.nil? || path.empty?
281
+ raise ArgumentError.new(
282
+ "path is required, and can be set via environ: \"DODO_PAYMENTS_IDENTITY_TOKEN_FILE\""
283
+ )
284
+ end
285
+ ->(_context = nil) { File.read(path).strip }
286
+ end
287
+
288
+ # AWS: wraps your function that returns the JWT, for example from STS
289
+ # `GetWebIdentityToken`.
290
+ #
291
+ # @param fn [#call, nil]
292
+ #
293
+ # @return [Proc]
294
+ def aws(fn = nil, &blk)
295
+ callable = fn || blk
296
+ raise ArgumentError.new("aws requires a function or a block") if callable.nil?
297
+ ->(_context = nil) { callable.call }
298
+ end
299
+
300
+ # A fixed token. Use it for tests.
301
+ #
302
+ # @param token [String]
303
+ #
304
+ # @return [Proc]
305
+ def static(token) = ->(_context = nil) { token }
306
+
307
+ # Finds a token source in the environment, in this order: GitHub Actions, HCP
308
+ # Terraform, `ENV["DODO_PAYMENTS_IDENTITY_TOKEN_FILE"]`, and the Kubernetes path.
309
+ #
310
+ # @return [Proc, nil] `nil` if no source is found.
311
+ def auto
312
+ if ENV["ACTIONS_ID_TOKEN_REQUEST_URL"] && ENV["ACTIONS_ID_TOKEN_REQUEST_TOKEN"]
313
+ return github_actions
314
+ end
315
+ if ENV["TFC_WORKLOAD_IDENTITY_TOKEN"] || ENV["TFC_WORKLOAD_IDENTITY_TOKEN_DODO"]
316
+ return terraform_cloud
317
+ end
318
+ path = ENV["DODO_PAYMENTS_IDENTITY_TOKEN_FILE"]
319
+ return file(path: path) unless path.nil? || path.empty?
320
+ return kubernetes if File.file?(KUBERNETES_TOKEN_PATH)
321
+ nil
322
+ end
323
+
324
+ private def env!(name)
325
+ value = ENV[name]
326
+ if value.nil? || value.empty?
327
+ raise Dodopayments::Errors::Error.new("The environment variable #{name} is not set")
328
+ end
329
+ value
330
+ end
331
+
332
+ private def http_get(uri, headers)
333
+ response = Net::HTTP.start(
334
+ uri.host,
335
+ uri.port,
336
+ use_ssl: uri.scheme == "https",
337
+ open_timeout: PROVIDER_TIMEOUT_IN_SECONDS,
338
+ read_timeout: PROVIDER_TIMEOUT_IN_SECONDS
339
+ ) do |http|
340
+ http.get(uri.request_uri, headers)
341
+ end
342
+ unless response.is_a?(Net::HTTPSuccess)
343
+ raise Dodopayments::Errors::Error.new(
344
+ "The subject token request to #{uri.host} failed with status #{response.code}"
345
+ )
346
+ end
347
+ response.body.to_s
348
+ end
349
+ end
350
+ end
351
+ end
data/lib/dodopayments.rb CHANGED
@@ -55,6 +55,7 @@ require_relative "dodopayments/internal/transport/pooled_net_requester"
55
55
  require_relative "dodopayments/client"
56
56
  require_relative "dodopayments/internal/cursor_page_pagination"
57
57
  require_relative "dodopayments/internal/default_page_number_pagination"
58
+ require_relative "dodopayments/workload_identity"
58
59
  require_relative "dodopayments/models/blocklist/block_by_email"
59
60
  require_relative "dodopayments/models/blocklist/block_by_customer_id"
60
61
  require_relative "dodopayments/models/blocklist/create_blocked_customer_request"
@@ -74,9 +75,14 @@ require_relative "dodopayments/models/abandoned_checkout_recovered_webhook_event
74
75
  require_relative "dodopayments/models/add_meter_to_price"
75
76
  require_relative "dodopayments/models/addon_cart_response_item"
76
77
  require_relative "dodopayments/models/addon_create_params"
78
+ require_relative "dodopayments/models/addon_delete_params"
77
79
  require_relative "dodopayments/models/addon_list_params"
78
80
  require_relative "dodopayments/models/addon_response"
79
81
  require_relative "dodopayments/models/addon_retrieve_params"
82
+ require_relative "dodopayments/models/addons/translation_delete_params"
83
+ require_relative "dodopayments/models/addons/translation_list_params"
84
+ require_relative "dodopayments/models/addons/translation_update_params"
85
+ require_relative "dodopayments/models/addon_unarchive_params"
80
86
  require_relative "dodopayments/models/addon_update_images_params"
81
87
  require_relative "dodopayments/models/addon_update_images_response"
82
88
  require_relative "dodopayments/models/addon_update_params"
@@ -140,8 +146,13 @@ require_relative "dodopayments/models/credit_entitlements/balance_list_grants_re
140
146
  require_relative "dodopayments/models/credit_entitlements/balance_list_ledger_params"
141
147
  require_relative "dodopayments/models/credit_entitlements/balance_list_params"
142
148
  require_relative "dodopayments/models/credit_entitlements/balance_retrieve_params"
149
+ require_relative "dodopayments/models/credit_entitlements/credit_entitlement_translation"
150
+ require_relative "dodopayments/models/credit_entitlements/credit_entitlement_translations_list_response"
143
151
  require_relative "dodopayments/models/credit_entitlements/customer_credit_balance"
144
152
  require_relative "dodopayments/models/credit_entitlements/ledger_entry_type"
153
+ require_relative "dodopayments/models/credit_entitlements/translation_delete_params"
154
+ require_relative "dodopayments/models/credit_entitlements/translation_list_params"
155
+ require_relative "dodopayments/models/credit_entitlements/translation_update_params"
145
156
  require_relative "dodopayments/models/credit_entitlement_undelete_params"
146
157
  require_relative "dodopayments/models/credit_entitlement_update_params"
147
158
  require_relative "dodopayments/models/credit_expired_webhook_event"
@@ -219,6 +230,8 @@ require_relative "dodopayments/models/entitlement_grant_revoked_webhook_event"
219
230
  require_relative "dodopayments/models/entitlement_integration_type"
220
231
  require_relative "dodopayments/models/entitlement_list_params"
221
232
  require_relative "dodopayments/models/entitlement_retrieve_params"
233
+ require_relative "dodopayments/models/entitlements/entitlement_translation"
234
+ require_relative "dodopayments/models/entitlements/entitlement_translations_list_response"
222
235
  require_relative "dodopayments/models/entitlements/file_delete_params"
223
236
  require_relative "dodopayments/models/entitlements/file_upload_params"
224
237
  require_relative "dodopayments/models/entitlements/file_upload_response"
@@ -226,6 +239,9 @@ require_relative "dodopayments/models/entitlements/grant_fulfill_license_key_par
226
239
  require_relative "dodopayments/models/entitlements/grant_list_params"
227
240
  require_relative "dodopayments/models/entitlements/grant_revoke_params"
228
241
  require_relative "dodopayments/models/entitlements/license_key_grant"
242
+ require_relative "dodopayments/models/entitlements/translation_delete_params"
243
+ require_relative "dodopayments/models/entitlements/translation_list_params"
244
+ require_relative "dodopayments/models/entitlements/translation_update_params"
229
245
  require_relative "dodopayments/models/entitlement_update_params"
230
246
  require_relative "dodopayments/models/event"
231
247
  require_relative "dodopayments/models/event_input"
@@ -256,6 +272,8 @@ require_relative "dodopayments/models/license_key_status"
256
272
  require_relative "dodopayments/models/license_key_update_params"
257
273
  require_relative "dodopayments/models/license_validate_params"
258
274
  require_relative "dodopayments/models/license_validate_response"
275
+ require_relative "dodopayments/models/locale"
276
+ require_relative "dodopayments/models/locale_info"
259
277
  require_relative "dodopayments/models/manual_retry"
260
278
  require_relative "dodopayments/models/manual_retry_state"
261
279
  require_relative "dodopayments/models/metadata"
@@ -268,7 +286,13 @@ require_relative "dodopayments/models/meter_credit_entitlement_cart_response"
268
286
  require_relative "dodopayments/models/meter_filter"
269
287
  require_relative "dodopayments/models/meter_list_params"
270
288
  require_relative "dodopayments/models/meter_retrieve_params"
289
+ require_relative "dodopayments/models/meters/translation_delete_params"
290
+ require_relative "dodopayments/models/meters/translation_list_params"
291
+ require_relative "dodopayments/models/meters/translation_update_params"
271
292
  require_relative "dodopayments/models/meter_unarchive_params"
293
+ require_relative "dodopayments/models/meter_update_params"
294
+ require_relative "dodopayments/models/misc_list_locales_params"
295
+ require_relative "dodopayments/models/misc_list_locales_response"
272
296
  require_relative "dodopayments/models/misc_list_supported_countries_params"
273
297
  require_relative "dodopayments/models/misc_list_supported_countries_response"
274
298
  require_relative "dodopayments/models/moderation_category"
@@ -329,6 +353,9 @@ require_relative "dodopayments/models/product_collections/groups/item_update_par
329
353
  require_relative "dodopayments/models/product_collections/groups/product_collection_product"
330
354
  require_relative "dodopayments/models/product_collections/group_update_params"
331
355
  require_relative "dodopayments/models/product_collections/product_collection_group_response"
356
+ require_relative "dodopayments/models/product_collections/translation_delete_params"
357
+ require_relative "dodopayments/models/product_collections/translation_list_params"
358
+ require_relative "dodopayments/models/product_collections/translation_update_params"
332
359
  require_relative "dodopayments/models/product_collection_unarchive_params"
333
360
  require_relative "dodopayments/models/product_collection_unarchive_response"
334
361
  require_relative "dodopayments/models/product_collection_update_images_params"
@@ -354,6 +381,11 @@ require_relative "dodopayments/models/products/short_link_create_params"
354
381
  require_relative "dodopayments/models/products/short_link_create_response"
355
382
  require_relative "dodopayments/models/products/short_link_list_params"
356
383
  require_relative "dodopayments/models/products/short_link_list_response"
384
+ require_relative "dodopayments/models/products/translation"
385
+ require_relative "dodopayments/models/products/translation_delete_params"
386
+ require_relative "dodopayments/models/products/translation_list_params"
387
+ require_relative "dodopayments/models/products/translations_list_response"
388
+ require_relative "dodopayments/models/products/translation_update_params"
357
389
  require_relative "dodopayments/models/product_unarchive_params"
358
390
  require_relative "dodopayments/models/product_update_files_params"
359
391
  require_relative "dodopayments/models/product_update_files_response"
@@ -405,6 +437,8 @@ require_relative "dodopayments/models/subscription_update_payment_method_webhook
405
437
  require_relative "dodopayments/models/tax_category"
406
438
  require_relative "dodopayments/models/theme_config"
407
439
  require_relative "dodopayments/models/theme_mode_config"
440
+ require_relative "dodopayments/models/three_ds_flow"
441
+ require_relative "dodopayments/models/three_ds_status"
408
442
  require_relative "dodopayments/models/time_interval"
409
443
  require_relative "dodopayments/models/unsafe_unwrap_webhook_event"
410
444
  require_relative "dodopayments/models/unwrap_webhook_event"
@@ -429,6 +463,7 @@ require_relative "dodopayments/models/webhook_unwrap_params"
429
463
  require_relative "dodopayments/models/webhook_update_params"
430
464
  require_relative "dodopayments/models"
431
465
  require_relative "dodopayments/resources/addons"
466
+ require_relative "dodopayments/resources/addons/translations"
432
467
  require_relative "dodopayments/resources/balances"
433
468
  require_relative "dodopayments/resources/blocklist"
434
469
  require_relative "dodopayments/resources/blocklist/customers"
@@ -437,6 +472,7 @@ require_relative "dodopayments/resources/brands"
437
472
  require_relative "dodopayments/resources/checkout_sessions"
438
473
  require_relative "dodopayments/resources/credit_entitlements"
439
474
  require_relative "dodopayments/resources/credit_entitlements/balances"
475
+ require_relative "dodopayments/resources/credit_entitlements/translations"
440
476
  require_relative "dodopayments/resources/customers"
441
477
  require_relative "dodopayments/resources/customers/customer_portal"
442
478
  require_relative "dodopayments/resources/customers/emails"
@@ -447,12 +483,14 @@ require_relative "dodopayments/resources/disputes"
447
483
  require_relative "dodopayments/resources/entitlements"
448
484
  require_relative "dodopayments/resources/entitlements/files"
449
485
  require_relative "dodopayments/resources/entitlements/grants"
486
+ require_relative "dodopayments/resources/entitlements/translations"
450
487
  require_relative "dodopayments/resources/invoices"
451
488
  require_relative "dodopayments/resources/invoices/payments"
452
489
  require_relative "dodopayments/resources/license_key_instances"
453
490
  require_relative "dodopayments/resources/license_keys"
454
491
  require_relative "dodopayments/resources/licenses"
455
492
  require_relative "dodopayments/resources/meters"
493
+ require_relative "dodopayments/resources/meters/translations"
456
494
  require_relative "dodopayments/resources/misc"
457
495
  require_relative "dodopayments/resources/moderation"
458
496
  require_relative "dodopayments/resources/payments"
@@ -462,10 +500,12 @@ require_relative "dodopayments/resources/payouts/breakup/details"
462
500
  require_relative "dodopayments/resources/product_collections"
463
501
  require_relative "dodopayments/resources/product_collections/groups"
464
502
  require_relative "dodopayments/resources/product_collections/groups/items"
503
+ require_relative "dodopayments/resources/product_collections/translations"
465
504
  require_relative "dodopayments/resources/products"
466
505
  require_relative "dodopayments/resources/products/images"
467
506
  require_relative "dodopayments/resources/products/localized_prices"
468
507
  require_relative "dodopayments/resources/products/short_links"
508
+ require_relative "dodopayments/resources/products/translations"
469
509
  require_relative "dodopayments/resources/refunds"
470
510
  require_relative "dodopayments/resources/subscriptions"
471
511
  require_relative "dodopayments/resources/usage_events"
@@ -20,12 +20,15 @@ module Dodopayments
20
20
  )
21
21
 
22
22
  # Bearer Token for API authentication
23
- sig { returns(String) }
23
+ sig { returns(T.nilable(String)) }
24
24
  attr_reader :bearer_token
25
25
 
26
26
  sig { returns(T.nilable(String)) }
27
27
  attr_reader :webhook_key
28
28
 
29
+ sig { returns(T.nilable(Dodopayments::WorkloadIdentity::Session)) }
30
+ attr_reader :workload_identity
31
+
29
32
  sig { returns(Dodopayments::Resources::CheckoutSessions) }
30
33
  attr_reader :checkout_sessions
31
34
 
@@ -114,6 +117,13 @@ module Dodopayments
114
117
  params(
115
118
  bearer_token: T.nilable(String),
116
119
  webhook_key: T.nilable(String),
120
+ workload_identity:
121
+ T.nilable(
122
+ T.any(
123
+ Dodopayments::WorkloadIdentity::Config,
124
+ T::Hash[Symbol, T.anything]
125
+ )
126
+ ),
117
127
  environment: T.nilable(T.any(Symbol, String)),
118
128
  base_url: T.nilable(String),
119
129
  max_retries: Integer,
@@ -124,9 +134,12 @@ module Dodopayments
124
134
  end
125
135
  def self.new(
126
136
  # Bearer Token for API authentication Defaults to `ENV["DODO_PAYMENTS_API_KEY"]`
127
- bearer_token: ENV["DODO_PAYMENTS_API_KEY"],
137
+ bearer_token: nil,
128
138
  # Defaults to `ENV["DODO_PAYMENTS_WEBHOOK_KEY"]`
129
139
  webhook_key: ENV["DODO_PAYMENTS_WEBHOOK_KEY"],
140
+ # Exchange an OIDC token for an access token, instead of a bearer token. See
141
+ # {Dodopayments::WorkloadIdentity}.
142
+ workload_identity: nil,
130
143
  # Specifies the environment to use for the API.
131
144
  #
132
145
  # Each environment maps to a different base URL:
@@ -0,0 +1,38 @@
1
+ # typed: strong
2
+
3
+ module Dodopayments
4
+ module Models
5
+ class AddonDeleteParams < Dodopayments::Internal::Type::BaseModel
6
+ extend Dodopayments::Internal::Type::RequestParameters::Converter
7
+ include Dodopayments::Internal::Type::RequestParameters
8
+
9
+ OrHash =
10
+ T.type_alias do
11
+ T.any(
12
+ Dodopayments::AddonDeleteParams,
13
+ Dodopayments::Internal::AnyHash
14
+ )
15
+ end
16
+
17
+ sig { returns(String) }
18
+ attr_accessor :id
19
+
20
+ sig do
21
+ params(
22
+ id: String,
23
+ request_options: Dodopayments::RequestOptions::OrHash
24
+ ).returns(T.attached_class)
25
+ end
26
+ def self.new(id:, request_options: {})
27
+ end
28
+
29
+ sig do
30
+ override.returns(
31
+ { id: String, request_options: Dodopayments::RequestOptions }
32
+ )
33
+ end
34
+ def to_hash
35
+ end
36
+ end
37
+ end
38
+ end
@@ -11,6 +11,25 @@ module Dodopayments
11
11
  T.any(Dodopayments::AddonListParams, Dodopayments::Internal::AnyHash)
12
12
  end
13
13
 
14
+ # List archived addons. The default is false.
15
+ sig { returns(T.nilable(T::Boolean)) }
16
+ attr_reader :archived
17
+
18
+ sig { params(archived: T::Boolean).void }
19
+ attr_writer :archived
20
+
21
+ # Shows the translated name, description and unit of the catalog entities in this
22
+ # locale. The value must be a code from `GET /locales`, for example `fr`. A field
23
+ # with no translation, an unknown code, or no code shows the base text.
24
+ #
25
+ # Do not send a text from a localized response back in a create or update request.
26
+ # The base text then changes to the translated text.
27
+ sig { returns(T.nilable(String)) }
28
+ attr_reader :locale
29
+
30
+ sig { params(locale: String).void }
31
+ attr_writer :locale
32
+
14
33
  # Page number default is 0
15
34
  sig { returns(T.nilable(Integer)) }
16
35
  attr_reader :page_number
@@ -27,12 +46,23 @@ module Dodopayments
27
46
 
28
47
  sig do
29
48
  params(
49
+ archived: T::Boolean,
50
+ locale: String,
30
51
  page_number: Integer,
31
52
  page_size: Integer,
32
53
  request_options: Dodopayments::RequestOptions::OrHash
33
54
  ).returns(T.attached_class)
34
55
  end
35
56
  def self.new(
57
+ # List archived addons. The default is false.
58
+ archived: nil,
59
+ # Shows the translated name, description and unit of the catalog entities in this
60
+ # locale. The value must be a code from `GET /locales`, for example `fr`. A field
61
+ # with no translation, an unknown code, or no code shows the base text.
62
+ #
63
+ # Do not send a text from a localized response back in a create or update request.
64
+ # The base text then changes to the translated text.
65
+ locale: nil,
36
66
  # Page number default is 0
37
67
  page_number: nil,
38
68
  # Page size default is 10 max is 100
@@ -44,6 +74,8 @@ module Dodopayments
44
74
  sig do
45
75
  override.returns(
46
76
  {
77
+ archived: T::Boolean,
78
+ locale: String,
47
79
  page_number: Integer,
48
80
  page_size: Integer,
49
81
  request_options: Dodopayments::RequestOptions