Read-only Python SDK for Netskope SD-WAN APIs.
Project description
netskope-sdwan-py-sdk
netskope-sdwan-py-sdk is a read-only Python SDK for Netskope SD-WAN APIs.
⚠️ Unofficial SDK – community maintained
Design Principles
This SDK is intentionally opinionated and focused. It is designed as:
-
GET-only (initial phase)
The SDK currently provides read-only access to the Netskope SD-WAN APIs.
This is a deliberate first stage to establish a stable, predictable foundation before introducing mutation operations (POST, PUT, PATCH, DELETE). -
v2-first client surface
All primary functionality is built around the Netskope SD-WAN v2 API.
New features and coverage are added to v2 managers first, making it the default and recommended interface. -
Explicit handling of legacy v1 endpoints
Endpoints that only exist in Netskope SD-WAN v1 are clearly separated underclient.v1.*.
This avoids ambiguity, keeps the main client clean, and makes it obvious when legacy APIs are being used. -
Lightweight and pragmatic data modeling
The SDK avoids heavy abstractions and complex object hierarchies.
A structuredGatewaymodel is provided for high-value resources, while most other endpoints return shallowResourceRecordobjects with direct access to the raw API payload. -
Close-to-API behavior
The SDK mirrors the API closely, with minimal transformation or hidden logic.
This makes it easier to reason about requests, debug issues, and map directly to API documentation. -
Explicit over implicit
Parameters, filters, and required fields are intentionally not hidden behind convenience layers.
The goal is to make API interactions transparent rather than “magic”. -
Composable and script-friendly
Designed for engineers automating workflows, building tooling, or running diagnostics — not as a full abstraction layer. -
Small surface area, easy to extend
The codebase is structured to allow incremental addition of new endpoints without introducing breaking changes or unnecessary complexity.
Requirements
- Python 3.11+
Installation
pip install netskope-sdwan-py-sdk
For local development:
python3.11 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
Quick Start
from netskopesdwan import SDWANClient, __version__
print(__version__)
client = SDWANClient(
base_url="https://customer.api.eu.infiot.net",
api_token="TOKEN",
)
gateways = client.gateways.list()
gateway = client.gateways.get("gw-001")
Legacy v1 Namespace
V2 is the primary surface. Transitional v1-only GET endpoints remain isolated under client.v1.
from netskopesdwan import SDWANClient
client = SDWANClient(
base_url="https://customer.api.eu.infiot.net",
api_token="TOKEN",
)
edges = client.v1.edges.list()
interfaces = client.v1.monitoring.get_interfaces_latest("gw-001")
groups = client.v1.users.get_groups("user-001")
Behavior Notes
client.audit_events.list(...)requires bothcreated_at_fromandcreated_at_to.client.site_commands.get_output(...)returns aDownloadResultwith bytes and response headers.- Gateways return a structured
Gatewaymodel. Most other JSON resources return shallowResourceRecordobjects with the original payload in.raw.
Tenant Resolution
Direct API URLs work as-is:
from netskopesdwan import SDWANClient
client = SDWANClient(
base_url="https://legacy123.api.eu.infiot.net",
api_token="TOKEN",
)
Supported goskope tenant URLs can also be resolved when the SD-WAN tenant name is known:
from netskopesdwan import SDWANClient
client = SDWANClient(
tenant_url="customer.de.goskope.com",
sdwan_tenant_name="legacy123",
api_token="TOKEN",
)
Local Commands
Install dev dependencies:
pip install -e .[dev]
Run tests:
pytest -q
Run lint:
ruff check .
Run the smoke example:
python examples/smoke_all_gets.py
Scope
Implemented:
- read-only v2 managers for gateways, infrastructure, policy, identity, software, controller, cloud, and certificate resources
- selected nested or special GET helpers such as address objects, controller operator status, JWKS, software downloads, and site command output
- transitional v1 managers under
client.v1.edges,client.v1.monitoring, andclient.v1.users
Not implemented:
- POST, PUT, PATCH, DELETE
- async support
- live DNS or CNAME discovery
Disclaimer
This project is an unofficial SDK and is not affiliated with, endorsed by, or supported by Netskope.
The SDK is provided on an "as-is" basis without warranties of any kind, express or implied.
Users are responsible for validating functionality and suitability for their own use cases.
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 netskope_sdwan_py_sdk-0.1.1.tar.gz.
File metadata
- Download URL: netskope_sdwan_py_sdk-0.1.1.tar.gz
- Upload date:
- Size: 24.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
338691371788aa5050c3418ac32348fd8b3a8e18aa0a71f7e1120bfdb8c7dc65
|
|
| MD5 |
a6199c582dd0d5a84f3fd07ae8fc10cb
|
|
| BLAKE2b-256 |
7ecc683f97bb4fbc661b2464a5a3fb886b1d96da638c96e36078cec828d86706
|
File details
Details for the file netskope_sdwan_py_sdk-0.1.1-py3-none-any.whl.
File metadata
- Download URL: netskope_sdwan_py_sdk-0.1.1-py3-none-any.whl
- Upload date:
- Size: 21.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
882aac02b5b90c15c119a743e363ff76858daddb78ec8ba9df51f9d6938d697d
|
|
| MD5 |
45c15848b547334606b9f212b245a130
|
|
| BLAKE2b-256 |
3dac57cac577d786c559d3216f18d67652b9684f8f27cff2c30913ad151fd2ac
|