Class: Melaya::BillingAPI

Inherits:
Object
  • Object
show all
Defined in:
lib/melaya/billing.rb

Overview

Billing API — subscription status, Stripe checkout/portal sessions, public pricing plans, and credit balances.

Maps to /api/v1/private/billing/* (authenticated) and /api/v1/billing/plans (public), and /api/v1/private/accounts/* for credits.

Instance Method Summary collapse

Constructor Details

#initialize(http) ⇒ BillingAPI

Returns a new instance of BillingAPI.



10
11
12
# File 'lib/melaya/billing.rb', line 10

def initialize(http)
  @http = http
end

Instance Method Details

#ai_creditsObject

GET /api/v1/private/accounts/credits/ai Return AI/LLM credit balance.



53
54
55
# File 'lib/melaya/billing.rb', line 53

def ai_credits
  @http.get("/api/v1/private/accounts/credits/ai")
end

#create_checkout(price_id: nil, tier: nil) ⇒ Object

POST /api/v1/private/billing/checkout Create Stripe Checkout session for tier upgrade. Returns a URL to redirect the user to.

Parameters:

  • price_id (String, nil) (defaults to: nil)

    Stripe price ID

  • tier (String, nil) (defaults to: nil)


25
26
27
28
# File 'lib/melaya/billing.rb', line 25

def create_checkout(price_id: nil, tier: nil)
  body = compact("priceId" => price_id, "tier" => tier)
  @http.post("/api/v1/private/billing/checkout", body)
end

#create_portalObject

POST /api/v1/private/billing/portal Create Stripe Customer Portal session for subscription management. Returns a URL to redirect the user to.



33
34
35
# File 'lib/melaya/billing.rb', line 33

def create_portal
  @http.post("/api/v1/private/billing/portal")
end

#creditsObject

GET /api/v1/private/accounts/credits Return current credit balance and transaction history.



47
48
49
# File 'lib/melaya/billing.rb', line 47

def credits
  @http.get("/api/v1/private/accounts/credits")
end

#plansObject

GET /api/v1/billing/plans (public) Return public pricing plan details (price IDs for forge/bastion/citadel tiers).



39
40
41
# File 'lib/melaya/billing.rb', line 39

def plans
  @http.get("/api/v1/billing/plans")
end

#portfolio_ideas_creditsObject

GET /api/v1/private/accounts/credits/portfolio-ideas Return portfolio-ideas feature credit balance.



59
60
61
# File 'lib/melaya/billing.rb', line 59

def portfolio_ideas_credits
  @http.get("/api/v1/private/accounts/credits/portfolio-ideas")
end

#risk_monitoring_creditsObject

GET /api/v1/private/accounts/credits/risk-monitoring Return risk-monitoring feature credit balance.



65
66
67
# File 'lib/melaya/billing.rb', line 65

def risk_monitoring_credits
  @http.get("/api/v1/private/accounts/credits/risk-monitoring")
end

#subscriptionObject

GET /api/v1/private/billing/subscription Get caller's current Stripe subscription status and tier.



16
17
18
# File 'lib/melaya/billing.rb', line 16

def subscription
  @http.get("/api/v1/private/billing/subscription")
end