Python package for Nexthink API
Project description
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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file nexthink_api-0.1.4.tar.gz.
File metadata
- Download URL: nexthink_api-0.1.4.tar.gz
- Upload date:
- Size: 173.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.19 {"installer":{"name":"uv","version":"0.11.19","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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
736377332a6da79c196292050baceac66507841fd7e127262de0e985af59a975
|
|
| MD5 |
5f8f3c829484f8966953bb91472c7b93
|
|
| BLAKE2b-256 |
778e132b9915b065120d723db8c03c2571cc40d7be4e927186ed4ad4351672c1
|
File details
Details for the file nexthink_api-0.1.4-py3-none-any.whl.
File metadata
- Download URL: nexthink_api-0.1.4-py3-none-any.whl
- Upload date:
- Size: 79.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.19 {"installer":{"name":"uv","version":"0.11.19","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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5f4fc361611de9749d7f93f925baa56a74f887feac101e09e121246cf3e704ec
|
|
| MD5 |
306c72699d1a886a19619416ae840748
|
|
| BLAKE2b-256 |
ace2e5922746b07537e349f9ea8fd0dcef31935bc2cefcebe4579441111a09ab
|