Developer Portal
Build on Ohala — SDKs, APIs, Plugins, and CLI tools.
Getting Started
Welcome to the Ohala Developer Portal. This guide covers everything you need to build on Ohala Business OS.
1. Create Your Workspace
Sign up at guerison.website/signup. Each workspace gets isolated data, users, and settings.
2. Get Your API Key
Navigate to Settings → API Keys, create a key with appropriate scopes, and store it securely.
3. Install the SDK
npm install @ohala/client
4. Make Your First Call
import { OhalaClient } from "@ohala/client";
const ohala = new OhalaClient({
apiKey: "ohala_your_key_here"
});
const products = await ohala.products.list();
console.log(products.data);API Reference
Base URL: https://guerison.website/api
Authentication
Authorization: Bearer ohala_your_api_key_here
Core Endpoints
GET /inventory/productsList products (paginated, searchable)POST /inventory/productsCreate productPOST /inventory/products/importBulk CSV import with header detectionPOST /api/plugins/installInstall plugin (lifecycle: validate, migrate, hook)POST /api/plugins/submitSubmit plugin to marketplace for reviewGET /api/plugins/hooksView active plugin hooksPOST /api/plugins/executeTest-fire a plugin's webhook handlerPOST /api/plugins/webhookExternal webhook receiver for third-party servicesGET /api/store/wishlistCustomer wishlist by emailPOST /api/store/reviewsSubmit product review with star ratingGET /api/store/productsStorefront products with variants + reviewsPOST /api/store/checkoutCheckout with discount codes + gift cardsGET /api/admin/dashboardSuper admin mission control (15+ data sources)GET /api/cron/cart-recoveryAbandoned cart reminder emails (6h)GET /api/notifications/pushPush notification status/manage subscriptionsGET /api/media/listMedia library with folder filteringFull interactive docs at Settings → API Docs.
JavaScript SDK
npm install @ohala/client
Client API
const ohala = new OhalaClient({ apiKey: "ohala_xxx" });
// Products
await ohala.products.list({ search: "leather", page: 1 });
await ohala.products.get("product-uuid");
await ohala.products.create({ name: "Bag", price: 1500 });
await ohala.products.bulkUpdate(["id1","id2"], { price: 2000 });
// Orders
await ohala.orders.list({ status: "completed" });
await ohala.orders.create({
items: [{ variant_id: "uuid", quantity: 2 }],
payment_method: "MPESA", amount_paid: 3000
});
// Analytics
await ohala.analytics.dashboard();
await ohala.accounting.reports("trial_balance");
// Webhooks
await ohala.webhooks.list();
await ohala.webhooks.create({
url: "https://my-app.com/webhook",
events: ["order.created", "payment.received"]
});Full SDK source: sdk/index.ts in the repository.
CLI Reference
npx ohala [command]
ohala loginAuthenticate with API keyohala whoamiShow workspace statusohala products listList all productsohala orders listList recent ordersohala analytics dashboardShow dashboard KPIsohala webhooks listList webhooksohala helpShow helpBuilding Plugins
Plugins are webhook-driven extensions. Define a manifest, Ohala calls your webhook when events fire. No code runs on our servers — your plugin is your own service.
Plugin Manifest (plugin.json)
{
"slug": "my-awesome-plugin",
"name": "My Awesome Plugin",
"version": "1.0.0",
"description": "Does something amazing.",
"author": { "name": "You", "email": "you@example.com" },
"icon": "zap",
"categories": ["inventory", "sales"],
"price": 0,
"hooks": [{
"event": "order.created",
"handler": "onOrderCreated",
"priority": 10
}],
"routes": [{
"method": "GET",
"path": "/status",
"handler": "getStatus"
}],
"integrations": [{
"name": "Slack",
"configFields": [
{ "key": "webhook_url", "label": "Slack Webhook URL", "type": "url", "required": true }
]
}],
"webhook_url": "https://your-service.com/ohala-webhook"
}Webhook Payload (Ohala → Your Service)
POST https://your-service.com/ohala-webhook
Headers:
X-Ohala-Event: order.created
X-Ohala-Tenant: tenant-uuid
X-Ohala-Plugin: my-awesome-plugin
Body: {
"event": "order.created",
"data": { "order_id": "uuid", "total": 5000, "customer": "Jane" },
"timestamp": "2026-08-05T12:00:00Z",
"tenant_id": "uuid"
}
Your service responds: { "success": true, "modified": {} }Available System Hooks (50+)
order.createdorder.confirmedorder.paidorder.shippedorder.cancelledproduct.createdproduct.updatedproduct.low_stockcustomer.createdpayment.receivedpayment.failedinventory.updatedinvoice.createdinvoice.paidjournal.postedtenant.createduser.inviteduser.joinedwebhook.receivedemployee.createdpayroll.processedSubmit via Developer Portal at /app/marketplace/developer. Full SDK docs at Developer SDK.
Webhooks Guide
Available Events
order.createdorder.updatedorder.paidproduct.createdproduct.updatedproduct.deletedcustomer.createdcustomer.updatedpayment.receivedpayment.failedstock.lowstock.adjustedVerifying Signatures
import crypto from "crypto";
function verifySignature(payload, signature, secret) {
const hash = crypto
.createHmac("sha256", secret)
.update(payload).digest("hex");
return hash === signature;
}Each request includes X-Ohala-Signature for verification.