defmodule DaProductApp.SaasKit.Subscriptions do @moduledoc """ Module for handling subscription management through SaaS Kit. """ alias DaProductApp.SaasKit.Client @doc """ Create a new subscription for a user """ def create_subscription(user_id, plan_id, params \\ %{}) do body = %{ user_id: user_id, plan_id: plan_id } |> Map.merge(params) Client.post("/subscriptions", body) end @doc """ Get a subscription by ID """ def get_subscription(subscription_id) do Client.get("/subscriptions/#{subscription_id}") end @doc """ List all subscriptions for a user """ def list_user_subscriptions(user_id) do Client.get("/subscriptions", %{user_id: user_id}) end @doc """ Update a subscription """ def update_subscription(subscription_id, params) do Client.put("/subscriptions/#{subscription_id}", params) end @doc """ Cancel a subscription """ def cancel_subscription(subscription_id, params \\ %{}) do Client.post("/subscriptions/#{subscription_id}/cancel", params) end @doc """ Resume a cancelled subscription """ def resume_subscription(subscription_id) do Client.post("/subscriptions/#{subscription_id}/resume", %{}) end @doc """ Get subscription usage data """ def get_subscription_usage(subscription_id) do Client.get("/subscriptions/#{subscription_id}/usage") end @doc """ List available subscription plans """ def list_plans do Client.get("/plans") end @doc """ Get a specific plan by ID """ def get_plan(plan_id) do Client.get("/plans/#{plan_id}") end end