Class: WhopSDK::Resources::Plans

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

Overview

A Plan defines how customers buy a product. It controls pricing, billing cadence, availability, tax behavior, checkout fields, and purchase visibility.

Use the Plans API to create plans for products, list existing plans, retrieve or update plan configuration, calculate tax for checkout, and delete plans that should no longer be offered.

Instance Method Summary collapse

Constructor Details

#initialize(client:) ⇒ Plans

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 Plans.

Parameters:



280
281
282
# File 'lib/whop_sdk/resources/plans.rb', line 280

def initialize(client:)
  @client = client
end

Instance Method Details

#calculate_tax(id, address: nil, ip_address: nil, tax_ids: nil, request_options: {}) ⇒ WhopSDK::Models::PlanCalculateTaxResponse

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

Previews tax for a plan before checkout, based on the buyer's location.

Parameters:

Returns:

See Also:



266
267
268
269
270
271
272
273
274
275
# File 'lib/whop_sdk/resources/plans.rb', line 266

def calculate_tax(id, params = {})
  parsed, options = WhopSDK::PlanCalculateTaxParams.dump_request(params)
  @client.request(
    method: :post,
    path: ["plans/%1$s/calculate_tax", id],
    body: parsed,
    model: WhopSDK::Models::PlanCalculateTaxResponse,
    options: options
  )
end

#create(account_id: nil, adaptive_pricing_enabled: nil, billing_period: nil, checkout_styling: nil, currency: nil, custom_fields: nil, description: nil, expiration_days: nil, image: nil, initial_price: nil, internal_notes: nil, legacy_payment_method_controls: nil, metadata: nil, override_tax_type: nil, payment_method_configuration: nil, plan_type: nil, product_id: nil, release_method: nil, renewal_price: nil, split_pay_required_payments: nil, stock: nil, three_ds_level: nil, title: nil, trial_period_days: nil, unlimited_stock: nil, visibility: nil, request_options: {}) ⇒ WhopSDK::Models::Plan

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

Create a new pricing plan for a product. The plan defines the billing interval, price, and availability for customers.

Parameters:

  • account_id (String)

    The unique identifier of the account to create this plan for. Defaults to the ca

  • adaptive_pricing_enabled (Boolean, nil)

    Whether this plan accepts local currency payments via adaptive pricing.

  • billing_period (Integer, nil)

    Recurring billing interval in days, such as 30 for monthly or 365 for annual.

  • checkout_styling (Object, nil)

    Checkout styling overrides for this plan.

  • currency (String)

    The three-letter ISO currency code for the plan's pricing. Defaults to USD.

  • custom_fields (Array<WhopSDK::Models::PlanCreateParams::CustomField>, nil)

    An array of custom field definitions to collect from customers at checkout. Omit

  • description (String, nil)

    A text description of the plan displayed to customers on the product page.

  • expiration_days (Integer, nil)

    Access duration in days before the membership expires.

  • image (WhopSDK::Models::PlanCreateParams::Image, nil)

    An image displayed on the product page to represent this plan.

  • initial_price (Float, nil)

    Initial amount charged in the plan's currency, e.g. 10.43 for $10.43.

  • internal_notes (String, nil)

    Private notes visible only to the account owner. Not shown to customers.

  • legacy_payment_method_controls (Boolean, nil)

    Whether this plan uses legacy payment method controls.

  • metadata (Object, nil)

    Custom key-value pairs to store on the plan. Included in webhook payloads for pa

  • override_tax_type (String)

    Override the default tax classification for this specific plan.

  • payment_method_configuration (WhopSDK::Models::PlanCreateParams::PaymentMethodConfiguration, nil)

    Explicit payment method configuration for the plan. When not provided, the accou

  • plan_type (String)

    Plan billing type, such as one_time or renewal.

  • product_id (String)

    The unique identifier of the product to attach this plan to.

  • release_method (String)

    Sales method for this plan, such as buy_now or waitlist.

  • renewal_price (Float, nil)

    The amount charged each billing period for recurring plans, in the plan's curren

  • split_pay_required_payments (Integer, nil)

    Installment payments required before the subscription pauses.

  • stock (Integer, nil)

    The maximum number of units available for purchase. Ignored when unlimited_stock

  • three_ds_level (Symbol, WhopSDK::Models::PlanCreateParams::ThreeDSLevel)

    3D Secure behavior for this plan. Send null to inherit the account default.

  • title (String, nil)

    The display name of the plan shown to customers on the product page.

  • trial_period_days (Integer, nil)

    Free trial duration before the first recurring charge.

  • unlimited_stock (Boolean, nil)

    Whether the plan has unlimited stock. When true, the stock field is ignored.

  • visibility (String)

    Whether the plan is visible to customers or hidden from public view.

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

