Skip to content

About

CLI oficial e SDK Node.js da Assinafy: envie PDFs, solicite assinaturas, acompanhe documentos e baixe os arquivos assinados. Official CLI and Node.js SDK for Brazilian e-signature.

Topics

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

@assinafy/cli

Português · Read in English

A CLI e o SDK Node.js da API Assinafy permitem enviar PDFs, cadastrar signatários, solicitar assinaturas, acompanhar o processamento e baixar documentos certificados. O pacote inclui um executável para terminal e um SDK TypeScript em @assinafy/cli/api, com acesso às 93 operações publicadas.

Este guia segue o fluxo de uma integração: instalação, autenticação, envio, assinatura e armazenamento do resultado. A referência do SDK documenta cada método; a referência HTTP contém os parâmetros e os payloads completos de requisição e resposta publicados pela Assinafy.

Conteúdo

  1. Requisitos e instalação
  2. Escolha da autenticação
  3. Configuração e ambientes
  4. Primeiro envio
  5. Fluxo completo do documento
  6. Verificação, ordem e templates
  7. Fluxo do signatário
  8. Eventos e webhooks
  9. SDK Node.js
  10. Saída, erros e automação
  11. Referência de comandos
  12. Desenvolvimento e publicação

Requisitos e instalação

Use Node.js 24 LTS atualizado. O mínimo suportado é 22.12.0; a CI também verifica as linhas 22 e 26. A CLI funciona em Linux, macOS e Windows, em x64 e ARM64. Os arquivos de release incluem o executável JavaScript e exigem Node.js instalado. A API Assinafy exige HTTPS com TLS 1.2 ou superior, o mínimo padrão das versões suportadas do Node.js.

Instale uma versão publicada e fixe essa versão nas automações:

npm install -g @assinafy/cli@<versão>
assinafy --version
assinafy --help

Para usar somente o SDK em uma aplicação:

npm install @assinafy/cli@<versão>

Também é possível executar npx @assinafy/cli@<versão> --help. Substitua os valores entre <...> pela versão ou pelos identificadores da sua integração. Os endereços example.com, IDs e telefones dos exemplos são fictícios.

Instalação por release

Baixe e leia o instalador da mesma tag que deseja instalar:

ASSINAFY_VERSION=vX.Y.Z
curl -fsSLo assinafy-install.sh \
  "https://raw.githubusercontent.com/assinafy/assinafy-cli/${ASSINAFY_VERSION}/install.sh"
less assinafy-install.sh
bash assinafy-install.sh "$ASSINAFY_VERSION"

No PowerShell:

$Version = 'vX.Y.Z'
Invoke-WebRequest "https://raw.githubusercontent.com/assinafy/assinafy-cli/$Version/install.ps1" -OutFile .\assinafy-install.ps1
Get-Content .\assinafy-install.ps1
& .\assinafy-install.ps1 -Version $Version

O instalador verifica o arquivo contra o SHA256SUMS do release e confirma a versão antes de substituir o executável. O destino padrão é ~/.assinafy/bin; a documentação acompanha a instalação em ~/.assinafy/docs. Defina ASSINAFY_INSTALL para outro diretório ou ASSINAFY_NO_PATH_UPDATE=1 para gerenciar o PATH manualmente.

Escolha da autenticação

Credencial Transporte Uso
Chave de API X-Api-Key Integrações diretas do proprietário da conta.
Access token OAuth Authorization: Bearer Aplicativos de marketplace, com consentimento, escopos e um workspace por conexão.
JWT de usuário Authorization: Bearer Sessões obtidas por login e operações de usuário permitidas pela API.
Código do signatário signer-access-code na query Operações da pessoa que assina, a partir do convite.

Integração direta

Gere sua chave no painel Assinafy e salve uma configuração local:

assinafy login
assinafy whoami

login solicita a chave e o ID do workspace. whoami lista os workspaces acessíveis e confirma a credencial e a URL base. Verifique se o workspace selecionado aparece nessa lista; whoami não valida automaticamente o ID padrão configurado.

