Class: Melaya::BillingAPI
- Inherits:
-
Object
- Object
- Melaya::BillingAPI
- 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
-
#ai_credits ⇒ Object
GET /api/v1/private/accounts/credits/ai Return AI/LLM credit balance.
-
#create_checkout(price_id: nil, tier: nil) ⇒ Object
POST /api/v1/private/billing/checkout Create Stripe Checkout session for tier upgrade.
-
#create_portal ⇒ Object
POST /api/v1/private/billing/portal Create Stripe Customer Portal session for subscription management.
-
#credits ⇒ Object
GET /api/v1/private/accounts/credits Return current credit balance and transaction history.
-
#initialize(http) ⇒ BillingAPI
constructor
A new instance of BillingAPI.
-
#plans ⇒ Object
GET /api/v1/billing/plans (public) Return public pricing plan details (price IDs for forge/bastion/citadel tiers).
-
#portfolio_ideas_credits ⇒ Object
GET /api/v1/private/accounts/credits/portfolio-ideas Return portfolio-ideas feature credit balance.
-
#risk_monitoring_credits ⇒ Object
GET /api/v1/private/accounts/credits/risk-monitoring Return risk-monitoring feature credit balance.
-
#subscription ⇒ Object
GET /api/v1/private/billing/subscription Get caller's current Stripe subscription status and tier.
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_credits ⇒ Object
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.
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_portal ⇒ Object
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 |
#credits ⇒ Object
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 |
#plans ⇒ Object
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_credits ⇒ Object
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_credits ⇒ Object
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 |
#subscription ⇒ Object
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 |