Skip to main content

Google Tasks ExecModule

Overview

GoogleTasksModule connects ValkyrAI workflows to Google Tasks API v1. It uses the native map I/O ExecModule ABI, appears in the annotation-backed Workflow Studio catalog as GoogleTasksModule, and resolves OAuth credentials only from an IntegrationAccount.

The connector implements the highest-value task and task-list behavior from n8n's Google Tasks node while adding governed placement and cleanup operations:

  • list_task_lists
  • get_task_list
  • list_tasks
  • get_task
  • create_task
  • update_task
  • move_task
  • clear_completed
  • delete_task

The Google Tasks API origin and OAuth token cannot be overridden by workflow input.

Usage

  1. Enable Google Tasks API in the Google Cloud project that owns the OAuth client.
  2. Authorize the minimum Tasks OAuth scope required by the workflow.
  3. Store the current OAuth access token in a Google IntegrationAccount SecureField.
  4. Add GoogleTasksModule to a workflow and bind that account through ExecModuleConfig.authConfig.integrationAccount.
  5. Set operation and the operation-specific fields in module configuration or map them from upstream workflow state.

Mapped workflow input can override non-secret task fields. Authentication, the Google API host, retry safety, response limits, and destructive confirmations remain trusted module behavior.

Inputs

NameTypeRequired forDefaultConstraints
operationstringEvery executionNoneOne of the nine documented operations.
taskListIdstringTask-list read and every task operationNone1–256 Google ID characters.
taskIdstringget_task, update_task, move_task, delete_taskNone1–256 Google ID characters.
titlestringcreate_task; optional for update_taskNone1–1,024 characters when supplied.
notesstringOptional create/update fieldNoneUp to 8,192 characters; an empty update clears notes.
duestringOptional create/update fieldNoneRFC 3339 timestamp; an empty update clears the field.
completedstringOptional create/update fieldNoneRFC 3339 completion timestamp.
taskStatusstringOptional create/update fieldNoneneedsAction or completed.
parentIdstringOptional create/move placementNoneParent task ID; move_task requires this or previousId.
previousIdstringOptional create/move placementNonePrevious sibling task ID.
completedMin / completedMaxstringOptional list_tasks filtersNoneRFC 3339 timestamps.
dueMin / dueMaxstringOptional list_tasks filtersNoneRFC 3339 timestamps.
updatedMinstringOptional list_tasks filterNoneRFC 3339 timestamp.
showCompletedbooleanOptional list_tasks filtertrueGoogle may require showHidden=true for some completed tasks.
showDeletedbooleanOptional list_tasks filterfalseIncludes deletion tombstones when authorized.
showHiddenbooleanOptional list_tasks filterfalseIncludes tasks hidden by clear-completed behavior.
pageTokenstringOptional list resume pointNoneOpaque; maximum 4,096 characters.
limitintegerOptional list bound1001–10,000; provider pages are at most 100 items.
returnAllbooleanOptional list behaviorfalseContinues pagination, safety-capped at 10,000 items.
confirmClearbooleanclear_completedfalseMust be true because completed tasks become hidden.
confirmDeletebooleandelete_taskfalseMust be true because deletion is permanent.

Outputs

Every execution returns stable status, operation, and attempts fields.

NameTypeWhen presentDescription
statusstringAlwayssuccess or error.
operationstringAlwaysNormalized operation name.
attemptsintegerAlwaysProvider HTTP attempts.
httpStatusintegerProvider response receivedLast Google Tasks HTTP status.
dataobjectSingle-resource or mutation successNormalized Google task-list/task response; empty for HTTP 204.
idstringProvider resource contains an IDConvenience task or task-list ID.
titlestringProvider resource contains a titleConvenience title.
taskStatusstringTask resource contains a task statusGoogle task state; the top-level execution status remains authoritative.
duestringTask resource contains a due dateProvider RFC 3339 due value.
updatedstringProvider resource contains update timeProvider RFC 3339 update value.
itemsarrayList successBounded task lists or tasks.
countintegerList successNumber of returned items.
hasMorebooleanList successWhether Google returned another page token.
nextPageTokenstringAnother page existsOpaque token for a later execution.
requestIdstringGoogle supplies oneProvider request reference for support.
errorobjectFailureSafe {code, message, httpStatus?, retryable} details.

OAuth tokens are never returned. Provider errors are bounded and redacted through the shared workflow sensitive-data policy.

IntegrationAccount Requirements

SettingRequirement
ProviderGoogle Tasks / Google Workspace
Auth mechanismOAuth 2.0 bearer access token
accountNameHuman-readable Google account or Workspace label
apiKeyPreferred encrypted SecureField containing the access token
passwordLegacy token fallback only; prefer apiKey
statusready or an unset legacy status; closed and error fail closed

Use the minimum applicable scope:

Never place tokens in parameters, mapped workflow input, examples, logs, or outputs. Use the platform OAuth refresh flow to rotate expired access tokens.

Configuration

Module-specific fields belong in ExecModulePayloadConfig.parameters; retries and timeouts use existing normalized configuration groups.

