Log many time records in one call
everhour_log_time_batchLog up to 60 time records in a single call, each for a specific task and date. Reports per-row success or failure, with duration rounding and comment validation.
Instructions
Log a batch of time records in a single call — one entry per (task, date). Built for the log-everhour daily/weekly/monthly workflow: pass already-resolved task IDs and already-rephrased comments.
Each entry is logged sequentially. A single row failing (404 not synced, 409 already exists, etc.) does NOT abort the batch unless stop_on_error is true — failures are reported per row.
Durations are normalized to increment_hours (default 30 min). Comments are checked against absolute rules; a forbidden word or empty comment rejects that row unless allow_rule_violations is true.
Args:
entries (array, 1-60): { task_id: 'as:' | native, duration: { hours } | { seconds }, date: 'YYYY-MM-DD', comment: string }
increment_hours (number, optional): rounding grid, default 0.5
stop_on_error (boolean, optional): default false
allow_rule_violations (boolean, optional): default false
user_id (number, optional): defaults to caller
response_format ('markdown' | 'json')
Returns: { "results": [{ "ok": boolean, "task_id": string, "date": string, "hours": number, "rounded"?: boolean, "warnings"?: string[], "record_id"?: number, "error"?: string }], "summary": { "logged": number, "failed": number, "totalHours": number } }
Examples:
Log a full day: entries=[{ task_id:'as:1208...', duration:{hours:3}, date:'2026-06-12', comment:'Reviewed and submitted changes for review.' }, ...]
Error Handling:
Per-row 404 → that Asana task is not synced; other rows still log.
Per-row 409 → a record already exists for that user/date; fix with everhour_update_time_record.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| entries | Yes | Resolved, rephrased entries to log. The log-everhour skill prepares these (tickets already resolved to Everhour IDs, comments already rephrased). | |
| user_id | No | Everhour user ID to log for. Defaults to the authenticated user. | |
| stop_on_error | No | If true, stop at the first failing row. Default false: log every reachable row and report failures. | |
| increment_hours | No | Duration rounding grid in hours. 0.5 = 30 min (default). 0.25 = 15 min, consultant special cases only. | |
| response_format | No | Output format: 'markdown' for human-readable text or 'json' for machine-readable structured data | markdown |
| allow_rule_violations | No | If false (default), rows whose comment breaks a hard rule (forbidden word / empty) are rejected instead of logged. |