auth login user@example.com inicia uma sessão de usuário. auth api-keys create gera e rotaciona a chave dessa conta; use esse comando apenas quando essa rotação fizer parte do seu fluxo. Prefira prompts protegidos e variáveis de ambiente a segredos em argumentos.

Aplicativos OAuth

A CLI já inclui o ID público da aplicação oficial e usa PKCE S256, sem segredo de cliente. O retorno automático usa esta URI HTTPS exata, sem extensão nem barra final, servida pelo projeto integrations-generic-callback:

https://integrations.assinafy.com.br/assinafy-cli/oauth-callback

A CLI solicita por padrão os sete escopos cadastrados na aplicação oficial: account:read documents:read documents:write templates:read templates:write webhooks:write offline_access, incluindo leitura e alteração de templates e webhooks:write para os comandos que alteram webhooks. Uma conexão existente precisa de novo consentimento para obter permissões adicionais. --scope permite escolher outro conjunto. openid, profile e email não fazem parte do padrão; use-os apenas com uma aplicação cadastrada para esses escopos, para obter identidade OpenID Connect e UserInfo.

Não é necessário configurar ASSINAFY_OAUTH_CLIENT_ID para usar a aplicação oficial. Para uma aplicação própria ou outro ambiente, use --client-id ou essa variável; a flag tem precedência. A aplicação escolhida precisa ter a URI de retorno e os escopos cadastrados. Em um diretório privado fora do repositório:

umask 077
assinafy oauth connect --json > tokens.json
unset ASSINAFY_API_KEY
export ASSINAFY_TOKEN="$(jq -er '.access_token' tokens.json)"
assinafy workspaces list --json

A CLI abre o navegador e aguarda o consentimento. A página HTTPS encaminha a resposta para uma porta temporária em 127.0.0.1; a CLI valida state e o emissor, fecha a porta e troca o código usando o verificador PKCE mantido localmente. Não é necessário copiar um código. Use o navegador no mesmo computador da CLI. O site recebe a resposta de autorização; a troca de tokens ocorre diretamente entre a CLI e a Assinafy.

As telas de retorno usam a identidade visual de integrations.assinafy.com.br e distinguem resposta recebida, autorização não concluída e retorno inválido. Confira o resultado final no terminal. Se aparecer invalid_scope, verifique as permissões cadastradas para a aplicação, incluindo offline_access.

--no-browser permite abrir manualmente a URL exibida no stderr e mantém o retorno automático. --timeout controla a espera pelo navegador (180 segundos por padrão, de 1 a 600); --scope seleciona as permissões e --redirect-uri permite uma página HTTPS com o mesmo protocolo. Ctrl+C cancela a espera. A saída JSON contém tokens sensíveis; não a envie para logs. O comando não altera o perfil nem renova tokens automaticamente.

Selecione o único workspace retornado e configure ASSINAFY_ACCOUNT_ID. Tokens OAuth não autorizam cobrança, criação/exclusão de workspaces nem administração de credenciais. Cada refresh consome o token anterior: serialize a operação por conexão e salve o novo par de tokens atomicamente.

Os comandos oauth authorize e oauth exchange continuam disponíveis para aplicações com callback próprio, inclusive aplicações confidenciais. A documentação OAuth detalha o fluxo automático e o manual, todos os payloads, persistência, OpenID Connect, rotação, revogação e recuperação.

Configuração e ambientes

A precedência é flag → ambiente → perfil → padrão. As credenciais são escolhidas juntas no primeiro nível que fornecer uma delas; nesse mesmo nível, a chave de API prevalece sobre o token. Assim, --token substitui uma chave existente no ambiente ou perfil. Salvar somente um tipo de credencial com config set remove o outro tipo daquele perfil.

Valores vazios de configurações opcionais são ignorados, inclusive os padrões de .env.example. Perfis com tipos de campos inválidos não são usados nem sobrescritos por comandos de configuração.