{
"version": "1.0.0",
"authConfig": {
"authStrategy": 1,
"integrationAccount": "integration-account:google-tasks-primary"
},
"retryPolicy": {
"maxAttempts": 3,
"backoffStrategy": "EXPONENTIAL",
"initialDelayMs": 1000,
"maxDelayMs": 60000,
"jitter": false
},
"executionConfig": {
"timeoutMs": 30000
},
"payloadConfig": {
"parameters": "{\"operation\":\"list_tasks\",\"taskListId\":\"launch-list-id\",\"showCompleted\":false,\"limit\":250}"
}
}

The integrationAccount value is illustrative. Persisted workflows use the generated relationship, never a plaintext token.

Operations

OperationProvider behaviorSide effect and retry behavior
list_task_listsLists task lists visible to the authorized principal.Read-only; retries transient failures and paginates.
get_task_listReads one task list by ID.Read-only; retries transient failures.
list_tasksLists bounded tasks with completion, due, update, deletion, and hidden filters.Read-only; retries and follows nextPageToken.
get_taskReads one task by list ID and task ID.Read-only; retries transient failures.
create_taskCreates a task, optionally positioned below a parent or sibling.Write; single attempt because an ambiguous response may have committed.
update_taskPatches supplied title, notes, due, completion, or status fields.Write; single attempt; empty notes/due can clear fields.
move_taskMoves a task relative to a parent or previous sibling.Write; single attempt; requires explicit placement.
clear_completedHides completed tasks from the selected task list.Destructive visibility change; requires confirmClear=true; single attempt.
delete_taskPermanently deletes one task.Irreversible; requires confirmDelete=true; single attempt.

Errors and Failure Modes

CodeTypical causeRetryableResolution
VALIDATION_ERRORMissing/invalid IDs, timestamp, operation field, placement, or confirmation.NoCorrect inputs; no unsafe request was sent.
UNSUPPORTED_OPERATIONUnknown operation name.NoSelect a documented operation.
INTEGRATION_ACCOUNT_REQUIREDNo account is bound.NoBind a Google Tasks IntegrationAccount.
INTEGRATION_ACCOUNT_NOT_READYAccount is closed or in error.NoReconnect or repair the account.
GOOGLE_TASKS_HTTP_401OAuth token is expired or invalid.NoRefresh the token.
GOOGLE_TASKS_HTTP_403Scope/resource access is missing, or a quota was exceeded.Depends on reasonGrant scope/access; rate-limit reasons retry only for reads.
GOOGLE_TASKS_HTTP_404Task-list or task ID is wrong or invisible.NoVerify the ID and authorized principal.
GOOGLE_TASKS_HTTP_429Request quota exceeded.Yes for readsHonor provider guidance and retry later.
RESPONSE_TOO_LARGEResponse exceeded 5 MiB.NoNarrow filters or lower limit.
NETWORK_ERRORDNS, TLS, timeout, or connectivity failure.Yes for readsVerify connectivity and retry.
INVALID_PROVIDER_RESPONSEGoogle returned a non-list items value.NoCapture request ID and check API compatibility.

Example

Create an agent-owned release verification task:

{
"operation": "create_task",
"taskListId": "MTIzNDU2Nzg5",
"title": "Verify public ExecModule launch evidence",
"notes": "Confirm production docs, article, header image, and anonymous READ ACLs.",
"due": "2026-08-15T00:00:00Z",
"taskStatus": "needsAction"
}

Expected result shape:

{
"status": "success",
"operation": "create_task",
"attempts": 1,
"httpStatus": 200,
"id": "QUJDREVGR0g",
"title": "Verify public ExecModule launch evidence",
"data": {
"id": "QUJDREVGR0g",
"title": "Verify public ExecModule launch evidence",
"status": "needsAction"
}
}

Notes

  • Pagination: list operations request at most 100 items per Google page, preserve opaque nextPageToken values, stop at limit, and hard-cap returnAll at 10,000 items.
  • Rate limits: read operations retry HTTP 408/429/5xx and Google rateLimitExceeded, userRateLimitExceeded, or backendError reasons. Integer and RFC 1123 Retry-After values are honored. Writes are never automatically retried.
  • API limits: Google Tasks stores due values with date semantics and may discard the time component even though the wire format is RFC 3339. Recurring tasks, reminders, assigned tasks, attachments, and event synchronization are controlled by Google product APIs outside this module.
  • Idempotency: create, update, move, clear, and delete use one provider attempt. After a network timeout, reconcile the task list by ID/title and immutable task IDs before replaying.
  • Ordering: parentId and previousId are provider-relative placement hints. A caller should read back the returned task to confirm final ordering.
  • Destructive behavior: clear_completed hides completed tasks and requires confirmClear=true; delete_task is permanent and requires confirmDelete=true.
  • External verification: local tests use a deterministic mock provider. Live Google behavior remains unverified until an authorized Google Tasks credential is supplied.
  • Functional reference: n8n's current Google Tasks node supports task create, delete, get, list, and update with task-list selection, pagination, timestamps, status, parent, and previous-sibling fields. ValkyrAI adds explicit move/clear operations and stricter destructive, retry, and credential boundaries.