sc-zabbix-api
Version:
TypeScript client for Zabbix JSON-RPC API with token authentication
1,298 lines (1,297 loc) • 38.1 kB
TypeScript
export interface ZabbixApiConfig {
url: string;
token?: string;
username?: string;
password?: string;
timeout?: number;
retries?: number;
retryDelay?: number;
loginTimeout?: number;
}
export interface ZabbixApiResponse<T> {
jsonrpc: string;
result: T;
id: number;
}
export interface ZabbixApiError {
jsonrpc: string;
error: {
code: number;
message: string;
data: string;
};
id: number;
}
export interface ZabbixConnectionError extends Error {
code?: string;
type: "TIMEOUT" | "CONNECTION_REFUSED" | "NETWORK_ERROR" | "AUTH_ERROR" | "UNKNOWN";
originalError?: any;
retryAttempt?: number;
}
export interface UserLoginParams {
username?: string;
password?: string;
userData?: boolean;
}
export interface UserLoginResponseObject {
sessionid: string;
userid?: string;
username?: string;
name?: string;
surname?: string;
url?: string;
autologin?: string;
autologout?: string;
lang?: string;
refresh?: string;
theme?: string;
attempt_failed?: string;
attempt_ip?: string;
attempt_clock?: string;
rows_per_page?: string;
timezone?: string;
roleid?: string;
userdirectoryid?: string;
ts_provisioned?: string;
}
export type UserLoginResponse = string | UserLoginResponseObject;
export interface UserCheckAuthenticationParams {
sessionid?: string;
token?: string;
extend?: boolean;
}
export interface UserCheckAuthenticationResponse {
userid: string;
username?: string;
name?: string;
surname?: string;
url?: string;
autologin?: string;
autologout?: string;
lang?: string;
refresh?: string;
theme?: string;
attempt_failed?: string;
attempt_ip?: string;
attempt_clock?: string;
rows_per_page?: string;
timezone?: string;
roleid?: string;
userdirectoryid?: string;
ts_provisioned?: string;
}
type HostGetParamsOutput = "hostid" | "proxy_hostid" | "host" | "status" | "lastaccess" | "ipmi_authtype" | "ipmi_privilege" | "ipmi_username" | "ipmi_password" | "maintenanceid" | "maintenance_status" | "maintenance_type" | "maintenance_from" | "name" | "flags" | "templateid" | "description" | "tls_connect" | "tls_accept" | "tls_issuer" | "tls_subject" | "proxy_address" | "auto_compress" | "custom_interfaces" | "uuid" | "inventory_mode";
export interface HostGetParams {
output?: HostGetParamsOutput[];
filter?: {
hostid?: string[];
host?: string[];
status?: number[];
flags?: number[];
name?: string[];
monitored_by?: number[];
proxyid?: string[];
proxy_groupid?: string[];
};
search?: {
host?: string;
name?: string;
description?: string;
};
selectInterfaces?: ("interfaceid" | "hostid" | "main" | "type" | "useip" | "ip" | "dns" | "port" | "available" | "error" | "errors_from" | "disable_until" | "details")[];
selectGroups?: string | string[];
selectTags?: string | string[];
selectMacros?: string | string[];
selectInventory?: string | string[];
sortfield?: string[];
sortorder?: string;
limit?: number;
}
/**
* Zabbix Host Object
* @see https://www.zabbix.com/documentation/current/en/manual/api/reference/host/object
*/
export interface Host {
/**
* ID of the host.
* Property behavior: read-only, required for update operations
*/
hostid: string;
/**
* Technical name of the host.
* Property behavior: required for create operations
*/
host: string;
/**
* Description of the host.
*/
description?: string;
/**
* Origin of the host.
* Possible values:
* - 0 - a plain host
* - 4 - a discovered host
* Property behavior: read-only
*/
flags?: 0 | 4;
/**
* Host inventory population mode.
* Possible values:
* - -1 - (default) disabled
* - 0 - manual
* - 1 - automatic
*/
inventory_mode?: -1 | 0 | 1;
/**
* IPMI authentication algorithm.
* Possible values:
* - -1 - (default) default
* - 0 - none
* - 1 - MD2
* - 2 - MD5
* - 4 - straight
* - 5 - OEM
* - 6 - RMCP+
*/
ipmi_authtype?: -1 | 0 | 1 | 2 | 4 | 5 | 6;
/**
* IPMI password.
*/
ipmi_password?: string;
/**
* IPMI privilege level.
* Possible values:
* - 1 - callback
* - 2 - (default) user
* - 3 - operator
* - 4 - admin
* - 5 - OEM
*/
ipmi_privilege?: 1 | 2 | 3 | 4 | 5;
/**
* IPMI username.
*/
ipmi_username?: string;
/**
* Starting time of the effective maintenance.
* Property behavior: read-only
*/
maintenance_from?: string;
/**
* Effective maintenance status.
* Possible values:
* - 0 - (default) no maintenance
* - 1 - maintenance in effect
* Property behavior: read-only
*/
maintenance_status?: 0 | 1;
/**
* Effective maintenance type.
* Possible values:
* - 0 - (default) maintenance with data collection
* - 1 - maintenance without data collection
* Property behavior: read-only
*/
maintenance_type?: 0 | 1;
/**
* ID of the maintenance that is currently in effect on the host.
* Property behavior: read-only
*/
maintenanceid?: string;
/**
* Visible name of the host.
* Default: host property value
*/
name?: string;
/**
* Source that is used to monitor the host.
* Possible values:
* - 0 - (default) Zabbix server
* - 1 - Proxy
* - 2 - Proxy group
*/
monitored_by?: 0 | 1 | 2;
/**
* ID of the proxy that is used to monitor the host.
* Property behavior: required if monitored_by is set to "Proxy"
*/
proxyid?: string;
/**
* ID of the proxy group that is used to monitor the host.
* Property behavior: required if monitored_by is set to "Proxy group"
*/
proxy_groupid?: string;
/**
* Status and function of the host.
* Possible values:
* - 0 - (default) enabled
* - 1 - disabled
*/
status?: 0 | 1;
/**
* Connections to host.
* Possible values:
* - 1 - (default) No encryption
* - 2 - PSK
* - 4 - certificate
*/
tls_connect?: 1 | 2 | 4;
/**
* Connections from host.
* This is a bitmask field; any sum of possible bitmap values is acceptable
* (for example, 6 for PSK and certificate).
* Possible bitmap values:
* - 1 - (default) No encryption
* - 2 - PSK
* - 4 - certificate
*/
tls_accept?: number;
/**
* Certificate issuer.
*/
tls_issuer?: string;
/**
* Certificate subject.
*/
tls_subject?: string;
/**
* PSK identity; must be paired with only one PSK (across autoregistration, hosts, and proxies).
* Do not include sensitive information in the PSK identity, as it is sent unencrypted
* over the network to inform the receiver which PSK to use.
* Property behavior: write-only, required if tls_connect is set to "PSK",
* or tls_accept contains the "PSK" bit
*/
tls_psk_identity?: string;
/**
* Pre-shared key (PSK); must be at least 32 hex digits.
* Property behavior: write-only, required if tls_connect is set to "PSK",
* or tls_accept contains the "PSK" bit
*/
tls_psk?: string;
/**
* Host active interface availability status.
* Possible values:
* - 0 - interface status is unknown
* - 1 - interface is available
* - 2 - interface is not available
* Property behavior: read-only
*/
active_available?: 0 | 1 | 2;
/**
* ID of the proxy assigned by Zabbix server, if the host is monitored by a proxy group.
* Property behavior: read-only
*/
assigned_proxyid?: string;
/**
* Host interfaces (populated when selectInterfaces is used)
*/
interfaces?: HostInterface[];
}
/**
* SNMP Interface Details
* https://www.zabbix.com/documentation/current/en/manual/api/reference/hostinterface/object#host-interface-object
*/
export interface SNMPDetails {
/** SNMP interface version: 1=SNMPv1, 2=SNMPv2c, 3=SNMPv3 (required) */
version: 1 | 2 | 3;
/** Use bulk SNMP requests: 0=don't use, 1=use bulk (default: 1) */
bulk?: 0 | 1;
/** SNMP community (required for SNMPv1/v2c) */
community?: string;
/** Max repetition value for bulk requests (default: 10) */
max_repetitions?: number;
/** SNMPv3 security name (for SNMPv3 only) */
securityname?: string;
/** SNMPv3 security level: 0=noAuthNoPriv, 1=authNoPriv, 2=authPriv */
securitylevel?: 0 | 1 | 2;
/** SNMPv3 authentication passphrase */
authpassphrase?: string;
/** SNMPv3 privacy passphrase */
privpassphrase?: string;
/** SNMPv3 auth protocol: 0=MD5, 1=SHA1, 2=SHA224, 3=SHA256, 4=SHA384, 5=SHA512 */
authprotocol?: 0 | 1 | 2 | 3 | 4 | 5;
/** SNMPv3 privacy protocol: 0=DES, 1=AES128, 2=AES192, 3=AES256, 4=AES192C, 5=AES256C */
privprotocol?: 0 | 1 | 2 | 3 | 4 | 5;
/** SNMPv3 context name */
contextname?: string;
}
/**
* Host Interface Object
* https://www.zabbix.com/documentation/current/en/manual/api/reference/hostinterface/object#host-interface-object
*/
export interface HostInterface {
/** ID of the interface (read-only, required for update) */
interfaceid?: string;
/** Availability: 0=unknown, 1=available, 2=unavailable (read-only) */
available?: 0 | 1 | 2;
/** ID of the host (constant, required for create) */
hostid: string;
/** Interface type: 1=Agent, 2=SNMP, 3=IPMI, 4=JMX (required for create) */
type: 1 | 2 | 3 | 4;
/** IP address (required for create, can be empty if using DNS) */
ip: string;
/** DNS name (required for create, can be empty if using IP) */
dns: string;
/** Port number (required for create) */
port: string;
/** Connect via IP: 0=use DNS, 1=use IP (required for create) */
useip: 0 | 1;
/** Default interface: 0=not default, 1=default (required for create) */
main: 0 | 1;
/** Additional details (required if type=SNMP) */
details?: SNMPDetails;
/** Next polling time of unavailable interface (read-only) */
disable_until?: string;
/** Error text if unavailable (read-only) */
error?: string;
/** Time when interface became unavailable (read-only) */
errors_from?: string;
}
/**
* Zabbix User Object
* @see https://www.zabbix.com/documentation/current/en/manual/api/reference/user/object
*/
export interface User {
/**
* ID of the user.
* Property behavior: read-only, required for update operations
*/
userid?: string;
/**
* User's name.
* Property behavior:
* - required for create operations
* - read-only for provisioned users if the user is linked to a user directory
*/
username: string;
/**
* User's password.
* The value of this parameter can be an empty string if the user is linked to a user directory.
* Property behavior: write-only
*/
passwd?: string;
/**
* ID of the role of the user.
* Note that users without a role can log into Zabbix only using LDAP or SAML authentication.
*/
roleid?: string;
/**
* Time of the last unsuccessful login attempt.
* Property behavior: read-only
*/
attempt_clock?: string;
/**
* Recent failed login attempt count.
* Property behavior: read-only
*/
attempt_failed?: number;
/**
* IP address from where the last unsuccessful login attempt came from.
* Property behavior: read-only
*/
attempt_ip?: string;
/**
* Whether to enable auto-login.
* Possible values:
* - 0 - (default) auto-login disabled
* - 1 - auto-login enabled
*/
autologin?: 0 | 1;
/**
* User session life time. Accepts seconds and time unit with suffix.
* If set to 0s, the session will never expire.
* Default: 15m
*/
autologout?: string;
/**
* Language code of the user's language, for example, en_US.
* Default: default - system default
*/
lang?: string;
/**
* Name of the user.
*/
name?: string;
/**
* Whether the user has been provisioned.
* Possible values:
* - 0 - not provisioned
* - 1 - provisioned
* Property behavior: read-only
*/
provisioned?: 0 | 1;
/**
* Automatic refresh period. Accepts seconds or time unit with suffix (e.g., 30s, 90s, 1m, 1h).
* Default: 30s
*/
refresh?: string;
/**
* Amount of object rows to show per page.
* Default: 50
*/
rows_per_page?: number;
/**
* Surname of the user.
*/
surname?: string;
/**
* User's theme.
* Possible values:
* - default - (default) system default
* - blue-theme - Blue
* - dark-theme - Dark
*/
theme?: "default" | "blue-theme" | "dark-theme";
/**
* Time when the latest provisioning operation was made.
* Property behavior: read-only, supported for Super admin type users
*/
ts_provisioned?: string;
/**
* URL of the page to redirect the user to after logging in.
*/
url?: string;
/**
* ID of the user directory that the user in linked to.
* Used for provisioning (creating or updating), as well as to login a user that is linked to a user directory.
* Default: 0
* Property behavior: read-only, supported for Super admin type users
*/
userdirectoryid?: string;
/**
* User's time zone, for example, Europe/London, UTC.
* Default: default - system default
*/
timezone?: string;
/**
* User media objects (populated when selectMedias is used)
*/
medias?: Media[];
}
/**
* Zabbix Media Object
* @see https://www.zabbix.com/documentation/current/en/manual/api/reference/user/object#media
*/
export interface Media {
/**
* ID of the user's media.
* Property behavior: read-only
*/
mediaid?: string;
/**
* ID of the media type used by the user's media.
* Property behavior: required
*/
mediatypeid: string;
/**
* Address, user name or other identifier of the recipient.
* If type of Media type is set to "Email", values are represented as array.
* For other types of Media types, value is represented as a string.
* Property behavior: required
*/
sendto: string | string[];
/**
* Whether the media is enabled.
* Possible values:
* - 0 - (default) enabled
* - 1 - disabled
*/
active?: 0 | 1;
/**
* Trigger severities to send notifications about.
* This is a bitmask field; any sum of possible bitmap values is acceptable.
* Possible bitmap values:
* - 1 - Not classified
* - 2 - Information
* - 4 - Warning
* - 8 - Average
* - 16 - High
* - 32 - Disaster
* Default: 63
*/
severity?: number;
/**
* Time when the notifications can be sent as a time period or user macros separated by a semicolon.
* Default: 1-7,00:00-24:00
*/
period?: string;
/**
* Whether the user has been provisioned.
* Possible values:
* - 0 - not provisioned
* - 1 - provisioned
*/
provisioned?: 0 | 1;
/**
* User directory media mapping ID for provisioned media.
* Property behavior: read-only, supported for Super admin type users
*/
userdirectory_mediaid?: string;
}
/**
* Item types used in Zabbix
*/
export declare enum ItemType {
ZabbixAgent = 0,
ZabbixTrapper = 2,
SimpleCheck = 3,
ZabbixInternal = 5,
ZabbixAgentActive = 7,
WebItem = 9,
ExternalCheck = 10,
DatabaseMonitor = 11,
IPMIAgent = 12,
SSHAgent = 13,
TelnetAgent = 14,
Calculated = 15,
JMXAgent = 16,
SNMPTrap = 17,
DependentItem = 18,
HTTPAgent = 19,
SNMPAgent = 20,
Script = 21,
Browser = 22
}
/**
* Item value types
*/
export declare enum ItemValueType {
NumericFloat = 0,
Character = 1,
Log = 2,
NumericUnsigned = 3,
Text = 4,
Binary = 5
}
/**
* HTTP header object for HTTP agent items
* @see https://www.zabbix.com/documentation/current/en/manual/api/reference/item/object#http-header
*/
export interface HttpHeader {
/**
* HTTP header name.
* Property behavior: required
*/
name: string;
/**
* Header value.
* Property behavior: required
*/
value: string;
}
/**
* HTTP query field object for HTTP agent items
* @see https://www.zabbix.com/documentation/current/en/manual/api/reference/item/object#http-query-field
*/
export interface HttpQueryField {
/**
* Name of the parameter.
* Property behavior: required
*/
name: string;
/**
* Parameter value.
* Property behavior: required
*/
value: string;
}
/**
* Item tag object
* @see https://www.zabbix.com/documentation/current/en/manual/api/reference/item/object#item-tag
*/
export interface ItemTag {
/**
* Item tag name.
* Property behavior: required
*/
tag: string;
/**
* Item tag value.
*/
value: string;
}
/**
* Item preprocessing step object
* @see https://www.zabbix.com/documentation/current/en/manual/api/reference/item/object#item-preprocessing
*/
export interface ItemPreprocessing {
/**
* The preprocessing option type.
* Possible values:
* 1 - Custom multiplier;
* 2 - Right trim;
* 3 - Left trim;
* 4 - Trim;
* 5 - Regular expression;
* 6 - Boolean to decimal;
* 7 - Octal to decimal;
* 8 - Hexadecimal to decimal;
* 9 - Simple change;
* 10 - Change per second;
* 11 - XML XPath;
* 12 - JSONPath;
* 13 - In range;
* 14 - Matches regular expression;
* 15 - Does not match regular expression;
* 16 - Check for error in JSON;
* 17 - Check for error in XML;
* 18 - Check for error using regular expression;
* 19 - Discard unchanged;
* 20 - Discard unchanged with heartbeat;
* 21 - JavaScript;
* 22 - Prometheus pattern;
* 23 - Prometheus to JSON;
* 24 - CSV to JSON;
* 25 - Replace;
* 26 - Check unsupported;
* 27 - XML to JSON;
* 28 - SNMP walk value;
* 29 - SNMP walk to JSON;
* 30 - SNMP get value.
* Property behavior: required
*/
type: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30;
/**
* Additional parameters used by preprocessing option.
* Multiple parameters are separated by the newline (\n) character.
* Property behavior: required for certain types
*/
params?: string;
/**
* Action type used in case of preprocessing step failure.
* Possible values:
* 0 - Error message is set by Zabbix server;
* 1 - Discard value;
* 2 - Set custom value;
* 3 - Set custom error message.
* Property behavior: required for certain types
*/
error_handler?: 0 | 1 | 2 | 3;
/**
* Error handler parameters.
* Property behavior: required if error_handler is set to "Set custom value" or "Set custom error message"
*/
error_handler_params?: string;
}
/**
* Zabbix Item Object
* @see https://www.zabbix.com/documentation/current/en/manual/api/reference/item/object
*/
export interface Item {
/**
* ID of the item.
* Property behavior: read-only, required for update operations
*/
itemid?: string;
/**
* Update interval of the item.
* Accepts seconds or time unit with suffix (e.g., 30s, 1m, 2h, 1d) and,
* optionally, one or more custom intervals, all separated by semicolons.
* Property behavior: required for most item types
*/
delay?: string;
/**
* ID of the host or template that the item belongs to.
* Property behavior: constant, required for create operations
*/
hostid: string;
/**
* ID of the item's host interface.
* Property behavior: required for certain item types
*/
interfaceid?: string;
/**
* Item key.
* Property behavior: required for create operations, read-only for inherited/discovered objects
*/
key_: string;
/**
* Name of the item.
* Supports user macros.
* Property behavior: required for create operations, read-only for inherited/discovered objects
*/
name: string;
/**
* Name of the item with resolved user macros.
* Property behavior: read-only
*/
name_resolved?: string;
/**
* Type of the item.
* Property behavior: required for create operations, read-only for inherited/discovered objects
*/
type: ItemType;
/**
* URL string for HTTP agent items.
* Supports user macros and various placeholders.
* Property behavior: required if type is set to "HTTP agent"
*/
url?: string;
/**
* Type of information of the item.
* Property behavior: required for create operations, read-only for inherited/discovered objects
*/
value_type: ItemValueType;
/**
* Allow to populate value similarly to the trapper item.
* 0 - (default) Do not allow to accept incoming data;
* 1 - Allow to accept incoming data.
* Property behavior: supported if type is set to "HTTP agent"
*/
allow_traps?: 0 | 1;
/**
* Authentication method.
* Different possible values based on item type.
* Property behavior: supported for certain item types
*/
authtype?: number;
/**
* Description of the item.
* Property behavior: read-only for discovered objects
*/
description?: string;
/**
* Error text if there are problems updating the item value.
* Property behavior: read-only
*/
error?: string;
/**
* Origin of the item.
* Possible values:
* 0 - a plain item;
* 4 - a discovered item.
* Property behavior: read-only
*/
flags?: 0 | 4;
/**
* Follow response redirects while polling data.
* 0 - Do not follow redirects;
* 1 - (default) Follow redirects.
* Property behavior: supported if type is set to "HTTP agent"
*/
follow_redirects?: 0 | 1;
/**
* Array of headers that will be sent when performing an HTTP request.
* Property behavior: supported if type is set to "HTTP agent"
*/
headers?: HttpHeader[];
/**
* A time unit of how long the history data should be stored.
* Also accepts user macro.
* Default: 31d.
*/
history?: string;
/**
* HTTP(S) proxy connection string.
* Property behavior: supported if type is set to "HTTP agent"
*/
http_proxy?: string;
/**
* ID of the host inventory field that is populated by the item.
* Default: 0.
* Property behavior: supported for certain value types
*/
inventory_link?: number;
/**
* IPMI sensor.
* Property behavior: required/supported for IPMI agent items
*/
ipmi_sensor?: string;
/**
* JMX agent custom connection string.
* Default value: service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi
* Property behavior: supported if type is set to "JMX agent"
*/
jmx_endpoint?: string;
/**
* Time when the item value was last updated.
* Property behavior: read-only
*/
lastclock?: string;
/**
* Nanoseconds when the item value was last updated.
* Property behavior: read-only
*/
lastns?: number;
/**
* Last value of the item.
* Property behavior: read-only
*/
lastvalue?: string;
/**
* Format of the time in log entries.
* Property behavior: supported if value_type is set to "log"
*/
logtimefmt?: string;
/**
* ID of the master item.
* Property behavior: required if type is set to "Dependent item"
*/
master_itemid?: string;
/**
* Should the response be converted to JSON.
* 0 - (default) Store raw;
* 1 - Convert to JSON.
* Property behavior: supported if type is set to "HTTP agent"
*/
output_format?: 0 | 1;
/**
* Additional parameters depending on the type of the item.
* Property behavior: required for certain item types
*/
params?: string;
/**
* Additional parameters for Script or Browser items.
* Array of objects with name and value properties.
* Property behavior: supported if type is set to "Script" or "Browser"
*/
parameters?: Array<{
name: string;
value: string;
}>;
/**
* Password for authentication.
* Property behavior: required/supported for certain item types
*/
password?: string;
/**
* Type of post data body stored in posts property.
* 0 - (default) Raw data;
* 2 - JSON data;
* 3 - XML data.
* Property behavior: supported if type is set to "HTTP agent"
*/
post_type?: 0 | 2 | 3;
/**
* HTTP(S) request body data.
* Property behavior: required/supported for HTTP agent items
*/
posts?: string;
/**
* Previous value of the item.
* Property behavior: read-only
*/
prevvalue?: string;
/**
* Name of the private key file.
* Property behavior: required for SSH agent with public key authentication
*/
privatekey?: string;
/**
* Name of the public key file.
* Property behavior: required for SSH agent with public key authentication
*/
publickey?: string;
/**
* Array of query fields that will be sent when performing an HTTP request.
* Property behavior: supported if type is set to "HTTP agent"
*/
query_fields?: HttpQueryField[];
/**
* Type of request method.
* 0 - (default) GET;
* 1 - POST;
* 2 - PUT;
* 3 - HEAD.
* Property behavior: supported if type is set to "HTTP agent"
*/
request_method?: 0 | 1 | 2 | 3;
/**
* What part of response should be stored.
* Different values based on request method.
* Property behavior: supported if type is set to "HTTP agent"
*/
retrieve_mode?: number;
/**
* SNMP OID.
* Property behavior: required if type is set to "SNMP agent"
*/
snmp_oid?: string;
/**
* Public SSL Key file path.
* Property behavior: supported if type is set to "HTTP agent"
*/
ssl_cert_file?: string;
/**
* Private SSL Key file path.
* Property behavior: supported if type is set to "HTTP agent"
*/
ssl_key_file?: string;
/**
* Password for SSL Key file.
* Property behavior: supported if type is set to "HTTP agent"
*/
ssl_key_password?: string;
/**
* State of the item.
* 0 - (default) normal;
* 1 - not supported.
* Property behavior: read-only
*/
state?: 0 | 1;
/**
* Status of the item.
* 0 - (default) enabled item;
* 1 - disabled item.
*/
status?: 0 | 1;
/**
* Ranges of required HTTP status codes, separated by commas.
* Property behavior: supported if type is set to "HTTP agent"
*/
status_codes?: string;
/**
* ID of the parent template item.
* Property behavior: read-only
*/
templateid?: string;
/**
* Item data polling request timeout.
* Accepts seconds or time unit with suffix.
* Property behavior: supported for certain item types
*/
timeout?: string;
/**
* Allowed hosts.
* Property behavior: supported for trapper items and HTTP agent with allow_traps
*/
trapper_hosts?: string;
/**
* A time unit of how long the trends data should be stored.
* Default: 365d.
* Property behavior: supported for numeric value types
*/
trends?: string;
/**
* Value units.
* Property behavior: supported for numeric value types
*/
units?: string;
/**
* Username for authentication.
* Property behavior: required/supported for certain item types
*/
username?: string;
/**
* Universal unique identifier, used for linking imported item to already existing ones.
* Property behavior: supported if the item belongs to a template
*/
uuid?: string;
/**
* ID of the associated value map.
* Property behavior: supported for certain value types
*/
valuemapid?: string;
/**
* Whether to validate that the host name for the connection matches the one in the host's certificate.
* 0 - (default) Do not validate;
* 1 - Validate.
* Property behavior: supported if type is set to "HTTP agent"
*/
verify_host?: 0 | 1;
/**
* Whether to validate that the host's certificate is authentic.
* 0 - (default) Do not validate;
* 1 - Validate.
* Property behavior: supported if type is set to "HTTP agent"
*/
verify_peer?: 0 | 1;
/**
* Item tags (populated when selectTags is used)
*/
tags?: ItemTag[];
/**
* Item preprocessing steps (populated when selectPreprocessing is used)
*/
preprocessing?: ItemPreprocessing[];
}
/**
* Item.get method output parameters
*/
export type ItemGetParamsOutput = "itemid" | "type" | "snmp_oid" | "hostid" | "name" | "key_" | "delay" | "history" | "trends" | "status" | "value_type" | "trapper_hosts" | "units" | "formula" | "logtimefmt" | "templateid" | "valuemapid" | "params" | "ipmi_sensor" | "authtype" | "username" | "password" | "publickey" | "privatekey" | "flags" | "interfaceid" | "description" | "inventory_link" | "master_itemid" | "timeout" | "url" | "query_fields" | "posts" | "status_codes" | "follow_redirects" | "post_type" | "http_proxy" | "headers" | "retrieve_mode" | "request_method" | "output_format" | "ssl_cert_file" | "ssl_key_file" | "ssl_key_password" | "verify_peer" | "verify_host" | "allow_traps" | "jmx_endpoint" | "name_resolved" | "state" | "error" | "lastclock" | "lastns" | "lastvalue" | "prevvalue" | "parameters" | "uuid";
/**
* Tag filter object for item.get method
*/
export interface ItemTagFilter {
/**
* Tag name
*/
tag: string;
/**
* Tag value
*/
value?: string;
/**
* Search operator
* 0 - (default) Like;
* 1 - Equal;
* 2 - Not like;
* 3 - Not equal;
* 4 - Exists;
* 5 - Not exists.
*/
operator?: 0 | 1 | 2 | 3 | 4 | 5;
}
/**
* Discovery data object returned when selectDiscoveryData is used
*/
export interface ItemDiscoveryData {
/**
* ID of the item discovery
*/
itemdiscoveryid: string;
/**
* ID of the item prototype from which the item has been created
*/
parent_itemid: string;
/**
* Key of the item prototype
*/
key_: string;
/**
* Time when the item was last discovered
*/
lastcheck: string;
/**
* Item discovery status:
* 0 - (default) item is discovered,
* 1 - item is not discovered anymore
*/
status: 0 | 1;
/**
* Time when an item that is no longer discovered will be deleted
*/
ts_delete: string;
/**
* Time when an item that is no longer discovered will be disabled
*/
ts_disable: string;
/**
* Indicator of whether item was disabled by an LLD rule or manually:
* 0 - (default) disabled automatically,
* 1 - disabled by an LLD rule
*/
disable_source: 0 | 1;
}
/**
* Parameters for the item.get method
* @see https://www.zabbix.com/documentation/current/en/manual/api/reference/item/get
*/
export interface ItemGetParams {
/**
* Return only items with the given IDs.
*/
itemids?: string | string[];
/**
* Return only items that belong to the hosts from the given groups.
*/
groupids?: string | string[];
/**
* Return only items that belong to the given templates.
*/
templateids?: string | string[];
/**
* Return only items that belong to the given hosts.
*/
hostids?: string | string[];
/**
* Return only items that are monitored by the given proxies.
*/
proxyids?: string | string[];
/**
* Return only items that use the given host interfaces.
*/
interfaceids?: string | string[];
/**
* Return only items that are used in the given graphs.
*/
graphids?: string | string[];
/**
* Return only items that are used in the given triggers.
*/
triggerids?: string | string[];
/**
* Include web items in the result.
*/
webitems?: boolean;
/**
* If set to true return only items inherited from a template.
*/
inherited?: boolean;
/**
* If set to true return only items that belong to templates.
*/
templated?: boolean;
/**
* If set to true return only enabled items that belong to monitored hosts.
*/
monitored?: boolean;
/**
* Return only items that belong to a group with the given name.
*/
group?: string;
/**
* Return only items that belong to a host with the given name.
*/
host?: string;
/**
* Rules for tag searching.
* 0 - (default) And/Or;
* 2 - Or.
*/
evaltype?: 0 | 2;
/**
* Return only items with given tags.
*/
tags?: ItemTagFilter[];
/**
* If set to true return only items that are used in triggers.
*/
with_triggers?: boolean;
/**
* Return a hosts property with an array of hosts that the item belongs to.
*/
selectHosts?: "extend" | string[];
/**
* Return an interfaces property with an array of host interfaces used by the item.
*/
selectInterfaces?: "extend" | string[];
/**
* Return a triggers property with the triggers that the item is used in.
* Supports count.
*/
selectTriggers?: "extend" | "count" | string[];
/**
* Return a graphs property with the graphs that contain the item.
* Supports count.
*/
selectGraphs?: "extend" | "count" | string[];
/**
* Return a discoveryData property with the item discovery object data.
*/
selectDiscoveryData?: "extend" | string[];
/**
* Return a discoveryRule property with the LLD rule that created the item.
*/
selectDiscoveryRule?: "extend" | string[];
/**
* Return a discoveryRulePrototype property with the parent LLD rule prototype that created the item.
*/
selectDiscoveryRulePrototype?: "extend" | string[];
/**
* Return an itemDiscovery property with the item discovery object.
* @deprecated This query is deprecated, please use selectDiscoveryData instead.
*/
selectItemDiscovery?: "extend" | string[];
/**
* Return a preprocessing property with item preprocessing options.
*/
selectPreprocessing?: "extend" | string[];
/**
* Return the item tags in tags property.
*/
selectTags?: "extend" | string[];
/**
* Return a valuemap property with item value map.
*/
selectValueMap?: "extend" | string[];
/**
* Return only those results that exactly match the given filter.
*/
filter?: {
[key: string]: string | string[] | number | number[] | boolean;
} & {
/**
* Technical name of the host that the item belongs to.
*/
host?: string | string[];
};
/**
* Limits the number of records returned by subselects.
*/
limitSelects?: number;
/**
* Sort the result by the given properties.
* Possible values: itemid, name, key_, delay, history, trends, type, status.
*/
sortfield?: string | string[];
/**
* Return only specific object properties.
*/
output?: ItemGetParamsOutput[] | "extend";
/**
* Return results that match the given wildcard search (case-insensitive).
*/
search?: {
[key: string]: string;
};
/**
* If set to true return results that match any of the criteria given in the filter or search parameter instead of all of them.
*/
searchByAny?: boolean;
/**
* If set to true enables the use of wildcards in search.
*/
searchWildcardsEnabled?: boolean;
/**
* Order of sorting.
*/
sortorder?: string | string[];
/**
* If set to true enables the use of wildcards at the beginning of search.
*/
startSearch?: boolean;
/**
* Return the count of retrieved objects.
*/
countOutput?: boolean;
/**
* Return only editable items.
*/
editable?: boolean;
/**
* Exclude search from the query.
*/
excludeSearch?: boolean;
/**
* Limit the number of records returned.
*/
limit?: number;
/**
* Preserve keys in the result.
*/
preservekeys?: boolean;
}
/**
* Parameters for the item.create method
* @see https://www.zabbix.com/documentation/current/en/manual/api/reference/item/create
*/
export interface ItemCreateParams {
/**
* Items to create
*/
items?: Omit<Item, "itemid" | "templateid" | "flags" | "state" | "error" | "lastclock" | "lastns" | "lastvalue" | "prevvalue" | "name_resolved">[];
}
/**
* Parameters for the item.update method
* @see https://www.zabbix.com/documentation/current/en/manual/api/reference/item/update
*/
export interface ItemUpdateParams {
/**
* Items to update with their itemid and updated properties
*/
items?: (Partial<Item> & {
itemid: string;
})[];
}
/**
* Parameters for the item.delete method
* @see https://www.zabbix.com/documentation/current/en/manual/api/reference/item/delete
*/
export interface ItemDeleteParams {
/**
* IDs of the items to delete
*/
itemids?: string[];
}
export {};