#Tipos de integraciones — Odoo con sistemas externos

Guía de arquitectura. Tres enfoques para conectar Odoo con sistemas externos, desde la conexión directa hasta plataformas de middleware completas.

#1. Integración a través de API REST

La comunicación se realiza mediante endpoints HTTP con payloads JSON. Puede ser bidireccional: Odoo consume APIs externas y sistemas externos consumen APIs expuestas por Odoo.

OperadorOdooSistema ExternoOperadorOperadorOdooOdooSistema ExternoSistema ExternoOdoo consume API externadispara acción(botón, cron, workflow)GET/POST /api/...{headers, body JSON}200 OK {data}procesa respuestaactualiza registrosSistema externo consume API OdooPOST /api/v1/...Authorization: Bearer {token}valida tokenvalida payloadejecuta operación(create, write, search)200 OK {id, status}

#Características

AspectoDetalle
ProtocoloHTTP/HTTPS
FormatoJSON (también XML si se requiere)
AutenticaciónBearer Token, API Key, OAuth2
VentajaSimple, estándar, fácil de testear con curl/Postman
LimitaciónSin cola de mensajes — si un extremo cae, se pierde la llamada
Cuándo usarloIntegraciones punto a punto de baja criticidad o con reintentos manejados por el cliente

#Flujo de autenticación típico

Sistema ExternoOdoo APISistema ExternoSistema ExternoOdoo APIOdoo APIPOST /api/v1/auth/token{api_key, secret}validar credenciales200 {access_token, expires_in}GET /api/v1/contactsAuthorization: Bearer {token}validar tokenverificar expiración200 {data}Renovar token antes de que expire.Usar refresh_token si está disponible.

#2. Integración con middleware intermediario

Un middleware actúa como capa de abstracción entre Odoo y los sistemas externos. Centraliza autenticación, transformación de datos, encolado de mensajes, reintentos y observabilidad.

MiddlewareInfraestructuraAPI Gateway(Kong / Traefik)Auth Service(JWT / API Key)Redis(caché + colas)Message Queue(RabbitMQ / SQS)Transform Service(Mapping / Enrichment)Mapping DB(external_id → odoo_id)Odoo Adapter(REST → JSON-RPC)DockerContainersOrquestador(k8s / Swarm)Proxy Inverso(NGINX / Traefik)Sistema Externo(ERP, CRM, MES)Odoo

#Flujo de una solicitud a través del middleware

Sistema ExternoAPI GatewayAuth ServiceTransformRedisMessageOdooOdooSistema ExternoSistema ExternoAPI GatewayAPI GatewayAuth ServiceAuth ServiceTransformServiceTransformServiceRedisCacheRedisCacheMessageQueueMessageQueueOdooAdapterOdooAdapterOdooOdooPOST /api/v1/orders{external_ref, data}validar token✅ autorizadoforward requestGET cache:external_refalt[Cache hit]odoo_id encontrado[Cache miss]lookup external_refsearch_readodoo_idodoo_idSET cache con TTLencolar eventoorder.createdcrear/actualizar ordencreate/writeid confirmadoresultadorespuesta201 Created {status, id}La cola permite procesamientoasincrónico: notificaciones,webhooks, conciliación nocturna

#Componentes del middleware

ComponenteRolTecnologías típicas
API GatewayPunto único de entrada, rate limiting, ruteoKong, Traefik, NGINX, AWS API Gateway
Auth ServiceValidación de tokens, API Keys, permisosOAuth2, JWT, API Key management
RedisCaché de mapeo de IDs, contadores, sesionesRedis, ElastiCache, Memorystore
Message QueueEncolado de eventos, reintentos, procesamiento asyncRabbitMQ, SQS, BullMQ, Kafka
Transform ServiceTraducción de contratos, enrichment, validaciónPython, Node.js, Go
Mapping DBPersistencia external_id → odoo_id por modeloPostgreSQL, MySQL, DynamoDB
Odoo AdapterTraducción REST/JSON → JSON-RPC/ORMXML-RPC, OdooRPC, custom
DockerContenedores por servicioDocker, Podman
OrquestadorEscalado, health checks, desplieguesKubernetes, Docker Swarm, Nomad
Proxy inversoTLS termination, balanceo de cargaNGINX, Traefik, HAProxy, Caddy

