Integration Examples
Python: full sync script
import requests
from datetime import datetime, timedelta
EKOMIUM_URL = "https://your-company.ekomium.com/jsonrpc"
DB = "your_database"
PASSWORD = "your_password"
def jsonrpc(service, method, *args):
r = requests.post(EKOMIUM_URL, json={
"jsonrpc": "2.0",
"method": "call",
"params": {"service": service, "method": method, "args": list(args)},
"id": 1,
})
result = r.json()
if result.get("error"):
raise Exception(result["error"])
return result["result"]
uid = jsonrpc("common", "authenticate", DB, LOGIN, PASSWORD, {})
since = (datetime.now() - timedelta(days=1)).strftime("%Y-%m-%d 00:00:00")
orders = jsonrpc("object", "execute_kw", DB, uid, PASSWORD,
"pos.order", "search_read",
[[["date_order", ">=", since]]],
{"fields": ["id", "name", "date_order", "amount_total", "payment_ids", "config_id"], "limit": 100}
)
for order in orders:
lines = jsonrpc("object", "execute_kw", DB, uid, PASSWORD,
"pos.order.line", "search_read",
[[["order_id", "=", order["id"]]]],
{"fields": ["product_id", "qty", "price_unit", "discount"]}
)
print(f"Ticket {order['name']}: {order['amount_total']} DH, {len(lines)} lines")
Node.js: fetch catalog
const EKOMIUM_URL = 'https://your-company.ekomium.com/jsonrpc';
async function ekomiumCall(service, method, args) {
const res = await fetch(EKOMIUM_URL, {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({jsonrpc: '2.0', method: 'call', params: {service, method, args}, id: 1}),
});
const data = await res.json();
if (data.error) throw new Error(JSON.stringify(data.error));
return data.result;
}
const uid = await ekomiumCall('common', 'authenticate', ['your_database', LOGIN, PASSWORD, {}]);
const products = await ekomiumCall('object', 'execute_kw', [
'your_database', uid, PASSWORD,
'product.template', 'search_read',
[[['available_in_pos', '=', true]]],
{fields: ['name', 'list_price'], limit: 100},
]);
Sync workflow recommendation
- Daily: Pull
/api/v1/sessions/closuresfor cash reconciliation - Hourly: Pull
/api/v1/salessince last sync timestamp - On demand: Pull
/api/v1/catalog/productswhen menu changes - Real-time (optional): Use Ekomium webhooks or MQTT for live events
Contact Ekomium for webhook/MQTT integration options.