This commit comprehensive updates the API to ensure full compatibility across all major Zabbix versions (6.0 LTS, 6.2, 6.4, and 7.0 LTS) and introduces a local development environment for multi-version testing.
Verified Zabbix Versions:
- Zabbix 7.0 (LTS): Full support, including native `history.push` for telemetry.
- Zabbix 6.4: Supported (excluding `history.push`); uses `hostgroup.propagate` and UUID-based matching.
- Zabbix 6.2: Supported (excluding `history.push`); uses `hostgroup.propagate` and `templategroup.*` methods.
- Zabbix 6.0 (LTS): Supported (excluding `history.push`); includes specific fallbacks:
- JSON-RPC: Restored `auth` field in request body for versions lacking Bearer token support.
- Permissions: Implemented name-based fallback for host/template groups (no UUIDs in 6.0).
- Group Expansion: Automatic manual expansion of group rights during import.
- API Methods: Fallback from `templategroup.*` to `hostgroup.*` methods.
Key Technical Changes:
- Local Development: Added `zabbix-local` Docker Compose profile to launch a complete Zabbix stack (Server, Web, Postgres) from scratch with dynamic versioning via `ZABBIX_VERSION`.
- Query Optimization: Refined dynamic field selection to handle implied fields and ensure consistent output regardless of initial Zabbix parameters.
- Documentation:
- New `local_development.md` HOWTO guide.
- Updated `README.md` with detailed version compatibility matrix.
- Expanded `roadmap.md` with achieved milestones.
- Testing:
- Updated entire Jest test suite (23 suites, 96 tests) to be version-aware and robust against naming collisions.
- Enhanced Smoketest and Regression Test executors with better cleanup and error reporting.
- Implement pushHistory mutation to support pushing telemetry data to Zabbix trapper items.
- Add VERBOSITY and MCP_LOG_* environment variables for controllable request/response logging in both API and MCP server.
- Enhance ZabbixRESTDataSource with better session handling and error logging.
- Update ZabbixHistory datasource to support history push operations.
- Expand documentation with new cookbook recipes and MCP integration guides.
- Add integration tests for history pushing (src/test/history_push*).
- Reorganize documentation, moving technical product info PDF to docs/use-cases/.
- Update GraphQL generated types and VCR templates.
- Implement query optimization (reduced output, parameter skipping) to minimize Zabbix API traffic.
- Add indirect dependency handling: deviceType implies tags and state implies items.
- Move schema extensions to samples/extensions/ to clarify their role as samples.
- Enhance DistanceTrackerDevice with String time fields to support optional date portions.
- Ensure allDevices strictly filters by deviceType and populates the field in results.
- Refactor runAllRegressionTests mutation to use internal unique names and improve stability.
- Fix unnecessary Zabbix API calls for item preprocessing during template and host imports.
- Update documentation including cookbook recipes, test specifications, and optimization guides.
- Add extensive unit, integration, and regression tests covering all implemented changes.
- Update docker-compose.yml to mount the samples/ directory as a volume.
- Update IntelliJ .idea run configurations to reflect the new sample extension paths.