MCPcopy Index your code
hub / github.com/NdoleStudio/lemonsqueezy-go

github.com/NdoleStudio/lemonsqueezy-go @v1.3.1

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.3.1 ↗ · + Follow
355 symbols 1,568 edges 102 files 208 documented · 59% 3 cross-repo links
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

lemonsqueezy-go

Build codecov Scrutinizer Code Quality Go Report Card GitHub contributors GitHub license PkgGoDev

This package provides a go API client for the lemonsqueezy API

Installation

lemonsqueezy-go is compatible with modern Go releases in module mode, with Go installed:

go get github.com/NdoleStudio/lemonsqueezy-go

Alternatively the same can be achieved if you use import in a package:

import "github.com/NdoleStudio/lemonsqueezy-go"

Implemented

  • Users
  • GET /v1/users/me: Retrieves the currently authenticated user.
  • Stores
  • GET /v1/stores/:id: Retrieve a store
  • GET /v1/stores: List all stores
  • Customers
  • GET /v1/customers/:id: Retrieve a customer
  • GET /v1/customers: List all customers
  • Products
  • GET /v1/products/:id: Retrieve a product
  • GET /v1/products: List all products
  • Variants
  • GET /v1/variants/:id: Retrieve a variant
  • GET /v1/variants: List all variants
  • Prices
  • GET /v1/prices/:id: Retrieve a price
  • GET /v1/prices: List all prices
  • Files
  • GET /v1/files/:id: Retrieve a file
  • GET /v1/files: List all files
  • Orders
  • GET /v1/orders/:id: Retrieve an order
  • GET /v1/orders: List all orders
  • Order Items
  • GET /v1/order-items/:id: Retrieve an order item
  • GET /v1/order-items: List all order items
  • Subscriptions
  • PATCH /v1/subscriptions/:id: Update a subscription
  • GET /v1/subscriptions/:id: Retrieve a subscription
  • GET /v1/subscriptions: List all subscriptions
  • DELETE /v1/subscriptions/{id}: Cancel an active subscription
  • Subscription Invoices
  • GET /v1/subscription-invoices/:id: Retrieve a subscription invoice
  • GET /v1/subscription-invoices: List all subscription invoices
  • POST /v1/subscription-invoices/:id/generate-invoice: Generate a subscription invoice
  • Subscription Items
  • GET /v1/subscription-items/:id: Retrieve a subscription item
  • PATCH /v1/subscription-items/:id: Update a subscription item
  • GET /v1/subscription-items: List all subscription items
  • GET /v1/subscription-items/:id/current-usage: Retrieve a subscription item's current usage
  • Discounts
  • POST /v1/discounts: Create a discount
  • GET /v1/discounts/:id: Retrieve a discount
  • DELETE /v1/discounts/:id: Delete a discount
  • GET /v1/discounts: List all discounts
  • Discount Redemptions
  • GET /v1/discount-redemptions/:id: Retrieve a discount redemption
  • GET /v1/discount-redemptions: List all discount redemptions
  • License Keys
  • GET /v1/license-keys/:id: Retrieve a license key
  • GET /v1/license-keys: List all license keys
  • License Key Instances
  • GET /v1/license-key-instances/:id: Retrieve a license key instance
  • GET /v1/license-key-instances: List all license keys instance
  • Licenses
  • POST /v1/licenses/validate: Validate a license
  • POST /v1/licenses/activate: Activate a license
  • POST /v1/licenses/deactivate: Deactivate a license
  • Checkouts
  • POST /v1/checkouts: Create a checkout
  • GET /v1/checkouts/:id: Retrieve a checkout
  • GET /v1/checkouts: List all checkouts
  • Webhooks
  • PATCH /v1/webhooks/:id: Update a webhook
  • GET /v1/webhooks/:id: Retrieve a webhook
  • GET /v1/webhooks: List all webhooks
  • DELETE /v1/webhooks/{id}: Update a webhook
  • Verify: Verify that webhook requests are coming from Lemon Squeezy

Usage

Initializing the Client

An instance of the client can be created using New().

package main

import (
    "github.com/NdoleStudio/lemonsqueezy-go"
)

func main() {
    client := lemonsqueezy.New(lemonsqueezy.WithAPIKey(""))
}

Error handling

All API calls return an error as the last return object. All successful calls will return a nil error.

subscription, response, err := client.Subscriptions.Get(context.Background(), "1")
if err != nil {
    //handle error
}

WebHooks

Webhooks allow Lemon Squeezy to send new data to your application when certain events occur inside your store. You can use the sample code below as inspiration for a basic http.HandlerFunc which processes webhook events on your server.

func WebhookHandler(_ http.ResponseWriter, req *http.Request) {

    // 1. Authenticate the webhook request from Lemon Squeezy using the `X-Signature` header

    // 2. Process the payload if the request is authenticated
    eventName := req.Header.Get("X-Event-Name")
    payload, err := io.ReadAll(req.Body)
    if err != nil {
        log.Fatal(err)
    }

    switch eventName {
    case lemonsqueezy.WebhookEventSubscriptionCreated:
        var request lemonsqueezy.WebhookRequestSubscription
        if err = json.Unmarshal(payload, &request); err != nil {
            log.Fatal(err)
        }
        // handle subscription_created request
    case lemonsqueezy.WebhookEventOrderCreated:
        var request lemonsqueezy.WebhookRequestOrder
        if err = json.Unmarshal(payload, &request); err != nil {
            log.Fatal(err)
        }
        // handle order_created request
    default:
        log.Fatal(fmt.Sprintf("invalid event [%s] received with request [%s]", eventName, string(payload)))
    }
}

Testing

You can run the unit tests for this client from the root directory using the command below:

go test -v

License

This project is licensed under the MIT License - see the LICENSE file for details

Extension points exported contracts — how you extend this code

Core symbols most depended-on inside this repo

Shape

Function 186
Struct 87
Method 57
TypeAlias 23
FuncType 1
Interface 1

Languages

Go100%

Modules by API surface

contracts.go13 symbols
checkout.go12 symbols
webhooks_service_test.go11 symbols
subscriptions_service_test.go8 symbols
subscription_items_service_test.go8 symbols
discounts_service_test.go8 symbols
client_option.go8 symbols
webhooks_service.go7 symbols
webhook_request.go7 symbols
subscriptions.go7 symbols
subscription_items.go7 symbols
licenses.go7 symbols

For agents

$ claude mcp add lemonsqueezy-go \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page