Returns:

See Also:



77
78
79
80
# File 'lib/whop_sdk/resources/plans.rb', line 77

def create(params = {})
  parsed, options = WhopSDK::PlanCreateParams.dump_request(params)
  @client.request(method: :post, path: "plans", body: parsed, model: WhopSDK::Plan, options: options)
end

#delete(id, request_options: {}) ⇒ Boolean

Permanently delete a plan from a product. Existing memberships on this plan will not be affected.

Parameters:

  • id (String)

    Plan ID, prefixed plan_.

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

Returns:

  • (Boolean)

See Also:



237
238
239
240
241
242
243
244
# File 'lib/whop_sdk/resources/plans.rb', line 237

def delete(id, params = {})
  @client.request(
    method: :delete,
    path: ["plans/%1$s", id],
    model: WhopSDK::Internal::Type::Boolean,
    options: params[:request_options]
  )
end

#list(account_id:, after: nil, before: nil, created_after: nil, created_before: nil, direction: nil, first: nil, last: nil, order: nil, plan_types: nil, product_ids: nil, release_methods: nil, visibilities: nil, request_options: {}) ⇒ WhopSDK::Internal::CursorPage<WhopSDK::Models::PlanListResponse>

Returns a paginated list of plans belonging to an account, with optional filtering by visibility, type, release method, and product.

Parameters:

  • account_id (String)

    The unique identifier of the account to list plans for.

  • after (String)

    A cursor; returns plans after this position.

  • before (String)

    A cursor; returns plans before this position.

  • created_after (String)

    Only return plans created after this timestamp.

  • created_before (String)

    Only return plans created before this timestamp.

  • direction (Symbol, WhopSDK::Models::PlanListParams::Direction)

    The sort direction for results. Defaults to descending.

  • first (Integer)

    The number of plans to return (default and max 100).

  • last (Integer)

    The number of plans to return from the end of the range.

  • order (Symbol, WhopSDK::Models::PlanListParams::Order)

    The field to sort results by. Defaults to created_at.

  • plan_types (Array<String>)

    Filter to only plans matching these billing types.

  • product_ids (Array<String>)

    Filter to only plans belonging to these product identifiers.

  • release_methods (Array<String>)

    Filter to only plans matching these release methods.

  • visibilities (Array<String>)

    Filter to only plans matching these visibility states.

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

Returns:

See Also:



212
213
214
215
216
217
218
219
220
221
222
223
# File 'lib/whop_sdk/resources/plans.rb', line 212

def list(params)
  parsed, options = WhopSDK::PlanListParams.dump_request(params)
  query = WhopSDK::Internal::Util.encode_query_params(parsed)
  @client.request(
    method: :get,
    path: "plans",
    query: query,
    page: WhopSDK::Internal::CursorPage,
    model: WhopSDK::Models::PlanListResponse,
    options: options
  )
end

#retrieve(id, request_options: {}) ⇒ WhopSDK::Models::Plan

Retrieves the details of an existing plan.

Parameters:

Returns:

See Also:



93
94
95
96
97
98
99
100
# File 'lib/whop_sdk/resources/plans.rb', line 93

