O propósito ACTION_AUTHENTICATION permite autenticar uma ação sem associar um documento. Útil para aprovações, confirmações de operações financeiras, ou qualquer cenário onde é necessário registrar o consentimento do usuário para uma ação específica.
O campo document não é utilizado. Em vez disso, use o campo action com metadados da operação.
const tx = await client.transactions.create({
purpose: 'ACTION_AUTHENTICATION',
policy: { profile: 'CLICK_ONLY' },
signer: {
name: 'João Silva',
userExternalId: 'user-001',
},
action: {
type: 'TRANSFER_APPROVAL',
description: 'Aprovação de transferência de R$ 50.000,00',
reference: 'TRF-2024-001',
},
});
from signdocs_brasil.models import ActionMetadata
tx = client.transactions.create(CreateTransactionRequest(
purpose='ACTION_AUTHENTICATION',
policy=Policy(profile='CLICK_ONLY'),
signer=Signer(name='João Silva', user_external_id='user-001'),
action=ActionMetadata(
type='TRANSFER_APPROVAL',
description='Aprovação de transferência de R$ 50.000,00',
reference='TRF-2024-001',
),
))
tx, _ := client.Transactions.Create(ctx, &signdocs.CreateTransactionRequest{
Purpose: signdocs.TransactionPurposeActionAuthentication,
Policy: signdocs.Policy{Profile: signdocs.PolicyProfileClickOnly},
Signer: signdocs.Signer{Name: "João Silva", UserExternalID: "user-001"},
Action: &signdocs.ActionMetadata{
Type: "TRANSFER_APPROVAL",
Description: "Aprovação de transferência de R$ 50.000,00",
Reference: "TRF-2024-001",
},
})
CreateTransactionRequest request = new CreateTransactionRequest();
request.purpose = "ACTION_AUTHENTICATION";
request.policy = new Policy("CLICK_ONLY");
request.signer = new Signer("João Silva", null, "user-001");
request.action = new CreateTransactionRequest.ActionMetadata(
"TRANSFER_APPROVAL", "Aprovação de transferência de R$ 50.000,00");
request.action.reference = "TRF-2024-001";
Transaction tx = client.transactions().create(request);
$tx = $client->transactions->create(new CreateTransactionRequest(
purpose: 'ACTION_AUTHENTICATION',
policy: new Policy(profile: 'CLICK_ONLY'),
signer: new Signer(name: 'João Silva', userExternalId: 'user-001'),
action: [
'type' => 'TRANSFER_APPROVAL',
'description' => 'Aprovação de transferência de R$ 50.000,00',
'reference' => 'TRF-2024-001',
],
));
Qualquer perfil de política pode ser usado com
ACTION_AUTHENTICATION—CLICK_ONLY,CLICK_PLUS_OTP,BIOMETRIC, etc. O exemplo usaCLICK_ONLYpara simplicidade.
As etapas geradas dependem do perfil de política escolhido. Complete-as seguindo o guia correspondente:
CLICK_ONLY → Assinatura SimplesCLICK_PLUS_OTP → Assinatura com OTPBIOMETRIC → Verificação Biométricaconst steps = await client.steps.list(tx.transactionId);
// Para CLICK_ONLY: uma única etapa CLICK_ACCEPT
await client.steps.start(tx.transactionId, steps[0].stepId);
await client.steps.complete(tx.transactionId, steps[0].stepId, { accepted: true });
steps = client.steps.list(tx.transaction_id)
client.steps.start(tx.transaction_id, steps[0].step_id)
client.steps.complete(tx.transaction_id, steps[0].step_id, CompleteClickRequest(accepted=True))
steps, _ := client.Steps.List(ctx, tx.TransactionID)
client.Steps.Start(ctx, tx.TransactionID, steps[0].StepID, nil)
client.Steps.Complete(ctx, tx.TransactionID, steps[0].StepID,
&signdocs.CompleteClickRequest{Accepted: true})
List<Step> steps = client.steps().list(tx.transactionId);
client.steps().start(tx.transactionId, steps.get(0).stepId);
client.steps().complete(tx.transactionId, steps.get(0).stepId, Map.of("accepted", true));
$steps = $client->steps->list($tx->transactionId);
$client->steps->start($tx->transactionId, $steps[0]->stepId);
$client->steps->complete($tx->transactionId, $steps[0]->stepId, ['accepted' => true]);
A evidência contém os metadados da ação em vez de informações de documento.
const finalized = await client.transactions.finalize(tx.transactionId);
const evidence = await client.evidence.get(tx.transactionId);
console.log(evidence.evidenceId);
// evidence.document será null (sem documento associado)
finalized = client.transactions.finalize(tx.transaction_id)
evidence = client.evidence.get(tx.transaction_id)
print(evidence.evidence_id)
# evidence.document é None
client.Transactions.Finalize(ctx, tx.TransactionID)
evidence, _ := client.Evidence.Get(ctx, tx.TransactionID)
fmt.Println(evidence.EvidenceID)
// evidence.Document é nil
client.transactions().finalize(tx.transactionId);
Evidence evidence = client.evidence().get(tx.transactionId);
System.out.println(evidence.evidenceId);
// evidence.document é null
$client->transactions->finalize($tx->transactionId);
$evidence = $client->evidence->get($tx->transactionId);
echo $evidence->evidenceId;
// $evidence->document é null
| Caso | action.type |
action.description |
|---|---|---|
| Aprovação financeira | TRANSFER_APPROVAL |
Aprovação de transferência de R$ 50.000,00 |
| Autorização de acesso | ACCESS_AUTHORIZATION |
Autorização de acesso ao sistema XYZ |
| Confirmação de operação | OPERATION_CONFIRMATION |
Confirmação de alteração cadastral |
| Aceite de termos | TERMS_ACCEPTANCE |
Aceite dos termos de uso v2.1 |