TRELLO_UPDATE_CARD - Atualizar Card no Trello
O que é este Node?
O TRELLO_UPDATE_CARD é o node responsável por atualizar informações de cards existentes no Trello, permitindo modificar nome, descrição, data de vencimento, membros e etiquetas sem precisar criar um novo card.
Por que este Node existe?
Cards no Trello passam por mudanças constantes: prioridades mudam, informações são atualizadas, membros são reatribuídos. Fazer essas alterações manualmente é improdutivo. O TRELLO_UPDATE_CARD existe para:
- Atualizar Status: Modificar descrição com novos updates do cliente ou progresso
- Reatribuir Tarefas: Trocar membros responsáveis baseado em disponibilidade ou especialidade
- Ajustar Prioridades: Adicionar/remover labels conforme urgência muda
- Estender Prazos: Modificar datas de vencimento quando necessário
Como funciona internamente?
Quando o TRELLO_UPDATE_CARD é executado, o sistema:
- Valida Credenciais: Verifica API Key e Token do Trello
- Valida Card ID: Confirma que o card existe
- Prepara Alterações: Organiza apenas os campos que serão modificados
- Faz Requisição: PUT para
https://api.trello.com/1/cards/{cardId}com novos dados - Se erro: Retorna mensagem (card não existe, sem permissão, etc.)
- Se sucesso: Retorna confirmação da atualização
Código interno (productivity-executors.service.ts):
// NOTA: Esta operação ainda não está implementada no código atual
// Implementação sugerida baseada no padrão Trello API:
case 'updateCard':
const updateCardResponse = await firstValueFrom(
this.httpService.put(`${trelloApiUrl}/cards/${data.cardId}${auth}`,
{
name: data.cardName,
desc: data.description,
due: data.dueDate,
idMembers: data.memberIds,
idLabels: data.labelIds,
}
)
);
return {
success: true,
cardId: updateCardResponse.data.id,
updated: true,
};
Quando você DEVE usar este Node?
Use TRELLO_UPDATE_CARD sempre que precisar de modificação de cards existentes:
Casos de uso
- Atualização de Progresso: Cliente fornece nova informação → Atualiza descrição do card de suporte
- Mudança de Prioridade: Gestor define task como urgente → Adiciona label "Urgente" ao card
- Reatribuição: Desenvolvedor sai de férias → Reatribui cards para outro membro da equipe
- Extensão de Prazo: Cliente solicita mais tempo → Atualiza data de vencimento do card
Quando NÃO usar TRELLO_UPDATE_CARD
- Criar Novo Card: Use TRELLO_CREATE_CARD ao invés
- Mover Entre Listas: Use TRELLO_MOVE_CARD ao invés (é específico para mudança de lista)
- Adicionar Comentário: Use TRELLO_ADD_COMMENT ao invés (comentários são separados)
Parâmetros Detalhados
apiKey (string, obrigatório)
O que é: Chave de API do Trello para autenticação.
Como obter: Acesse https://trello.com/app-key
Flow completo para testar:
{
"name": "Teste Trello Update - API Key",
"nodes": [
{
"id": "start_1",
"type": "start",
"position": { "x": 100, "y": 100 },
"data": { "label": "Início" }
},
{
"id": "input_1",
"type": "input",
"position": { "x": 300, "y": 100 },
"data": {
"label": "Coletar API Key",
"parameters": {
"message": "Digite sua API Key do Trello:",
"variableName": "trello_api_key"
}
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Confirmar",
"parameters": {
"message": "API Key configurada!"
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 700, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "input_1" },
{ "source": "input_1", "target": "message_1" },
{ "source": "message_1", "target": "end_1" }
]
}
Teste: Digite sua API Key. O sistema confirmará.
apiToken (string, obrigatório)
O que é: Token de autenticação do Trello.
Como obter: Gere em https://trello.com/app-key (seção Token)
Flow completo para testar:
{
"name": "Teste Trello Update - Token",
"nodes": [
{
"id": "start_1",
"type": "start",
"position": { "x": 100, "y": 100 },
"data": { "label": "Início" }
},
{
"id": "input_1",
"type": "input",
"position": { "x": 300, "y": 100 },
"data": {
"label": "Coletar Token",
"parameters": {
"message": "Digite seu Token do Trello:",
"variableName": "trello_token"
}
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Confirmar",
"parameters": {
"message": "Token configurado!"
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 700, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "input_1" },
{ "source": "input_1", "target": "message_1" },
{ "source": "message_1", "target": "end_1" }
]
}
Teste: Digite seu Token. O sistema confirmará.
cardId (string, obrigatório)
O que é: ID do card que será atualizado.
Como obter:
1. Abra o card no Trello
2. URL: https://trello.com/c/CARD_ID/nome
3. Ou pegue do retorno do TRELLO_CREATE_CARD
4. Ou use API: GET https://api.trello.com/1/lists/LIST_ID/cards
Flow completo para testar:
{
"name": "Teste Trello Update - Card ID",
"nodes": [
{
"id": "start_1",
"type": "start",
"position": { "x": 100, "y": 100 },
"data": { "label": "Início" }
},
{
"id": "input_1",
"type": "input",
"position": { "x": 300, "y": 100 },
"data": {
"label": "Coletar Card ID",
"parameters": {
"message": "Digite o ID do card a atualizar:",
"variableName": "card_id"
}
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Confirmar",
"parameters": {
"message": "Card {{card_id}} será atualizado"
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 700, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "input_1" },
{ "source": "input_1", "target": "message_1" },
{ "source": "message_1", "target": "end_1" }
]
}
Teste: Digite um Card ID válido. O sistema confirmará.
cardName (string, opcional)
O que é: Novo nome/título do card.
Padrão: Mantém o nome atual se não fornecido
Flow completo para testar:
{
"name": "Teste Trello Update - Nome",
"nodes": [
{
"id": "start_1",
"type": "start",
"position": { "x": 100, "y": 100 },
"data": { "label": "Início" }
},
{
"id": "input_1",
"type": "input",
"position": { "x": 300, "y": 100 },
"data": {
"label": "Novo Nome",
"parameters": {
"message": "Digite o novo nome do card:",
"variableName": "novo_nome"
}
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Confirmar",
"parameters": {
"message": "Card será renomeado para: {{novo_nome}}"
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 700, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "input_1" },
{ "source": "input_1", "target": "message_1" },
{ "source": "message_1", "target": "end_1" }
]
}
Teste: Digite "Bug CRÍTICO - Login falha". O sistema confirmará o novo nome.
description (string, opcional)
O que é: Nova descrição do card (suporta Markdown).
Padrão: Mantém descrição atual se não fornecido
Flow completo para testar:
{
"name": "Teste Trello Update - Descrição",
"nodes": [
{
"id": "start_1",
"type": "start",
"position": { "x": 100, "y": 100 },
"data": { "label": "Início" }
},
{
"id": "input_1",
"type": "input",
"position": { "x": 300, "y": 100 },
"data": {
"label": "Nova Descrição",
"parameters": {
"message": "Digite a nova descrição:",
"variableName": "nova_descricao"
}
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Confirmar",
"parameters": {
"message": "Descrição atualizada!"
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 700, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "input_1" },
{ "source": "input_1", "target": "message_1" },
{ "source": "message_1", "target": "end_1" }
]
}
Teste: Digite nova descrição. O sistema confirmará a atualização.
dueDate (string, opcional)
O que é: Nova data de vencimento (ISO 8601).
Padrão: Mantém data atual ou null se não fornecido
Flow completo para testar:
{
"name": "Teste Trello Update - Data",
"nodes": [
{
"id": "start_1",
"type": "start",
"position": { "x": 100, "y": 100 },
"data": { "label": "Início" }
},
{
"id": "date_1",
"type": "date",
"position": { "x": 300, "y": 100 },
"data": {
"label": "Nova Data",
"parameters": {
"message": "Digite a nova data de vencimento:",
"variableName": "nova_data",
"format": "DD/MM/YYYY"
}
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Confirmar",
"parameters": {
"message": "Novo prazo: {{nova_data}}"
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 700, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "date_1" },
{ "source": "date_1", "target": "message_1" },
{ "source": "message_1", "target": "end_1" }
]
}
Teste: Digite "28/02/2025". O sistema confirmará o novo prazo.
memberIds (array, opcional)
O que é: Novos IDs dos membros (substitui os atuais).
Padrão: Mantém membros atuais se não fornecido
labelIds (array, opcional)
O que é: Novos IDs das labels (substitui as atuais).
Padrão: Mantém labels atuais se não fornecido
Parâmetros
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| operation | string | Sim | Sempre "updateCard" |
| apiKey | string | Sim | API Key do Trello |
| apiToken | string | Sim | Token de autenticação |
| cardId | string | Sim | ID do card a atualizar |
| cardName | string | Não | Novo nome do card |
| description | string | Não | Nova descrição |
| dueDate | string | Não | Nova data de vencimento |
| memberIds | array | Não | Novos membros |
| labelIds | array | Não | Novas labels |
Exemplo 1: Atualizar Prioridade de Suporte
Objetivo: Quando cliente informa que problema é crítico, atualizar card com label urgente
JSON para Importar
{
"name": "Atualizar Prioridade - Trello",
"nodes": [
{
"id": "start_1",
"type": "start",
"position": { "x": 100, "y": 100 },
"data": { "label": "Início" }
},
{
"id": "message_1",
"type": "message",
"position": { "x": 300, "y": 100 },
"data": {
"label": "Perguntar",
"parameters": {
"message": "Qual é o nível de urgência?\n\n1 - Baixa\n2 - Média\n3 - Alta\n4 - CRÍTICA"
}
}
},
{
"id": "number_1",
"type": "number",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Nível",
"parameters": {
"message": "Digite o número:",
"variableName": "urgencia",
"min": 1,
"max": 4
}
}
},
{
"id": "condition_1",
"type": "condition",
"position": { "x": 700, "y": 100 },
"data": {
"label": "É Crítico?",
"parameters": {
"condition": "{{urgencia}} >= 4"
}
}
},
{
"id": "trello_1",
"type": "trello_update_card",
"position": { "x": 900, "y": 50 },
"data": {
"label": "Marcar Urgente",
"parameters": {
"operation": "updateCard",
"apiKey": "sua_api_key",
"apiToken": "seu_token",
"cardId": "{{ticket_card_id}}",
"cardName": "URGENTE - {{card_original_name}}",
"labelIds": ["id_label_critico"]
}
}
},
{
"id": "trello_2",
"type": "trello_update_card",
"position": { "x": 900, "y": 150 },
"data": {
"label": "Manter Normal",
"parameters": {
"operation": "updateCard",
"apiKey": "sua_api_key",
"apiToken": "seu_token",
"cardId": "{{ticket_card_id}}",
"labelIds": ["id_label_normal"]
}
}
},
{
"id": "message_2",
"type": "message",
"position": { "x": 1100, "y": 100 },
"data": {
"label": "Confirmar",
"parameters": {
"message": "✅ Ticket atualizado com prioridade!"
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 1300, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "message_1" },
{ "source": "message_1", "target": "number_1" },
{ "source": "number_1", "target": "condition_1" },
{ "source": "condition_1", "target": "trello_1", "label": "true" },
{ "source": "condition_1", "target": "trello_2", "label": "false" },
{ "source": "trello_1", "target": "message_2" },
{ "source": "trello_2", "target": "message_2" },
{ "source": "message_2", "target": "end_1" }
]
}
Saída esperada:
Sistema: Qual é o nível de urgência?
1 - Baixa
2 - Média
3 - Alta
4 - CRÍTICA
Sistema: Digite o número:
Usuário: 4
Sistema: ✅ Ticket atualizado com prioridade!
Exemplo 2: Estender Prazo de Tarefa
Objetivo: Cliente solicita extensão de prazo - atualizar data de vencimento
JSON para Importar
{
"name": "Estender Prazo - Trello",
"nodes": [
{
"id": "start_1",
"type": "start",
"position": { "x": 100, "y": 100 },
"data": { "label": "Início" }
},
{
"id": "message_1",
"type": "message",
"position": { "x": 300, "y": 100 },
"data": {
"label": "Solicitar",
"parameters": {
"message": "Solicitar extensão de prazo.\n\nQual a nova data desejada?"
}
}
},
{
"id": "date_1",
"type": "date",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Nova Data",
"parameters": {
"message": "Digite a nova data (DD/MM/YYYY):",
"variableName": "novo_prazo",
"format": "DD/MM/YYYY"
}
}
},
{
"id": "input_1",
"type": "input",
"position": { "x": 700, "y": 100 },
"data": {
"label": "Justificativa",
"parameters": {
"message": "Motivo da extensão:",
"variableName": "motivo"
}
}
},
{
"id": "trello_1",
"type": "trello_update_card",
"position": { "x": 900, "y": 100 },
"data": {
"label": "Atualizar Prazo",
"parameters": {
"operation": "updateCard",
"apiKey": "sua_api_key",
"apiToken": "seu_token",
"cardId": "{{task_card_id}}",
"dueDate": "{{novo_prazo}}",
"description": "{{descricao_original}}\n\n---\n**Prazo estendido**\n**Nova data:** {{novo_prazo}}\n**Motivo:** {{motivo}}\n**Solicitado por:** {{contact_name}}\n**Data solicitação:** {{timestamp}}"
}
}
},
{
"id": "message_2",
"type": "message",
"position": { "x": 1100, "y": 100 },
"data": {
"label": "Confirmar",
"parameters": {
"message": "✅ Prazo estendido!\n\n📅 Nova data: {{novo_prazo}}\n\nEquipe foi notificada."
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 1300, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "message_1" },
{ "source": "message_1", "target": "date_1" },
{ "source": "date_1", "target": "input_1" },
{ "source": "input_1", "target": "trello_1" },
{ "source": "trello_1", "target": "message_2" },
{ "source": "message_2", "target": "end_1" }
]
}
Saída esperada:
Sistema: Solicitar extensão de prazo. Qual a nova data desejada?
Sistema: Digite a nova data (DD/MM/YYYY):
Usuário: 15/03/2025
Sistema: Motivo da extensão:
Usuário: Ajustes solicitados pelo cliente
Sistema: ✅ Prazo estendido!
📅 Nova data: 15/03/2025
Equipe foi notificada.
Resposta do Node
{
"success": true,
"cardId": "507f1f77bcf86cd799439011",
"updated": true
}
Boas Práticas
✅ SIM:
- Sempre inclua motivo da atualização na descrição
- Use logs/histórico das mudanças na descrição
- Valide se card existe antes de atualizar
- Notifique membros sobre mudanças importantes
- Mantenha registro de quem solicitou a atualização
❌ NÃO:
- Não sobrescreva informações importantes sem backup
- Não remova membros sem notificar
- Não altere prioridades sem justificativa
- Não use updateCard para mover entre listas (use moveCard)
Dicas
💡 Histórico de Mudanças: Sempre adicione informações à descrição em vez de substituir - mantenha log completo das alterações
💡 Timestamps: Inclua data/hora e autor de cada atualização para rastreabilidade
💡 Notificações: Combine com envio de mensagem WhatsApp para notificar stakeholders sobre mudanças importantes
Próximo Node
→ TRELLO_CREATE_CARD - Criar novos cards → TRELLO_MOVE_CARD - Mover cards entre listas → TRELLO_ADD_COMMENT - Adicionar comentários