# Dominio Tenant ## Propósito Es la raíz del modelo multi-tenant. Gestiona organizaciones/sitios, tipos de web, redes sociales, logos y extras configurables por sitio. ## Modelo - `Tenant`: entidad principal, resuelta en rutas por `codigo`; relaciona catálogo, fechas, redes, menús y configuración visual. - `WebsiteType`: plantilla o tipo de sitio disponible. - `WebsiteTypeExtra`: definición de un extra y su configuración admitida. - `WebsiteExtra`: valor resuelto y estado del extra para un tenant. - `SocialMedia`: catálogo de redes sociales asociables. ## Servicios - `TenantService`: crea y actualiza tenants, incluyendo sus recursos asociados. - `TenantInformationService`: carga un tenant y las relaciones requeridas por cada contexto. - `WebsiteTypeService`: crea o actualiza tipos de sitio. - `WebsiteExtraService`: construye reglas dinámicas, crea, actualiza y habilita/deshabilita extras. - `TenantDomainNormalizer`: normaliza dominios antes de resolver el tenant. ## Endpoints - Recurso REST público/administrativo `/tenants`. - Bajo `/v1/adminapp/tenant/website-extras`, con autenticación y contexto de tenant: consulta general, detalle, actualización y activación/desactivación. ## Dependencias y reglas Usa `Attachable` para logos y archivos. Es referenciado por casi todos los dominios para aislamiento. El `codigo` es clave de ruta y clave foránea heredada; no debe sustituirse por `id` sin una migración integral.