# Arquitectura de la plataforma

Cómo está construido UTILIA OS: un servicio en la nube compartido por varias organizaciones, con los datos de cada una aislados y los módulos conectados entre sí.

Esta página explica a grandes rasgos cómo está construido UTILIA OS y cómo se comunican sus piezas. Te sirve para entender qué hay al otro lado de tus llamadas a la API y por qué los datos de tu organización nunca se cruzan con los de otra.

## Un servicio en la nube para muchas organizaciones

UTILIA OS es un servicio en la nube que comparten varias organizaciones. Todas usan la misma aplicación y la misma base de datos, pero **cada dato pertenece a una organización** y solo esa organización puede verlo. El aislamiento se aplica dos veces: en el código, que filtra cada consulta por organización, y en la propia base de datos, que rechaza cualquier fila de otra organización aunque el código fallara.

Para tu integración, la consecuencia es simple: la organización con la que trabajas sale siempre de tu credencial (la clave de la aplicación o el token de OAuth), nunca de lo que envíes en la petición.

## Componentes principales

### Servidor

- Una API REST que concentra toda la lógica de negocio y el acceso a los datos.
- Módulos (CRM, Finanzas, Chat, Calendario, Tickets de soporte...) que **se avisan entre sí mediante eventos**: firmar un presupuesto marca la oportunidad como ganada y cobrar una factura queda registrado en su oportunidad, sin que nadie tenga que copiar nada.
- Tareas en segundo plano para lo que tarda: envío de correos, transcripciones, avisos a servidores externos.

### Aplicaciones

- **Web**, accesible desde cualquier navegador actual.
- **Escritorio** para Windows y macOS, con notificaciones del sistema y atajos de teclado.
- **Móvil** para iPhone (iOS). La versión de Android todavía no está publicada.
- **Portal del cliente**, para que los clientes de cada organización consulten sus documentos.

### Integraciones

- **API externa** (`/api/external/v1`) para tu software, con clave de aplicación.
- **Avisos a tu servidor** (webhooks) firmados.
- **SDK** de JavaScript y Python.
- **MCP** y **OAuth**, para que asistentes de IA y aplicaciones actúen en nombre de una persona con sus permisos.

## Cómo fluyen los datos

**Qué pasa por el servidor**

En el centro: **API REST**. Toda la lógica de negocio y el acceso a los datos.

Recibe de:

- **Web y escritorio**: La aplicación en el navegador y en Windows y macOS.
- **Aplicación móvil**: La misma aplicación, empaquetada para iPhone.
- **Portal del cliente**: Los clientes de cada organización consultan sus documentos.
- [**Tu software**](https://os.utilia.ai/docs/developers/getting-started/overview): Llama a la API externa con la clave de su aplicación.

Envía a:

- **Base de datos**: Guarda los datos, separados por organización.
- **Caché**: Sesiones y datos temporales.
- **Almacenamiento de archivos**: Documentos, imágenes y vídeos.
- **Cola de tareas**: Lo que tarda: correos, transcripciones, avisos a servidores externos.

Además de las peticiones HTTP, las aplicaciones mantienen una conexión abierta con el servidor para recibir cambios al momento: mensajes de chat, notificaciones o cambios del calendario llegan sin recargar. Más detalle en [Tiempo real](https://os.utilia.ai/docs/guides/concepts/real-time).

## Seguridad

- **Autenticación**: cada petición lleva una credencial válida. Las personas usan una sesión que pueden cerrar desde sus sesiones activas; tu software usa la clave de su aplicación o un token de OAuth. Detalle para personas en [Inicio de sesión](https://os.utilia.ai/docs/guides/users-and-permissions/authentication).
- **Autorización**: el servidor comprueba cada acción contra el plan de la organización y los permisos de quien la pide. Que la interfaz oculte un botón es comodidad, no seguridad.
- **Cifrado en tránsito**: todas las comunicaciones van por HTTPS.
- **Aislamiento entre organizaciones**: el descrito al principio de esta página.

## Siguiente paso

Para conectar tu software, empieza por [Por dónde empezar a integrar](https://os.utilia.ai/docs/developers/getting-started/overview).
