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.2
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.2.tar.gz | 911.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| nexthink_api-0.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.0 MB
Release files / nexthink_api-0.1.2.tar.gz
| Download URL | nexthink_api-0.1.2.tar.gz |
|---|---|
| Size | 911.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ac10f4476fbeb47165e7a505cfdb95fec344e4075695d918275d98711b39a2cb
|
|
BLAKE2b-256 checksum How to use checksums |
f2bb243b51997964cf593108592397138acdefb996a0b163bb4671e02207c67c
|
| 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.2-py3-none-any.whl
| Download URL | nexthink_api-0.1.2-py3-none-any.whl |
|---|---|
| Size | 95.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
465e895cea46380aca373c635352bd0fd460b5004c6fab4a69ab7c211ec62e28
|
|
BLAKE2b-256 checksum How to use checksums |
f2d1a8ed054eacfa93854897de22c48f62fa10d3d8619a8fcdbcf3b3aba6e6a4
|
| 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}
|