---
agentTools:
  projectIndex: https://docs.wiboor.com.br/llms.txt
  projectSearch: https://docs.wiboor.com.br/agentSearch?query=term1%20term2
---

# Listar as tarefas abertas de um usuário

Percorra todas as páginas de GET /v1/tasks filtrando por executor e status, e monte um painel ou relatório com o resultado.

## Encontre o usuário

> Linhas destacadas: 4-6

[Listar espaços](/reference/listar-todos-os-espacos-que-seu-usuario-esta-com-seus-membros) traz os espaços do dono do token com os membros (`users`: `id`, `name`, `email`). Guarde o `id` no seu sistema para não procurar toda vez.

## Percorra as páginas

> Linhas destacadas: 8-17

[Listar tarefas](/reference/listar-todas-as-tarefas-com-filtros) é paginada: `count` vai até 100 por página e `page` começa em 1. Repita `status[]` para cada status. Pare quando `pagination.currentPage` chegar a `pagination.lastPage`. Outros filtros úteis: `projectId`, `departmentIds[]`, `search`, `startDate` e `endDate`.

## Use o resultado

> Linhas destacadas: 19-21

O `endedAt` é o prazo planejado e o `taskNumber` é o número que as pessoas veem no Wiboor. Para trazer comentários ou checklist junto, use o parâmetro `join`.

## Código

```js Node.js
const BASE_URL = 'https://api.azzimuti.com.br/v1';
const headers = { Authorization: `Bearer ${process.env.WIBOOR_TOKEN}` };

// 1. Descubra o ID do usuário pelos membros dos seus espaços
const spaces = await (await fetch(`${BASE_URL}/departments`, { headers })).json();
const user = spaces.flatMap(space => space.users).find(u => u.email === 'ana@exemplo.com.br');

// 2. Percorra todas as páginas das tarefas abertas dele
const tasks = [];
for (let page = 1; ; page++) {
  const params = new URLSearchParams({ userExecutorId: user.id, count: '100', page: String(page) });
  for (const status of ['NOT_STARTED', 'STARTED', 'PAUSED']) params.append('status[]', status);

  const { data, pagination } = await (await fetch(`${BASE_URL}/tasks?${params}`, { headers })).json();
  tasks.push(...data);
  if (pagination.currentPage >= pagination.lastPage) break;
}

// 3. Ordene pelo prazo
tasks.sort((a, b) => new Date(a.endedAt) - new Date(b.endedAt));
console.log(tasks.map(t => `#${t.taskNumber} ${t.title} (${t.status})`));
```

## Resposta

```json
{
  "data": [
    {
      "id": "0197b3f0-1a2b-7c3d-8e4f-5a6b7c8d9e0f",
      "taskNumber": 85731,
      "title": "Follow-up: ACME Ltda. entrou em Proposta",
      "status": "STARTED",
      "priority": 7,
      "endedAt": "2026-11-05T21:00:00.000Z"
    }
  ],
  "pagination": {
    "totalItems": 37,
    "perPage": 100,
    "currentPage": 1,
    "lastPage": 1
  }
}
```
