Class: Nombaone::Resources::Coupons

Inherits:
BaseResource show all
Defined in:
lib/nombaone/resources/coupons.rb,
sig/nombaone/resources.rbs

Overview

Coupons — reusable discount rules you apply via customers.apply_discount / subscriptions.apply_discount. The coupon is the rule; applying it creates a discount (one application of it).

Examples:

coupon = nombaone.coupons.create(
  code: "LAUNCH20", percent_off: 20, duration: "repeating", duration_in_cycles: 3
)

Instance Method Summary collapse

Methods inherited from BaseResource

#encode, #initialize, #request, #request_page

Constructor Details

This class inherits a constructor from Nombaone::Resources::BaseResource

Instance Method Details

#create(code:, duration:, amount_off_in_kobo: OMIT, percent_off: OMIT, duration_in_cycles: OMIT, redeem_by: OMIT, max_redemptions: OMIT, metadata: OMIT, request_options: {}) ⇒ NombaObject

Create a coupon. Set exactly one of amount_off_in_kobo / percent_off.

Parameters:

  • code (String)

    the tenant-facing redemption code, e.g. "LAUNCH20".

  • duration (String)

    "once", "repeating", or "forever".

  • amount_off_in_kobo (Integer) (defaults to: OMIT)

    fixed discount, integer kobo (₦1.00 = 100).

  • percent_off (Integer) (defaults to: OMIT)

    percentage discount, 1–100.

  • duration_in_cycles (Integer) (defaults to: OMIT)

    required when duration is "repeating".

  • redeem_by (String) (defaults to: OMIT)

    ISO-8601 date-time after which it can't be applied.

  • max_redemptions (Integer) (defaults to: OMIT)
  • metadata (Hash) (defaults to: OMIT)
  • request_options (Hash) (defaults to: {})

Returns:

Raises:



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/nombaone/resources/coupons.rb', line 28

def create(code:, duration:, amount_off_in_kobo: OMIT, percent_off: OMIT,
           duration_in_cycles: OMIT, redeem_by: OMIT, max_redemptions: OMIT,
           metadata: OMIT, request_options: {})
  request(:post, "/coupons",
          body: {
            code: code,
            duration: duration,
            amount_off_in_kobo: amount_off_in_kobo,
            percent_off: percent_off,
            duration_in_cycles: duration_in_cycles,
            redeem_by: redeem_by,
            max_redemptions: max_redemptions,
            metadata: ,
          },
          options: request_options)
end

#list(limit: OMIT, cursor: OMIT, request_options: {}) ⇒ Page<NombaObject>

List coupons, newest first.

Parameters:

  • limit (Integer) (defaults to: OMIT)

    page size, 1–100 (API default 20).

  • cursor (String) (defaults to: OMIT)

    opaque cursor from a previous page.

  • request_options (Hash) (defaults to: {})
  • limit: (Integer) (defaults to: OMIT)
  • cursor: (String) (defaults to: OMIT)
  • request_options: (Nombaone::request_options) (defaults to: {})

Returns:



79
80
81
# File 'lib/nombaone/resources/coupons.rb', line 79

def list(limit: OMIT, cursor: OMIT, request_options: {})
  request_page("/coupons", query: { limit: limit, cursor: cursor }, options: request_options)
end

#retrieve(id, request_options: {}) ⇒ NombaObject

Retrieve a coupon by id.

Parameters:

  • id (String)

    nbo…cpn

  • request_options (Hash) (defaults to: {})
  • request_options: (Nombaone::request_options) (defaults to: {})

Returns:

Raises:



51
52
53
# File 'lib/nombaone/resources/coupons.rb', line 51

def retrieve(id, request_options: {})
  request(:get, "/coupons/#{encode(id)}", options: request_options)
end

#update(id, redeem_by: OMIT, max_redemptions: OMIT, metadata: OMIT, request_options: {}) ⇒ NombaObject

Update a coupon's redeem-by, max redemptions, or metadata.

Parameters:

  • id (String)

    nbo…cpn

  • redeem_by (String) (defaults to: OMIT)
  • max_redemptions (Integer) (defaults to: OMIT)
  • metadata (Hash) (defaults to: OMIT)
  • request_options (Hash) (defaults to: {})

Returns:



63
64
65
66
67
68
69
70
71
# File 'lib/nombaone/resources/coupons.rb', line 63

def update(id, redeem_by: OMIT, max_redemptions: OMIT, metadata: OMIT, request_options: {})
  request(:patch, "/coupons/#{encode(id)}",
          body: {
            redeem_by: redeem_by,
            max_redemptions: max_redemptions,
            metadata: ,
          },
          options: request_options)
end