Python Nexthink
This Python library provides a small client for the Nexthink API.
Installation
pip install nexthink_api
# or
uv add nexthink_api
Source And Documentation
Quickstart
The recommended entrypoint for new code is NexthinkClient. The historical
NxtApiClient remains available as a compatibility facade.
The examples below assume these environment variables are set:
export nexthink_tenant="your-tenant-name"
export nexthink_region="eu"
export client_id="your-client-id"
export client_secret="your-client-secret"
When running behind a corporate proxy with TLS inspection, for example Zscaler,
call enable_truststore() before creating the client. This enables the
operating system trust store for Nexthink HTTP calls without permanently
patching Python SSL for the whole process.
import os
from nexthink_api import NexthinkClient, NxtRegionName, enable_truststore
enable_truststore()
client = NexthinkClient(
os.environ["nexthink_tenant"],
NxtRegionName(os.getenv("nexthink_region", NxtRegionName.eu.value)),
client_id=os.environ["client_id"],
client_secret=os.environ["client_secret"],
)
NQL Execute
The NQL query must already exist in Nexthink Administration as an API query.
import os
from nexthink_api import NxtNqlApiExecuteRequest
request = NxtNqlApiExecuteRequest(
queryId=os.environ["nexthink_nql_query_id"],
)
response = client.nql.execute(request, version="v2")
print(response.rows)
print(response.data)
Enrichment
This example updates one custom device field for one device identified by name.
import os
from datetime import datetime
from nexthink_api import (
MAX_ENRICHMENTS_PER_REQUEST,
NxtEnrichment,
NxtEnrichmentRequest,
NxtField,
NxtFieldName,
NxtIdentification,
NxtIdentificationName,
)
identification = NxtIdentification(
name=NxtIdentificationName.DEVICE_DEVICE_NAME,
value=os.environ["nexthink_enrichment_device_name"],
)
field = NxtField(
name=NxtFieldName.CUSTOM_DEVICE,
custom_value="nexthink_api_example",
value=datetime.now().isoformat(),
)
enrichments = [NxtEnrichment(identification=[identification], fields=[field])]
if len(enrichments) > MAX_ENRICHMENTS_PER_REQUEST:
raise ValueError("Too many enrichment objects for one request")
request = NxtEnrichmentRequest(
domain=os.getenv("nexthink_enrichment_domain", "nexthink_api_example"),
enrichments=enrichments,
)
response = client.enrichment.run(request)
print(response)
Data Management Device Deletion
The Data Management deletion API is asynchronous and destructive. Keep an explicit confirmation in scripts and validate identifiers before calling it.
import os
from nexthink_api import NxtDeviceEntry, NxtUidValidationMode
if os.getenv("confirm_data_management_delete") != "yes":
raise SystemExit("Set confirm_data_management_delete=yes before deleting devices.")
devices = [
NxtDeviceEntry(
uid=os.environ["nexthink_device_uid"],
name=os.environ["nexthink_device_name"],
)
]
response = client.data_management.delete_devices(
devices=devices,
request_id=os.environ["nexthink_request_id"],
uid_validation=NxtUidValidationMode.WARN,
)
print(response)
Examples
Runnable examples are available in examples/:
uv run python examples/nql_query_example.py
uv run python examples/enrichment_example.py
uv run python examples/data_management_device_deletion_example.py
uv run python examples/remote_actions_example.py
uv run python examples/campaigns_example.py
uv run python examples/workflows_example.py
uv run python examples/spark_handoff_example.py
API Classes
Most request and response classes are Pydantic models. Use:
model_dump()to serialize to a dictionary.model_dump_json()to serialize to JSON.model_validate(data)to build a model from serialized data.
Metadata
Release files for nexthink_api 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| nexthink_api-0.1.1.tar.gz | 912.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| nexthink_api-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.0 MB
Release files / nexthink_api-0.1.1.tar.gz
| Download URL | nexthink_api-0.1.1.tar.gz |
|---|---|
| Size | 912.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1e91fd0bb8d24438e8acb13a10ecdab2fcbcea546c1db714a5198ac59f805128
|
|
BLAKE2b-256 checksum How to use checksums |
d23b008b1ac4624a0907a5068cf12d4d9fb54c335aff0f7b241b84cd36e9550b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.18 {"installer":{"name":"uv","version":"0.11.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / nexthink_api-0.1.1-py3-none-any.whl
| Download URL | nexthink_api-0.1.1-py3-none-any.whl |
|---|---|
| Size | 95.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
22eb0e2d04aba76a0d4d7b4f394d6e1ef7555d876585109551c607a530196cbf
|
|
BLAKE2b-256 checksum How to use checksums |
e8d6d4b88b79b109940a4f4234b53a0bc589404f27ccdf4ac61638b96f1455b0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.18 {"installer":{"name":"uv","version":"0.11.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|