Flow, accounts, and hosting
Send process signals to other systems: subscriptions, OData and the process API
Let other systems hear Duaer’s process signals: a metric missed its target, a new process finding, a new card and a card decided. Power BI and Excel read cases and metrics through OData, and agents outside Duaer learn what each metric means and start a source’s refresh through the API.
Add a subscription
- Open Settings › API and click New subscription under Signal subscriptions. Only the organization’s owners and admins see it.
- Give a name and the address. It must be https, carry no user name or password, and not be a private or local address.
- Tick the events: metric missed target, new process finding, new card, card decided.
- Set the daily limit (1 to 100,000, 1,000 by default) and click Save.
- Copy the signing secret shown: it is shown this once. An organization has at most 20 subscriptions.
What arrives
Each event is one POST with a JSON body and the headers x-duaer-event, x-duaer-delivery, x-duaer-sequence and x-duaer-signature. The body carries ids, names and numbers only, never a case’s own columns (customer names, amounts).
{
"id": "b3f1…",
"sequence": 42,
"event": "card.decided",
"occurredAt": "2026-10-19T08:15:02.000Z",
"organizationId": "…",
"data": {
"projectId": "…",
"cardId": 318,
"ruleId": "r-…",
"caseId": "INV-1024",
"title": "Invoice INV-1024 is overdue",
"choice": "o1",
"choiceLabel": "Paid",
"decidedBy": "ana@example.com"
}
}Check the signature
x-duaer-signature reads t=<timestamp>,v1=<signature>: the HMAC-SHA256 of “timestamp.raw body” with the subscription’s secret.
// Node.js: check the x-duaer-signature header with the subscription's secret.
import { createHmac, timingSafeEqual } from 'node:crypto';
function verified(secret, rawBody, header) {
const t = /(?:^|,)t=(\d+)/.exec(header)?.[1];
const v1 = /(?:^|,)v1=([0-9a-f]{64})/.exec(header)?.[1];
if (!t || !v1) return false;
const expected = createHmac('sha256', secret).update(`${t}.${rawBody}`).digest();
const given = Buffer.from(v1, 'hex');
return given.length === expected.length && timingSafeEqual(given, expected);
}Retries, pausing and sending again
- A receiver that answers other than 2xx, or cannot be reached, is tried again after 1, 5, 30 and 120 minutes, 5 tries in all; then the delivery is failed.
- Events while paused wait and go in order on resume; past the day’s limit, they wait for the next UTC day.
- Deliveries are kept 30 days. Send failed again, or Send again from this number. A retried event may arrive after later ones: order by x-duaer-sequence.
- Creating, changing, deleting and sending again are in the audit log, never the secret.
Read with Power BI or Excel (OData)
- Copy the OData address (…/v1/odata) in Settings › API.
- Power BI: Get data › OData feed; Excel: Data › Get Data › From OData Feed. Paste the address.
- Choose Basic authentication: any user name, your API key as the password.
- The tables are Cases, CaseSteps, Metrics and MetricMonths, with only what the key’s person sees on the employee portal: up to 50,000 cases, 1,000 rows a page.
- Filter and sort in Power Query after reading: the feed does not support $filter or $orderby.
GET <DUAER_HOST>/v1/odata/Cases?$top=100&$count=true
Authorization: Basic base64("any:<your-api-key>")The process API
- GET /v1/process/metrics: the metrics the person sees, each with a one-sentence meaning, its description, unit, value, latest month and target.
- POST /v1/process/sources/{id}/refresh: reads the source now, as Run now does, and answers 202. Only owners’ and admins’ keys may.
- Send the key in Authorization: Bearer or the X-DUAER-API-KEY header.
Questions
Can I connect Power Automate, Logic Apps or Copilot Studio?
Dedicated connectors come next. Today, receive a subscription with an HTTP request trigger, or call the process API with an HTTP action.
Why does the body not carry the case’s details?
So a case’s columns do not leave Duaer. For details, read through OData with an API key, which shows only what that person may see.
Do events get lost if the receiver is down for a day?
No. After 5 tries a delivery is failed and can be sent again for 30 days; pausing the subscription keeps events waiting too.
In this section
Authentication for the Duaer public API
Duaer uses API keys to authenticate public REST API calls.
APIEndpoint reference for the Duaer public API
Endpoint reference for the Duaer public REST API on your instance. This docs site does not keep a second route list that would go stale.
DataTrack numbers in Duaer with one metrics table
In Duaer, every project comes with one built-in data table named Duaer metrics that holds its numbers. Scheduled workflows write the values; the Duaer metrics catalog decides who sees which metric and which dimension value.
ProcessProcess findings and SOP conformance in Duaer
Process findings list the steps where cases wait too long or are done again, and which kind of case they happen to most. Propose any of them as a card rule and compare the 30 days before and after it was adopted. SOP conformance compares the SOP in your knowledge base with the steps cases really took.
Follow-throughCard assignment and escalation: route by department or amount, escalate overdue cards to the manager
Add assignment rules to a card rule and cases without an owner go to an owner by department, category or amount. When a card is overdue for some days, the owner’s manager gets a card too.