createClient and
addClientDocuments return a
taskId; you use the tasks API to follow that work to completion.
Tasks are reached through the me query as a WorkspaceUser, so
authenticate with a workspaceToken (see
Authentication). All requests go to:
The Task type
ID!
The task’s unique identifier. This is the value returned as
taskId by the
mutations that start work.TaskType!
What kind of work this is:
BINDER, TAX_PREP, TAX_REVIEW, TAX_ADVISOR, or
CHAT.TaskStatus!
RUNNING, COMPLETED, or FAILED. Poll this to know when work finishes.String!
ISO 8601 timestamp of when the task started.
String
ISO 8601 timestamp of when the task finished.
null while RUNNING.String
A human-readable error message when
status is FAILED. null otherwise.[TaskAttribute!]!
Arbitrary
name/value metadata pairs describing the task.[SubTask!]!
The individual stages of the task, each with its own status. Use these for
granular progress while a task is
RUNNING.TaskResult!
The typed result of the task, resolved by
type. See Task
result.ClientShortDetails
The client this task belongs to (
id, name), when applicable.UserShortDetails
The user who started the task (
id, name, email).Supporting types
SubTaskType!
The stage, for example
CONVERT_DOCUMENTS, CLASSIFY_SUBDOCS,
EXTRACT_SUBDOCS, or EXPORT_AND_INDEX. The full set of stages depends on the
parent task’s type.DataEntryErrorCode
A machine-readable code when a data-entry stage fails, for example
INVALID_CREDENTIALS, CLIENT_NOT_FOUND, or TIMEOUT. null otherwise.List tasks
Readworkspace.tasks to list tasks across the whole workspace. Filter, page,
and sort with the arguments below.
Arguments
TaskType
Return only tasks of this type.
TaskStatus
Return only tasks in this status (
RUNNING, COMPLETED, FAILED).ID
Return only tasks started by this user.
String
Free-text search over task metadata.
SortBy
Sort order, for example
{ "field": "startedAt", "order": "DESC" }.Int
Maximum number of tasks to return.
Int
Number of tasks to skip, for pagination.
Check a single task’s status
There is notask(id:) query. To follow one task (for example the taskId
returned by createClient or addClientDocuments), list the tasks for its
client with client.tasks and read the entry whose id matches. Because a
client’s task list is small and typed, this is the reliable way to poll a
specific task.
Client.tasks accepts these arguments:
TaskType
Narrow to one task type, for example
BINDER to watch document ingestion.Int
Cap the number of tasks returned (for example
1 for the most recent).Task result
Every task carries a typedresult. TaskResult is a union whose concrete type
is determined by the task’s type. Select fields with an inline fragment on the
member you expect, and read __typename to know which one you got.
object
The fallback result, including for
BINDER and CHAT tasks.object
Returned for
TAX_PREP tasks: a summary plus document/form counts and the
individual review items.object
Returned for
TAX_REVIEW tasks: a summary plus issue breakdowns by severity and
by form.object
Returned for
TAX_ADVISOR tasks: a summary plus strategy counts. The by*
fields are JSON maps.taxYear, returnType, and summary, you can select
those on each fragment and branch on __typename: