Empezar es Simple
Sigue estos 4 pasos para integrar ΛRΛMΛC en tu aplicación.
Obtén API Keys
Registra tu aplicación en el Developer Dashboard y genera tu API Key de prueba.
Prueba la API
Haz tu primera llamada a la API usando tu key de sandbox.
curl -X GET https://api.aramac.dev/v1/quotes \
-H "Authorization: Bearer YOUR_API_KEY"Implementa tu Integración
Elige tu stack y comienza a integrar. Tenemos SDKs para los lenguajes más populares.
Ve a Producción
Solicita acceso a producción, completa la verificación de seguridad y obtén tu API Key de producción.
Explora por Tema
Encuentra la documentación que necesitas según tu caso de uso.
Guías de Integración
12 guíasTutoriales paso a paso para casos de uso comunes.
- Integración con ERPs
- Sincronización de inventario
- Automatización de cotizaciones
- Dashboards personalizados
Referencia API
45 endpointsDocumentación completa de endpoints.
- Autenticación
- Cotizaciones
- Proyectos
- Clientes
- Calculadoras
- Webhooks
SDKs Oficiales
4 SDKsLibrerías mantenidas por el equipo ΛRΛMΛC.
- JavaScript/TypeScript (npm)
- Python (pip)
- PHP (composer)
- Go (go get)
Webhooks
8 eventosRecibe eventos en tiempo real.
- Configuración
- Eventos disponibles
- Verificación de firmas
- Reintentos y manejo de errores
Autenticación & Seguridad
Guía completaOAuth 2.0, API Keys, y mejores prácticas.
- Flujos de OAuth
- Scopes y permisos
- Rotación de keys
- Rate limiting
- Auditoría de acceso
Casos de Uso
10 ejemplosEjemplos reales de integraciones.
- Integración con SAP
- Conector para Salesforce
- Dashboard de Power BI
- App móvil personalizada
Prueba la API
Explora nuestros endpoints directamente desde el navegador.
Endpoints
const response = await fetch('https://api.aramac.dev/v1/quotes', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
}
});
const data = await response.json();
console.log(data);Librerías Oficiales
Desarrolla más rápido con nuestros SDKs mantenidos por el equipo ΛRΛMΛC.
JavaScript / TypeScript
Python
PHP
Recibe Eventos en Tiempo Real
Configura webhooks para recibir notificaciones instantáneas cuando ocurran eventos en tu cuenta.
Eventos Disponibles
Payload de Ejemplo
{
"id": "evt_123456789",
"type": "quote.accepted",
"created_at": "2025-02-15T10:30:00Z",
"data": {
"quote": {
"id": "quo_abc123",
"client_id": "cli_xyz789",
"client_name": "María González",
"total": 245000,
"currency": "CLP",
"accepted_at": "2025-02-15T10:30:00Z"
}
}
}Verificación de Firma
Verifica que los webhooks provienen de ΛRΛMΛC:
import { verifyWebhook } from '@aramac/sdk';
app.post('/webhooks/aramac', (req, res) => {
const signature = req.headers['x-aramac-signature'];
const payload = req.body;
const isValid = verifyWebhook({
payload,
signature,
secret: process.env.WEBHOOK_SECRET
});
if (!isValid) {
return res.status(401).send('Invalid signature');
}
// Procesar evento
handleEvent(payload);
res.status(200).send('OK');
});Verificación de Firma
Cada webhook incluye una firma HMAC para verificar su autenticidad.
Reintentos Automáticos
Si tu endpoint falla, reintentamos hasta 3 veces con backoff exponencial.
Entrega en Tiempo Real
Los webhooks se envían inmediatamente después de que ocurre el evento.
Ejemplos Completos
Patrones de integración reales usados por nuestros partners.
Integración con ERP
Sincroniza cotizaciones aceptadas con tu ERP automáticamente.
// Sincronizar cotizaciones a SAP cada hora
import { AramacClient } from '@aramac/sdk';
import { SAPClient } from './sap-client';
async function syncQuotesToSAP() {
const aramac = new AramacClient({
apiKey: process.env.ARAMAC_KEY
});
const sap = new SAPClient({ /* config */ });
// Obtener cotizaciones aceptadas desde última sincronización
const quotes = await aramac.quotes.list({
status: 'accepted',
from: lastSyncTime
});
for (const quote of quotes.data) {
// Crear orden de venta en SAP
await sap.createSalesOrder({
customerId: quote.clientId,
items: quote.items.map(item => ({
material: item.sku,
quantity: item.quantity,
price: item.price
}))
});
// Marcar como sincronizado
await markAsSynced(quote.id);
}
}Dashboard Personalizado
Crea métricas de negocio para electricistas.
// Dashboard de métricas para electricista
async function getDashboardMetrics(electricianId: string) {
const aramac = new AramacClient({
apiKey: process.env.ARAMAC_KEY
});
const [quotes, projects, clients] = await Promise.all([
aramac.quotes.list({ limit: 100 }),
aramac.projects.list({ status: 'active' }),
aramac.clients.list()
]);
return {
totalQuotes: quotes.pagination.total,
acceptedRate: calculateAcceptanceRate(quotes.data),
activeProjects: projects.data.length,
totalClients: clients.pagination.total,
revenueThisMonth: calculateRevenue(quotes.data),
avgQuoteValue: calculateAverage(quotes.data),
pendingQuotes: quotes.data.filter(q => q.status === 'sent').length
};
}
function calculateAcceptanceRate(quotes: Quote[]) {
const accepted = quotes.filter(q => q.status === 'accepted').length;
return (accepted / quotes.length * 100).toFixed(1);
}Bot de Slack
Recibe notificaciones de cotizaciones en Slack.
app.post('/webhooks/aramac', async (req, res) => {
const { type, data } = req.body;
if (type === 'quote.accepted') {
await slack.chat.postMessage({
channel: '#ventas',
text: 'Nueva cotización aceptada!',
blocks: [
{
type: 'section',
text: {
type: 'mrkdwn',
text: [data.quote.client_name, 'aceptó una cotización de $', data.quote.total].join(' ')
}
}
]
});
}
res.status(200).send('OK');
});Sincronización de Inventario
Mantén materiales sincronizados con tu catálogo.
async function syncMaterialsFromSupplier() {
const aramac = new AramacClient({
apiKey: process.env.ARAMAC_KEY
});
// Obtener catálogo del proveedor
const supplierCatalog = await fetchSupplierCatalog();
for (const item of supplierCatalog) {
// Buscar material existente
const existing = await aramac.materials.findBySku(item.sku);
if (existing) {
// Actualizar precio y stock
await aramac.materials.update(existing.id, {
price: item.price,
stock: item.stock,
lastUpdated: new Date()
});
} else {
// Crear nuevo material
await aramac.materials.create({
sku: item.sku,
name: item.name,
description: item.description,
price: item.price,
category: item.category,
supplier: item.supplier
});
}
}
console.log('Sincronizados ' + supplierCatalog.length + ' materiales');
}Historial de Cambios
Mantente al día con las últimas actualizaciones de la API.
Nuevo: Filtro por rango de fechas en /v1/quotes
Ahora puedes filtrar cotizaciones usando from y to
Fix: Paginación en /v1/clients
Corregido error donde offset no funcionaba correctamente
Nuevo Endpoint: POST /v1/calculators/voltage-drop
Calcula caída de tensión según RIC
Deprecado: campo total en quote.items
Usa subtotal + tax en su lugar. Se eliminará el 2025-06-01
Webhooks: Nuevo evento invoice.overdue
Recibe notificaciones cuando facturas vencen
Fix: Rate limiting más preciso
Mejorado el cálculo de límites por cliente
Breaking: Autenticación OAuth 2.0
Ahora requerido para todos los endpoints. Ver docs de migración.
Nuevo: SDK de Python
Librería oficial para Python 3.8+
Nuevo: Exportación a Excel
Exporta cotizaciones y proyectos a Excel
Docs: Guía de mejores prácticas
Nueva sección en la documentación
Fix: Memoria de cálculo TE1
Corregido formato de fecha en memoria
Nuevo: Webhooks de firma digital
Eventos para firmas PAdES completadas
Únete a la Comunidad
Conecta con otros desarrolladores, comparte ideas y obtén soporte.
API Status
Monitoreo en tiempo real de nuestros servicios.
Partner Program
Beneficios exclusivos para integradores.
Open Source
Nuestros SDKs son open source. Contribuye, reporta bugs o solicita features. ¡La comunidad hace la API mejor!