Task fields
labelIds is accepted on task create and bulk create. For existing tasks, use the label endpoints or atoll label add/remove.
startDate and dueDate are date-only values in YYYY-MM-DD format. Recurring tasks use dueDate to compute the next generated task when the current task moves to done.
Task detail responses include enriched member objects for creator, assignee, and assignees; each creator/assignee object includes id, display_name, type, and avatar_url when available.
Goal fields
KPI fields
source_type: "formula" and are calculated from linked work instead of snapshots:
goal_linked_issue_completion, current_value is the count of non-archived directly linked issues and milestone-linked issues in done status and target_value is the total non-archived directly linked issue and milestone-linked issue count under initiatives for the goal.
KPI snapshot fields
current_value.
KPI-to-initiative impact links are separate from snapshot attribution. A link means the initiative is expected to move the KPI; snapshot attribution identifies the initiative and/or issue that produced one measurement.
Calculated KPIs do not accept manual snapshots.
api_poll snapshots are written by published KPI HTTP Syncs and include first-class provenance: source_sync_id, source_sync_run_id, source_config_hash, source_recorded_for, observed_at, and optional provider_recorded_at.
KPI HTTP sync fields
GET only, https only, JSON only, exact-host allowlisted, no redirects, no request bodies, no query strings, and no secret values in configs. Draft creation and config validation require the destination host to already be exactly allowlisted. Credential placeholders are limited to Authorization: Bearer <secretRef> and X-API-Key: <secretRef>.
Human admins manage exact-host allowlists, secrets, dry-runs, publish, disable, and snapshot-writing run-now actions in Settings > Integrations > KPI syncs. Machine actors can create draft syncs and validate proposed configs only after the host is allowlisted. The org-wide Settings endpoint returns config and secret metadata only to human owners/admins; non-admin members receive redacted status rows, and guests/machine actors are denied.
KPI HTTP sync run fields
Initiative fields
title or legacy name; Atoll stores both fields from the trimmed value. Create requests also accept goalId, ownerId, targetDate, and projectId aliases for goal_id, owner_id, target_date, and project_id. Guest/project-scoped callers must use project_id and have edit/admin access to that project.
Automation rule fields
Custom view fields
Webhook fields
localhost, and .local hosts are rejected at creation; delivery refuses non-public DNS results and does not follow redirects. The response includes a secret for HMAC verification. Store it immediately; it is shown only once. Delivery requests include X-Atoll-Signature: sha256=<hmac>, where the HMAC-SHA256 key is the SHA-256 hex digest of the webhook secret and the message is the exact raw request body. Delivery requests also include X-Atoll-Delivery-Id for receiver-side deduplication. Delivery history includes retry status and next_retry_at.
Strategy audit fields
GET /api/orgs/{id}/strategy/audit returns findings (sorted critical → warning → info), a summary, and counts_by_type. Each finding:
| Field | Type | Description |
|---|---|---|
type | string | Finding type (see values below) |
severity | string | critical, warning, or info |
title | string | Short human-readable summary |
message | string | Why it matters |
suggested_fix | string | Concrete next action (usually the exact API call) |
goal_id / kpi_id / initiative_id / initiative_target_id / issue_id / milestone_id / project_id | string | Whichever entity ids apply |
type values: initiative_orphaned, kpi_orphaned, goal_missing_kpi, goal_missing_initiative, dangling_initiative_project, dangling_initiative_issue, dangling_initiative_milestone (structural); kpi_unrecorded, kpi_missing_target, kpi_stale, kpi_off_pace (KPI health); initiative_missing_impact, initiative_missing_execution, initiative_stalled, initiative_target_missing_execution, initiative_target_overdue, initiative_target_blocked (initiative health); issue_blocked, issue_overdue, milestone_overdue (execution).
Strategy audit findings are active-context findings. Paused and cancelled goals are excluded from active goal checks, KPIs attached to inactive goals are skipped for KPI health checks, and paused, completed, or cancelled initiatives are skipped for initiative health checks.
Enums
| Domain | Field | Values |
|---|---|---|
| Task | status | backlog, todo, in_progress, done, cancelled, or custom board statuses |
| Board column | description | Optional Markdown/plain-text stage criteria or agent guidance; null means no guidance |
| Task | priority | 0, 1, 2, 3 |
| Task update request | comment_body | Optional Markdown/plain text or rich-text HTML comment body created with the issue update; stored and returned as sanitized HTML |
| Task update request | comment_mentions[].member_id | Stable Atoll org member ID to mention in the issue update comment created by comment_body; not an auth user ID or display name |
| Comment create request | mentions[].member_id | Stable Atoll org member ID to mention in a direct comment API request; recommended for agents and integrations |
| Comment create response | mentions.requested | Count of structured mention targets requested for the created comment |
| Comment create response | mentions.created | Count of mention notifications created or confirmed by the request |
| Comment create response | mentions.skipped[] | Mention targets that did not create notifications; each entry includes member_id and reason |
| Comment create response | mentions.skipped[].reason | invalid_member_id, not_found, self_mention, no_project_access, guest_unprojected_issue, unsupported_member_type, or mentions_muted |
| Task | recurrenceType | daily, weekly, biweekly, monthly, custom |
| Goal | status | active, achieved, missed, paused, cancelled |
| KPI | unit | count, percentage, currency, duration, ratio, custom |
| KPI | target_direction | increase, decrease, maintain |
| KPI | source_type | manual, webhook, api_poll, formula |
| KPI snapshot | source | manual, webhook, api_poll, formula, agent |
| KPI HTTP sync | status | draft, published, disabled |
| KPI HTTP sync run | status | queued, running, success, error |
| Initiative | status | proposed, active, completed, paused, cancelled |
| Initiative target | mode | progress, gate |
| Initiative target | target_direction | increase, decrease, maintain |
| Status update | status | on_track, at_risk, off_track |
| Member | role | owner, admin, member, guest |
| Project member | accessLevel | view, edit, admin |
| Automation | trigger_event | issue.created, issue.status_changed, issue.assigned, issue.priority_changed |
| Heartbeat signal | severity | info, warning, critical |
| Heartbeat attention | attention_items[] | Direct current-member notifications such as mentions, assignments, assignee comments, and creator-visible status changes |
| Heartbeat attention | attention_items[].ack_endpoint | Org-scoped endpoint to acknowledge the notification after it is handled |
| Heartbeat attention | attention_summary.total_unread | Count of unread actionable attention items included in the heartbeat |
| Notification | event_type | mention.created, issue.assigned, comment.added, issue.status_changed |
| Notification preference | event_type | Notification event type, currently mention.created for mention opt-out; disabling in-app mentions also attempts to acknowledge currently unread mention notifications |
| Notification preference | channel | Delivery channel, currently in_app |
| Notification preference | enabled | Whether the current member wants this event/channel delivered |
| Heartbeat project context | board_columns[].description | Optional board-column guidance surfaced to agents in heartbeat --json |
| Heartbeat initiative context | project_ids | Project IDs connected to an initiative through project, milestone, or issue links |
| Heartbeat initiative context | linked_issues | Accessible issue evidence used for initiative health and recommendations |
| Heartbeat initiative context | targets[] | Initiative target context with linked work, completion, due-soon, overdue, and blocked state |
| Heartbeat recommendation | recommended_action.action_type | create_work, start_work, escalate_blocker, refresh_metric; investigate and defer_busywork are reserved values |
| Heartbeat recommendation | suggested_write.operation | issue.create, issue.update, comment.add, kpi.snapshot.request, none |
| Heartbeat recommendation | quality_checks[].status | pass, warning |
| Heartbeat recommendation | usage_guidance.preserve_fields[] | Field names agents should preserve in issue, KPI, status update, or comment writes |
| Heartbeat recommendation | usage_guidance.avoid_payload_sources[] | Context categories agents should avoid copying into write payloads |
| Custom view | display_mode | board, list |
recommended_action
shape, suggested write fields, and response examples.
Initiative targets use fields title, description, mode, unit, unit_label, current_value, target_value, target_direction, target_date, and due_soon_days. Use mode: "progress" for initiative output tracking and mode: "gate" for hard prerequisites. Gate target heartbeat messages use stateful language like 0/5 retailers complete; they do not emit KPI pace.
