Skip to main content

Turbine GraphQL Python SDK (generated via ariadne-codegen)

Project description

Turbine Python SDK

Minimal, sync-first Python client for the Turbine GraphQL API.

Getting started

Install from PyPI (pip, poetry add, or uv add):

pip install netrise-turbine-sdk

Create a .env file in your project directory — TurbineClientConfig.from_env() loads it automatically (current directory, then parents):

endpoint=https://apollo.turbine.netrise.io/graphql/v3
audience=https://prod.turbine.netrise.io/
domain=https://authn.turbine.netrise.io
client_id=<client_id>
client_secret=<client_secret>
organization_id=<org_id>

Prefer plain environment variables or your own dotenv loading? Set the same names in the environment and call TurbineClientConfig.from_env(load_env_file=False).

Need credentials? Contact support@netrise.io.

Want the full experience? uv tool install netrise-turbine-cli adds the turbine CLI (SDK included), and turbine skill install adds the agent skill to Cursor, Claude Code, Codex, and opencode.

Versioning and stability

  • netrise_turbine_sdk (the wrapper) is semver-stable: existing imports, method names, and call signatures do not break without an intentional minor/major bump.
  • netrise_turbine_sdk_graphql (generated) tracks the Turbine GraphQL schema. Fully typed, power-user surface; schema refreshes are guarded by API-surface snapshot tests and a schema-diff gate.

See CHANGELOG.md for release notes.

Union field aliasing

When GraphQL union members declare same-named fields with different types, the generator aliases them as {camelCaseTypeName}{PascalCaseFieldName} so each gets its own Python type. Example — both NotificationControl members define events:

for pref in client.query_notification_settings().preferences:
    for control in pref.controls:
        if hasattr(control, "assetAnalysisControlEvents"):
            events = control.assetAnalysisControlEvents
        elif hasattr(control, "userManagementControlEvents"):
            events = control.userManagementControlEvents

Reducing response size (Lite / Summary)

Full query_* / iter_* methods request every field the server exposes. The trimmed counterparts typically cut response bytes 70–80%:

Full Lite Summary
iter_assets_relay iter_assets_relay_lite iter_assets_relay_summary
iter_vulnerabilities iter_vulnerabilities_lite
iter_dependencies iter_dependencies_lite
iter_misconfigurations iter_misconfigurations_lite
iter_detailed_vulnerabilities iter_detailed_vulnerabilities_lite
query_vulnerability query_vulnerability_lite

Rule of thumb: Full for audit/export, Lite for tables and CSVs (identifiers, severity, CVSS/EPSS, rollup counts), Summary for org-wide sweeps (id, name, analytic counts only). Sweep with Summary, then drill in only where counts are non-zero:

from netrise_turbine_sdk import TurbineClient, TurbineClientConfig

sdk = TurbineClient(TurbineClientConfig.from_env())

for asset in sdk.iter_assets_relay_summary(page_size=100):
    counts = asset.analytic
    if counts.vulnerability.critical + counts.vulnerability.high > 0:
        for vuln in sdk.iter_vulnerabilities_lite(asset_id=asset.id):
            print(asset.name, vuln.cve, vuln.severity, vuln.cvss_score)

File listing

list_files returns the complete recursive file listing for an asset in one call:

files = sdk.list_files("your-asset-id")
for f in files:
    print(f["filesystemPath"], f.get("size"), f.get("mimeType"))

Entries are dicts with keys like path, filesystemPath, size, mimeType, hashSha256, permissions, and hasChildren.

Documentation

API documentation and code samples — quick start, filtering cookbook, error handling, and per-operation pages.

License

See LICENSE.

Project details


Download files

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

Source Distribution

netrise_turbine_sdk-0.1.20.tar.gz (117.4 kB view details)

Uploaded Source

Built Distribution

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

netrise_turbine_sdk-0.1.20-py3-none-any.whl (178.2 kB view details)

Uploaded Python 3

File details

Details for the file netrise_turbine_sdk-0.1.20.tar.gz.

File metadata

  • Download URL: netrise_turbine_sdk-0.1.20.tar.gz
  • Upload date:
  • Size: 117.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for netrise_turbine_sdk-0.1.20.tar.gz
Algorithm Hash digest
SHA256 1e35b867a717abe9b647a261c027fc0017683323bcbac1ab3ef7ce0155671dcf
MD5 4a9ed211e510d6ce8a816f355faa16e2
BLAKE2b-256 949837b80064800a3eb19390cbcec3a7cf3ae1745816e40ad06ec32b34f9838c

See more details on using hashes here.

File details

Details for the file netrise_turbine_sdk-0.1.20-py3-none-any.whl.

File metadata

File hashes

Hashes for netrise_turbine_sdk-0.1.20-py3-none-any.whl
Algorithm Hash digest
SHA256 03a45cf1e42b649ea65af16cf91180f9fedfa3aeb080b4d230e533bba65bcae6
MD5 e3bd471801a06918606bc50bb24704ad
BLAKE2b-256 e6ea35f9308b838205f75beb4310791a32d02ec778192020c9ec0c5aab0cb8c0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page