Cómo funciona el marketplace
Navegación, búsqueda, favoritas, suites con instalación conjunta, fichas y compatibilidad con instancias antiguas.
En esta página
La pestaña Catálogo de /admin/extensions es un marketplace de extensiones con la experiencia de una tienda de aplicaciones, pero sobria y con el tema de tu instancia: navegación lateral, búsqueda, filtros, favoritas, suites de marca, páginas de editor y una ficha completa por extensión.
Navegación#
| Sección | Qué muestra | ?sec= |
|---|---|---|
| Descubrir | Destacadas (oficiales), novedades (última versión publicada), populares (dominios con la extensión activa) y recomendadas según lo que ya tienes instalado. | discover |
| Instaladas | Las de este dominio, activas o no. | installed |
| Favoritas ★ | Las que marcaste con la estrella (solo tuyas). | starred |
| Categorías | Todas, o una categoría concreta. | categories + cat |
| Marcas y suites | Carpetas por marca (Google, Zoom, Microsoft, Slack, Seguridad y cumplimiento, IA…). Al abrir una ves sus extensiones y puedes instalarla entera. | suites + suite |
| Del proveedor | Las extensiones oficiales de la plataforma (insignia «Oficial»). | official |
| Comunidad | Preparada para extensiones de terceros. Hoy está vacía y lo explica. | community |
| Editor | Página de un editor o marca con su lista y descripción (se llega desde «de Bloomx» en cualquier tarjeta). | publisher + publisher=<id> |
En pantallas estrechas la columna lateral se sustituye por un selector de Sección. Valores de ?sec=: discover, installed, starred, categories, suites, official, community, publisher.
Búsqueda, filtros y orden#
- Pulsa / en cualquier punto de la pantalla (fuera de un campo de texto) para ir a la búsqueda. Busca en nombre, descripción, etiquetas, editor y suite, sin distinguir acentos, y todas las palabras deben aparecer.
- Filtros combinables: categoría, estado (instaladas, disponibles, desactivadas, con errores, de pago, gratis) y, en «Más filtros», origen (oficial/comunidad), riesgo máximo de permisos, si requiere IA y si es compatible con tu instancia.
- Orden: relevancia, más populares, más recientes o nombre. Tus favoritas aparecen primero (salvo al ordenar por nombre).
- Vista de cuadrícula o lista. Las listas se paginan de 24 en 24 con «Mostrar más» (nada de listas gigantes en el DOM) y el recuento se anuncia a los lectores de pantalla.
URLs compartibles#
Todo el estado vive en la URL, así que puedes compartir o guardar una vista. Los parámetros desconocidos o inválidos se ignoran, y las URLs de antes (?open=<id> de la búsqueda global) siguen funcionando.
| Parámetro | Valores |
|---|---|
q | Texto de búsqueda (máx. 100). |
cat | mail, composer, calendar, contacts, automation, ai, integrations, settings, other |
suite, publisher | Id de la suite o del editor (abren su página). |
status | installed, available, disabled, errors, paid, free |
origin, risk, ai, compat | official|community, low|medium, yes|no, yes |
sort, view, page | relevance|popular|recent|name, grid|list, 1…20 |
ext | Abre la ficha de esa extensión. |
Favoritas#
La estrella ★ de cada tarjeta y de la ficha marca la extensión como favorita para ti: se guarda por administrador en la base de datos de la instancia (tabla ExtensionStar, ruta /api/admin/extensions/stars, nivel 1), nunca es global y ningún otro administrador la ve. El cambio es optimista: la estrella responde al instante y, si el servidor la rechaza, vuelve atrás y lo avisa. Hay un tope de 200 favoritas por administrador.
Suites e «Instalar la suite»#
Una suite agrupa los productos de una misma marca (por ejemplo «Google»: GoogleLib, Calendar, Meet, Drive y Sync). Al abrirla, Instalar la suite calcula un plan antes de tocar nada y te lo enseña:
- El orden de instalación, con las dependencias primero (GoogleLib antes de Calendar) y sin repetir ninguna.
- Los permisos de todo el conjunto, de mayor a menor riesgo, sin duplicados.
- Las aprobaciones explícitas que exigen algunas extensiones (rutas públicas y cuentas compartidas de proveedor): hay que marcar la casilla para poder confirmar.
- Lo que no se instalará y por qué: ya activa, de pago (se compra desde su ficha), incompatible con tu instancia, pausada por la IA, dependencia fuera del catálogo o dependencias circulares.
Al confirmar se ejecutan, una por una y en ese orden, las mismas acciones de siempre (instalar o activar). Si una falla, se detiene ahí y lo anterior queda instalado.
La ficha de la extensión#
- Cabecera: icono, editor con insignia (Oficial / Verificado / Comunidad), suite, versión, instalaciones, categorías, precio y la estrella. Debajo, el estado del botón principal: «Se instalará con GoogleLib», «Requiere GoogleLib», «Requiere actualizar el cliente», «Requiere la clave de dominio», «Pausada por la IA» o «De pago».
- Resumen: descripción, capturas, etiquetas, «Otras de esta suite» y «Relacionadas». Permisos: en lenguaje claro con nivel de riesgo.
- Versiones: historial con el changelog de cada versión, cuál tienes instalada, cuál es la última y si cada una es compatible con tu cliente. Dependencias: árbol con el estado de cada una y quién depende de esta. Información: editor, enlace, licencia, id, suite y categorías.
- Ajustes, credenciales, estado y registro, aprobaciones y los avisos de IA, compatibilidad y clave de dominio siguen donde estaban.
- Las capturas son URLs https. Las de extensiones oficiales se cargan siempre; las de terceros solo tras pulsar «Cargar las capturas» (el servidor del editor vería tu IP).
Instalaciones#
El número de instalaciones es la cantidad de dominios con la extensión activa, calculada por el backend compartido como un agregado: no sale ningún identificador de dominio y se cachea unos 5 minutos. Alimenta «Populares» y el orden «Más populares».
Compatibilidad con instancias antiguas#
El marketplace usa la capacidad de cliente `market.catalog.v1` (clientApi 11, clasificación unsigned-ok: el catálogo es público y funciona también sin clave de dominio). Es solo informativa: el backend añade un campo market a la respuesta del catálogo solo si el cliente la declara, y ninguna extensión la declara en `requires`. Por eso:
- Las instancias antiguas reciben exactamente la misma respuesta de antes y las mismas versiones de cada extensión.
- Un backend antiguo sin
marketno rompe la pantalla: el editor sale del id (core-*= Bloomx oficial) y la categoría de la categoría clásica. - Un manifest que declare
market.catalog.v1enrequiresse rechaza al publicar: ocultaría la extensión a las instancias antiguas.
La insignia Oficial no se toma del manifest tal cual: solo la reciben las extensiones core-* cuyo editor es bloomx. Un tercero que escriba official: true es rechazado al publicar y se ignora al mostrar.
Dónde conectará el «extension market» futuro#
Las extensiones de terceros (gratuitas o de pago) las construye el portal de desarrollador (/admin/developer). El marketplace ya deja los puntos de conexión:
- Sección Comunidad y filtro de origen: hoy vacíos; una extensión de un editor que no sea
bloomxaparece ahí sin cambiar la interfaz. - Páginas de editor (
?publisher=<id>): ya existen; la verificación de editores externos (insignia «Verificado») será un registro del backend, no un campo del manifest. - Precio:
isPaid,priceycurrencyya viajan en el catálogo; el botón de compra lo conecta el módulo de pagos desde la ficha. - Backend: el campo
marketde/api/extensionsy/api/admin/extensions/public-listes la costura; añadir ahí datos del editor (valoraciones, verificación) no obliga a cambiar los manifests.
Para describir tu extensión en el catálogo, lee Publicar tus metadatos de catálogo. Para el contrato general, Extensiones y Crear una extensión.