Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions docs/generation-report.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
# Generation Report

## 2026-06-04 | Library v3.2.0b0 | API 1.71.0-beta.0


No Python keyword parameter conflicts detected.


## 2026-05-27 | Library v3.1.0b3 | API 1.70.0-beta.3


Expand Down
2 changes: 1 addition & 1 deletion meraki/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@
from meraki._version import __version__ # noqa: F401
from datetime import datetime

__api_version__ = "1.70.0-beta.3"
__api_version__ = "1.71.0-beta.0"

__all__ = [
"APIError",
Expand Down
2 changes: 1 addition & 1 deletion meraki/_version.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
__version__ = "3.1.0b3"
__version__ = "3.2.0b0"
443 changes: 443 additions & 0 deletions meraki/aio/api/assistant.py

Large diffs are not rendered by default.

50 changes: 50 additions & 0 deletions meraki/aio/api/devices.py
Original file line number Diff line number Diff line change
Expand Up @@ -964,6 +964,56 @@ def getDeviceLiveToolsPortsStatus(self, serial: str, jobId: str):

return self._session.get(metadata, resource)

def createDeviceLiveToolsPowerUsage(self, serial: str, **kwargs):
"""
**Enqueues a live tool job that retrieves details about a device's overall power usage**
https://developer.cisco.com/meraki/api-v1/#!create-device-live-tools-power-usage

- serial (string): Serial
- callback (object): Details for the callback. Please include either an httpServerId OR url and sharedSecret
"""

kwargs.update(locals())

metadata = {
"tags": ["devices", "liveTools", "power", "usage"],
"operation": "createDeviceLiveToolsPowerUsage",
}
serial = urllib.parse.quote(str(serial), safe="")
resource = f"/devices/{serial}/liveTools/power/usage"

body_params = [
"callback",
]
payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}

if self._session._validate_kwargs:
all_params = [] + body_params
invalid = [k for k in kwargs if k.strip() not in all_params and k != "self"]
if invalid and self._session._logger:
self._session._logger.warning(f"createDeviceLiveToolsPowerUsage: ignoring unrecognized kwargs: {invalid}")

return self._session.post(metadata, resource, payload)

def getDeviceLiveToolsPowerUsage(self, serial: str, jobId: str):
"""
**Retrieve the status and results of a previously created live tool job fetching details about a device's overall power usage.**
https://developer.cisco.com/meraki/api-v1/#!get-device-live-tools-power-usage

- serial (string): Serial
- jobId (string): Job ID
"""

metadata = {
"tags": ["devices", "liveTools", "power", "usage"],
"operation": "getDeviceLiveToolsPowerUsage",
}
serial = urllib.parse.quote(str(serial), safe="")
jobId = urllib.parse.quote(str(jobId), safe="")
resource = f"/devices/{serial}/liveTools/power/usage/{jobId}"

return self._session.get(metadata, resource)

def createDeviceLiveToolsReboot(self, serial: str, **kwargs):
"""
**Enqueue a job to reboot a device**
Expand Down
22 changes: 21 additions & 1 deletion meraki/aio/api/organizations.py
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,7 @@ def updateOrganization(self, organizationId: str, **kwargs):
- name (string): The name of the organization
- management (object): Information about the organization's management system
- api (object): API-specific settings
- privacy (object): Privacy-related settings for the organization.
"""

kwargs.update(locals())
Expand All @@ -113,6 +114,7 @@ def updateOrganization(self, organizationId: str, **kwargs):
"name",
"management",
"api",
"privacy",
]
payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}

