Changelog¶
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[1.4.0] - 2026-09-02¶
Added¶
Bearer-token authentication —
APIClient(host=..., api_token=..., auth_scheme="Bearer")(andTokenAuth(token, scheme="Bearer")) sendsAuthorization: Bearer <token>instead of the defaultAuthorization: Token <token>, for OAuth2 / OIDC access tokens.auth_schemeaccepts"Token"(default) or"Bearer"; any other value raisesValueError. Newnetbird.auth.AuthSchemetype alias.``viz`` optional dependency group —
pip install "netbird[viz]"installsgraphviz>=0.20.0anddiagrams>=0.23.0for Graphviz / Python-Diagrams diagram output. The Graphviz system binary is still required separately.New model fields tracking recent NetBird API revisions:
AccountSettings—network_range_v6,dns_domain,regular_users_view_blocked,groups_propagation_enabled,jwt_allow_groups,auto_update_always,metrics_push_enabled,agent_network_only,dashboard_features,local_mfa_enabled,ipv6_enabled_groupsRouteCreate/RouteUpdate—skip_auto_applyPeerUpdate—ipv6Job—created_at,completed_at,triggered_by,failed_reasonUser—password(returned only immediately after creation),pending_approval,idp_idUserInvite—auto_groups,created_at,expired,invite_tokenUserStatus— newBLOCKEDmember
Python 3.14 added to the tested matrix and PyPI trove classifiers.
Changed¶
Event streaming endpoint path —
client.cloud.event_streamingmethods now target/api/event-streaming(previously/api/integrations/event-streaming), matching the current NetBird OpenAPI specification.mypynow loads thepydantic.mypyplugin; optionalgraphviz/diagramsimports use anignore_missing_importsoverride instead of inline# type: ignorecomments.
Fixed¶
Paginated event responses —
get_audit_events(),get_network_traffic_events()andget_proxy_events()accept both the legacy bare-list response and the newer paginated envelope ({"data": [...], "page": ..., "total_records": ...}). The envelope form previously raisedValueError: Expected list response.``GeoLocationsResource.list_countries()`` returns a clean list of 2-letter ISO code strings for both response shapes: a bare list of codes (per the OpenAPI spec) and deployments that return
{"country_code", "country_name"}objects. Previously the object form was stringified into unusable entries. A non-list response now raisesValueError.Non-dict API error bodies —
APIClient._handle_response()no longer assumes the parsed error body is adictwhen building the exception message; list or scalar bodies fall back toHTTP <status>.``TokenAuth`` rejects whitespace-only tokens (previously only wholly-empty strings raised).
Dependencies¶
mcp[cli]constrained to>=1.0.0,<2.0.0to stay on the compatible 1.x API.
Documentation¶
Diagram install instructions updated to
pip install "netbird[viz]"across the README and Sphinx docs.auth_schemeshown in the Quick Start example.Minimum supported Python corrected to 3.10 in the contributing guide.
[1.3.0] - 2026-03-31¶
Added¶
MCP Server (
netbird.mcp.server) — 25 NetBird management tools exposed via Model Context ProtocolAI assistants (Claude Desktop, etc.) can now manage NetBird resources through natural language
Tools cover: account, users, peers, groups, policies, networks, setup keys, DNS, posture checks, audit events, network diagrams
See MCP Server for setup instructions
``mcp`` optional dependency — compatible MCP 1.x release via
pip install "netbird[mcp]"``netbird-mcp`` CLI entry point — Start the MCP server from the command line
[1.2.1] - 2026-03-28¶
Fixed¶
PolicyRule
sources/destinations— Changed type fromList[Dict]toList[Union[str, Dict]]. The NetBird API expects plain string group IDs on writes (POST/PUT) but returns full objects on reads (GET).
[1.2.0] - 2026-03-27¶
Added¶
New Resources:
Posture Checks (
client.posture_checks) - Device compliance verificationGeo Locations (
client.geo_locations) - Geographic data queriesDNS Zones (
client.dns_zones) - Custom DNS zone and record managementIdentity Providers (
client.identity_providers) - OAuth2/OIDC provider managementInstance (
client.instance) - Instance status, version, and setup
Cloud Namespace (client.cloud.*):
Services - Reverse proxy service and domain management
Ingress - Ingress port allocation and peer management
EDR - Endpoint Detection & Response integrations:
client.cloud.edr.peers- EDR peer bypass managementclient.cloud.edr.falcon- CrowdStrike Falconclient.cloud.edr.huntress- Huntressclient.cloud.edr.intune- Microsoft Intuneclient.cloud.edr.sentinelone- SentinelOne
MSP - Multi-tenant management for MSPs
Invoices - Billing invoice retrieval (PDF/CSV)
Usage - Billing usage statistics
Event Streaming - Event streaming integrations (Datadog, S3, etc.)
IDP/SCIM - SCIM identity provider integrations
Existing Resource Enhancements:
Users -
approve,reject,change_password, invite managementPeers -
create_temporary_access, job managementEvents -
get_proxy_eventswith 16 filter parametersNetworks -
list_all_routersfor global router listingAccount Settings - New fields for peer inactivity, DNS resolution, network range
PolicyRule -
port_ranges,authorized_groups, resource fields with camelCase aliases
Changed¶
BaseModel - Changed Pydantic
extrafrom"forbid"to"allow"for forward compatibilityRoutes API - All methods now emit
DeprecationWarning(use Networks API instead)_parse_list_response - Handles
nullAPI responses gracefullyCloud-only endpoint detection with
UserWarningfor self-hosted instances
Fixed¶
Event Streaming endpoint path (
event-streaming->integrations/event-streaming)Null list responses from API now return empty lists
[1.1.0] - 2026-03-21¶
Changed¶
Removed
use_sslparameter (always uses HTTPS, passhttp://prefix for non-SSL)Switched documentation from Jekyll to Sphinx with Furo theme
Cleaned up diagram test files
[1.0.0] - 2026-03-20¶
Added¶
Initial release of NetBird Python Client
Complete API coverage for 11 NetBird API resources
Pydantic models for type-safe input validation
Comprehensive error handling with specific exception types
Network topology visualization (Mermaid, Graphviz, Python Diagrams)
Token-based authentication
Python 3.9+ compatibility
98% test coverage