Skip to main content

Criar um Workflow Completo

import Triglit from 'triglit';

const client = new Triglit({ apiKey: 'sk_...' });

async function createCompleteWorkflow() {
  // 1. Criar o workflow
  const workflow = await client.workflows.create({
    name: 'Processar Pedido',
    description: 'Workflow para processar pedidos de clientes',
  });

  // 2. Criar uma versão
  const version = await client.workflows.versions.create({
    workflowId: workflow.id,
    nodes: [
      {
        id: 'node-1',
        type: 'trigger_webhook',
        name: 'Webhook Trigger',
        config: { path: '/pedido' },
        inputSchema: {},
        outputSchema: {},
      },
      {
        id: 'node-2',
        type: 'transform',
        name: 'Transform Data',
        config: {
          transformType: 'expression',
          expression: '{ ...input, status: "processed" }',
        },
        inputSchema: {},
        outputSchema: {},
      },
    ],
    edges: [
      {
        id: 'edge-1',
        sourceNodeId: 'node-1',
        targetNodeId: 'node-2',
      },
    ],
  });

  // 3. Publicar a versão
  const published = await client.workflows.versions.publish(version.id);

  // 4. Criar um trigger
  const trigger = await client.triggers.create({
    workflowVersionId: version.id,
    type: 'webhook',
    isActive: true,
  });

  return { workflow, version, trigger };
}

Gerenciar Triggers

async function manageTriggers(client: Triglit, workflowVersionId: string) {
  // Listar todos os triggers
  const allTriggers = await client.triggers.list();
  
  // Listar triggers de uma versão específica
  const versionTriggers = await client.triggers.listByWorkflowVersion(
    workflowVersionId
  );

  // Criar um novo trigger
  const newTrigger = await client.triggers.create({
    workflowVersionId,
    type: 'webhook',
    name: 'Meu Webhook',
    isActive: true,
  });

  // Atualizar um trigger
  const updated = await client.triggers.update(newTrigger.id, {
    isActive: false,
  });

  // Deletar um trigger
  await client.triggers.delete(newTrigger.id);
}

Processar Todos os Workflows

async function processAllWorkflows(client: Triglit) {
  const workflows = [];
  
  // Auto-paginação: busca todos os workflows automaticamente
  for await (const workflow of client.workflows.list({ pageSize: 50 })) {
    workflows.push(workflow);
    console.log(`Processando: ${workflow.name}`);
  }
  
  return workflows;
}

Tratamento de Erros Robusto

async function safeCreateTrigger(client: Triglit, params: Triglit.TriggerCreateParams) {
  try {
    return await client.triggers.create(params);
  } catch (error) {
    if (error instanceof Triglit.AuthenticationError) {
      console.error('Erro de autenticação. Verifique sua chave de API.');
      throw new Error('Falha na autenticação');
    } else if (error instanceof Triglit.RateLimitError) {
      console.warn('Rate limit excedido. Aguardando...');
      // O SDK já faz retry automático, mas você pode adicionar lógica adicional
      throw error;
    } else if (error instanceof Triglit.APIError) {
      console.error(`Erro da API: ${error.status} - ${error.message}`);
      throw error;
    } else {
      // Erro não relacionado à API
      throw error;
    }
  }
}

Referência Completa da API

Para ver todos os métodos e tipos disponíveis, consulte a documentação completa da API no GitHub.