Dask
Referencia da Dask API para WorkItems, contatos e workspace.
A Dask API usa Authorization Bearer com PAT criada dentro de um workspace. Cada token carrega scopes, revalida permissoes no backend e so opera nos dados do workspace emissor.
Autenticacao
Headers obrigatorios
Crie uma PAT em Settings > Integrations > Dask API. O segredo aparece somente no momento da criacao e deve ser usado apenas server-to-server.
- Envie Authorization: Bearer dask_live_... em todas as chamadas.
- Envie Idempotency-Key em POST, PATCH e DELETE para proteger replays.
- Envie Content-Type: application/json quando houver body.
- Nunca envie o segredo para browser, apps publicos ou logs.
- A PAT pertence a um workspace e falha se tentar acessar dados de outro workspace.
- Reusar a mesma Idempotency-Key com outro metodo, path, query ou payload retorna conflito.
Workspace
Rotas de discovery
Use estas rotas antes de gravar dados para descobrir ids, slugs, tags e campos customizados publicados no workspace.
-
GET /api/v1/dask/api-keyAuth: PAT valida
Retorna id, workspaceId, name, keyPrefix, scopes e createdByUserId da PAT autenticada sem expor o segredo completo.
-
GET /api/v1/dask/workspace/configScope: workspace:schema:read
Retorna snapshot de configuracao operacional do workspace para montar payloads validos.
-
GET /api/v1/dask/workspace/item-typesScope: workspace:schema:read
Lista tipos aceitos em WorkItems. Use typeId ou typeSlug em criacao e atualizacao.
-
GET /api/v1/dask/workspace/workflow-statesScope: workspace:schema:read
Lista estados de workflow aceitos. Use stateId ou stateSlug em criacao e atualizacao.
-
GET /api/v1/dask/workspace/tagsScope: workspace:schema:read
Lista tags disponiveis para associar a WorkItems.
-
GET /api/v1/dask/workspace/custom-fieldsScope: workspace:schema:read
Lista campos customizados publicados para montar customFieldValues.
WorkItems
CRUD de WorkItems
Todas as rotas sao tenant-scoped pelo workspace da PAT e revalidam permissao de board no backend.
-
GET /api/v1/dask/work-itemsScope: workitems:read
Query: search, limit, pageSize, cursor, typeId/typeSlug, stateId/stateSlug, assigneeId, dueDateFrom/dueDateTo, createdAtFrom/createdAtTo, updatedAtFrom/updatedAtTo, customFieldFilters, sortBy e sortDirection. Retorna items, nextCursor e total.
-
GET /api/v1/dask/work-items/{itemId}Scope: workitems:read
Path param: itemId uuid. Retorna a projecao publica do WorkItem quando ele pertence ao workspace da PAT.
-
POST /api/v1/dask/work-itemsScope: workitems:create
Payload: title obrigatorio; description, boardId, typeId/typeSlug, stateId/stateSlug, columnId, assigneeId, parentId, contactId, dueDate, position, checklist, metadata, fields, tags e customFieldValues opcionais. Exige Idempotency-Key. Retorna 201 com o WorkItem.
-
PATCH /api/v1/dask/work-items/{itemId}Scope: workitems:update
Path param: itemId uuid. Payload parcial com pelo menos um campo permitido: title, description, typeId/typeSlug, stateId/stateSlug, columnId, assigneeId, parentId, contactId, dueDate, position, checklist, metadata, fields ou customFieldValues. Exige Idempotency-Key. Retorna 200 com o WorkItem atualizado.
-
DELETE /api/v1/dask/work-items/{itemId}Scope: workitems:delete
Path param: itemId uuid. Remove o WorkItem, exige Idempotency-Key e retorna 204 sem corpo.
Contatos
CRUD de contatos
Contatos usam o modulo commercial e exigem que o usuario emissor da PAT continue membro do workspace.
-
GET /api/v1/dask/contactsScope: contacts:read
Query: search, lifecycleStage, originId, hasCustomer, hasWorkItem, hasWhatsapp, hasEmail, productId, planId, createdFrom, updatedAtFrom, updatedAtTo, limit, pageSize e cursor. Retorna items e nextCursor.
-
GET /api/v1/dask/contacts/{contactId}Scope: contacts:read
Path param: contactId uuid. Retorna o contato quando ele pertence ao workspace da PAT.
-
POST /api/v1/dask/contactsScope: contacts:create ou contacts:write
Payload aceita displayName, contactName, companyId, companyName, customerName, primaryEmail, primaryPhone, primaryWhatsapp, legalName, document, addressText, addressCity, addressState, addressCountry, logoUrl, originId, referrerName, productId, externalSource, externalId, lifecycleStage, marketingStatus, whatsappOptInStatus, emailOptInStatus e metadata. Pelo menos uma identidade deve existir: displayName, contactName, companyName, customerName, primaryEmail, primaryPhone, primaryWhatsapp ou document. Exige Idempotency-Key e retorna 201 com created e contact.
-
PATCH /api/v1/dask/contacts/{contactId}Scope: contacts:update ou contacts:write
Path param: contactId uuid. Payload parcial com pelo menos um campo de contato. Exige Idempotency-Key e retorna 200 com o contato atualizado.
-
DELETE /api/v1/dask/contacts/{contactId}Scope: contacts:delete
Path param: contactId uuid. Remove o contato, exige Idempotency-Key e retorna 204 sem corpo.
Exemplos
cURL e respostas
A pagina renderizada mostra um bloco cURL copiavel para cada rota, alem de exemplo de entrada e saida em JSON.
- Criar contato: curl -X POST https://my-dask.com/api/v1/dask/contacts -H "Authorization: Bearer dask_live_..." -H "Content-Type: application/json" -H "Idempotency-Key: contact-create-001" --data '{ "displayName": "Maria Silva", "primaryEmail": "[email protected]" }'
- Criar WorkItem: curl -X POST https://my-dask.com/api/v1/dask/work-items -H "Authorization: Bearer dask_live_..." -H "Content-Type: application/json" -H "Idempotency-Key: workitem-create-001" --data '{ "title": "Follow up", "typeSlug": "task" }'
- Resposta de contato: { "created": true, "contact": { "id": "uuid", "displayName": "Maria Silva" } }
- Resposta de WorkItem: { "id": "uuid", "title": "Follow up", "typeSlug": "task" }
Erros
Codigos comuns
Erros conhecidos incluem WORKSPACE_API_KEY_INVALID para PAT invalida, WORKSPACE_API_KEY_FORBIDDEN para scope ausente, WORKSPACE_API_KEY_ACTOR_NOT_MEMBER quando o emissor nao e mais membro, DASK_API_IDEMPOTENCY_KEY_REQUIRED quando uma mutacao nao envia Idempotency-Key, DASK_API_IDEMPOTENCY_KEY_TOO_LONG quando a chave passa de 160 caracteres e DASK_API_IDEMPOTENCY_KEY_CONFLICT quando a mesma chave e usada com outro payload.