Expand Down Expand Up @@ -2369,6 +2371,9 @@ def getOrganizationAssuranceClientsConnectedCountHistory(self, organizationId: s

- organizationId (string): Organization ID
- networkId (string): Network ID to query.
- serials (array): A list of serials of AP devices
- bands (array): Filter results by band. Valid bands are: 2.4, 5, and 6.
- ssidNumbers (array): Filter results by SSID number
- t0 (string): The beginning of the timespan for the data. The maximum lookback period is 14 days from today.
- t1 (string): The end of the timespan for the data. t1 can be a maximum of 7 days after t0.
- timespan (number): The timespan for which the information will be fetched. If specifying timespan, do not specify parameters t0 and t1. The value must be in seconds and be less than or equal to 7 days. The default is 8 hours. If interval is provided, the timespan will be autocalculated.
Expand All @@ -2386,15 +2391,28 @@ def getOrganizationAssuranceClientsConnectedCountHistory(self, organizationId: s

query_params = [
"networkId",
"serials",
"bands",
"ssidNumbers",
"t0",
"t1",
"timespan",
"interval",
]
params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}

array_params = [
"serials",
"bands",
"ssidNumbers",
]
for k, v in kwargs.items():
if k.strip() in array_params:
params[f"{k.strip()}[]"] = kwargs[f"{k}"]
params.pop(k.strip())

if self._session._validate_kwargs:
all_params = query_params
all_params = query_params + array_params
invalid = [k for k in kwargs if k.strip() not in all_params and k != "self"]
if invalid and self._session._logger:
self._session._logger.warning(
Expand Down Expand Up @@ -8752,6 +8770,7 @@ def updateOrganizationLoginSecurity(self, organizationId: str, **kwargs):
- enforceTwoFactorAuth (boolean): Boolean indicating whether users in this organization will be required to use an extra verification code when logging in to Dashboard. This code will be sent to their mobile phone via SMS, or can be generated by the authenticator application.
- enforceLoginIpRanges (boolean): Boolean indicating whether organization will restrict access to Dashboard (including the API) from certain IP addresses.
- loginIpRanges (array): List of acceptable IP ranges. Entries can be single IP addresses, IP address ranges, and CIDR subnets.
- enforceLockedIpSessions (boolean): Boolean indicating whether Dashboard sessions are locked to the IP address from which they were established. Only applicable to organizations that support locked-IP sessions; otherwise the parameter is ignored.
- apiAuthentication (object): Details for indicating whether organization will restrict access to API (but not Dashboard) to certain IP addresses.
"""

Expand All @@ -8778,6 +8797,7 @@ def updateOrganizationLoginSecurity(self, organizationId: str, **kwargs):
"enforceTwoFactorAuth",
"enforceLoginIpRanges",
"loginIpRanges",
"enforceLockedIpSessions",
"apiAuthentication",
]
payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
Expand Down
55 changes: 49 additions & 6 deletions meraki/aio/api/wireless.py
Original file line number Diff line number Diff line change
Expand Up @@ -2686,7 +2686,7 @@ def updateNetworkWirelessSsid(self, networkId: str, number: str, **kwargs):
- radiusServerTimeout (integer): The amount of time for which a RADIUS client waits for a reply from the RADIUS server (must be between 1-10 seconds).
- radiusServerAttemptsLimit (integer): The maximum number of transmit attempts after which a RADIUS server is failed over (must be between 1-5).
- radiusFallbackEnabled (boolean): Whether or not higher priority RADIUS servers should be retried after 60 seconds.
- radiusRadsec (object): The current settings for RADIUS RADSec
- radiusRadsec (object): The current settings for RADIUS RadSec
- radiusCoaEnabled (boolean): If true, Meraki devices will act as a RADIUS Dynamic Authorization Server and will respond to RADIUS Change-of-Authorization and Disconnect messages sent by the RADIUS server.
- radiusFailoverPolicy (string): This policy determines how authentication requests should be handled in the event that all of the configured RADIUS servers are unreachable ('Deny access' or 'Allow access')
- radiusLoadBalancingPolicy (string): This policy determines which RADIUS server will be contacted first in an authentication attempt and the ordering of any necessary retry attempts ('Strict priority order' or 'Round robin')
Expand Down Expand Up @@ -5429,6 +5429,49 @@ def getOrganizationAssuranceWirelessExperienceMetricsOverviewHistoryByNetwork(

return self._session.get_pages(metadata, resource, params, total_pages, direction)

def getOrganizationAssuranceWirelessExperienceMostImpactedNetworks(self, organizationId: str, **kwargs):
"""
**Returns the most impacted wireless experience networks and the top failure contributor for each network.**
https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-most-impacted-networks

- organizationId (string): Organization ID
- t0 (string): The beginning of the timespan for the data. The maximum lookback period is 14 days from today.
- t1 (string): The end of the timespan for the data. t1 can be a maximum of 14 days after t0.
- timespan (number): The timespan for which the information will be fetched. If specifying timespan, do not specify parameters t0 and t1. The value must be in seconds and be greater than or equal to 15 minutes and be less than or equal to 14 days. The default is 2 hours.
- limit (integer): Number of most impacted networks to return. Default is 5. Maximum is 10.
"""

kwargs.update(locals())

if "limit" in kwargs:
options = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
assert kwargs["limit"] in options, f'''"limit" cannot be "{kwargs["limit"]}", & must be set to one of: {options}'''

metadata = {
"tags": ["wireless", "configure", "experience", "mostImpactedNetworks"],
"operation": "getOrganizationAssuranceWirelessExperienceMostImpactedNetworks",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
resource = f"/organizations/{organizationId}/assurance/wireless/experience/mostImpactedNetworks"

query_params = [
"t0",
"t1",
"timespan",
"limit",
]
params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}

if self._session._validate_kwargs:
all_params = query_params
invalid = [k for k in kwargs if k.strip() not in all_params and k != "self"]
if invalid and self._session._logger:
self._session._logger.warning(
f"getOrganizationAssuranceWirelessExperienceMostImpactedNetworks: ignoring unrecognized kwargs: {invalid}"
)

return self._session.get(metadata, resource, params)

def getOrganizationAssuranceWirelessExperienceSuccessfulConnectsByNetwork(
self, organizationId: str, total_pages=1, direction="next", **kwargs
):
Expand Down Expand Up @@ -8759,7 +8802,7 @@ def getOrganizationWirelessDevicesProvisioningRecommendationsTags(self, organiza

def getOrganizationWirelessDevicesRadsecCertificatesAuthorities(self, organizationId: str, **kwargs):
"""
**Query for details on the organization's RADSEC device Certificate Authority certificates (CAs)**
**Query for details on the organization's RadSec device Certificate Authority certificates (CAs)**
https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-radsec-certificates-authorities

- organizationId (string): Organization ID
Expand Down Expand Up @@ -8800,7 +8843,7 @@ def getOrganizationWirelessDevicesRadsecCertificatesAuthorities(self, organizati

def updateOrganizationWirelessDevicesRadsecCertificatesAuthorities(self, organizationId: str, **kwargs):
"""
**Update an organization's RADSEC device Certificate Authority (CA) state**
**Update an organization's RadSec device Certificate Authority (CA) state**
https://developer.cisco.com/meraki/api-v1/#!update-organization-wireless-devices-radsec-certificates-authorities

- organizationId (string): Organization ID
Expand Down Expand Up @@ -8835,7 +8878,7 @@ def updateOrganizationWirelessDevicesRadsecCertificatesAuthorities(self, organiz

def createOrganizationWirelessDevicesRadsecCertificatesAuthority(self, organizationId: str):
"""
**Create an organization's RADSEC device Certificate Authority (CA)**
**Create an organization's RadSec device Certificate Authority (CA)**
https://developer.cisco.com/meraki/api-v1/#!create-organization-wireless-devices-radsec-certificates-authority

- organizationId (string): Organization ID
Expand All @@ -8852,7 +8895,7 @@ def createOrganizationWirelessDevicesRadsecCertificatesAuthority(self, organizat

def getOrganizationWirelessDevicesRadsecCertificatesAuthoritiesCrls(self, organizationId: str, **kwargs):
"""
**Query for certificate revocation list (CRL) for the organization's RADSEC device Certificate Authorities (CAs).**
**Query for certificate revocation list (CRL) for the organization's RadSec device Certificate Authorities (CAs).**
https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-radsec-certificates-authorities-crls

- organizationId (string): Organization ID
Expand Down Expand Up @@ -8893,7 +8936,7 @@ def getOrganizationWirelessDevicesRadsecCertificatesAuthoritiesCrls(self, organi

def getOrganizationWirelessDevicesRadsecCertificatesAuthoritiesCrlsDeltas(self, organizationId: str, **kwargs):
"""
**Query for all delta certificate revocation list (CRL) for the organization's RADSEC device Certificate Authority (CA) with the given id.**
**Query for all delta certificate revocation list (CRL) for the organization's RadSec device Certificate Authority (CA) with the given id.**
https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-radsec-certificates-authorities-crls-deltas

- organizationId (string): Organization ID
Expand Down
Loading
Loading