Functions for managing tasks with linked records.
Tasks are actionable items that can reference records and be assigned to
workspace members. Requires the task:read scope for read operations and
task:read-write for mutations.
Pagination
list/2 returns a single page. stream/2 lazily pages through all tasks;
stream_all/2 collects them into {:ok, list}. See Attio for an overview.
client
|> Attio.Tasks.stream()
|> Stream.reject(fn t -> t["is_completed"] end)
|> Enum.to_list()
Summary
Functions
Creates a task.
Deletes a task.
Gets a single task by its ID.
Lists tasks. Returns one page.
Returns a lazy stream of all tasks across all pages.
Fetches all tasks across all pages and returns them as a list.
Updates a task.
Functions
@spec create(Attio.Client.t(), map()) :: {:ok, map()} | {:error, term()}
Creates a task.
Required attributes
"content"- Task description text."deadline_at"- ISO 8601 deadline timestamp, ornil.
Optional attributes
"linked_records"- List of%{"target_object" => slug, "target_record_id" => id}maps."assignees"- List of%{"referenced_actor_type" => "workspace-member", "referenced_actor_id" => id}maps.
@spec delete(Attio.Client.t(), String.t()) :: {:ok, map()} | {:error, term()}
Deletes a task.
@spec get(Attio.Client.t(), String.t()) :: {:ok, map()} | {:error, term()}
Gets a single task by its ID.
@spec list( Attio.Client.t(), keyword() ) :: {:ok, map()} | {:error, term()}
Lists tasks. Returns one page.
Options
:limit- Number of tasks per page.:cursor- Pagination cursor from a previous response.
@spec stream( Attio.Client.t(), keyword() ) :: Enumerable.t()
Returns a lazy stream of all tasks across all pages.
Accepts the same options as list/2. Raises {:attio_stream_error, error}
on API failure mid-stream. Use stream_all/2 if you prefer a standard
{:ok, list} | {:error, term()} return value.
@spec stream_all( Attio.Client.t(), keyword() ) :: {:ok, [map()]} | {:error, Attio.Error.t() | Exception.t()}
Fetches all tasks across all pages and returns them as a list.
Accepts the same options as list/2. Returns {:ok, [map()]} on success
or {:error, term()} if any page request fails. Unlike stream/2, the
entire result set is loaded into memory.
Example
{:ok, tasks} = Attio.Tasks.stream_all(client)
@spec update(Attio.Client.t(), String.t(), map()) :: {:ok, map()} | {:error, term()}
Updates a task.