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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +17 -0
- data/README.md +21 -1
- data/lib/dodopayments/client.rb +133 -4
- data/lib/dodopayments/models/addon_delete_params.rb +20 -0
- data/lib/dodopayments/models/addon_list_params.rb +25 -1
- data/lib/dodopayments/models/addon_retrieve_params.rb +18 -1
- data/lib/dodopayments/models/addon_unarchive_params.rb +20 -0
- data/lib/dodopayments/models/addons/translation_delete_params.rb +36 -0
- data/lib/dodopayments/models/addons/translation_list_params.rb +35 -0
- data/lib/dodopayments/models/addons/translation_update_params.rb +52 -0
- data/lib/dodopayments/models/balance_ledger_entry.rb +1 -0
- data/lib/dodopayments/models/balance_retrieve_ledger_params.rb +1 -0
- data/lib/dodopayments/models/checkout_session_preview_params.rb +17 -1
- data/lib/dodopayments/models/create_new_customer.rb +12 -1
- data/lib/dodopayments/models/credit_entitlement_list_params.rb +17 -1
- data/lib/dodopayments/models/credit_entitlement_retrieve_params.rb +18 -1
- data/lib/dodopayments/models/credit_entitlements/credit_entitlement_translation.rb +47 -0
- data/lib/dodopayments/models/credit_entitlements/credit_entitlement_translations_list_response.rb +23 -0
- data/lib/dodopayments/models/credit_entitlements/translation_delete_params.rb +37 -0
- data/lib/dodopayments/models/credit_entitlements/translation_list_params.rb +36 -0
- data/lib/dodopayments/models/credit_entitlements/translation_update_params.rb +53 -0
- data/lib/dodopayments/models/customer.rb +9 -1
- data/lib/dodopayments/models/customer_create_params.rb +14 -1
- data/lib/dodopayments/models/customer_update_params.rb +14 -1
- data/lib/dodopayments/models/entitlement_list_params.rb +17 -1
- data/lib/dodopayments/models/entitlement_retrieve_params.rb +18 -1
- data/lib/dodopayments/models/entitlements/entitlement_translation.rb +67 -0
- data/lib/dodopayments/models/entitlements/entitlement_translations_list_response.rb +23 -0
- data/lib/dodopayments/models/entitlements/translation_delete_params.rb +36 -0
- data/lib/dodopayments/models/entitlements/translation_list_params.rb +35 -0
- data/lib/dodopayments/models/entitlements/translation_update_params.rb +69 -0
- data/lib/dodopayments/models/locale.rb +38 -0
- data/lib/dodopayments/models/locale_info.rb +34 -0
- data/lib/dodopayments/models/meter_list_params.rb +17 -1
- data/lib/dodopayments/models/meter_retrieve_params.rb +18 -1
- data/lib/dodopayments/models/meter_update_params.rb +49 -0
- data/lib/dodopayments/models/meters/translation_delete_params.rb +36 -0
- data/lib/dodopayments/models/meters/translation_list_params.rb +35 -0
- data/lib/dodopayments/models/meters/translation_update_params.rb +52 -0
- data/lib/dodopayments/models/misc_list_locales_params.rb +14 -0
- data/lib/dodopayments/models/misc_list_locales_response.rb +8 -0
- data/lib/dodopayments/models/payment.rb +29 -1
- data/lib/dodopayments/models/payment_list_response.rb +29 -1
- data/lib/dodopayments/models/payment_retrieve_line_items_params.rb +14 -1
- data/lib/dodopayments/models/payment_retrieve_line_items_response.rb +10 -1
- data/lib/dodopayments/models/payouts/breakup/detail_list_response.rb +3 -1
- data/lib/dodopayments/models/payouts/breakup_retrieve_response.rb +2 -1
- data/lib/dodopayments/models/product_collection_list_params.rb +17 -1
- data/lib/dodopayments/models/product_collection_retrieve_params.rb +18 -1
- data/lib/dodopayments/models/product_collections/translation_delete_params.rb +37 -0
- data/lib/dodopayments/models/product_collections/translation_list_params.rb +36 -0
- data/lib/dodopayments/models/product_collections/translation_update_params.rb +53 -0
- data/lib/dodopayments/models/product_list_params.rb +14 -1
- data/lib/dodopayments/models/product_retrieve_params.rb +18 -1
- data/lib/dodopayments/models/products/translation.rb +50 -0
- data/lib/dodopayments/models/products/translation_delete_params.rb +36 -0
- data/lib/dodopayments/models/products/translation_list_params.rb +35 -0
- data/lib/dodopayments/models/products/translation_update_params.rb +52 -0
- data/lib/dodopayments/models/products/translations_list_response.rb +20 -0
- data/lib/dodopayments/models/refund_create_params.rb +13 -1
- data/lib/dodopayments/models/subscription_list_params.rb +14 -1
- data/lib/dodopayments/models/subscription_retrieve_params.rb +18 -1
- data/lib/dodopayments/models/three_ds_flow.rb +16 -0
- data/lib/dodopayments/models/three_ds_status.rb +21 -0
- data/lib/dodopayments/models/update_subscription_plan_req.rb +10 -0
- data/lib/dodopayments/models.rb +20 -0
- data/lib/dodopayments/resources/addons/translations.rb +110 -0
- data/lib/dodopayments/resources/addons.rb +58 -3
- data/lib/dodopayments/resources/checkout_sessions.rb +31 -26
- data/lib/dodopayments/resources/credit_entitlements/translations.rb +113 -0
- data/lib/dodopayments/resources/credit_entitlements.rb +20 -3
- data/lib/dodopayments/resources/customers.rb +12 -2
- data/lib/dodopayments/resources/entitlements/translations.rb +114 -0
- data/lib/dodopayments/resources/entitlements.rb +20 -3
- data/lib/dodopayments/resources/meters/translations.rb +110 -0
- data/lib/dodopayments/resources/meters.rb +49 -3
- data/lib/dodopayments/resources/misc.rb +18 -0
- data/lib/dodopayments/resources/payments.rb +10 -2
- data/lib/dodopayments/resources/payouts/breakup/details.rb +5 -2
- data/lib/dodopayments/resources/payouts/breakup.rb +4 -1
- data/lib/dodopayments/resources/product_collections/translations.rb +113 -0
- data/lib/dodopayments/resources/product_collections.rb +20 -3
- data/lib/dodopayments/resources/products/translations.rb +110 -0
- data/lib/dodopayments/resources/products.rb +17 -3
- data/lib/dodopayments/resources/refunds.rb +6 -1
- data/lib/dodopayments/resources/subscriptions.rb +13 -3
- data/lib/dodopayments/version.rb +1 -1
- data/lib/dodopayments/workload_identity.rb +351 -0
- data/lib/dodopayments.rb +40 -0
- data/rbi/dodopayments/client.rbi +15 -2
- data/rbi/dodopayments/models/addon_delete_params.rbi +38 -0
- data/rbi/dodopayments/models/addon_list_params.rbi +32 -0
- data/rbi/dodopayments/models/addon_retrieve_params.rbi +29 -2
- data/rbi/dodopayments/models/addon_unarchive_params.rbi +38 -0
- data/rbi/dodopayments/models/addons/translation_delete_params.rbi +58 -0
- data/rbi/dodopayments/models/addons/translation_list_params.rbi +59 -0
- data/rbi/dodopayments/models/addons/translation_update_params.rbi +74 -0
- data/rbi/dodopayments/models/balance_ledger_entry.rbi +5 -0
- data/rbi/dodopayments/models/balance_retrieve_ledger_params.rbi +5 -0
- data/rbi/dodopayments/models/checkout_session_preview_params.rbi +29 -5
- data/rbi/dodopayments/models/create_new_customer.rbi +17 -3
- data/rbi/dodopayments/models/credit_entitlement_list_params.rbi +21 -0
- data/rbi/dodopayments/models/credit_entitlement_retrieve_params.rbi +29 -2
- data/rbi/dodopayments/models/credit_entitlements/credit_entitlement_translation.rbi +70 -0
- data/rbi/dodopayments/models/credit_entitlements/credit_entitlement_translations_list_response.rbi +54 -0
- data/rbi/dodopayments/models/credit_entitlements/translation_delete_params.rbi +58 -0
- data/rbi/dodopayments/models/credit_entitlements/translation_list_params.rbi +59 -0
- data/rbi/dodopayments/models/credit_entitlements/translation_update_params.rbi +74 -0
- data/rbi/dodopayments/models/customer.rbi +11 -3
- data/rbi/dodopayments/models/customer_create_params.rbi +12 -0
- data/rbi/dodopayments/models/customer_update_params.rbi +12 -0
- data/rbi/dodopayments/models/entitlement_list_params.rbi +21 -0
- data/rbi/dodopayments/models/entitlement_retrieve_params.rbi +29 -2
- data/rbi/dodopayments/models/entitlements/entitlement_translation.rbi +87 -0
- data/rbi/dodopayments/models/entitlements/entitlement_translations_list_response.rbi +48 -0
- data/rbi/dodopayments/models/entitlements/translation_delete_params.rbi +58 -0
- data/rbi/dodopayments/models/entitlements/translation_list_params.rbi +59 -0
- data/rbi/dodopayments/models/entitlements/translation_update_params.rbi +92 -0
- data/rbi/dodopayments/models/locale.rbi +42 -0
- data/rbi/dodopayments/models/locale_info.rbi +54 -0
- data/rbi/dodopayments/models/meter_list_params.rbi +21 -0
- data/rbi/dodopayments/models/meter_retrieve_params.rbi +29 -2
- data/rbi/dodopayments/models/meter_update_params.rbi +70 -0
- data/rbi/dodopayments/models/meters/translation_delete_params.rbi +58 -0
- data/rbi/dodopayments/models/meters/translation_list_params.rbi +59 -0
- data/rbi/dodopayments/models/meters/translation_update_params.rbi +74 -0
- data/rbi/dodopayments/models/misc_list_locales_params.rbi +32 -0
- data/rbi/dodopayments/models/misc_list_locales_response.rbi +11 -0
- data/rbi/dodopayments/models/payment.rbi +33 -0
- data/rbi/dodopayments/models/payment_list_response.rbi +36 -3
- data/rbi/dodopayments/models/payment_retrieve_line_items_params.rbi +21 -2
- data/rbi/dodopayments/models/payment_retrieve_line_items_response.rbi +14 -3
- data/rbi/dodopayments/models/payouts/breakup/detail_list_response.rbi +6 -2
- data/rbi/dodopayments/models/payouts/breakup_retrieve_response.rbi +4 -2
- data/rbi/dodopayments/models/product_collection_list_params.rbi +21 -0
- data/rbi/dodopayments/models/product_collection_retrieve_params.rbi +29 -2
- data/rbi/dodopayments/models/product_collections/translation_delete_params.rbi +58 -0
- data/rbi/dodopayments/models/product_collections/translation_list_params.rbi +59 -0
- data/rbi/dodopayments/models/product_collections/translation_update_params.rbi +74 -0
- data/rbi/dodopayments/models/product_list_params.rbi +21 -0
- data/rbi/dodopayments/models/product_retrieve_params.rbi +29 -2
- data/rbi/dodopayments/models/products/translation.rbi +70 -0
- data/rbi/dodopayments/models/products/translation_delete_params.rbi +58 -0
- data/rbi/dodopayments/models/products/translation_list_params.rbi +59 -0
- data/rbi/dodopayments/models/products/translation_update_params.rbi +74 -0
- data/rbi/dodopayments/models/products/translations_list_response.rbi +37 -0
- data/rbi/dodopayments/models/refund_create_params.rbi +10 -0
- data/rbi/dodopayments/models/subscription_list_params.rbi +21 -0
- data/rbi/dodopayments/models/subscription_retrieve_params.rbi +25 -1
- data/rbi/dodopayments/models/three_ds_flow.rbi +23 -0
- data/rbi/dodopayments/models/three_ds_status.rbi +31 -0
- data/rbi/dodopayments/models/update_subscription_plan_req.rbi +15 -0
- data/rbi/dodopayments/models.rbi +20 -0
- data/rbi/dodopayments/resources/addons/translations.rbi +77 -0
- data/rbi/dodopayments/resources/addons.rbi +48 -0
- data/rbi/dodopayments/resources/checkout_sessions.rbi +55 -39
- data/rbi/dodopayments/resources/credit_entitlements/translations.rbi +81 -0
- data/rbi/dodopayments/resources/credit_entitlements.rbi +19 -0
- data/rbi/dodopayments/resources/customers.rbi +10 -0
- data/rbi/dodopayments/resources/entitlements/translations.rbi +87 -0
- data/rbi/dodopayments/resources/entitlements.rbi +19 -0
- data/rbi/dodopayments/resources/meters/translations.rbi +77 -0
- data/rbi/dodopayments/resources/meters.rbi +42 -0
- data/rbi/dodopayments/resources/misc.rbi +9 -0
- data/rbi/dodopayments/resources/payments.rbi +4 -0
- data/rbi/dodopayments/resources/payouts/breakup/details.rbi +5 -2
- data/rbi/dodopayments/resources/payouts/breakup.rbi +4 -1
- data/rbi/dodopayments/resources/product_collections/translations.rbi +77 -0
- data/rbi/dodopayments/resources/product_collections.rbi +19 -0
- data/rbi/dodopayments/resources/products/translations.rbi +77 -0
- data/rbi/dodopayments/resources/products.rbi +19 -0
- data/rbi/dodopayments/resources/refunds.rbi +4 -0
- data/rbi/dodopayments/resources/subscriptions.rbi +26 -0
- data/rbi/dodopayments/workload_identity.rbi +219 -0
- data/sig/dodopayments/client.rbs +6 -1
- data/sig/dodopayments/models/addon_delete_params.rbs +23 -0
- data/sig/dodopayments/models/addon_list_params.rbs +18 -1
- data/sig/dodopayments/models/addon_retrieve_params.rbs +8 -1
- data/sig/dodopayments/models/addon_unarchive_params.rbs +23 -0
- data/sig/dodopayments/models/addons/translation_delete_params.rbs +30 -0
- data/sig/dodopayments/models/addons/translation_list_params.rbs +32 -0
- data/sig/dodopayments/models/addons/translation_update_params.rbs +43 -0
- data/sig/dodopayments/models/balance_ledger_entry.rbs +2 -0
- data/sig/dodopayments/models/balance_retrieve_ledger_params.rbs +2 -0
- data/sig/dodopayments/models/checkout_session_preview_params.rbs +13 -3
- data/sig/dodopayments/models/create_new_customer.rbs +8 -3
- data/sig/dodopayments/models/credit_entitlement_list_params.rbs +12 -1
- data/sig/dodopayments/models/credit_entitlement_retrieve_params.rbs +8 -1
- data/sig/dodopayments/models/credit_entitlements/credit_entitlement_translation.rbs +39 -0
- data/sig/dodopayments/models/credit_entitlements/credit_entitlement_translations_list_response.rbs +24 -0
- data/sig/dodopayments/models/credit_entitlements/translation_delete_params.rbs +30 -0
- data/sig/dodopayments/models/credit_entitlements/translation_list_params.rbs +32 -0
- data/sig/dodopayments/models/credit_entitlements/translation_update_params.rbs +43 -0
- data/sig/dodopayments/models/customer.rbs +8 -3
- data/sig/dodopayments/models/customer_create_params.rbs +6 -1
- data/sig/dodopayments/models/customer_update_params.rbs +6 -1
- data/sig/dodopayments/models/entitlement_list_params.rbs +7 -0
- data/sig/dodopayments/models/entitlement_retrieve_params.rbs +8 -1
- data/sig/dodopayments/models/entitlements/entitlement_translation.rbs +49 -0
- data/sig/dodopayments/models/entitlements/entitlement_translations_list_response.rbs +22 -0
- data/sig/dodopayments/models/entitlements/translation_delete_params.rbs +30 -0
- data/sig/dodopayments/models/entitlements/translation_list_params.rbs +32 -0
- data/sig/dodopayments/models/entitlements/translation_update_params.rbs +53 -0
- data/sig/dodopayments/models/locale.rbs +56 -0
- data/sig/dodopayments/models/locale_info.rbs +26 -0
- data/sig/dodopayments/models/meter_list_params.rbs +12 -1
- data/sig/dodopayments/models/meter_retrieve_params.rbs +8 -1
- data/sig/dodopayments/models/meter_update_params.rbs +41 -0
- data/sig/dodopayments/models/meters/translation_delete_params.rbs +30 -0
- data/sig/dodopayments/models/meters/translation_list_params.rbs +32 -0
- data/sig/dodopayments/models/meters/translation_update_params.rbs +43 -0
- data/sig/dodopayments/models/misc_list_locales_params.rbs +15 -0
- data/sig/dodopayments/models/misc_list_locales_response.rbs +7 -0
- data/sig/dodopayments/models/payment.rbs +15 -0
- data/sig/dodopayments/models/payment_list_response.rbs +18 -3
- data/sig/dodopayments/models/payment_retrieve_line_items_params.rbs +10 -1
- data/sig/dodopayments/models/payment_retrieve_line_items_response.rbs +8 -3
- data/sig/dodopayments/models/product_collection_list_params.rbs +7 -0
- data/sig/dodopayments/models/product_collection_retrieve_params.rbs +8 -1
- data/sig/dodopayments/models/product_collections/translation_delete_params.rbs +30 -0
- data/sig/dodopayments/models/product_collections/translation_list_params.rbs +32 -0
- data/sig/dodopayments/models/product_collections/translation_update_params.rbs +43 -0
- data/sig/dodopayments/models/product_list_params.rbs +7 -0
- data/sig/dodopayments/models/product_retrieve_params.rbs +8 -1
- data/sig/dodopayments/models/products/translation.rbs +37 -0
- data/sig/dodopayments/models/products/translation_delete_params.rbs +30 -0
- data/sig/dodopayments/models/products/translation_list_params.rbs +32 -0
- data/sig/dodopayments/models/products/translation_update_params.rbs +43 -0
- data/sig/dodopayments/models/products/translations_list_response.rbs +18 -0
- data/sig/dodopayments/models/refund_create_params.rbs +5 -0
- data/sig/dodopayments/models/subscription_list_params.rbs +7 -0
- data/sig/dodopayments/models/subscription_retrieve_params.rbs +7 -1
- data/sig/dodopayments/models/three_ds_flow.rbs +14 -0
- data/sig/dodopayments/models/three_ds_status.rbs +24 -0
- data/sig/dodopayments/models.rbs +20 -0
- data/sig/dodopayments/resources/addons/translations.rbs +29 -0
- data/sig/dodopayments/resources/addons.rbs +15 -0
- data/sig/dodopayments/resources/checkout_sessions.rbs +1 -0
- data/sig/dodopayments/resources/credit_entitlements/translations.rbs +29 -0
- data/sig/dodopayments/resources/credit_entitlements.rbs +4 -0
- data/sig/dodopayments/resources/customers.rbs +2 -0
- data/sig/dodopayments/resources/entitlements/translations.rbs +31 -0
- data/sig/dodopayments/resources/entitlements.rbs +4 -0
- data/sig/dodopayments/resources/meters/translations.rbs +29 -0
- data/sig/dodopayments/resources/meters.rbs +12 -0
- data/sig/dodopayments/resources/misc.rbs +4 -0
- data/sig/dodopayments/resources/payments.rbs +1 -0
- data/sig/dodopayments/resources/product_collections/translations.rbs +29 -0
- data/sig/dodopayments/resources/product_collections.rbs +4 -0
- data/sig/dodopayments/resources/products/translations.rbs +29 -0
- data/sig/dodopayments/resources/products.rbs +4 -0
- data/sig/dodopayments/resources/refunds.rbs +1 -0
- data/sig/dodopayments/resources/subscriptions.rbs +2 -0
- data/sig/dodopayments/workload_identity.rbs +89 -0
- 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"
|
data/rbi/dodopayments/client.rbi
CHANGED
|
@@ -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:
|
|
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
|