Configuração Flag Variável
Chave de API --api-key ASSINAFY_API_KEY
Access token OAuth ou JWT --token ASSINAFY_TOKEN
Workspace padrão --account-id ASSINAFY_ACCOUNT_ID
URL base --base-url ASSINAFY_BASE_URL
Perfil --profile, -p ASSINAFY_PROFILE
Diretório da configuração — ASSINAFY_CONFIG_DIR
Código de acesso do signatário --access-code nos comandos signer ASSINAFY_SIGNER_ACCESS_CODE

Consulte .env.example para as demais variáveis. A CLI lê o ambiente do processo; um arquivo .env não é carregado automaticamente. Carregue-o por seu gerenciador de segredos ou pelas ferramentas do ambiente de desenvolvimento.

Ambiente URL base
Produção https://api.assinafy.com.br/v1
Sandbox https://sandbox.assinafy.com.br/v1

Use credenciais próprias de cada ambiente. A disponibilidade de operações, artefatos e OAuth pode variar entre deployments. Não misture o emissor OAuth de produção com outro recurso descoberto.

assinafy --profile sandbox --base-url https://sandbox.assinafy.com.br/v1 login
assinafy config use sandbox
assinafy config list
assinafy config get
assinafy config path

A configuração fica em ~/.config/assinafy/config.json no Linux/macOS, respeitando XDG_CONFIG_HOME, ou em %APPDATA%\assinafy\config.json no Windows. Escritas são atômicas; em sistemas POSIX, diretório e arquivo recebem permissões 0700 e 0600. config get mascara segredos. Um arquivo malformado não é sobrescrito por mutações de perfil.

Primeiro envio

assinafy send contrato.pdf \
  --signer 'Ana Lima <ana@example.com>' \
  --message 'Por favor, revise e assine o contrato' \
  --json

send envia o PDF, aguarda o processamento, cria ou reutiliza os signatários por e-mail e solicita a assinatura. A resposta contém document, assignment e signer_ids. A solicitação pode consumir créditos e enviar convites conforme os métodos de notificação configurados.

Se houver falha após o upload, error.details.documentId e error.details.signerIds identificam os recursos já existentes. Consulte o documento antes de retomar. Signatários podem ter sido reutilizados por outros documentos; não os exclua automaticamente como limpeza de uma falha.

Fluxo completo do documento

flowchart LR
  A[Enviar PDF] --> B[Aguardar processamento]
  B --> C[Estimar custo]
  C --> D[Solicitar assinaturas]
  D --> E[Acompanhar signatários]
  E --> F[Certificação]
  F --> G[Baixar e armazenar artefatos]
Loading

1. Cadastrar o signatário

SIGNER_ID=$(assinafy signers create \
  --name 'Ana Lima' --email ana@example.com --json | jq -er '.id')

Somente o nome é obrigatório na criação. Com e-mail, o SDK procura um registro existente, inclusive nas demais páginas da busca, antes de criar outro. O cadastro por telefone também é suportado; use --help para CPF, metadados e WhatsApp.

2. Enviar e processar o PDF

DOCUMENT_ID=$(assinafy documents upload contrato.pdf \
  --name 'Contrato de serviços' \
  --metadata '{"external_id":"order-example"}' \
  --json | jq -er '.id')
assinafy documents wait "$DOCUMENT_ID" --json

O PDF precisa ser não vazio e ter até 25 MiB. Guarde o ID assim que o upload concluir, antes de aguardar etapas posteriores. O processamento é assíncrono: uploaded e metadata_processing antecedem metadata_ready. O comando wait termina quando o documento pode seguir, falha em estados terminais e respeita timeout. Ele não aguarda todas as assinaturas. O atalho documents upload --wait retorna o estado atualizado; se a espera falhar, o erro preserva o ID já enviado em error.details.documentId.

