Everything is generated from the live API, so this page never drifts from what the server actually does. Authenticate with an API key, pull assets and work orders, push work orders from your ERP, and subscribe to signed webhooks.
Base URL https://mydbfm.com/api · header X-API-Key · 600 requests / minute per key by default; configurable per key
curl -H "X-API-Key: $DINABINA_API_KEY" https://mydbfm.com/api/v1/work-orders?status=open
Billing → API Keys (Professional and Enterprise plans). Keys are shown once and stored hashed.
All public endpoints live under /api/v1. Breaking changes ship as /api/v2 with 12 months of overlap.
Events: work_order.createdwork_order.closedasset.createdpm.dueiot.alertstatutory.duewebhook.test
HMAC-SHA256 over `{timestamp}.{raw_body}` using your subscription secret; reject if |now - timestamp| > 300 s. Headers X-DinaBina-Signature, X-DinaBina-Timestamp. 3 attempts with exponential back-off (10 s, 60 s, 10 min); endpoint must return 2xx within 10 s.
import hmac, hashlib
expected = hmac.new(secret.encode(), f"{ts}.{raw_body}".encode(), hashlib.sha256).hexdigest()
assert hmac.compare_digest(expected, signature)const expected = crypto.createHmac('sha256', secret).update(`${ts}.${rawBody}`).digest('hex');
if (!crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(signature))) throw new Error('bad signature');| Method | Path | Description | Query params |
|---|---|---|---|
| GET | /v1/assets | Api V1 Get Assets | limit, offset |
| GET | /v1/work-orders | Api V1 Get Work Orders | status, limit, offset |
| POST | /v1/work-orders | Api V1 Create Work Order | — |
| GET | /v1/inventory | Api V1 Get Inventory | — |
| POST | /v1/assets/sync | Api V1 Sync Assets | — |
| GET | /v1/webhooks | List Webhooks | — |
| POST | /v1/webhooks | Create Webhook | — |
| DELETE | /v1/webhooks/{sub_id} | Delete Webhook | — |
| POST | /v1/webhooks/{sub_id}/test | Test Webhook | — |
| GET | /v1/webhooks/{sub_id}/deliveries | Webhook Deliveries | — |
401
Missing or invalid API key
403
Key lacks permission / plan does not include API access
422
Validation error — body lists the field
429
Rate limit exceeded — retry after the Retry-After header