#Ventajas del middleware

VentajaExplicación
DesacoplamientoNingún sistema conoce los detalles del otro
Tolerancia a fallosColas de mensajes con reintentos y dead-letter
ObservabilidadLogs, métricas y tracing centralizados
CacheReduce llamadas repetitivas a Odoo
TransformaciónAdapta contratos sin modificar ningún sistema
SeguridadAutenticación centralizada, rate limiting, IP whitelisting
EscalabilidadCada servicio escala independientemente

#3. Integración a través de XML-RPC

Odoo expone nativamente una API XML-RPC sobre HTTP. El sistema externo llama directamente a métodos del ORM de Odoo (execute_kw) sin necesidad de endpoints REST personalizados.

Sistema ExternoOdoo XML-RPCOdoo XML-RPCOdoo DBSistema ExternoSistema ExternoOdoo XML-RPC/commonOdoo XML-RPC/commonOdoo XML-RPC/objectOdoo XML-RPC/objectOdoo DBOdoo DBAutenticaciónauthenticate(db, user, password)validar credencialesuid (user id)Operación RPCexecute_kw(db, uid, password,'res.partner', 'search_read',['is_company','=',True],{{'fields':['name','email']}})SELECT name, email FROM res_partnerWHERE is_company = true[{id: 42, name: "Acme", email: "..."}]XML-RPC usa serialización XMLsobre HTTP. Más verboso que JSONpero 100% nativo de Odoo — norequiere módulos adicionales.

#Modelo híbrido: RPC + REST

Un patrón común es combinar XML-RPC para operaciones internas del middleware con una API REST hacia el exterior:

Sistema ExternoAPI RESTOdoo XML-RPCOdooSistema ExternoSistema ExternoAPI REST(Middleware)API REST(Middleware)Odoo XML-RPC/objectOdoo XML-RPC/objectOdooOdooPOST /api/v1/contacts{name, vat, email}Authorization: Bearer {token}execute_kw('res.partner', 'create',[{name, vat, email}])crear registropartner_id: 42execute_kw('res.partner', 'write',[[42], {ref: 'EXT-001'}]\n)actualizar referencia externaok201 Created{status: "created", odoo_id: 42}

#Características

AspectoDetalle
ProtocoloXML-RPC sobre HTTP
FormatoXML (serialización automática)
Endpoints nativos/xmlrpc/common, /xmlrpc/object, /xmlrpc/db
AutenticaciónUsuario + contraseña de Odoo (o API Key en v14+)
Métodosexecute_kw(model, method, args, kwargs)
VentajaSin desarrollo en Odoo — acceso total al ORM
LimitaciónVerboso, requiere conocer modelos internos, sin rate limiting nativo
Cuándo usarloMigraciones, scripts, conexiones internas con acceso controlado

#Híbrido REST + XML-RPC

VentajaCómo se logra
REST para el exteriorAPI REST documentada con Swagger/OpenAPI
RPC para Odooexecute_kw en el adaptador — máxima flexibilidad
Separación de contratosLa API REST define el contrato público; el RPC interno puede cambiar
SeguridadToken Bearer en REST, API Key en RPC — doble capa

#Comparativa final

API RESTDirectaMiddlewareIntermediarioXML-RPCNativoSimpleEstándarSin colasEncoladoCachéObservabilidadEscalableTolerante a fallosORM completoSin desarrolloHíbrido RESTevoluciona apuede usarcomo adaptador
CriterioAPI REST directaMiddlewareXML-RPC
Complejidad inicialBajaAltaMedia
Tolerancia a fallos
Encolado de mensajes
Transformación de datosLimitada✅ CompletaManual
ObservabilidadBásica✅ CentralizadaBásica
Escalabilidad
Seguridad centralizada
Desarrollo en OdooMedioMedioMínimo
Ideal paraMVPs, baja criticidadProducción, alta disponibilidadMigraciones, scripts

📄 Conclusión: Para integraciones en producción con múltiples sistemas, el middleware intermediario es la arquitectura recomendada. Para scripts puntuales o migraciones, XML-RPC directo es más rápido de implementar. La API REST directa sirve como primer paso antes de evolucionar a una arquitectura con middleware.