Listar, activar y desactivar plugins desde la API
La API de FacturaScripts incluye un endpoint especial, plugins, que no corresponde a ningún modelo de la base de datos. Permite consultar los plugins instalados y, si la API key tiene acceso completo, activarlos o desactivarlos de forma remota.
Todas las peticiones necesitan la cabecera Token (o X-Auth-Token) con la API key, igual que el resto de la API.
Listar los plugins
GET http://localhost:8000/api/3/plugins
Devuelve un array con los plugins instalados. Los plugins ocultos y los que solo están en la carpeta de descargas (sin instalar) no aparecen.
[
{
"compatible": true,
"description": "Terminal punto de venta",
"enabled": true,
"folder": "POS",
"min_version": 2026.0,
"min_php": 8.0,
"name": "POS",
"require": ["Tickets"],
"require_php": ["bcmath"],
"version": 1.5
}
]
Significado de cada campo:
compatible: indica si el plugin es compatible con esta versión de FacturaScripts y con este PHP.description: la descripción delfacturascripts.inidel plugin.enabled:truesi el plugin está activado.folder: nombre de la carpeta dentro dePlugins.min_version: versión mínima de FacturaScripts que necesita.min_php: versión mínima de PHP que necesita.name: nombre del plugin. Es el identificador que se usa en el resto de peticiones.require: lista de plugins de los que depende.require_php: lista de extensiones de PHP que necesita.version: versión del plugin.
Además, la respuesta incluye la cabecera X-Core-Version con la versión del core instalado, útil para comprobar compatibilidades sin hacer una segunda petición.
Filtrar y ordenar
El listado admite los parámetros filter y sort, con la misma sintaxis que el resto de recursos de la API.
Para obtener solo los plugins activados:
GET http://localhost:8000/api/3/plugins?filter[enabled]=1
Los filtros aceptan los sufijos habituales para cambiar el operador:
_neq: distinto de. Ejemplo:filter[name_neq]=POS_gt,_gte: mayor que, mayor o igual que. Ejemplo:filter[version_gte]=2_lt,_lte: menor que, menor o igual que._like: contiene el texto (sin distinguir mayúsculas). Ejemplo:filter[description_like]=ticket_null,_notnull: el campo es nulo o no lo es.
Para ordenar se usa sort, indicando ASC o DESC:
GET http://localhost:8000/api/3/plugins?sort[version]=DESC
Obtener un plugin concreto
GET http://localhost:8000/api/3/plugins/POS
Devuelve un único objeto con los mismos campos que el listado. Si el plugin no existe o no está instalado, responde con un 404:
{
"status": "error",
"message": "plugin-not-found: POS"
}
Si el plugin está marcado como oculto, responde con un 403 y el mensaje plugin-hidden.
Activar un plugin
POST http://localhost:8000/api/3/plugins/POS/enable
Respuesta correcta:
{
"status": "success",
"message": "plugin-enabled"
}
Si la activación falla, la respuesta es un 400 con status: error. En ese caso message no es un texto fijo, sino los mensajes del log de la operación, que explican el motivo: dependencias sin cumplir, plugin no compatible, etc.
Desactivar un plugin
POST http://localhost:8000/api/3/plugins/POS/disable
{
"status": "success",
"message": "plugin-disabled"
}
Al igual que en la activación, si algo falla se devuelve un 400 con los mensajes del log.
Permisos y errores comunes
- Las acciones
enableydisablerequieren el método POST. Con cualquier otro método la respuesta es un405con el mensajemethod-not-allowed. - Requieren una API key con acceso completo. Si la clave no lo tiene, la respuesta es un
403con el mensajefull-access-required. - Para listar plugins no hace falta acceso completo, pero si la API key no lo tiene, necesita un permiso para el recurso
pluginscon la opción de lectura marcada. Se configura en Administrador > API Keys, en la pestaña de permisos. - Cualquier otra acción distinta de
enableodisabledevuelve un400con el mensajeinvalid-action.
Ejemplo con cURL
Listar los plugins activados:
curl -H "Token: MI-API-KEY" \
"http://localhost:8000/api/3/plugins?filter[enabled]=1"
Activar un plugin:
curl -X POST -H "Token: MI-API-KEY" \
"http://localhost:8000/api/3/plugins/POS/enable"
Tenga en cuenta que activar o desactivar un plugin regenera la carpeta Dinamic y puede requerir una actualización de la base de datos, por lo que la petición puede tardar varios segundos.
Si lo que necesitas es activar o desactivar plugins desde código PHP, en lugar de por la API, consulta Gestión de Plugins.