Assignments virtual também podem ser enviados enquanto o PDF processa, conforme a API; assignments collect precisam de metadata_ready, pois referenciam páginas e campos. O fluxo acima espera o processamento para detectar erros antes de solicitar assinaturas.

3. Estimar custo e solicitar assinaturas

assinafy assignments estimate-cost "$DOCUMENT_ID" \
  --signer-ids "$SIGNER_ID" --json

assinafy assignments create "$DOCUMENT_ID" \
  --signer-ids "$SIGNER_ID" \
  --message 'Revise e assine o documento' \
  --expires-at '2026-12-31T23:59:59Z' \
  --json

Leia o total, saldo e motivos de bloqueio retornados pela estimativa antes de criar o assignment. Use um vencimento futuro adequado ao documento. Guarde também o ID do assignment; ele será necessário para reenvios, prorrogações e operações do signatário.

4. Acompanhar e recuperar

assinafy documents get "$DOCUMENT_ID" --json
assinafy documents progress "$DOCUMENT_ID" --json
assinafy documents activities "$DOCUMENT_ID" --json

progress apresenta signed, total, pending e percentage. O histórico preserva os dados dos eventos e suas origens. assignments estimate-resend-cost estima um novo convite, e assignments resend o envia. assignments reset-expiration altera o prazo. Essas operações podem notificar pessoas; execute-as conforme a ação desejada pelo usuário da aplicação.

Em falhas de rede durante uma escrita, consulte o estado existente antes de repetir: a API pode ter processado a operação. O SDK não repete automaticamente solicitações que poderiam criar documentos, cobrar créditos ou enviar convites.

5. Baixar o resultado

Após a conclusão e a disponibilidade dos artefatos:

assinafy documents download "$DOCUMENT_ID" --artifact certificated -o contrato-assinado.pdf
assinafy documents download "$DOCUMENT_ID" --artifact certificate-page -o certificado.pdf
assinafy documents download "$DOCUMENT_ID" --artifact bundle -o contrato-completo.zip
Artefato Conteúdo
original PDF recebido no upload.
certificated Documento assinado e certificado pela plataforma.
certificate-page Página de certificação.
pades PDF com assinatura ICP-Brasil, quando aplicável.
bundle ZIP com os artefatos disponíveis.

Thumbnails e páginas individuais são JPEG. Downloads não sobrescrevem arquivos existentes sem --force. Mantenha o documento certificado, os comprovantes e o histórico conforme a retenção da sua aplicação. Exclua apenas recursos que possam ser removidos; a API restringe exclusões conforme o estado.

Verificação, ordem e templates

Método Comportamento
Email Verificação por código enviado por e-mail.
Whatsapp Verificação por WhatsApp; notificações dependem dos recursos e créditos da conta.
DigitalCertificate Assinatura com certificado ICP-Brasil A1/A3 e fluxo Web PKI.

Use os endpoints de estimativa para obter os valores atuais. Verificação e notificação seguem combinações definidas pela API. Para selecionar explicitamente métodos e ordem:

assinafy assignments create "$DOCUMENT_ID" --signers '[
  {"id":"example_signer_1","verification_method":"Email","notification_methods":["Email"],"step":1},
  {"id":"example_signer_2","verification_method":"Whatsapp","notification_methods":["Whatsapp"],"step":2}
]' --json

Passos explícitos devem ser contíguos a partir de 1. Um signatário DigitalCertificate deve estar sozinho no seu passo, ter CPF/CNPJ em government_id e usar um certificado correspondente. A conta precisa do recurso Digital Certificate e dos créditos indicados pela estimativa. A1 e A3 usam o mesmo fluxo: startCertificate, assinatura local pelo Web PKI e completeCertificate. As chamadas seguem os payloads da aplicação Assinafy em produção; essas duas rotas ainda não constam como paths no OpenAPI. Veja requisições, respostas e sequência completa.

