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.19.tar.gz (116.2 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.19-py3-none-any.whl (176.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: netrise_turbine_sdk-0.1.19.tar.gz
  • Upload date:
  • Size: 116.2 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.19.tar.gz
Algorithm Hash digest
SHA256 cc30a22cf2f488b9070eeaf98d34d017c760a330fc7bf6fdd91ac49dbd9143d7
MD5 e8433a48fe3d3f55648531a5b6a23d41
BLAKE2b-256 0f2d6f62942e1893becfa454f85a7fbd67c568db9424fac47a35053284fb58b4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for netrise_turbine_sdk-0.1.19-py3-none-any.whl
Algorithm Hash digest
SHA256 f7181f119d649d2f6196a2716150312c14da49733c113df38e8ba8a84356357a
MD5 16e32923d348ee548f2ca3643b077ebd
BLAKE2b-256 6ca2f625a5b7d26a01d1826d5b9482cebb4b6c06722bae5469a5e4fe4dbbb23d

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