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. .. contents:: Nesta página :local: :depth: 2 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. .. code-block:: json { "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. .. code-block:: json { "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. .. code-block:: json { "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. .. code-block:: json { "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). .. code-block:: json { "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``:** .. list-table:: :header-rows: 1 :widths: 25 75 * - 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. .. code-block:: json { "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: .. code-block:: json { "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..." } ] } ] }