Antes de estimar ou criar um assignment com certificado, atualize o CPF/CNPJ do signatário. O cadastro por e-mail pode reutilizar um registro sem atualizar seus dados. A opção --cpf de atualização envia government_id e aceita CPF ou CNPJ:

assinafy signers update "$SIGNER_ID" --cpf '<CPF-ou-CNPJ-do-signatário>' --json

Verificação Email usa notificação ["Email"]; Whatsapp usa ["Whatsapp"]. DigitalCertificate permite um desses dois canais. Escolha apenas um canal por signatário; os mesmos campos são aceitos em documentos gerados de templates.

Em produção, notification_methods: [] assume ['Email'] e envia o convite. Para escolher o canal, informe-o explicitamente; o array vazio não desativa notificações.

--copy-receivers recebe IDs de signatários que receberão uma cópia final. Para coletar campos, use assignments create --method collect --entries ... com páginas, campos e signatários do documento; os formatos completos estão em assignments e SDK.

Para iniciar a partir de um template:

assinafy templates list --json
assinafy documents estimate-template-cost example_template --signers '[
  {"role_id":"example_role","verification_method":"Email","notification_methods":["Email"]}
]' --json
assinafy documents create-from-template example_template --name 'Contrato' --signers '[
  {"role_id":"example_role","id":"example_signer","verification_method":"Email","notification_methods":["Email"]}
]' --json

Cada papel deve corresponder ao template escolhido. Campos de editor, tags, mensagem e vencimento são opcionais. Use IDs reais obtidos na sua conta ao executar os exemplos.

Para organizar documentos, documents tags-set <id> Contratos substitui as tags e documents tags-add <id> Contratos acrescenta nomes. Nomes inexistentes são criados. documents tags-remove <id> <tagId> e o filtro documents list --tags <ids> usam IDs obtidos em documents tags <id>.

Fluxo do signatário

Os comandos signer usam o código privado do link de verificação, separado da credencial do proprietário. Na verificação por e-mail ou WhatsApp, use o link e o código de seis dígitos da mesma mensagem; um convite que contém apenas o ID do documento e o destinatário não contém essa credencial. Configure ASSINAFY_SIGNER_ACCESS_CODE e ASSINAFY_VERIFICATION_CODE de forma privada e confirme o signatário e o documento. A aplicação deve apresentar termos, dados e documento à pessoa antes de enviar suas decisões:

assinafy signer self --json
assinafy signer document example_signer --json
assinafy signer accept-terms --json
assinafy signer verify-code --json
assinafy signer confirm-data "$DOCUMENT_ID" --full-name 'Ana Lima' --email ana@example.com --json
assinafy signer assignment --json
assinafy signer upload-signature --file assinatura.png --json
assinafy signer sign "$DOCUMENT_ID" example_assignment --entries '[
  {"itemId":"example_item","fieldId":"example_field","pageId":"example_page","value":"example_value"}
]' --json

Os IDs e valores de campos vêm do assignment apresentado ao signatário. Para verificação por e-mail, documents send-token <id> --recipient <email> --channel email envia o código; para WhatsApp, use --recipient <telefone> --channel whatsapp. Ambos usam signer verify-code; verify-email continua disponível como alias. Configure ASSINAFY_VERIFICATION_CODE para manter o OTP fora dos argumentos e preservar zeros iniciais. decline e decline-multiple exigem motivo não vazio com até 2.000 caracteres. As operações em lote usam sign-multiple e decline-multiple.

Para certificados A1/A3, use a página de assinatura Assinafy ou integre o Web PKI com o SDK. Após apresentar o documento e aceitar os termos, signer certificate-start --json retorna { "token": "..." }. O navegador assina essa operação no dispositivo do signatário. Defina ASSINAFY_CERTIFICATE_TOKEN com o mesmo token e execute signer certificate-complete --json, que retorna { "signerName": "..." }. A chave privada e a senha/PIN permanecem no dispositivo. Aguarde o documento ficar certificated e baixe --artifact pades ou bundle; o comando comum sign não substitui esse fluxo.

