Class: Dodopayments::Resources::Discounts

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

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.

Parameters:



155
156
157
# File 'lib/dodopayments/resources/discounts.rb', line 155

def initialize(client:)
  @client = client
end

Instance Method Details

#create(amount: , type: , code: nil, expires_at: nil, name: nil, restricted_to: 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.

Parameters:

  • amount (Integer)

    The discount amount.

  • type (Symbol, Dodopayments::Models::DiscountType)

    The discount type (e.g. ‘percentage`, `flat`, or `flat_per_unit`).

  • code (String, nil)

    Optionally supply a code (will be uppercased).

  • expires_at (Time, nil)

    When the discount expires, if ever.

  • name (String, nil)
  • restricted_to (Array<String>, nil)

    List of product IDs to restrict usage (if any).

  • subscription_cycles (Integer, nil)

    Number of subscription billing cycles this discount is valid for.

  • usage_limit (Integer, nil)

    How many times this discount can be used (if any).

  • request_options (Dodopayments::RequestOptions, Hash{Symbol=>Object}, nil)

Returns:

See Also:



35
36
37
38
39
40
41
42
43
44
# File 'lib/dodopayments/resources/discounts.rb', line 35

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

Parameters:

Returns:

  • (nil)

See Also:



143
144
145
146
147
148
149
150
# File 'lib/dodopayments/resources/discounts.rb', line 143

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

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

GET /discounts

Parameters:

  • page_number (Integer)

    Page number (default = 0).

  • page_size (Integer)

    Page size (default = 10, max = 100).

  • request_options (Dodopayments::RequestOptions, Hash{Symbol=>Object}, nil)

Returns:

See Also:



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

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

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

GET /discounts/discount_id

Parameters:

Returns:

See Also:



57
58
59
60
61
62
63
64
# File 'lib/dodopayments/resources/discounts.rb', line 57

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

#update(discount_id, amount: nil, code: nil, expires_at: nil, name: nil, restricted_to: 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

Parameters:

  • discount_id (String)

    Discount Id

  • amount (Integer, nil)

    If present, update the discount amount:

  • code (String, nil)

    If present, update the discount code (uppercase).

  • expires_at (Time, nil)
  • name (String, nil)
  • restricted_to (Array<String>, nil)

    If present, replaces all restricted product IDs with this new set.

  • subscription_cycles (Integer, nil)

    Number of subscription billing cycles this discount is valid for.

  • type (Symbol, Dodopayments::Models::DiscountType, nil)

    If present, update the discount type.

  • usage_limit (Integer, nil)
  • request_options (Dodopayments::RequestOptions, Hash{Symbol=>Object}, nil)

Returns:

See Also:



96
97
98
99
100
101
102
103
104
105
# File 'lib/dodopayments/resources/discounts.rb', line 96

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