def retrieve(id, params = {})
  @client.request(
    method: :get,
    path: ["plans/%1$s", id],
    model: WhopSDK::Plan,
    options: params[:request_options]
  )
end

#update(id, adaptive_pricing_enabled: nil, billing_period: nil, checkout_styling: nil, currency: nil, custom_fields: nil, description: nil, expiration_days: nil, image: nil, initial_price: nil, internal_notes: nil, legacy_payment_method_controls: nil, metadata: nil, offer_cancel_discount: nil, override_tax_type: nil, payment_method_configuration: nil, renewal_price: nil, stock: nil, strike_through_initial_price: nil, strike_through_renewal_price: nil, three_ds_level: nil, title: nil, trial_period_days: nil, unlimited_stock: nil, visibility: nil, request_options: {}) ⇒ WhopSDK::Models::Plan

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

Update a plan's pricing, billing interval, visibility, stock, and other settings.

Parameters:

  • id (String)

    Plan ID, prefixed plan_.

  • adaptive_pricing_enabled (Boolean, nil)

    Whether this plan accepts local currency payments via adaptive pricing.

  • billing_period (Integer, nil)

    Recurring billing interval in days, such as 30 for monthly or 365 for annual.

  • checkout_styling (Object, nil)

    Checkout styling overrides for this plan.

  • currency (String)

    The three-letter ISO currency code for the plan's pricing. Defaults to USD.

  • custom_fields (Array<WhopSDK::Models::PlanUpdateParams::CustomField>, nil)

    An array of custom field definitions to collect from customers at checkout. Omit

  • description (String, nil)

    A text description of the plan displayed to customers on the product page.

  • expiration_days (Integer, nil)

    Access duration in days before the membership expires.

  • image (WhopSDK::Models::PlanUpdateParams::Image, nil)

    An image displayed on the product page to represent this plan.

  • initial_price (Float, nil)

    Initial amount charged in the plan's currency, e.g. 10.43 for $10.43.

  • internal_notes (String, nil)

    Private notes visible only to the account owner. Not shown to customers.

  • legacy_payment_method_controls (Boolean, nil)

    Whether this plan uses legacy payment method controls.

  • metadata (Object, nil)

    Custom key-value pairs to store on the plan. Included in webhook payloads for pa

  • offer_cancel_discount (Boolean, nil)

    Whether to offer a retention discount when a customer attempts to cancel.

  • override_tax_type (String)

    Override the default tax classification for this specific plan.

  • payment_method_configuration (WhopSDK::Models::PlanUpdateParams::PaymentMethodConfiguration, nil)

    Explicit payment method configuration for the plan. When not provided, the accou

  • renewal_price (Float, nil)

    The amount charged each billing period for recurring plans, in the plan's curren

  • stock (Integer, nil)

    The maximum number of units available for purchase. Ignored when unlimited_stock

  • strike_through_initial_price (Float, nil)

    A comparison price displayed with a strikethrough for the initial price.

  • strike_through_renewal_price (Float, nil)

    A comparison price displayed with a strikethrough for the renewal price.

  • three_ds_level (Symbol, WhopSDK::Models::PlanUpdateParams::ThreeDSLevel)

    3D Secure behavior for this plan. Send null to inherit the account default.

  • title (String, nil)

    The display name of the plan shown to customers on the product page.

  • trial_period_days (Integer, nil)

    Free trial duration before the first recurring charge.

  • unlimited_stock (Boolean, nil)

    Whether the plan has unlimited stock. When true, the stock field is ignored.

  • visibility (String)

    Whether the plan is visible to customers or hidden from public view.

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

Returns:

See Also:



165
166
167
168
169
170
171
172
173
174
# File 'lib/whop_sdk/resources/plans.rb', line 165

def update(id, params = {})
  parsed, options = WhopSDK::PlanUpdateParams.dump_request(params)
  @client.request(
    method: :patch,
    path: ["plans/%1$s", id],
    body: parsed,
    model: WhopSDK::Plan,
    options: options
  )
end