Class: Dodopayments::Resources::Discounts

Inherits:
Object
  • Object
show all
Defined in:
lib/dodopayments/resources/discounts.rb,
sig/dodopayments/resources/discounts.rbs

Instance Method Summary collapse

Constructor Details

#initialize(client:) ⇒ Discounts

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns a new instance of Discounts.



213
214
215
# File 'lib/dodopayments/resources/discounts.rb', line 213

def initialize(client:)
  @client = client
end

Instance Method Details

#create(amount:, type:, code: nil, currency_options: nil, customer_eligibility: nil, expires_at: nil, metadata: nil, name: nil, per_customer_usage_limit: nil, preserve_on_plan_change: nil, restricted_to: nil, starts_at: nil, subscription_cycles: nil, usage_limit: nil, request_options: {}) ⇒ Dodopayments::Models::Discount

Some parameter documentations has been truncated, see Models::DiscountCreateParams for more details.

POST /discounts If code is omitted or empty, a random 16-char uppercase code is generated.



47
48
49
50
51
52
53
54
55
56
# File 'lib/dodopayments/resources/discounts.rb', line 47

def create(params)
  parsed, options = Dodopayments::DiscountCreateParams.dump_request(params)
  @client.request(
    method: :post,
    path: "discounts",
    body: parsed,
    model: Dodopayments::Discount,
    options: options
  )
end

#delete(discount_id, request_options: {}) ⇒ nil

DELETE /discounts/discount_id



179
180
181
182
183
184
185
186
# File 'lib/dodopayments/resources/discounts.rb', line 179

def delete(discount_id, params = {})
  @client.request(
    method: :delete,
    path: ["discounts/%1$s", discount_id],
    model: NilClass,
    options: params[:request_options]
  )
end

#list(active: nil, code: nil, discount_type: nil, page_number: nil, page_size: nil, product_id: nil, request_options: {}) ⇒ Dodopayments::Internal::DefaultPageNumberPagination<Dodopayments::Models::Discount>

Some parameter documentations has been truncated, see Models::DiscountListParams for more details.

GET /discounts



155
156
157
158
159
160
161
162
163
164
165
166
# File 'lib/dodopayments/resources/discounts.rb', line 155

def list(params = {})
  parsed, options = Dodopayments::DiscountListParams.dump_request(params)
  query = Dodopayments::Internal::Util.encode_query_params(parsed)
  @client.request(
    method: :get,
    path: "discounts",
    query: query,
    page: Dodopayments::Internal::DefaultPageNumberPagination,
    model: Dodopayments::Discount,
    options: options
  )
end

#retrieve(discount_id, request_options: {}) ⇒ Dodopayments::Models::Discount

GET /discounts/discount_id



69
70
71
72
73
74
75
76
# File 'lib/dodopayments/resources/discounts.rb', line 69

def retrieve(discount_id, params = {})
  @client.request(
    method: :get,
    path: ["discounts/%1$s", discount_id],
    model: Dodopayments::Discount,
    options: params[:request_options]
  )
end

#retrieve_by_code(code, request_options: {}) ⇒ Dodopayments::Models::Discount

Validate and fetch a discount by its code name (e.g., "SAVE20"). This allows real-time validation directly against the API using the human-readable discount code instead of requiring the internal discount_id.



201
202
203
204
205
206
207
208
# File 'lib/dodopayments/resources/discounts.rb', line 201

def retrieve_by_code(code, params = {})
  @client.request(
    method: :get,
    path: ["discounts/code/%1$s", code],
    model: Dodopayments::Discount,
    options: params[:request_options]
  )
end

#update(discount_id, amount: nil, code: nil, currency_options: nil, customer_eligibility: nil, expires_at: nil, metadata: nil, name: nil, per_customer_usage_limit: nil, preserve_on_plan_change: nil, restricted_to: nil, starts_at: nil, subscription_cycles: nil, type: nil, usage_limit: nil, request_options: {}) ⇒ Dodopayments::Models::Discount

Some parameter documentations has been truncated, see Models::DiscountUpdateParams for more details.

PATCH /discounts/discount_id



120
121
122
123
124
125
126
127
128
129
# File 'lib/dodopayments/resources/discounts.rb', line 120

def update(discount_id, params = {})
  parsed, options = Dodopayments::DiscountUpdateParams.dump_request(params)
  @client.request(
    method: :patch,
    path: ["discounts/%1$s", discount_id],
    body: parsed,
    model: Dodopayments::Discount,
    options: options
  )
end