zabbix-graphql-api/schema/queries.graphql
Andreas Hilbig ce340ccf2e feat: implement storeGroupValue and getGroupValue with unified locator
- API Refactoring: Extracted GroupValueLocator input type to unify parameters for storeGroupValue (mutation) and getGroupValue (query).

- Data Retrieval: Implemented getGroupValue query to allow direct retrieval of JSON values stored in host groups via Zabbix Trapper items.

- Enhanced Logic: Added ZabbixGetGroupValueRequest to fetch latest history values for group-associated items.

- Improved Verification: Updated the regression suite (REG-STORE) to include a full 'Store-Update-Retrieve' verification cycle.

- Documentation:

    - Updated docs/howtos/cookbook.md recipes to use the new locator structure and getGroupValue for verification.

    - Updated sample query files (docs/queries/) with corrected variables and verification queries.

- Tests:

    - Added unit and integration tests for getGroupValue.

    - Updated existing tests to match the refactored storeGroupValue schema.

- Verification: Verified 100% pass rate for all 16 regression steps and all unit/integration tests.
2026-02-20 12:26:39 +01:00

183 lines
5.4 KiB
GraphQL

# Scalars resolved by package "graphql-scalars"
scalar DateTime
scalar Time
scalar JSONObject
type Query {
"""
Returns the API build version.
"""
apiVersion: String!
"""
Returns the version of the connected Zabbix instance.
"""
zabbixVersion: String
"""
Logs in to Zabbix. This is primarily for debugging and testing.
The returned authentication token can be passed in the `zabbix-auth-token` header for future requests.
Alternatively, the `zbx_session` cookie can be used for authentication.
"""
login(
"""Zabbix username."""
username: String!,
"""Zabbix password."""
password: String!
): String
"""
Logs out from Zabbix, invalidating the current session/token.
"""
logout: Boolean
"""
Returns all hosts and their items.
Authentication: Requires `zbx_session` cookie or `zabbix-auth-token` header.
"""
allHosts(
"""Wildcard name pattern for filtering hosts (LIKE '%...%')."""
name_pattern: String = "",
"""Filter hosts by their technical name."""
filter_host: String = null,
"""Filter by a specific host ID."""
hostids: Int,
"""Filter by host group IDs."""
groupids:[Int!] = null,
"""If true, only returns hosts that have items attached."""
with_items: Boolean = false,
"""Filter by `deviceType` tag."""
tag_deviceType:[String]=[],
"""Filter by `hostType` tag."""
tag_hostType:[String!]
): [Host]
"""
Returns all devices and their items. Devices are hosts with a `deviceType` and a state.
Authentication: Requires `zbx_session` cookie or `zabbix-auth-token` header.
"""
allDevices(
"""Wildcard name pattern for filtering devices (LIKE '%...%')."""
name_pattern: String = "",
"""Filter devices by their technical name."""
filter_host: String = null,
"""Filter by a specific host ID."""
hostids: Int,
"""Filter by host group IDs."""
groupids:[Int!] = null,
"""If true, only returns devices that have items attached."""
with_items: Boolean = false,
"""Filter by `deviceType` tag."""
tag_deviceType:[String]=[],
"""Filter by `hostType` tag."""
tag_hostType:[String!]
): [Device]
"""
Returns all host groups.
Authentication: Requires `zbx_session` cookie or `zabbix-auth-token` header.
"""
allHostGroups(
"""Search for host groups by name (supports wildcards)."""
search_name: String,
"""If true, only returns groups that have hosts attached."""
with_hosts: Boolean = true
): [HostGroup]
"""
Returns all locations used by hosts.
Authentication: Requires `zbx_session` cookie or `zabbix-auth-token` header.
"""
locations(
"""Regex name pattern for filtering locations."""
name_pattern: String = "",
"""If true, filters the result for distinct names."""
distinct_by_name: Boolean = true,
"""Filter by template IDs used by the hosts."""
templateids:[String] = null
): [Location]
"""
Exports value history for Zabbix items.
Authentication: Requires `zbx_session` cookie or `zabbix-auth-token` header.
"""
exportHostValueHistory(
"""Optional list of hostnames to be included in the result."""
host_filter: [String!],
"""Optional list of item keys to be included in the result."""
itemKey_filter: [String!],
"""Timestamp of the earliest value to include."""
time_from: DateTime,
"""Timestamp of the last value to include."""
time_until: DateTime,
"""Sort order for the results (asc or desc)."""
sortOrder: SortOrder=desc,
"""Maximum number of records to return."""
limit: Int,
"""The data type of the values being retrieved."""
type: StorageItemType = FLOAT
): GenericResponse
"""
Returns all user permissions.
If `objectNames` is provided, returns only the permissions related to those objects.
"""
userPermissions(
"""Optional list of object names to filter by."""
objectNames: [String!]
): [UserPermission!]
"""
Checks if the current user has the requested permissions.
"""
hasPermissions(
"""List of permissions to check."""
permissions: [PermissionRequest!]!
): Boolean
"""
Exports user rights (roles and groups).
"""
exportUserRights(
"""Wildcard name pattern for filtering (LIKE '%...%')."""
name_pattern: String = ""
"""Regex to exclude matching host groups from group permissions."""
exclude_hostgroups_pattern: String = ""
): UserRights
"""
Returns templates.
"""
templates(
"""Filter by specific template IDs."""
hostids: [Int],
"""Wildcard name pattern for filtering templates."""
name_pattern: String
): [Template]
"""
Returns all template groups.
"""
allTemplateGroups(
"""Wildcard name pattern for filtering template groups."""
name_pattern: String
): [HostGroup]
"""
Retrieves the last value stored with `storeGroupValue`.
Authentication: Requires `zbx_session` cookie or `zabbix-auth-token` header.
"""
getGroupValue(
"""Parameters to locate the stored value."""
locator: GroupValueLocator!
): JSONObject
}