Skip to main content

Instalar

Versão publicada: 2.0.0, no GitHub Packages (não está no Maven Central). O GitHub Packages exige autenticação até para leitura: use seu usuário do GitHub e um personal access token com escopo read:packages, nas variáveis GITHUB_ACTOR e GITHUB_TOKEN. Sem elas o Gradle falha com Username must not be null!; com token inválido, com 401 Unauthorized.
Requer Java 17+. Dependências transitivas: OkHttp 4, Jackson 2.18 e SLF4J 2. Funciona igual em Kotlin.

Configurar

Sem apiKey, build() lança AraraException. Em Kotlin:

Spring Boot

Evite chamar a classe de configuração de AraraConfig: o SDK já tem com.ararahq.arara.sdk.config.AraraConfig.

Enviar a primeira mensagem

Você precisa de plano assinado, número conectado, um template aprovado e saldo. Veja Antes de começar. Troque pedido_confirmado pelo nome do seu template. Salve como src/main/java/Main.java:
Rode (com o build.gradle.kts de Instalar; use ./gradlew run se o projeto tem o wrapper):
O receiver aceita +5511999999999, whatsapp:+5511999999999 ou só dígitos (7 a 15). Fora disso o SDK lança AraraException sem chamar a API. O segundo argumento de send é o Idempotency-Key. Derive-o do evento do seu sistema (id do pedido, id da tentativa): se o seu código repetir a chamada, a Arara devolve a mensagem original em vez de enviar outra. Sem o argumento, o SDK gera um UUID v4 por chamada e o reutiliza nas retentativas internas. Com variáveis no corpo do template e mídia no header:
Para responder dentro da janela de 24h, mande body em vez de templateName:
O SDK não consulta mensagem depois do envio. O status chega pelo webhook message.status_updated.

Kotlin coroutines

As chamadas são bloqueantes. Em coroutines, rode no dispatcher de IO:

Templates

list() aceita filtros: list(name, status, page, size).

Tratar erros

Todas estendem AraraException (unchecked). A ordem dos catch importa: as subclasses de AraraApiException vêm antes dela. Um 403 com código de negócio, como ACCOUNT_NOT_ACTIVATED, chega como AraraApiException com getCode() preenchido, não como AraraAuthException. O 401 de chave inválida não vem no envelope de erro: getCode() é null e getMessage() traz o texto do Spring (Unauthorized). A API responde 401 para chave inválida, revogada ou expirada, e 403 quando o header Authorization está ausente ou a chave não tem permissão para a rota. Lista de códigos em Erros.

Retentativas e idempotência

Um interceptor OkHttp retenta até maxRetries vezes em falha de rede, 429 e qualquer 5xx. Respeita Retry-After (segundos ou data HTTP); sem ele, espera 500ms e dobra a cada tentativa, até 8s. Se o Retry-After for maior que 30s, o SDK não espera: lança a exceção com getRetryAfter() preenchido. Para desligar: .maxRetries(0). POST e PATCH só são retentados quando levam Idempotency-Key. getMessages().send, sendBatch e getCampaigns().create sempre mandam, e a mesma chave vale em todas as tentativas, então timeout ou 5xx não vira envio duplicado. Passe a sua como segundo argumento (send(request, "pedido-12345-confirmacao")) para que uma repetição do seu próprio código também seja segura. Sem argumento, o SDK usa um UUID v4 novo por chamada.

## Webhooks

O SDK não tem helper de webhook. Valide a assinatura antes de processar, com o corpo cru da requisição (bytes exatamente como chegaram). A string assinada é "{X-Arara-Timestamp}.{corpo cru}":
timestamp e signature vêm dos headers X-Arara-Timestamp e X-Arara-Signature. Use MessageDigest.isEqual, nunca equals. Depois de validar, trate o evento pelo campo event. Detalhes e catálogo em Webhooks.

Recursos disponíveis

Limitações conhecidas

Quem está na 1.8.1 deve atualizar para a 2.0.0 (implementation("com.ararahq:arara-java-sdk:2.0.0")). Na 1.8.1, getUsers() chama /users/me, que recusa chave de API; getTemplates().list() espera um array e falha ao ler { data, pagination }; send não manda Idempotency-Key, mas o retry reenvia o POST em 5xx; e todo 403 vira AraraAuthException, perdendo o error.code. A 2.0.0 também remove getUsers() e getApiKeys(), e AraraAuthException passa a estender AraraApiException. Veja o CHANGELOG.

Próximos passos

API Reference

Endpoints REST por baixo do SDK.

Webhooks

Eventos, payload e validação de assinatura.
Código-fonte: github.com/ararahq/arara-java-sdk (MIT).