DMI

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

DMI Plugin SDK — terminal
$

How it works

Five steps from idea
to marketplace.

plugin_manifest.json
{
  "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"
  }
}
ACTIVE STEP"slug": "contracts"

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

MODULE APPLICATION

UK developers only · Free to apply · 5-day response

By submitting, you agree to our Privacy Policy.

By submitting, you agree to our Privacy Policy.