Skip to main content

zapi-lib

Minimal Zabbix JSON-RPC API client for Python — a thin, httpx-only wrapper around the single /api_jsonrpc.php endpoint.

Spun out of zapi-mcp so that tools which only need the API client — e.g. speedtest-z — can depend on it without pulling in the MCP server stack (mcp, starlette, uvicorn, …).

Features

  • Version-adaptive auth: user + auth field (Zabbix ≤ 6.2) and username + Authorization: Bearer (6.4 / 7.0), degrading to the proven path automatically.
  • Read helpers: get_hosts, get_items, get_problems, count_problems, get_events.
  • Write helpers: set_host_tag (idempotent host-tag upsert that preserves other tags), acknowledge_problem.
  • Provisioning (ZapiProvisioner): config-driven client that auto-creates trapper hosts/items stamped with a managed-by tag — create_host, update_host, create_item, update_item, set_maintenance, set_maintenance_for_hosts, plus ensure_group / get_host_ids / get_item_ids.
  • Escape hatch: call(method, params) invokes any JSON-RPC method directly.
  • A single runtime dependency: httpx.

Install

pip install zapi-lib

Usage

from zapi_lib import ZapiClient, tag_filter

with ZapiClient("https://zabbix.example.com", "api-user", "api-pass") as z:
    hosts = z.get_hosts(tags=[tag_filter("speedtest-z")])
    z.set_host_tag("eduroam", "speedtest-z", "0.10.0")

The URL may be given with or without the /api_jsonrpc.php suffix.

Provisioning (config-driven)

ZapiProvisioner extends ZapiClient for metric-collection scripts that register the targets they push values to. It reads connection and provisioning defaults from a config.ini [zabbix] section and auto-creates trapper hosts/items tagged with a managed-by marker:

[zabbix]
url      = https://zabbix.example.com/api_jsonrpc.php
id       = api-user        ; or `user`
pw       = api-pass        ; or `password`
group    = DefaultGroup    ; default host group for created/updated hosts
location = tokyo           ; optional; added as a `location` tag
tag      = my-collector    ; optional; managed-by marker tag on hosts/items
from zapi_lib import ZapiProvisioner

with ZapiProvisioner.from_config() as z:  # ./config.ini, then ~/.config.ini
    z.show_version()
    host_ids = z.get_host_ids("pool-a") or z.create_host("pool-a", location="tokyo")
    host_id = host_ids[0]
    if not z.get_item_ids(host_id, "usage"):
        z.create_item(host_id, "usage", value_type=0)

update_host replaces the host's groups and tags (use set_host_tag to upsert a single tag instead). set_maintenance(location, since, till, name, description) opens an idempotent maintenance window over hosts carrying a matching location tag; set_maintenance_for_hosts(hosts, since, till, name, description) does the same over an explicit list of exact host (technical) names instead, for when the affected hosts don't share a tag or precise host-level control is wanted.

License

MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

zapi_lib-0.5.0.tar.gz (20.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

zapi_lib-0.5.0-py3-none-any.whl (13.1 kB view details)

Uploaded Python 3

File details

Details for the file zapi_lib-0.5.0.tar.gz.

File metadata

  • Download URL: zapi_lib-0.5.0.tar.gz
  • Upload date:
  • Size: 20.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for zapi_lib-0.5.0.tar.gz
Algorithm Hash digest
SHA256 2ae64d5e08a0cc58d331f6a6f4653058d6c6f5b5247319cfbfcea67aba830cc4
MD5 7c9a2a317958d1ad9a8c1186936b5840
BLAKE2b-256 0f92d380a9a7ac52fdfb3bc6bfa54d9245a097c7562f2d8e03c31bd1ff62da45

See more details on using hashes here.

Provenance

The following attestation bundles were made for zapi_lib-0.5.0.tar.gz:

Publisher: release.yml on shigechika/zapi-lib

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file zapi_lib-0.5.0-py3-none-any.whl.

File metadata

  • Download URL: zapi_lib-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 13.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for zapi_lib-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 41c3da95b1c4e61ed39d43e01bd0dbb5600fceb2691348fb1566bada4db3a536
MD5 b3b3252ac45f5f566e59d51e4ef890bd
BLAKE2b-256 f74bfb6abd43c18d0dfdc18d989eaf8da02d985af40465bb7bca76a80ebf7d0e

See more details on using hashes here.

Provenance

The following attestation bundles were made for zapi_lib-0.5.0-py3-none-any.whl:

Publisher: release.yml on shigechika/zapi-lib

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.8.1

2 files

0.8.0

2 files

0.7.0

2 files

0.6.1

2 files

0.6.0

2 files

0.5.1

2 files

This release

0.5.0 This release

2 files

0.4.0

2 files

0.3.0

2 files

0.2.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page