Guia de início rápido

Comece a usar o Chaindoc em menos de 10 minutos. Este guia abrange tanto a interface web quanto a integração da API para desenvolvedores.

Para utilizadores finais

Passo a passo: a tua primeira assinatura

1Inscreva-seCrie a sua conta gratuita em app.chaindoc.io. Confirme o seu endereço de e-mail.

2Carregar documentoClique em «Novo documento» e carregue o seu ficheiro. Suporta PDF, documentos do Office, imagens (até 50 MB).

3Adicionar detalhes do documentoDigite o nome do documento, a descrição e as tags para organização. Escolha o nível de acesso (privado, equipa ou público).

4Criar pedido de assinaturaClique em «Solicitar assinaturas», adicione os e-mails dos destinatários, defina o prazo e personalize a mensagem.

5Configurar o fluxo de assinaturasEscolha a ordem de assinatura (paralela ou sequencial), habilite o KYC, se necessário, e selecione as preferências de notificação.

6Enviar pedidoRevê e envia. Os destinatários recebem um e-mail com um link seguro para assinatura.

7Acompanhe o progressoMonitorize o estado da assinatura em tempo real. Receba notificações quando as assinaturas forem recolhidas.

8Baixar documento assinadoQuando terminar, baixa o documento assinado com o certificado blockchain.

Para desenvolvedores

Integre o Chaindoc na sua aplicação usando a nossa API REST e SDKs.

1. Obter chaves API

2. Instale o SDK

Escolha o SDK com base no seu caso de uso:

# Node.js 18+ required
npm install @chaindoc_io/server-sdk

3. Crie o seu primeiro documento através da API

server.ts
import { Chaindoc } from '@chaindoc_io/server-sdk';
import { readFile } from 'fs/promises';

// Initialize SDK
const chaindoc = new Chaindoc({
  secretKey: process.env.CHAINDOC_SECRET_KEY!,
});

// 1. Upload document
const buffer = await readFile('./contract.pdf');
const file = new Blob([buffer], { type: 'application/pdf' });
const { media } = await chaindoc.media.upload([file]);

// 2. Create document record
const doc = await chaindoc.documents.create({
  name: 'Service Agreement',
  description: 'Q4 2024 Contract',
  media: media[0],
  status: 'published', // Triggers blockchain verification
  hashtags: ['#contract', '#2024'],
  meta: [{ key: 'client', value: 'Acme Corp' }],
});

console.log('Document created:', doc.documentId);

4. Crie um pedido de assinatura

server.ts
// Create signature request for multiple signers
const sigRequest = await chaindoc.signatures.createRequest({
  versionId: doc.document.versions[0].uuid,
  recipients: [
    { email: 'signer1@example.com' },
    { email: 'signer2@example.com' },
  ],
  deadline: new Date('2024-12-31'),
  message: 'Please review and sign this agreement',
  embeddedFlow: true, // Enable for frontend integration
});

console.log('Signature request created:', sigRequest.signatureRequest.uuid);

5. Integrar a interface de assinatura (front-end)

Para assinatura incorporada na sua aplicação web:

// Create embedded session for signer
const session = await chaindoc.embedded.createSession({
  email: 'signer1@example.com',
  metadata: {
    documentId: doc.documentId,
    signatureRequestId: sigRequest.signatureRequest.uuid,
  },
});

// Return sessionId to frontend
res.json({ sessionId: session.sessionId });

6. Acompanhe o estado e lide com eventos

terminal
// Check signature request status
const status = await chaindoc.signatures.getRequestStatus(
  sigRequest.signatureRequest.uuid
);

if (status.signatureRequest.status === 'completed') {
  console.log('All signatures collected!');
  // Download signed document
  // Send notifications
  // Update your database
}

7. Configurar Webhooks (opcional)

Receba notificações em tempo real sobre eventos:

webhooks.ts
// Configure webhook endpoint
app.post('/webhooks/chaindoc', (req, res) => {
  const event = req.headers['x-webhook-event'];
  const payload = req.body;
  
  switch (event) {
    case 'document.verified':
      console.log('Document verified on blockchain:', payload.txHash);
      break;
    case 'signature.request.completed':
      console.log('All signatures collected!');
      // Send notifications, update status, etc.
      break;
  }
  
  res.status(200).send('OK');
});

Exemplo completo de fluxo de trabalho

Aqui está um exemplo completo que combina todas as etapas:

complete-workflow.ts
import { Chaindoc } from '@chaindoc_io/server-sdk';
import { readFile } from 'fs/promises';

async function createSigningWorkflow() {
  const chaindoc = new Chaindoc({
    secretKey: process.env.CHAINDOC_SECRET_KEY!,
  });
  
  // Step 1: Upload document
  const buffer = await readFile('./contract.pdf');
  const file = new Blob([buffer], { type: 'application/pdf' });
  const { media } = await chaindoc.media.upload([file]);
  
  // Step 2: Create document
  const doc = await chaindoc.documents.create({
    name: 'Service Agreement',
    description: 'Contract for consulting services',
    media: media[0],
    status: 'published',
    hashtags: ['#contract'],
    meta: [],
  });
  
  // Step 3: Create signature request
  const sigRequest = await chaindoc.signatures.createRequest({
    versionId: doc.document.versions[0].uuid,
    recipients: [{ email: 'signer@example.com' }],
    deadline: new Date('2024-12-31'),
    embeddedFlow: true,
  });
  
  // Step 4: Create session for frontend
  const session = await chaindoc.embedded.createSession({
    email: 'signer@example.com',
    metadata: {
      documentId: doc.documentId,
      signatureRequestId: sigRequest.signatureRequest.uuid,
    },
  });
  
  return {
    documentId: doc.documentId,
    sessionId: session.sessionId,
  };
}

// Usage
const { documentId, sessionId } = await createSigningWorkflow();
console.log('Ready for signing:', { documentId, sessionId });

Próximos passos

  • Leia o guia de instalação para obter informações detalhadas sobre a configuração do SDK
  • Explore a documentação da API para obter uma referência completa dos pontos finais
  • Verifique a documentação dos SDKs para exemplos específicos da estrutura (React, Vue, Angular)
  • Configure Webhooks para notificações de eventos em tempo real
  • Revise as práticas recomendadas de segurança para implementação em produção

Perguntas frequentes

Quanto tempo demora a verificação da blockchain?

A verificação da blockchain normalmente é concluída em 1 a 5 minutos, dependendo da rede. Os documentos ficam disponíveis imediatamente, a verificação acontece de forma assíncrona.

Posso testar sem um plano pago?

Sim! O plano gratuito inclui acesso à interface web. O acesso à API requer o plano Business, mas podes usar o ambiente sandbox para testes.

As assinaturas são juridicamente vinculativas?

Sim, as assinaturas Chaindoc estão em conformidade com os regulamentos eIDAS, ESIGN Act e UETA. A verificação da blockchain fornece provas legais adicionais.

Que formatos de ficheiro são suportados?

PDF, DOC, DOCX, XLS, XLSX, PPT, PPTX, TXT, JPG, PNG, GIF, WEBP, SVG, MP4, AVI, MOV, WMV. Tamanho máximo do ficheiro: 50 MB.