Partner API v1.0

Documentação da API de Parceiros

Integre financiamento de veículos ao seu site ou sistema. OAuth2, webhooks em tempo real e widget embarcado.

OpenAPI Spec

Introdução#

A API de Parceiros Alethica permite que concessionárias, plataformas de veículos e sistemas de gestão integrem financiamento veicular diretamente em seus fluxos. Submeta solicitações, acompanhe status em tempo real via webhooks e ofereça uma experiência nativa com o widget embarcado.

OAuth2

Client credentials seguro

Webhooks

Eventos em tempo real

Widget

Iframe pronto para usar

Base URL

url
https://api.alethica.co/api/v1

Escopos disponíveis

EscopoDescrição
applications:writeCriar e submeter solicitações de financiamento
applications:readConsultar status e timeline de solicitações
signatures:writeCriar solicitações de assinatura digital em PDF
signatures:readConsultar solicitações, evidências e documentos de assinatura
webhooks:manageGerenciar endpoints e entregas de webhooks
usage:readConsultar métricas de uso da API
widget:sessionCriar sessões do widget embarcado

Autenticação#

A API utiliza OAuth2 com o fluxo client_credentials. Você recebe um client_id e client_secret ao registrar-se como parceiro. Use-os para obter um token JWT com validade de 1 hora.

Aplicações#

O recurso de aplicações permite submeter solicitações de financiamento, consultar status e acompanhar a timeline completa de eventos.

Assinaturas#

Crie solicitações de assinatura para PDFs próprios, acompanhe o status dos signatários e consulte evidências de auditoria pela API de parceiros.

Webhooks#

Receba notificações em tempo real quando o status de uma solicitação muda. Registre endpoints, escolha os eventos de interesse e receba payloads assinados via HMAC-SHA256.

Eventos disponíveis

EventoDescrição
loan.approvedEmpréstimo aprovado pela análise de crédito
loan.rejectedEmpréstimo rejeitado pela análise de crédito
loan.fundedEmpréstimo totalmente financiado pelos investidores
loan.offer_acceptedOferta aceita pelo tomador
loan.offer_rejectedOferta rejeitada pelo tomador
loan.completedEmpréstimo quitado integralmente
signature.completedSolicitação de assinatura concluída (todos signatários assinaram)
signature.declinedSolicitação de assinatura recusada por um signatário

Verificação de assinatura (HMAC-SHA256)

Cada entrega inclui headers que permitem verificar a autenticidade. O header X-Alethica-Signature contém o HMAC-SHA256 de timestamp.payload usando seu signingSecret.

HeaderDescrição
X-Alethica-EventTipo do evento (ex: loan.funded)
X-Alethica-Event-IdID único do evento
X-Alethica-TimestampTimestamp ISO 8601 da emissão
X-Alethica-SignatureHMAC-SHA256 de timestamp.payload
javascript
import crypto from "crypto";

function verifyWebhookSignature(payload, headers, signingSecret) {
  const timestamp = headers["x-alethica-timestamp"];
  const signature = headers["x-alethica-signature"];

  const expected = crypto
    .createHmac("sha256", signingSecret)
    .update(`${timestamp}.${JSON.stringify(payload)}`)
    .digest("hex");

  return crypto.timingSafeEqual(
    Buffer.from(signature),
    Buffer.from(expected)
  );
}
Sempre use timingSafeEqual para comparação de assinaturas. Comparações simples com === são vulneráveis a timing attacks.

Widget Embarcado#

O widget permite que seus clientes preencham a solicitação de financiamento diretamente no seu site, sem redirecionamentos. A integração é feita via iframe seguro com um token de sessão temporário.

Fluxo de integração

1

Seu servidor solicita um token de sessão via API (server-to-server)

2

Inclua o script embed.js na página com o token de sessão

3

O widget é renderizado dentro de um iframe seguro no container indicado

4

O cliente preenche e submete — você recebe o resultado via webhook

Embed via script

A forma mais simples de integrar o widget é via nosso script de bootstrap. Ele cria automaticamente o iframe e gerencia a comunicação entre janelas.

html
<!-- Adicione o container onde o widget será renderizado -->
<div id="alethica-widget"></div>

<!-- Inclua o script com os atributos de configuração -->
<script
  src="https://api.alethica.co/api/v1/widget/embed.js"
  data-session-token="SESSION_TOKEN_AQUI"
  data-container-id="alethica-widget"
  data-height="760"
></script>
O campo origin na criação da sessão deve corresponder exatamente ao domínio do site que renderiza o widget. Origens não autorizadas receberão erro ORIGIN_NOT_ALLOWED.

Analytics de Uso#

Monitore o uso da API com métricas detalhadas de requisições, latência e distribuição por status code e endpoint.

Códigos de Erro#

Todos os erros retornam um JSON com o campo error contendo um código de erro padronizado e uma mensagem descritiva.

json
{
  "success": false,
  "error": {
    "code": "TOKEN_EXPIRED",
    "message": "Access token has expired. Please request a new token."
  }
}
CódigoHTTPDescrição
INVALID_CLIENT401Credenciais OAuth inválidas (client_id ou client_secret incorretos)
INVALID_SCOPE400Escopo solicitado não permitido para este client
NO_TOKEN401Token Bearer ausente no header Authorization
TOKEN_EXPIRED401Token JWT expirado — solicite um novo via /oauth/token
INVALID_TOKEN401Token JWT inválido (assinatura ou formato incorreto)
PARTNER_NOT_FOUND404Parceiro associado ao token não encontrado
PARTNER_INACTIVE403Parceiro com status inativo — contate o suporte
PARTNER_NOT_CONFIGURED400Parceiro sem dealer padrão configurado
APPLICATION_NOT_FOUND404Solicitação com o externalApplicationId não encontrada
SIGNATURE_NOT_FOUND404Solicitação de assinatura não encontrada para o parceiro
NO_FILE400Arquivo PDF obrigatório não enviado no formulário
INVALID_FILE_TYPE400Tipo de arquivo inválido (apenas PDF é aceito)
INVALID_SIGNERS400Estrutura de signatários inválida no campo signers
ORIGIN_NOT_ALLOWED403Origem do widget não está na lista de origens permitidas
INVALID_WIDGET_TOKEN401Token de sessão do widget inválido ou expirado

Rate Limiting#

Cada parceiro possui um limite de requisições por minuto configurável. Ao exceder o limite, a API retorna 429 Too Many Requests. Os headers de resposta incluem informações sobre o estado do rate limit.

HeaderDescrição
X-RateLimit-LimitLimite total por minuto
X-RateLimit-RemainingRequisições restantes na janela atual
Retry-AfterSegundos até o reset (somente quando 429)
O limite padrão é 120 requisições/minuto. Se precisar de um limite maior, solicite ao administrador da plataforma no painel de parceiros.
http
HTTP/1.1 429 Too Many Requests
X-RateLimit-Limit: 120
X-RateLimit-Remaining: 0
Retry-After: 45
Content-Type: application/json

{
  "success": false,
  "error": {
    "code": "RATE_LIMIT_EXCEEDED",
    "message": "Too many requests. Please retry after 45 seconds."
  }
}

Pronto para integrar?

Entre em contato para receber suas credenciais de parceiro e começar a oferecer financiamento de veículos no seu sistema.