TATER Ops — Approvals & Bulk Actions
Multi-step approval chains and bulk operations let you move dozens of tasks through their lifecycle in seconds. Both features are built into the same task data model — no add-on modules.
Multi-Step Approval Chains
Approval chains are an ordered list of approvers attached to a task. Each step has a designated approver email, an optional label (CFO, Department Head, IT Director), and a status (pending, approved, rejected, skipped). The chain advances one step at a time — only the current approver can act, and rejection halts the chain.
Setting up default chains per category
The most common pattern is a default chain attached to a category. New tasks in that category automatically pick up the chain.
- Open Settings → Approval Chains in TATER Ops.
- Find your category in the list (e.g. "AP / Invoice Review").
- Click + approver to add a step.
- Set the approver email (uses the people typeahead) and an optional label like "Manager" or "CFO".
- Add additional approvers in order. Step 1 acts first, then step 2, etc.
- Click Save Approval Chains.
For "AP / Invoice Review" you might define:
- Department Head —
dept-head@yourcompany.com - Controller —
controller@yourcompany.com - CFO —
cfo@yourcompany.com(only required for invoices > $10K — keep approval but skip via business rule in your intake form)
Acting on an approval
When a task lands on you, you'll see it in:
- The My Tasks page
- The Tasks page (with a "⚖ pending" pill on the row)
- An email notification (if you've configured per-event notifications)
- Click into the task to open the detail modal.
- Scroll to the Approval Chain card. You'll see all steps in order, with your step highlighted as the active one.
- Click ✓ Approve or ✕ Reject.
- Add an optional note. Approve advances to the next step; reject halts the chain immediately.
The action is recorded in the audit log with your user ID, timestamp, and note.
Approval rules
- Only the user whose email matches the current step can act on it. The "Approve / Reject" buttons don't appear for anyone else.
- Rejection at any step halts the chain. Remaining steps are marked
skipped. - Approval at the last step transitions
approvalStatustoapproved. The task itself stays in whatever status it was in — approval is independent of task lifecycle. - Tasks with
approvalStatus = approvedcan be filtered or surfaced in dashboards / reports / Power BI.
Ad-hoc approvals
You can also attach an approval chain manually to any single task via the API:
PUT /api/tasker/tasks/{id}
{
"approvalChain": [
{ "approverEmail": "alice@x.com", "label": "Manager" },
{ "approverEmail": "bob@x.com", "label": "Director" }
]
}
Bulk Actions
When you have many tasks to triage at once — closing stale items, reassigning when an agent leaves, escalating priority across a queue — bulk-edit mode is faster than opening each task individually.
Enabling bulk-edit mode
- Go to the Tasks page in TATER Ops.
- Filter to the slice you care about (status, category, priority, search).
- Toggle Bulk-edit mode at the top of the list. Checkboxes appear in the leftmost column.
- Click rows or use Select All in the header to pick tasks.
Available actions
| Action | What it does | Permission required |
|---|---|---|
| Set Status | Apply a new status to all selected tasks | Auditor+ |
| Set Priority | Apply a new priority label | Auditor+ |
| Reassign | Change assignedToEmail on all selected tasks | Auditor+ |
| ✓ Close | Set status to Closed and stamp closedAt | Admin |
| 🗑 Archive | Soft-delete (sets archivedAt — task disappears from the list) | Admin |
Each bulk operation processes tasks in a loop, returns per-task success/failure, and writes a single audit log entry with action bulk-{action} and the count.
The API caps each bulk request at 500 tasks. If you need to operate on more, filter further or split into batches. Each task is independently updated, so partial failures are acceptable — the response tells you which IDs succeeded and which failed.
API access
POST /api/tasker/tasks/bulk
{
"ids": ["task-aaa", "task-bbb", "task-ccc"],
"action": "status",
"value": "Closed"
}
→ { "ok": true, "results": [...], "success": 3, "failed": 0 }
Valid actions: reassign, status, priority, close, delete. The value field is required for the first three.
TATER