O SDK remove credenciais do proprietário das chamadas públicas e do signatário. O download público de artefato do signatário aceita opcionalmente um código para uma verificação prévia de identidade. Em produção, send-token usa --recipient e --channel; --email mantém o formato publicado para deployments que o aceitam.

Verificação, confirmação de dados e envio da imagem de assinatura podem retornar [] em caso de sucesso. Consulte signer self para obter o perfil atualizado e confirme o progresso e os artefatos certificados após assinar. Os exemplos completos de requisição e resposta estão na referência do SDK para signatários.

Para um assignment virtual, confirme os dados do signatário e envie um array vazio:

assinafy signer confirm-data "$DOCUMENT_ID" --full-name 'Ana Lima' --email ana@example.com
assinafy signer sign "$DOCUMENT_ID" example_assignment --entries '[]'

Os comandos de confirmação de dados, assinatura e recusa de um único documento verificam se o código de acesso corresponde ao documento e ao assignment antes de enviar a alteração.

Eventos e webhooks

assinafy webhooks event-types --json
assinafy webhooks register \
  --url https://example.com/hooks/assinafy \
  --email ops@example.com \
  --events document_ready,signer_signed_document,signer_rejected_document \
  --json
assinafy webhooks dispatches --delivered false --json

Há uma assinatura de webhook por workspace; register substitui sua configuração. document_ready indica a assinatura pelo último signatário, não o término do processamento inicial do upload. Confirme estado e artefatos pela API antes de baixar o resultado. Processe eventos de forma idempotente e consulte event-types para a lista vigente.

webhooks retry <dispatchId> solicita uma nova entrega. webhooks inactivate desativa a assinatura, sem excluí-la. A Assinafy não publica um esquema de assinatura criptográfica de webhooks: WebhookVerifier é experimental e não deve autenticar eventos de produção sem validação independente do protocolo. Trate notificações como sinais para consultar o estado autorizado pela API.

SDK Node.js

import { writeFile } from 'node:fs/promises';
import { AssinafyClient, PartialWorkflowError } from '@assinafy/cli/api';

const client = new AssinafyClient({
  token: process.env.ASSINAFY_TOKEN!,
  accountId: process.env.ASSINAFY_ACCOUNT_ID!,
});

try {
  const result = await client.uploadAndRequestSignatures({
    source: { filePath: './contrato.pdf' },
    signers: [{ name: 'Ana Lima', email: 'ana@example.com', verification_method: 'Email', notification_methods: ['Email'] }],
    message: 'Revise e assine',
    metadata: { external_id: 'order-example' },
    waitForReady: true,
  });
  console.log(result.document.id, result.assignment.id, result.signer_ids);
} catch (error) {
  if (error instanceof PartialWorkflowError) {
    console.error({ documentId: error.documentId, signerIds: error.signerIds });
  }
  throw error;
}

// Em uma etapa posterior, após a assinatura e a certificação:
const documentId = process.env.ASSINAFY_DOCUMENT_ID!;
const progress = await client.documents.getSigningProgress(documentId);
if (await client.documents.isFullySigned(documentId)) {
  const pdf = await client.documents.download(documentId, 'certificated');
  await writeFile('contrato-assinado.pdf', pdf, { flag: 'wx' });
}

Para chave de API, use apiKey no lugar de token, ou AssinafyClient.create(apiKey, accountId). CommonJS usa require('@assinafy/cli/api'). O pacote publica os módulos ESM/CJS e as declarações TypeScript.

Respostas com { status, message, data } são desembrulhadas para data. Listagens paginadas retornam { data, meta? }, usando os headers X-Pagination-*; downloads retornam Buffer; respostas de status e OAuth permanecem no formato direto. Exclusões que retornam data: [] resolvem para []. Revogação OAuth resolve para undefined.

Cada recurso, função auxiliar, tipo de entrada/saída e exceção está em sdk-reference.md. Os exemplos HTTP completos de cada operação, incluindo erros, estão em api-reference.md; OAuth tem um guia próprio.

