--- type: Entity layer: wiki tags: [stack, dashdescomplicar, backend, integracao, wordpress, monitorizacao] title: "Integracao-WordPress" --- # Integracao-WordPress Ingestão de dados de monitorização de sites WordPress. Recebe dados do plugin "Descomplicar Monitor" instalado em cada site cliente e armazena na base de dados para o painel Monitor. ## Responsabilidades - **Ingestão**: Endpoint POST para receber dados dos plugins WP (versão WP, plugins, temas, health status) - **API Key Auth**: Validação obrigatória via header `x-api-key` ou query param `key` - **Determinação de Status**: Algoritmo que classifica o site como `ok`, `warning` ou `critical` baseado em: - Core/plugins/themes desactualizados - Erros de saúde (health check) - Versão PHP - **Listagem**: GET para listar todos os sites monitorizados - **Connection Test**: `GET ?test` para verificar conectividade ## Stack - **Validação**: Zod (`wpMonitorSchema`) com `.passthrough()` para campos extra de plugins - **Auth**: `WP_MONITOR_API_KEY` obrigatória (crash ao iniciar se ausente) - **DB**: MySQL via `db.ts` ## Schema de Dados (Plugin WP → API) Recebe: `site_url`, `wp_version`, `php_version`, `plugins[]`, `themes[]`, `health_status`, `server_info` ## Rotas | Método | Rota | Auth | Função | |---|---|---|---| | `GET` | `/api/wp-monitor` | API Key | Listar sites monitorizados | | `GET` | `/api/wp-monitor?test` | API Key | Teste de conectividade | | `POST` | `/api/wp-monitor` | API Key + Zod | Receber dados do plugin WP | ## Localizações - **Código**: `api/routes/wp-monitor.ts` (148 linhas) - **DB**: `tbl_eal_monitoring` (category=wordpress) - **Plugin**: "Descomplicar Monitor" (instalado nos sites cliente) ## Dependências - **MySQL-Pool**: Armazenamento de dados - **WP_MONITOR_API_KEY**: Chave de API em `.env` - **Plugins WP nos sites cliente**: Enviam dados periodicamente ## Fornece a - **Painel-Monitor**: Secção "Sites WordPress" e "WP Updates" - **Express-API**: Rota `/api/wp-monitor`