This release introduces unified credential support for GLP and New Central API calls, refines token initialization and refresh behavior, updates authentication guidance, and refreshes package requirements for the 2.0a18 release.
- Unified Credential Support
- Added a new
unifiedcredential model that allows one GLP credential set to be used for both GLP and New Central API calls - Unified mode uses GLP
client_id,client_secret, andworkspace_idto generate a single token and reuse it across supported platform requests - Supports GLP-only usage when no Central
base_urlorcluster_nameis provided - When
unifiedcredentials are present, standaloneglpandnew_centralentries are ignored in favor of the unified configuration
- Added a new
- Added support for the global OAuth token issuer flow used by unified credential management
- Refactored token parsing and route initialization to better support shared-token behavior across GLP and New Central
- Improved token creation and refresh error handling with clearer validation and more actionable failures for invalid credentials or incomplete configuration
- Updated authentication documentation with unified credential guidance, required fields, and example configurations
- Bumped package version references to
2.0a18 - Updated package requirements in
pyproject.toml, including Python version support and the pinnedrequestsdependency
Full Changelog: v2.0a17...v2.0a18
This release introduces transient error retry with exponential backoff in the HTTP layer, refactors device attribute initialization, expands the known cluster URL registry, and updates getting-started documentation to clarify authentication prerequisites.
- Retry with Exponential Backoff
request_urlnow automatically retries on transient transport failures (DNS errors, connection failures, timeouts, proxy errors) with exponential backoff up to 3 attempts- Added
RETRY_MAX_RETRIES,RETRY_INITIAL_BACKOFF,RETRY_BACKOFF_MULTIPLIER, andTRANSIENT_TRANSPORT_ERRORSconstants tobase.py - All other exceptions are raised immediately as
ResponseErrorwithout retrying
- Unknown Base URL Warning
_resolve_base_urlnow validates the resolved URL against known cluster URLs- Issues a non-fatal
UserWarningif the URL is not a recognized Central cluster, expected for Central-On Prem & other non-production environments
- Added explicit
self.materialized = Falseinitialization at the top ofDevice.__init__for clarity from_apibranch inDevice.__init__now raisesValueErrorifdevice_attributesisNone, preventing silent failures- Replaced manual key-rename loop and
setattrcalls inDevice.__init__with new_apply_api_attributes()helper method - Device inventory fetch in
Device.get()now usesfilter_str="serialNumber eq {serial}"instead of thesearch=parameter to match updated API behavior - Expanded
CLUSTER_BASE_URLSinconstants.pywith changes to API Gateway Base URLs - Removed unused
_return_client_credentialsmethod frombase.py - Updates to
Authentication&Quickstartguide
Full Changelog: v2.0a16...v2.0a17
This release removes the deprecated search parameter from monitoring functions and updates the httpx dependency to the latest patch version.
- Removed search parameter from monitoring functions
get_device_inventory()andget_all_device_inventory()no longer acceptsearchparameter as the underlying Central API no longer supports this filter
- Updated httpx dependency
- Bumped httpx[http2] from 0.28.0 to 0.28.1 in pyproject.toml
- Changed default
log_levelfrom"DEBUG"to"INFO"inNewCentralBase- Reduces noise for users who do not explicitly configure logging
- README updated
- Quickstart example now uses the context manager pattern (
with NewCentralBase(...) as conn) to reflect current best practices - Updated documentation URLs
- Quickstart example now uses the context manager pattern (
Full Changelog: v2.0a15...v2.0a16
This release migrates core monitoring modules to stable v1 APIs, replaces the HTTP client with HTTPX for persistent connection reuse, and introduces several bug fixes, stability improvements, and developer experience enhancements across the SDK.
- HTTPX Migration
- Replaced
requests.Sessionwithhttpxfor persistent connection reuse across API calls inbase.py - Eliminates per-call connection overhead, significantly improving SDK performance
- Supporting helper functions added to
base.pyto modularize command function internals
- Replaced
- v1 API Migration
- Migrated modules of
MonitoringAPs,Clients,MonitoringDevices, andMonitoringSitesfrom Alpha/Beta APIs to stable v1 endpoints - Higher rate limits and expanded capabilities available for all migrated modules due to v1 API support
- Migrated modules of
- Context Manager Support
withsyntax now supported for SDK client instantiation
- Streaming: Ping-Pong Support
- Added ping-pong capability to the streaming module to sustain longer-lived WebSocket connections
- Project Modernization
- Migrated project initialization from
setup.pytopyproject.toml
- Migrated project initialization from
- Fixed duplicate
requests.Sessioninstantiation in Classic Central'sbase.py; session is now initialized once at startup and reused across API calls (Closes #65) - Resolved bugs in log statements and return values within util modules -
scope_utils.py&monitoring_utils.py - Abstracted valid personas into a dedicated structure for easier maintenance in
constants.py - Added extra validation checks across scope-related helper functions in
scope_base.py&scopemaps.py - Updated URL utils to default to v1 endpoints unless explicitly overridden
- Documentation updates for all above changes
Full Changelog: v2.0a14...v2.0a15
This release improves profile retrieval reliability, refines the show commands interface to support increased input handling, and extends client management functionality with new helper utilities and dependency updates.
- Updated
get_profiledocstring and added handling for invalid URL responses to improve robustness during profile lookups - Updated show command methods across Troubleshooting & Device classes to reflect API changes. Related functions now accept either a string or a list of strings representing the set of show commands to be run on the devices
- Updated dependencies:
requests==2.32.5,PyYAML==6.0.3,protobuf==6.33.5to ensure compatibility and stability - Added
get_client_detailsmethod to fetch client-specific details - Added
_validate_mac_addresshelper method to support input validation for MAC address fields
Full Changelog: v2.0a13...v2.0a14
This release expands monitoring and troubleshooting capabilities and introduces SDK-level support for Streaming APIs, enabling developers to consume supported WebSocket-based event streams using a native client and decoders.
- Monitoring Enhancements
- Added new methods under
MonitoringAPIs:get_wlansget_ap_wlans
- These methods allow users to retrieve WLAN data associated with a specific AP or across all APs, aligning with the underlying monitoring API implementations
- Added new methods under
- Troubleshooting Events Support
- Added support for troubleshooting events via the new
list_eventsmethod. This method enables retrieval of network events using query-based filtering - Implemented method across
TroubleshootingandDeviceclasses to provide consistent access patterns
- Added support for troubleshooting events via the new
- Streaming APIs Support
- Added SDK support for consuming Streaming APIs with a built-in streaming client that handles connection management and event decoding
- Introduced streaming topic decoders with support for the following event types:
- Audit Trail
- Location
- Location Analytics
- Geofence
- Added accompanying documentation to guide users on streaming setup, topic usage, and event decoding
- Fixed minor bugs and applied cleanup across methods in
scope_utils.py - Improved stability and consistency of scope-related helper functions, including
get_all_scope_elements
Full Changelog: v2.0a12...v2.0a13
This release focuses on expanding troubleshooting capabilities and improving how the SDK documents and exposes its public methods.
- Added new troubleshooting modules that expose additional troubleshooting methods -
list_show_commands,list_active_tasks,run_show_command,initiate_show_command,get_show_command_result - Introduced troubleshooting helpers in the
Devicesclass to support new methods mentioned above
- Migrated docstrings from Sphinx style to Google style across core modules (e.g.
Devices,Monitoring,Troubleshooting,Sites,Profiles, and related utilities)- Standardized parameter/return/exception sections for better readability and IDE support
- Added missing docstrings for existing public methods to keep behavior and usage clearly documented
- Removed legacy Sphinx documentation files that are no longer used by the current docs pipeline
- Removed unused custom exceptions such as
UnsupportedCapabilityError&GenericOperationError - Replaced direct
exitcalls with raised exceptions so error handling is consistent and easier for applications to manage
- Removed duplicate endpoint implementations in the
Devicesclass where equivalent functionality already exists in the Monitoring modules;Devicesnow reuses the Monitoring implementations instead of maintaining separate copies - Improved overall error-handling to align with the new exception model
Full Changelog: v2.0a11...v2.0a12
- Updated logic of device function to persona mapping to match API behaviour
- Updates to documentation for certain functions
- Resolved minor issues of GLP Subscriptions module
Full Changelog: v2.0a10...v2.0a11
This update introduces new Monitoring modules that simplify how users access site/device/client metrics, while also removing deprecated profiles and improving URL generation for a cleaner and more efficient SDK usage experience.
This release introduces new Monitoring modules that expose Monitoring API capabilities across Sites, Devices, Access Points, Gateways, and Clients. These modules provide direct methods for common monitoring tasks, eliminating the need to manually call endpoints, handle pagination, or build aggregation logic.
Monitoring Modules Added:
- Sites:
get_all_sites,get_sites,get_site_device_health,list_site_information - Devices:
get_all_devices,get_devices,get_device_inventory,delete_device - Access Points:
get_all_aps,get_aps,get_latest_ap_stats,get_ap_cpu_utilization,get_ap_memory_utilization,get_ap_poe_utilization - Gateways:
get_all_gateways,get_gateways,get_cluster_leader_details,get_gateway_details,get_gateway_interfaces,get_gateway_lan_tunnels,get_stats,get_latest_gateway_stats,get_gateway_cpu_utilization,get_gateway_memory_utilization,get_gateway_wan_availability,get_tunnel_health_summary - Clients:
get_all_site_clients,get_wireless_clients,get_wired_clients,get_clients_associated_device,get_connected_clients,get_disconnected_clients,get_site_clients,get_client_trends,get_top_n_site_clients
- Removed deprecated modules and related dead code -
Policy,Role,SystemInfo,Vlan,Wlan- Please use
Profilesclass instead of the above modules
- Please use
- Improved Profiles documentation and overall code quality of module methods
- Introduced new
generate_urlfunction to simplify URL generation and parameter handling - Split category mappings and API endpoints into dedicated files for cleaner import flows
- Replaced all legacy
fetch_urlandgenerate_url_with_paramsusage - Removed unused
NewCentralURLsimports
Full Changelog: v2.0a9...v2.0a10
This update primarily extends the Troubleshooting module with new methods, and introduces supporting documentation. It also reorganizes the Troubleshooting class for improved efficiency and readability, while ensuring the Device class supports all new troubleshooting methods.
- Troubleshooting Class
- Added support for new methods:
- AAA test implementation for Access Points (APs)
- NSLOOKUP test for APs
- User disconnect functions for APs
- Client disconnect functions for Gateways
- Added a
troubleshooting.mdfile that documents all supported troubleshooting test in the SDK, including corresponding methods along with supported device types
- Added support for new methods:
- Device Class
- Added support for all newly introduced troubleshooting methods
- Scopes Module
- Added
find_device_groupmethod
- Added
- Troubleshooting Class
- Replaced
ping_testmethod withping_aps_test,ping_cx_test,ping_aoss_test,ping_gateways_testto align with device-type-specific troubleshooting attributes - Replaced
traceroute_testmethod withtraceroute_aps_test,traceroute_cx_test,traceroute_aoss_test,traceroute_gateways_testto align with device-type-specific troubleshooting attributes
- Replaced
- Troubleshooting Class
- Reorganized Troubleshooting class for efficiency, readability, and easier future maintenance
- Removed redundant checks on troubleshooting test attributes
Full Changelog: v2.0a8...v2.0a9
This update adds a dedicated Troubleshooting class with new diagnostic methods across multiple device types, enhances the Device class, and includes key dependency updates and cleanup.
TroubleshootingClass - Added support for Access Points, AOS-CX, AOS-S, and Gateways- New troubleshooting methods - Ping, Traceroute, Reboot, Locate, HTTP/HTTPS Tests, Port Bounce, PoE Bounce, ARP Table, Speedtest, AAA Test, Cable Test, and Iperf Test
DeviceClass - Now supports all troubleshooting methods
- Updated dependencies:
requests: 2.32.3 -> 2.32.4pytz: 2024.1 -> 2025.2
- Removed unused dependencies:
urllib3,certifi,termcolor
- Removed minimum site collection requirement for fetching global ID and profile correlation in scopes
- Enhanced error logging for scope initialization without a site
Full Changelog: v2.0a7...v2.0a8
This update introduces support for Device_Group in Scopes, improves persona assignment workflows, and fixes key bugs related to scope correlation and device identification.
- Device Group Class - Introduced
Device_Groupclass for use in Scopes & integrated intoScopeBaseto ensure consistency with other scope types - Scope Class Enhancements
- Added
typeattribute to all scope-related classes:Scopes,Site,Site_Collection,Device,Device_Group - Improved
get_all_devicesmethod in theDeviceclass:- Method uses
isProvisionedto filter devices configured via the new Central
- Method uses
- Added
- Profile Persona
- Added support for configuration persona for devices based on their function. This simplifies profile management for devices
assign_profile,unassign_profilemethods now acceptprofile_personaas an optional parameter for devices- Added
SUPPORTED_CONFIG_PERSONAStoconstants.pyfor better maintainability
- Fixed
_correlate_scopesto ensure accurate correlation logic inScopesclass - Improved logging in
_find_scope_elementmethod to clarify unknown scope errors inScopesclass - Updated
rename_keysinDeviceclass to update device IDs asintinstead ofstringfor consistency with other IDs
Full Changelog: v2.0a6...v2.0a7
- Added Scope modules -
- ScopeBase
- Scope (Managing scope & Global)
- Site Collection - CRUD Operations
- Site - CRUD Operations
- Device
- Other scope management modules
- Added Config Profile modules -
- Profile base
- Policy
- Role
- System Info
- VLAN
- WLAN
- Enhancements to base module to support
enable_scopeattribute- This will fetch scope hierarchy related data to simplify automation scripting with SDK
Full Changelog: v2.0a5...v2.0a6
- Fixed bugs with
get_all_devicesandget_all_subscriptionsinDevice&Subscriptionsmodules - Documentation updates for
Devices&Subscriptionsmodule - Added
ServiceManagerGLP module
Full Changelog: v2.0a3...v2.0a5
- Token management support for New Central & GreenLake (GLP) API calls
- Backwards compatibility with Classic Central API calls & PyCentral-v1
- Added ability to make API calls to New Central & GLP via base module
- Introduced GLP modules for managing Devices, Subscriptions, & Users
- Enabled token reuse by storing generated tokens in provided token file (YAML/JSON)
- Added support for optionally providing
cluster_nameinstead ofbase_urlfor New Central token information
Full Changelog: v1.4.1...v2.0a3
- Support Preserve Configuration Overrides in Device Movement by @fiveghz in #43
- Version fixes by @KarthikSKumar98 in #45
- Packages that are installed along with PyCentral will have version number associated with.
- requests - v2.31.0
- PyYAML - v6.0.1
- urllib3 - 2.2.2
- certifi - 2024.7.4
- @fiveghz made their first contribution in #43
Full Changelog: v1.4...v1.4.1
- No known issues.
- Updated minimum required version of python from 3.6 to 3.8
- Add the ability to consume cluster_name as a parameter instead of base_url
- Added ability to enable and disable WLANs in Central UI Group
- enable_wlan
- disable_wlan
- Error handling when invalid base_url is passed
- Resolved minor bugs
- No known issues.
Full Changelog: v1.3...v1.4
- Added MSP Module. These are some of the functions that are implemented in this module -
- Customer Management Functions
- get_customers
- get_all_customers
- create_customer
- update_customer
- delete_customer
- get_customer_details
- get_customer_id
- Device Management Functions
- get_customer_devices_and_subscriptions
- assign_devices_to_customers
- unassign_devices_from_customers
- unassign_all_customer_device
- get_msp_devices_and_subscriptions
- get_msp_all_devices_and_subscriptions
- Other Functions
- get_msp_id
- get_msp_users
- get_customer_users
- get_country_code
- get_country_codes_list
- get_msp_resources
- edit_msp_resources
- get_customers_per_group
- Customer Management Functions
Full Changelog: v1.2.1...v1.3
- No known issues.
- Fixed bug with add_device function
- No known issues.
- Added new Device Inventory functions - Archive Devices, Unarchive Devices, Add Devices
- No known issues.
- Added device inventory functions by @KarthikSKumar98 in #35
- Style linting pycentral modules by@KarthikSKumar98 in #36
Full Changelog: v1.1.1...v1.2
- Updated README links
- No known issues.
- Added APConfiguration Class to Configuration Module
- No known issues.
- Added wait & retry logic when Aruba Central's Per-Second API rate-limit is hit
- Added log messages when Aruba Central's Per-Day API Rate-limit is exhausted
- Added new module for device_inventory APIs
- Added WLAN class to configuration module
- Merged PRs and resolved GitHub issues:
- PR #16 : Fixing multiple devices to site bug
- PR #19 : Added ability to associate/unassociate multiple devices to a site
- PR #20 : Added New Device Inventory Module
- PR #22 : Added Rate Limit Log Messages
- PR #23 : Fixed Rate Limit Bugs
- PR #25 : Licensing API Bug Fixes
- PR #28, #29 : Added WLAN class to Configuration module
- No known issues.
- Quick fix on deprecated pip module usage.
- Merged PRs and resolved GitHub issues:
- PR #10 : remove dep on _internal function from pip module
- Issue #9: pip 21.3 just posted 2 days ago breaks pycentral in the config file and passed to pycentral
- No known issues.
- Added modules for firmware_management, rapids, topology and user_management
- Major update to existing config_apsettings_from_csv.py workflow. It accepts CSV file downloaded from the Central UI group. This workflow also generates a new CSV file with failed APs. CSV file format from the previous version is not backward compatible.
- Fixes and improvement to existing modules, utilities and the documentation
- Merged PRs and resolved GitHub issues:
- PR #6: example AP rename code always terminates with an error
- PR #2: fix url concat in command()
- PR #1: Added the ability for multiple Aruba Central account's in the config file and passed to pycentral
- No known issues.
- This is the initial release for the Aruba Central Python SDK, sample scripts, and workflows.
- No known issues.