Saída, erros e automação

--json envia JSON para stdout e erros JSON para stderr. Spinners e mensagens de status usam stderr; --quiet suprime mensagens auxiliares. Códigos de saída: 0 para sucesso, 1 para erro e 130 para interrupção. Comandos destrutivos exigem confirmação; em automações autorizadas, use --yes.

assinafy documents list --status pending_signature --page 1 --per-page 50 --json \
  | jq '.data, .meta'

A listagem acima solicita uma página. Continue até meta.last_page quando precisar de todos os resultados.

{
  "error": {
    "message": "insufficient_scope",
    "code": "api_error",
    "statusCode": 403,
    "details": { "error": "insufficient_scope" },
    "wwwAuthenticate": "Bearer error=\"insufficient_scope\", scope=\"documents:write\""
  }
}

No SDK, ValidationError indica entrada inválida; ApiError carrega statusCode, responseData, wwwAuthenticate e retryAfter; NetworkError indica falha de transporte; PartialWorkflowError preserva IDs existentes e a causa original. O SDK exige HTTPS, rejeita redirecionamentos e não inclui configurações Axios com credenciais nos erros. O uso de HTTP sem TLS é restrito a loopback com opt-in explícito no SDK.

Referência de comandos

Grupo Operações e documentação
documents Upload, consulta, busca, espera, renomeação, exclusão, tags, templates e downloads.
signers Cadastro, busca por e-mail, listagem, atualização e exclusão.
assignments Solicitações, estimativas, vencimento, reenvios e notificações.
signer Perfil, documentos, termos, verificação, assinatura e recusa.
oauth Conexão pelo navegador, discovery, autorização, exchange, refresh, UserInfo e revogação.
auth Login de usuário, login social, senhas e chaves de API.
workspaces / accounts Cadastro, consulta, tema, logo e estatísticas.
users Perfil, estatísticas e preferências de notificação.
templates Listagem, detalhes e páginas de templates.
tags Organização dos documentos por tags.
fields Definições, tipos e validação de campos.
webhooks Assinatura de eventos e acompanhamento das entregas.
config Perfis, credenciais e configuração efetiva.
send Upload e solicitação de assinaturas em um comando.

login, logout, whoami e docs completam os comandos de configuração e ajuda. assinafy <comando> --help mostra todas as opções; docs/README.md reúne todas as páginas geradas.

Desenvolvimento e publicação

nvm use
npm ci
npm run typecheck
npm run lint
npm test
npm run build
npm run verify:bundle
npm run verify:api-docs
npm run docs
npm run pack:release

npm run docs:api atualiza a referência a partir do OpenAPI oficial. npm run docs gera a ajuda a partir da CLI compilada.

npm test verifica contratos, validações, comandos e callbacks OAuth com dados sintéticos, transportes controlados e servidores locais, sem exigir credenciais Assinafy. A publicação também verifica a documentação pública atual da API, os arquivos gerados, os pacotes, os instaladores e os checksums antes de publicar os artefatos verificados.

Este repositório é hospedado diretamente no GitHub. Envie as alterações para main, preserve tags de release anotadas e use o procedimento de publicação. Os workflows usam Actions fixadas por SHA, permissões mínimas e publicação npm via OIDC. A CI verifica Node.js 22/24/26, Linux/macOS/Windows, tipos, testes, pacotes, documentação, instaladores e arquivos reproduzíveis. CONTRIBUTING.md descreve as verificações e SECURITY.md orienta o relato de vulnerabilidades.

Licença

Distribuído sob a licença MIT. As licenças das dependências estão em THIRD_PARTY_NOTICES.md.

About

CLI oficial e SDK Node.js da Assinafy: envie PDFs, solicite assinaturas, acompanhe documentos e baixe os arquivos assinados. Official CLI and Node.js SDK for Brazilian e-signature.

Topics

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages