Skip to main content

Official Python SDK for the Arara API

Project description

Arara Python SDK

PyPI Python License Docs

O SDK oficial da AraraHQ para Python. Esta biblioteca permite integrar facilmente as funcionalidades de mensageria (WhatsApp), gestão de templates, inteligência artificial (Brain), campanhas e pagamentos diretamente no seu aplicativo ou servidor.


🚀 Destaques (Features)

  • Suporte Nativo a Async/Sync: Escolha entre operações bloqueantes ou assíncronas (httpx baseado).
  • Type Safety: Utiliza Pydantic V2 para validação rigorosa de dados e suporte total a autocompletar em IDEs.
  • Resiliência: Lógica de Retries automática com backoff exponencial integrada.
  • Tratamento de Erros Profissional: Hierarquia de exceções clara para cada status HTTP relevante.
  • Arquitetura Modular: Recursos organizados por domínio (Messages, Templates, Brain, etc).

📦 Instalação

pip install ararahq-sdk

Nota: Requer Python 3.8 ou superior.


🔑 Autenticação

A autenticação é feita via Bearer API Key. Você pode obter sua chave no painel da Arara.

O SDK busca automaticamente a variável de ambiente ARARA_API_KEY caso nenhuma chave seja passada no construtor.

export ARARA_API_KEY="ara_live_..."

🛠️ Uso Rápido (Quick Start)

Modo Síncrono (Standard)

Ideal para scripts simples ou servidores que não utilizam async/await.

from arara_api_sdk import AraraClient
from arara_api_sdk.models.message import SendMessageRequest

# O uso de Context Manager garante que os recursos sejam fechados corretamente
with AraraClient(api_key="your_api_key") as client:
    request = SendMessageRequest(
        receiver="5511999999999",
        body="Hello World from Arara SDK!",
        media_url="https://ararahq.com/l/FtFmja" # Opcional: Anexo
    )
    response = client.messages.send(request)
    print(f"Message ID: {response.id} | Status: {response.status}")

Modo Assíncrono (High Performance)

Recomendado para aplicações FastAPI, aiohttp ou volumes massivos de dados.

import asyncio
from arara_api_sdk import AraraClient
from arara_api_sdk.models.message import SendMessageRequest

async def send_bulk():
    async with AraraClient() as client:
        request = SendMessageRequest(
            receiver="5511999999999",
            template_name="welcome_message",
            variables=["Amos"],
            scheduled_at="2024-12-25T10:00:00Z" # Opcional: Agendamento ISO8601
        )
        response = await client.messages.send_async(request)
        print(f"Async Sent: {response.id}")

asyncio.run(send_bulk())

📂 Visão Geral dos Módulos

💬 Mensagens (Messages)

Envio de mensagens de texto simples ou baseadas em templates aprovados.

client.messages.send(request)
client.messages.get(message_id)

📝 Templates

Gestão completa do ciclo de vida de modelos de mensagem do WhatsApp.

client.templates.list()
client.templates.create(create_request)
client.templates.get_status(template_id)

🧠 AI Brain

Interface direta com o motor de Inteligência Artificial da Arara.

response = client.brain.prompt(BrainRequest(prompt="Como configurar meu webhook?"))
print(response.text)

🏢 Organizações & Webhooks

Gestão de membros, números de telefone e configuração de webhooks de recebimento.

webhook = client.organizations.get_webhook()
members = client.organizations.list_members()

⚙️ Configuração Avançada

Você pode customizar o comportamento do HttpClient no momento da inicialização:

client = AraraClient(
    api_key="...",
    timeout=60.0,       # Custom timeout in seconds
    max_retries=5,      # Exponential backoff retries
    base_url="https://..." # Custom API endpoint
)

⚠️ Tratamento de Erros (Error Handling)

O SDK mapeia erros da API para exceções Python específicas:

from arara_api_sdk.exceptions import (
    AraraAuthError, 
    AraraValidationError, 
    AraraResourceNotFoundError
)

try:
    client.messages.send(request)
except AraraAuthError:
    # Error 401
    pass
except AraraResourceNotFoundError:
    # Error 404
    pass
except AraraValidationError as e:
    # Error 400 - Validation details are in e.response_body
    print(e.response_body)

👩‍💻 Desenvolvimento e Testes

Se você deseja contribuir ou rodar os testes localmente:

  1. Crie um ambiente virtual: python -m venv .venv
  2. Ative: source .venv/bin/activate
  3. Instale as dependências: pip install -e ".[test]"
  4. Rode os testes: pytest tests/

📄 Licença

Distribuído sob a licença MIT. Veja LICENSE para mais informações.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ararahq_sdk-1.8.1.tar.gz (12.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ararahq_sdk-1.8.1-py3-none-any.whl (19.5 kB view details)

Uploaded Python 3

File details

Details for the file ararahq_sdk-1.8.1.tar.gz.

File metadata

  • Download URL: ararahq_sdk-1.8.1.tar.gz
  • Upload date:
  • Size: 12.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.11

File hashes

Hashes for ararahq_sdk-1.8.1.tar.gz
Algorithm Hash digest
SHA256 44ed60cd43c06af0b6ff9606ffa67eab9f5445f63b23ee0caa9f0941922828f4
MD5 774965c8a64af803cc88a5142fdf8e30
BLAKE2b-256 3b7a0fe0894f5286723f9662bba3e8328544742823e42e821ab39d54e8b2a241

See more details on using hashes here.

File details

Details for the file ararahq_sdk-1.8.1-py3-none-any.whl.

File metadata

  • Download URL: ararahq_sdk-1.8.1-py3-none-any.whl
  • Upload date:
  • Size: 19.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.11

File hashes

Hashes for ararahq_sdk-1.8.1-py3-none-any.whl
Algorithm Hash digest
SHA256 0b52cde18ada94a7d5766d03950b1ae1c8e3ab71e898994ca20824824934c9a8
MD5 e88ea1817987d545000b34549186ad73
BLAKE2b-256 d8fe37437e9293b31dc10c15c4fff6e957a2d154e7c672d507d73a344ef7da97

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page