Audit log
Every decision Openavail makes is an immutable row in the audit log.
What is logged
| Action | When it's recorded |
|---|---|
accept | A booking request was approved and the hold created |
reject | A request was denied (rule, priority, or conflict) |
preempt | A higher-priority request displaced an existing hold or committed meeting |
counter | Openavail returned alternative slots instead of the requested one |
hold_expired | An agent never confirmed a hold before its TTL |
undo | A governance reviewer reversed a preemption via the undo link |
Every row captures: decision_id, action, agent_id, api_key_id, calendar_owner, rule_fired, latency_ms, timestamp.
Reading the audit log
In the dashboard, go to Audit log. The log is paginated and sorted newest-first. Click any row to see the full decision record including the raw request payload and the rule evaluation trace.
Filtering
Use the filter bar to narrow by:
- Agent — show decisions from a specific agent
- Calendar owner — show decisions affecting a specific person's calendar
- Action — show only preemptions, only rejects, etc.
- Time range — any ISO 8601 range
Filters compose (AND). URL query parameters are preserved so filtered views can be bookmarked or shared.
Exporting
The dashboard exports the visible (filtered) set as JSONL. Each line is one decision record. The export is gzip-compressed for large sets.
For programmatic access, use GET /v1/decisions — see the API reference for cursor-based pagination and field selection.
Signing
Each audit row includes an ed25519 signature over the decision payload using a key managed by Openavail. The public key is published at /v1/audit/public-key. You can verify the signature independently to prove a given decision was not tampered with after the fact.
Signature verification details are in the Retention page.