DEVELOPER PORTAL
Build on
the connected
core.
DMI's plugin architecture lets you mount new modules directly into the shared data model — same organisations, contacts, products, employees, and accounts. One FK-linked core. Zero re-keying.
12
Core endpoints
80/20
Rev share (yours)
5
Shared FK tables
How it works
Five steps from idea
to marketplace.
{
"name": "Contracts",
"slug": "contracts",
"version": "1.0.0",
"nav": [
{ "label": "Contracts", "path": "/contracts" },
{ "label": "Templates", "path": "/contracts/templates" }
],
"entities": ["party", "product", "account"],
"permissions": [
"contracts:read",
"contracts:write",
"contracts:approve"
],
"hooks": {
"on_deal_won": "handlers.create_draft",
"on_invoice_sent": "handlers.mark_active"
}
}Built on FastAPI + SQLAlchemy. See the full docs or the platform overview.
REST API
Explore the API.
All endpoints require Authorization: Bearer <token> and X-Org-Id: <org_id>. Rate limit: 1,000 req/min per org.
Click any endpoint to see request / response.
REQUEST BODY
{ "email": "you@company.co.uk", "purpose": "login" }RESPONSE
{ "ok": true, "expires_in": 900 }REQUEST BODY
{ "email": "you@company.co.uk", "code": "123456" }RESPONSE
{ "token": "eyJhbGciOiJIUzI1NiJ9...", "user_id": "usr_abc" }RESPONSE
{ "contacts": [{ "id": "pty_x1", "name": "Jane Smith", "email": "jane@acme.co.uk" }], "total": 148 }REQUEST BODY
{ "name": "Jane Smith", "email": "jane@acme.co.uk", "type": "lead" }RESPONSE
{ "id": "pty_x2", "name": "Jane Smith", "created_at": "2026-06-27T09:00:00Z" }RESPONSE
{ "orders": [{ "id": "ord_001", "total": 4500.00, "status": "invoiced" }], "total": 37 }REQUEST BODY
{ "contact_id": "pty_x1", "lines": [{ "product_id": "prd_001", "qty": 2, "unit_price": 250 }] }RESPONSE
{ "id": "ord_038", "total": 500.00, "invoice_id": "inv_049" }RESPONSE
{ "products": [{ "id": "prd_001", "name": "Starter Plan", "price": 250.00, "stock": 999 }] }RESPONSE
{ "employees": [{ "id": "emp_001", "name": "Alex Brown", "department": "Engineering" }] }RESPONSE
{ "entries": [{ "id": "jnl_001", "dr": "1100", "cr": "4000", "amount": 500.00 }] }REQUEST BODY
{ "dr_account": "1100", "cr_account": "4000", "amount": 500.00, "memo": "Manual adj." }RESPONSE
{ "id": "jnl_042", "posted": true, "balance_updated": true }REQUEST BODY
{ "event": "order.created", "url": "https://you.co.uk/hooks/dmi", "secret": "whsec_..." }RESPONSE
{ "id": "whk_001", "active": true }RESPONSE
{ "events": [{ "actor": "usr_abc", "action": "order.created", "entity": "ord_038", "ts": "2026-06-27T09:01:00Z" }] }WEBHOOKS
Register outbound webhooks for any entity event. POST /api/core/webhooks with event type, URL, and shared secret.
API KEYS
Generate long-lived scoped API keys in Settings → Connections. Scope per module, per permission, per org.
AUDIT TRAIL
Every API write creates an immutable record (actor, action, entity, timestamp). Read via GET /api/core/audit.
BUILD ON DMI
Apply to build
a custom module.
If you have a vertical workflow that belongs inside a business OS — contracts, compliance, logistics, custom reporting — apply to build it as a DMI plugin.
Full core API access
Party, Product, Account, Employee, Order — all FK-linked
Marketplace listing
Distributed to all DMI customers who enable your module
80/20 revenue share
You price it; we split 80/20 in your favour
Technical support
Direct access to the core team during build