Class: Nombaone::Resources::Plans

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

Overview

Plans — your catalog. A plan holds the name and description; its prices (amount + cadence) live underneath it (nombaone.plans.prices).

Examples:

plan = nombaone.plans.create(name: "Pro")
price = nombaone.plans.prices.create(plan.id, unit_amount_in_kobo: 250_000, interval: "month")

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

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

Archive a plan — it stops being subscribable but its history stays.

Parameters:

  • id (String)

    nbo…pln

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

Returns:

Raises:



124
125
126
# File 'lib/nombaone/resources/plans.rb', line 124

def archive(id, request_options: {})
  request(:post, "/plans/#{encode(id)}/archive", body: {}, options: request_options)
end

#create(name:, description: OMIT, metadata: OMIT, request_options: {}) ⇒ NombaObject

Create a plan.

Parameters:

  • name (String)

    unique within your organization (PLAN_NAME_TAKEN on reuse).

  • description (String) (defaults to: OMIT)
  • metadata (Hash) (defaults to: OMIT)
  • request_options (Hash) (defaults to: {})

Returns:

Raises:



73
74
75
76
77
# File 'lib/nombaone/resources/plans.rb', line 73

def create(name:, description: OMIT, metadata: OMIT, request_options: {})
  request(:post, "/plans",
          body: { name: name, description: description, metadata:  },
          options: request_options)
end

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

List plans, newest first.

Parameters:

  • status (String) (defaults to: OMIT)

    "active" or "archived".

  • 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: {})

Returns:



110
111
112
113
114
# File 'lib/nombaone/resources/plans.rb', line 110

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

#pricesPlanPrices

Prices nested under a plan.

Returns:



61
62
63
# File 'lib/nombaone/resources/plans.rb', line 61

def prices
  @prices ||= PlanPrices.new(@client)
end

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

Retrieve a plan by id.

Parameters:

  • id (String)

    nbo…pln

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

Returns:

Raises:



85
86
87
# File 'lib/nombaone/resources/plans.rb', line 85

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

#update(id, name: OMIT, description: OMIT, metadata: OMIT, request_options: {}) ⇒ NombaObject

Update a plan's mutable fields. At least one field is required.

Parameters:

  • id (String)

    nbo…pln

  • name (String) (defaults to: OMIT)
  • description (String, nil) (defaults to: OMIT)

    pass nil to clear the description.

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

Returns:



97
98
99
100
101
# File 'lib/nombaone/resources/plans.rb', line 97

def update(id, name: OMIT, description: OMIT, metadata: OMIT, request_options: {})
  request(:patch, "/plans/#{encode(id)}",
          body: { name: name, description: description, metadata:  },
          options: request_options)
end