deanpcmad / lemonsqueezy

Ruby library for the Lemon Squeezy API
30 stars 7 forks source link
lemon-squeezy lemonsqueezy ruby rubygem

LemonSqueezy Ruby Library

A Ruby library for the Lemon Squeezy API.

Installation

Add this line to your application's Gemfile:

gem "lemonsqueezy", "~> 1.0"

Usage

Set API Key

Firstly you'll need to create an API Key on your settings page.

LemonSqueezy.configure do |config|
  config.api_key = ENV["LEMON_SQUEEZY_API_KEY"]
end

User

# Retrieve the authenticated user
LemonSqueezy::User.me

Stores

# Retrieves a list of Stores
LemonSqueezy::Store.list

# Retrieves a Store
LemonSqueezy::Store.retrieve id: 123

Customers

# Retrieves a list of Customers
LemonSqueezy::Customer.list

# Retrieves a list of Customers for a store
LemonSqueezy::Customer.list store_id: 123

# Retrieves a list of Customers that contain the supplied email
LemonSqueezy::Customer.list email: "test@hello.com"

# Retrieves a Customer
LemonSqueezy::Customer.retrieve id: 123

# Create a customer
# https://docs.lemonsqueezy.com/api/customers#create-a-customer
LemonSqueezy::Customer.create store_id: 123, name: "Customer name", email: "test@hello.com"

# Update a customer
# https://docs.lemonsqueezy.com/api/customers#update-a-customer
LemonSqueezy::Customer.update id: 123, name: "Customer name", status: "archived"

Products

# Retrieves a list of Products
LemonSqueezy::Product.list

# Retrieves a list of Products for a specified Store
LemonSqueezy::Product.list store_id: 123

# Retrieves a Product
LemonSqueezy::Product.retrieve id: 123

Product Variants

# Retrieves a list of Variants
LemonSqueezy::Variant.list

# Retrieves a list of Variants for a Product
LemonSqueezy::Variant.list product_id: 123

# Retrieves a Variant
LemonSqueezy::Variant.retrieve id: 123

Prices

# Retrieves a list of Prices
LemonSqueezy::Price.list

# Retrieves a list of Prices for a Variant
LemonSqueezy::Price.list variant_id: 123

# Retrieves a Price
LemonSqueezy::Price.retrieve id: 123

Orders

# Retrieves a list of Orders
LemonSqueezy::Order.list

# Retrieves a list of Orders for a specified store
LemonSqueezy::Order.list product_id: 123

# Retrieves a list of Orders for an email address
LemonSqueezy::Order.list email: "hello@test.com"

# Retrieves an Order
LemonSqueezy::Order.retrieve id: 123

# Retrieves the items on an Order
LemonSqueezy::Order.retrieve order_items: 123

Subscriptions

# Retrieves a list of Subscriptions
LemonSqueezy::Subscription.list

# Retrieves a list of Subscriptions for a store
LemonSqueezy::Subscription.list store_id: 123

# Retrieves a list of Subscriptions for an Order
LemonSqueezy::Subscription.list order_id: 123

# Retrieves a list of Subscriptions for a product
LemonSqueezy::Subscription.list product_id: 123

# Retrieves a Subscription
LemonSqueezy::Subscription.retrieve id: 123

# Updates a Subscription
# https://docs.lemonsqueezy.com/api/subscriptions#update-a-subscription
LemonSqueezy::Subscription.update id: 123, variant_id: 123

# Pauses a Subscription
# Kind should be void or free
# resumes_at can be nil or an ISO-8601 formatted date-time string indicating
# when the subscription will continue collecting payments.
LemonSqueezy::Subscription.pause id: 123, kind: "void", resumes_at: nil

# Un-Pause a Subscription
LemonSqueezy::Subscription.unpause id: 123

# Cancel a Subscription
LemonSqueezy::Subscription.cancel id: 123

# Un-Cancel a Subscription
LemonSqueezy::Subscription.uncancel id: 123

# Change the Plan for a Subscription
# invoice_immediately and disable_prorations are optional and false by default.
LemonSqueezy::Subscription.change_plan id: 123, plan_id: 111, variant_id: 111, invoice_immediately: false, disable_prorations: false

Subscription Invoices

# Retrieves a list of Subscription Invoices
LemonSqueezy::SubscriptionInvoice.list

# Retrieves a list of Subscription Invoices for a specified Store
LemonSqueezy::SubscriptionInvoice.list store_id: 123

# Retrieves a list of Subscription Invoices for a specified Subscription
LemonSqueezy::SubscriptionInvoice.list subscription_id: 123

# Retrieves a Subscription Invoice
LemonSqueezy::SubscriptionInvoice.retrieve id: 123

Subscription Items

# Retrieves a list of Subscription Items
LemonSqueezy::SubscriptionItem.list

# Retrieves a list of Subscription Items for a specified Subscription
LemonSqueezy::SubscriptionItem.list subscription_id: 123

# Retrieves a Subscription Item
LemonSqueezy::SubscriptionItem.retrieve id: 123

# Updates a Subscription Item
# https://docs.lemonsqueezy.com/api/subscription-items#update-a-subscription-item
LemonSqueezy::SubscriptionItem.update id: 123, quantity: 2

# Retrieve subscription item's current usage
# Returns 404 if the product/variant does not have usage based billing enabled
# https://docs.lemonsqueezy.com/api/subscription-items#retrieve-a-subscription-item-s-current-usage
LemonSqueezy::SubscriptionItem.current_usage id: 123

Discounts

# Retrieves a list of Discounts
LemonSqueezy::Discount.list

# Retrieves a list of Discounts for a store
LemonSqueezy::Discount.list store_id: 123

# Retrieves a Discount
LemonSqueezy::Discount.retrieve id: 123

# Create a Discount
# https://docs.lemonsqueezy.com/api/discounts#create-a-discount
LemonSqueezy::Discount.create store_id: 123, name: "20 Off", code: "20OFF", amount: 20, amount_type: "percent"

# Delete a Discount
LemonSqueezy::Discount.delete id: 123

Discount Redemptions

# Retrieves a list of Discount Redemptions
LemonSqueezy::DiscountRedemption.list

# Retrieves a list of Discount Redemptions for a Discount
LemonSqueezy::DiscountRedemption.list discount_id: 123

# Retrieves a list of Discount Redemptions for a Order
LemonSqueezy::DiscountRedemption.list order_id: 123

# Retrieves a Discount Redemption
LemonSqueezy::DiscountRedemption.retrieve id: 123

Licenses

This API is used to manage licenses generated by Lemon Squeezy. Docs

# Validate a license key
LemonSqueezy::License.validate key: "abc123-abc123-abc123"

# Activate a license key
# Instance is a label to identify this activation
LemonSqueezy::License.activate key: "abc123-abc123-abc123", instance: "Activation 1"

# Deactivate a license key
# Instance is the License Key Instance ID
LemonSqueezy::License.deactivate key: "abc123-abc123-abc123", instance: "abc123"

License Keys

# Retrieves a list of License Keys
LemonSqueezy::LicenseKey.list

# Retrieves a list of License Keys for a store
LemonSqueezy::LicenseKey.list store_id: 123

# Retrieves a list of License Keys for an order
LemonSqueezy::LicenseKey.list order_id: 123

# Retrieves a License Key
LemonSqueezy::LicenseKey.retrieve id: 123

# Updates a License Key
# https://docs.lemonsqueezy.com/api/license-keys#update-a-license-key
LemonSqueezy::LicenseKey.update id: 123, activation_limit: 10, disabled: false

License Key Instances

# Retrieves a list of License Key Instances
LemonSqueezy::LicenseKeyInstances.list

# Retrieves a list of License Key Instances for a license key
LemonSqueezy::LicenseKeyInstances.list license_key_id: 123

# Retrieves a License Key Instance
LemonSqueezy::LicenseKeyInstances.retrieve id: 123

Files

# Retrieves a list of Files
LemonSqueezy::File.list

# Retrieves a File
LemonSqueezy::File.retrieve id: 123

Checkouts

# Retrieves a list of Checkouts
LemonSqueezy::Checkout.list

# Retrieves a list of Checkouts for a store
LemonSqueezy::Checkout.list store_id: 123

# Retrieves a list of Checkouts for a variant
LemonSqueezy::Checkout.list variant_id: 123

# Retrieves a Checkout
LemonSqueezy::Checkout.retrieve id: 123

# Creates a Checkout
# View docs for more info: https://docs.lemonsqueezy.com/api/checkouts#create-a-checkout
# store_id and variant_id are required
# Any other parameters are send as "attributes" to the API
LemonSqueezy::Checkout.create store_id: 123, variant_id: 321, custom_price: 500, product_options: {name: "a test name"}

Webhooks

# List all Webhooks
LemonSqueezy::Webhook.list

# List all Webhooks for a Store
LemonSqueezy::Webhook.list store_id: 123

# Retrieve a Webhook
LemonSqueezy::Webhook.retrieve id: 123

# Create a Webhook
# https://docs.lemonsqueezy.com/api/webhooks#create-a-webhook
LemonSqueezy::Webhook.create store_id: 123, url: "", secret: "abc", events: ["order_created"]

# Update a Webhook
# https://docs.lemonsqueezy.com/api/webhooks#update-a-webhook
LemonSqueezy::Webhook.update id: 123, events: ["order_created", "subscription_created"]

# Delete a Webhook
LemonSqueezy::Webhook.delete id: 123

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/deanpcmad/lemonsqueezy.

License

The gem is available as open source under the terms of the MIT License.