Configurações Avançadas na Criação de Fluxos

O endpoint POST /flow/init suporta diversas estratégias de ordenamento e restrição dos signatários através da combinação dos campos priority, quorum_required e config.

Esta seção apresenta os padrões de configuração disponíveis com exemplos práticos.

Assinatura Mista (Padrão)

O cenário mais comum: pools com prioridades diferentes criam uma sequência de assinatura, onde cada grupo assina na ordem definida.

Caso de uso: Testemunhas assinam primeiro, depois o diretor aprova.

{
  "file_name": "contrato.pdf",
  "document": "JVBERi0xLjQK...",
  "webhook": "https://api.suaempresa.com/callback",
  "pools": [
    {
      "alias": "Testemunhas (Ambos assinam)",
      "priority": 10,
      "signers": [
        {
          "email": "testemunha1@empresa.com",
          "document": "11111111111"
        },
        {
          "email": "testemunha2@empresa.com",
          "document": "22222222222"
        }
      ]
    },
    {
      "alias": "Diretor (Aprovação Final)",
      "priority": 20,
      "signers": [
        {
          "email": "diretor@empresa.com",
          "document": "33333333333"
        }
      ]
    }
  ]
}

Comportamento: Ambas as testemunhas do pool com priority: 10 são notificadas simultaneamente e podem assinar em paralelo. Somente após ambas assinarem, o diretor (priority: 20) é notificado.

Assinatura Estritamente Sequencial

Cada pool contém um único signatário com prioridade exclusiva, criando uma cadeia estritamente linear.

Caso de uso: Fluxo de aprovação com etapas bem definidas — solicitante, revisão técnica e aprovação final.

{
  "file_name": "documento.pdf",
  "document": "JVBERi0xLjQK...",
  "webhook": "https://api.suaempresa.com/callback",
  "pools": [
    {
      "alias": "1. Solicitante",
      "priority": 1,
      "signers": [
        { "email": "solicitante@empresa.com", "document": "11111111111" }
      ]
    },
    {
      "alias": "2. Revisão Técnica",
      "priority": 2,
      "signers": [
        { "email": "tecnico@empresa.com", "document": "22222222222" }
      ]
    },
    {
      "alias": "3. Aprovação Final (Diretoria)",
      "priority": 3,
      "signers": [
        { "email": "diretor@empresa.com", "document": "33333333333" }
      ]
    }
  ]
}

Comportamento: O signatário 1 é notificado primeiro. Somente após sua assinatura, o signatário 2 é notificado, e assim por diante.

Assinatura Totalmente Concorrente

Todos os signatários em um único pool com a mesma prioridade. Todos são notificados ao mesmo tempo e podem assinar em qualquer ordem.

Caso de uso: Sócios que precisam assinar o mesmo documento sem ordem de precedência.

{
  "file_name": "contrato_social.pdf",
  "document": "JVBERi0xLjQK...",
  "webhook": "https://api.suaempresa.com/callback",
  "pools": [
    {
      "alias": "Sócios (Assinatura Simultânea)",
      "priority": 1,
      "signers": [
        { "email": "socio1@empresa.com", "document": "11111111111" },
        { "email": "socio2@empresa.com", "document": "22222222222" },
        { "email": "socio3@empresa.com", "document": "33333333333" }
      ]
    }
  ]
}

Comportamento: Os três sócios recebem o e-mail ao mesmo tempo. A ordem em que assinam é irrelevante. O fluxo é concluído quando todos assinarem.

Quórum Parcial

O campo quorum_required define o número mínimo de assinaturas necessárias para que um pool seja considerado concluído, sem exigir que todos os signatários do pool assinem.

Caso de uso: Parecer jurídico que precisa de apenas 1 advogado de um grupo de 2, seguido pela aprovação obrigatória do CEO.

{
  "file_name": "parecer.pdf",
  "document": "JVBERi0xLjQK...",
  "webhook": "https://api.suaempresa.com/callback",
  "pools": [
    {
      "alias": "1. Parecer Jurídico (Basta 1 Advogado)",
      "priority": 10,
      "quorum_required": 1,
      "signers": [
        { "email": "advogado1@empresa.com", "document": "11111111111" },
        { "email": "advogado2@empresa.com", "document": "22222222222" }
      ]
    },
    {
      "alias": "2. Aprovação do CEO",
      "priority": 20,
      "signers": [
        { "email": "ceo@empresa.com", "document": "33333333333" }
      ]
    }
  ]
}

