Guias de Desenvolvimento

Signing Sessions

Guias dos SDKs

Evidências e Verificação

Após a conclusão de uma transação, a API gera um pacote de evidências com todas as informações da operação. A verificação pública permite que terceiros validem a autenticidade sem autenticação.


Passo 1: Obter evidências (autenticado)

Retorna o pacote completo de evidências de uma transação concluída.

const evidence = await client.evidence.get(tx.transactionId);

console.log(evidence.evidenceId);
console.log(evidence.status);
console.log(evidence.signer.name);
console.log(evidence.signer.userExternalId);

// Documento assinado
if (evidence.document) {
  console.log(evidence.document.hash);     // SHA-256 do documento
  console.log(evidence.document.filename);
}

// Etapas com resultados
for (const step of evidence.steps) {
  console.log(step.type, step.status, step.completedAt);
}
evidence = client.evidence.get(tx.transaction_id)

print(evidence.evidence_id)
print(evidence.status)
print(evidence.signer.name)

if evidence.document:
    print(evidence.document.hash)
    print(evidence.document.filename)

for step in evidence.steps:
    print(step.type, step.status, step.completed_at)
evidence, _ := client.Evidence.Get(ctx, tx.TransactionID)

fmt.Println(evidence.EvidenceID)
fmt.Println(evidence.Status)
fmt.Println(evidence.Signer.Name)

if evidence.Document != nil {
    fmt.Println(evidence.Document.Hash)
    fmt.Println(evidence.Document.Filename)
}

for _, step := range evidence.Steps {
    fmt.Println(step.Type, step.Status, step.CompletedAt)
}
Evidence evidence = client.evidence().get(tx.transactionId);

System.out.println(evidence.evidenceId);
System.out.println(evidence.status);
System.out.println(evidence.signer.name);

if (evidence.document != null) {
    System.out.println(evidence.document.hash);
    System.out.println(evidence.document.filename);
}

for (Evidence.EvidenceStep step : evidence.steps) {
    System.out.println(step.type + " " + step.status);
}
$evidence = $client->evidence->get($tx->transactionId);

echo $evidence->evidenceId;
echo $evidence->status;
echo $evidence->signer['name'];

if ($evidence->document) {
    echo $evidence->document['hash'];
    echo $evidence->document['filename'];
}

foreach ($evidence->steps as $step) {
    echo $step['type'] . ' ' . $step['status'];
}

Passo 2: Verificação pública (sem autenticação)

Endpoint público que permite a qualquer pessoa verificar a autenticidade de uma evidência. Não requer token de acesso.

const result = await client.verification.verify(evidenceId);

console.log(result.evidenceId);
console.log(result.transactionId);
console.log(result.status);              // COMPLETED
console.log(result.signer.displayName);
console.log(result.completedAt);
result = client.verification.verify(evidence_id)

print(result.evidence_id)
print(result.transaction_id)
print(result.status)              # COMPLETED
print(result.signer.display_name)
result, _ := client.Verification.Verify(ctx, evidenceID)

fmt.Println(result.EvidenceID)
fmt.Println(result.TransactionID)
fmt.Println(result.Status)            // COMPLETED
fmt.Println(result.Signer.DisplayName)
VerificationResponse result = client.verification().verify(evidenceId);

System.out.println(result.evidenceId);
System.out.println(result.transactionId);
System.out.println(result.status);              // COMPLETED
System.out.println(result.signer.displayName);
$result = $client->verification->verify($evidenceId);

echo $result->evidenceId;
echo $result->transactionId;
echo $result->status;                  // COMPLETED
echo $result->signer['displayName'];

Passo 3: Downloads (sem autenticação)

Obtém URLs pré-assinadas para download dos artefatos de evidência. Também público.

const downloads = await client.verification.downloads(evidenceId);

console.log(downloads.expiresAt);

// Relatório de evidências (PDF com todas as etapas, timestamps e resultados)
if (downloads.evidenceReportUrl) {
  console.log(downloads.evidenceReportUrl);
}

// Documento assinado (PDF com assinaturas digitais embutidas)
if (downloads.signedDocumentUrl) {
  console.log(downloads.signedDocumentUrl);
}
downloads = client.verification.downloads(evidence_id)

print(downloads.expires_at)

if downloads.evidence_report_url:
    print(downloads.evidence_report_url)

if downloads.signed_document_url:
    print(downloads.signed_document_url)
downloads, _ := client.Verification.Downloads(ctx, evidenceID)

fmt.Println(downloads.ExpiresAt)

if downloads.EvidenceReportURL != "" {
    fmt.Println(downloads.EvidenceReportURL)
}
if downloads.SignedDocumentURL != "" {
    fmt.Println(downloads.SignedDocumentURL)
}
VerificationDownloadsResponse downloads = client.verification().downloads(evidenceId);

System.out.println(downloads.expiresAt);

if (downloads.evidenceReportUrl != null) {
    System.out.println(downloads.evidenceReportUrl);
}
if (downloads.signedDocumentUrl != null) {
    System.out.println(downloads.signedDocumentUrl);
}
$downloads = $client->verification->downloads($evidenceId);

echo $downloads->expiresAt;

if ($downloads->evidenceReportUrl) {
    echo $downloads->evidenceReportUrl;
}
if ($downloads->signedDocumentUrl) {
    echo $downloads->signedDocumentUrl;
}

Tipos de download

Artefato Campo Descrição
Relatório de evidências evidenceReportUrl PDF com todas as etapas, timestamps, resultados e metadados
Documento assinado signedDocumentUrl PDF original com assinaturas digitais embutidas

As URLs são pré-assinadas e expiram no horário indicado em expiresAt.