SDKs

Ripllo ships SDKs in three languages, with feature parity across all three. Pick the one for your stack:

Language Package Install
Node.js @forjio/ripllo-node npm install @forjio/ripllo-node
Python ripllo pip install ripllo
Go github.com/hachimi-cat/saas-ripllo/sdk/go go get github.com/hachimi-cat/saas-ripllo/sdk/go

All three:

  • Implement the same surface: every API resource is exposed as a typed method.
  • Handle HMAC signing automatically — you provide the key, they sign every request.
  • Provide a verifyWebhook helper for inbound events.
  • Use only minimal dependencies (Node: zero runtime deps, uses the built-in fetch; Python: httpx; Go: stdlib).
  • Are open source: code is in the saas-ripllo repo under sdk/<lang>/.

When to use which

If your existing stack is in Node, Python, or Go: use the matching SDK. There's no perf or feature reason to use one over another — pick your language.

If your stack is in another language (Ruby, PHP, Rust, Java, Elixir, etc.): use the raw API. HMAC signing is straightforward.

Quick comparison

Same call in three languages — create a discount code:

Node.js:

import { RiplloClient } from '@forjio/ripllo-node';

const ripllo = new RiplloClient({
  keyId: process.env.RIPLLO_KEY_ID,
  secret: process.env.RIPLLO_KEY_SECRET,
});

const code = await ripllo.discountCodes.create({
  code: 'WELCOME10',
  type: 'percent',
  value: 10,
  currency: 'IDR',
  scope: 'all',
});

Python:

from ripllo import RiplloClient
import os

ripllo = RiplloClient(
    key_id=os.environ["RIPLLO_KEY_ID"],
    secret=os.environ["RIPLLO_KEY_SECRET"],
)

code = ripllo.discount_codes.create(
    code="WELCOME10",
    type="percent",
    value=10,
    currency="IDR",
    scope="all",
)

Go:

import ripllo "github.com/hachimi-cat/saas-ripllo/sdk/go"

client, _ := ripllo.NewClient(ripllo.ClientOptions{
    KeyID:  os.Getenv("RIPLLO_KEY_ID"),
    Secret: os.Getenv("RIPLLO_KEY_SECRET"),
})

code, _ := client.DiscountCodes.Create(ctx, ripllo.DiscountCodeInput{
    Code:     "WELCOME10",
    Type:     "percent",
    Value:    10,
    Currency: "IDR",
    Scope:    "all",
})

The differences are purely idiomatic: camelCase in Node, snake_case in Python, PascalCase in Go. The underlying API call is identical.

Partner-billing mode

If you're a platform admin (the canonical example is Storlaunch) acting on behalf of downstream merchants, all three SDKs accept an onBehalfOf option that adds the X-Ripllo-On-Behalf-Of header to every request:

const ripllo = new RiplloClient({
  keyId: process.env.RIPLLO_PLATFORM_KEY_ID,
  secret: process.env.RIPLLO_PLATFORM_KEY_SECRET,
  onBehalfOf: 'acc_<storlaunchAccountId>',
});

The Node SDK also exposes client.forMerchant(accountId) which clones a fresh client scoped to that merchant — useful for per-request rescoping in a server handler:

app.use((req, res, next) => {
  req.ripllo = baseRipllo.forMerchant(req.merchant.accountId);
  next();
});

Only keys with the ripllo:platform:admin scope can use this. See API authentication for the full mechanics.

Resources covered

The Node SDK is the most readable reference for the full surface. The exposed resource groups:

  • discountCodes — CRUD + validate + redeem + applicable
  • referrals — program config, links, attribution lifecycle, rewards
  • abandonedCart — config, reminders, recovery, stats
  • pixels — merchant + public
  • feeds — Google Merchant Center XML
  • blog — CRUD + public read
  • marketingCampaigns — campaigns + templates + send/test
  • contacts / contactLists / audienceSegments — audience surface
  • funnels — multi-step automations
  • channels — provider connections (email, SMS, messaging)
  • inbox — engagement threads
  • campaigns / programs / collaborations — creator marketplace
  • apiKeys / webhooks / auditLog — developer surface
  • billing — subscription + invoices
  • admin — partner workspace provisioning (admin-scoped keys only)

For now, see the Node SDK source for the exact method list. Per-language deep-dive pages (installation, errors, webhooks, full reference) are on the roadmap.

Versioning

All SDKs follow semantic versioning:

  • MAJOR bumps for breaking changes (rare; we'll batch them).
  • MINOR bumps for new features.
  • PATCH bumps for fixes.

Current versions are pre-1.0 (0.x). We may make small breaking changes between minor versions and document every break in the changelog.

Open-source

The SDKs live in the same repo as Ripllo itself:

Contributions welcome. PRs go through the same review as the rest of the codebase. Issues at github.com/hachimi-cat/saas-ripllo/issues.

Next