A product response. Unrecognized Dodo fields are kept in extra.
Summary
Types
@type t() :: %DodoPayments.Product{ addons: [String.t()] | nil, brand_id: String.t() | nil, business_id: String.t() | nil, created_at: String.t() | nil, credit_entitlements: [DodoPayments.ResponseTypes.object()] | nil, currency: DodoPayments.Enums.decoded_currency() | nil, description: String.t() | nil, digital_product_delivery: DodoPayments.ResponseTypes.object() | nil, entitlements: [DodoPayments.ResponseTypes.object()] | nil, extra: map(), image: String.t() | nil, is_recurring: boolean() | nil, license_key_activation_message: String.t() | nil, license_key_activations_limit: number() | nil, license_key_duration: DodoPayments.ResponseTypes.object() | nil, license_key_enabled: boolean() | nil, metadata: DodoPayments.ResponseTypes.metadata() | nil, name: String.t() | nil, price: (number() | DodoPayments.ResponseTypes.object()) | nil, price_detail: DodoPayments.ResponseTypes.object() | nil, pricing_mode: DodoPayments.Enums.decoded_pricing_mode() | nil, product_collection_id: String.t() | nil, product_id: String.t() | nil, tax_category: DodoPayments.Enums.decoded_tax_category() | nil, tax_inclusive: boolean() | nil, updated_at: String.t() | nil }