Comportamento: Ambos os advogados são notificados, mas basta que 1 assine para o pool ser concluído e o CEO ser notificado.

Tip

Quando quorum_required não é informado, o padrão é exigir a assinatura de todos os signatários do pool.

Restrição por Tipo de Assinatura no Pool

O campo config no nível do pool permite restringir os tipos de assinatura, perfis e provedores que os signatários daquele pool podem utilizar. Todos os signatários do pool herdam estas restrições.

Caso de uso: Diretoria obrigada a usar certificado qualificado (A1/A3 ICP-Brasil).

{
  "file_name": "ata_conselho.pdf",
  "document": "JVBERi0xLjQK...",
  "webhook": "https://api.suaempresa.com/callback",
  "pools": [
    {
      "alias": "Diretoria (A1/A3 Obrigatório)",
      "priority": 10,
      "config": {
        "allowed_signatures": ["QUALIFIED"],
        "allowed_providers": ["INTEGRAICP"]
      },
      "signers": [
        { "email": "diretor@empresa.com", "document": "11111111111" }
      ]
    }
  ]
}

Comportamento: Ao acessar o link de assinatura, o signatário verá apenas as opções de assinatura qualificada via INTEGRAICP. Provedores de assinatura avançada ou simples não serão exibidos.

Campos disponíveis em ``config``:

Campo

Valores Possíveis

allowed_signatures

QUALIFIED, ADVANCED, SIMPLE

allowed_profile_types

B-B, B-T, B-LT, B-LTA

allowed_providers

INTEGRAICP, PIXSIGN, GOLDID, SAFEWEB, SERPRO

Restrição Mista com Override no Signatário

Quando o config é definido tanto no pool quanto no signatário, o config do signatário sobrescreve o do pool para aquele signatário específico. Isso permite regras diferenciadas dentro do mesmo pool.

Caso de uso: Comitê misto onde o sócio deve usar assinatura qualificada, mas a testemunha pode usar assinatura avançada.

{
  "file_name": "acordo.pdf",
  "document": "JVBERi0xLjQK...",
  "webhook": "https://api.suaempresa.com/callback",
  "pools": [
    {
      "alias": "Comitê Misto",
      "priority": 10,
      "quorum_required": 2,
      "config": {
        "allowed_signatures": ["QUALIFIED"],
        "allowed_providers": ["INTEGRAICP"]
      },
      "signers": [
        {
          "email": "socio@empresa.com",
          "document": "11111111111"
        },
        {
          "email": "testemunha@empresa.com",
          "document": "22222222222",
          "config": {
            "allowed_signatures": ["ADVANCED", "QUALIFIED"],
            "allowed_providers": ["PIXSIGN"]
          }
        }
      ]
    }
  ]
}

Comportamento:

  • O sócio herda as restrições do pool: somente assinatura qualificada via INTEGRAICP.

  • A testemunha possui config próprio que sobrescreve o do pool: pode usar assinatura avançada ou qualificada via PIXSIGN.

  • O pool requer quórum de 2, portanto ambos devem assinar.

Combinando Estratégias

Todas as estratégias acima podem ser combinadas livremente em um único fluxo. Por exemplo, é possível ter um primeiro pool concorrente com quórum parcial e restrição de provedor, seguido por um pool sequencial sem restrições:

{
  "pools": [
    {
      "alias": "Fase 1 — Comitê Técnico (2 de 3)",
      "priority": 1,
      "quorum_required": 2,
      "config": { "allowed_signatures": ["QUALIFIED"] },
      "signers": [
        { "email": "eng1@empresa.com", "document": "111..." },
        { "email": "eng2@empresa.com", "document": "222..." },
        { "email": "eng3@empresa.com", "document": "333..." }
      ]
    },
    {
      "alias": "Fase 2 — Aprovação Jurídica",
      "priority": 2,
      "signers": [
        { "email": "juridico@empresa.com", "document": "444..." }
      ]
    },
    {
      "alias": "Fase 3 — Diretoria",
      "priority": 3,
      "signers": [
        { "email": "ceo@empresa.com", "document": "555..." }
      ]
    }
  ]
}