Skip to content
Merged
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
7 changes: 7 additions & 0 deletions docs/generation-report.md
Original file line number Diff line number Diff line change
@@ -1 +1,8 @@
# Generation Report

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


No Python keyword parameter conflicts detected.


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"
__api_version__ = "1.71.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.0"
__version__ = "3.2.0"
485 changes: 485 additions & 0 deletions meraki/aio/api/appliance.py

Large diffs are not rendered by default.

232 changes: 232 additions & 0 deletions meraki/aio/api/devices.py
Original file line number Diff line number Diff line change
Expand Up @@ -679,6 +679,238 @@ def getDeviceLiveToolsPortsCycle(self, serial: str, id: str):

return self._session.get(metadata, resource)

def createDeviceLiveToolsPortsStatus(self, serial: str, **kwargs):
"""
**Enqueue a job to retrieve port status for a device**
https://developer.cisco.com/meraki/api-v1/#!create-device-live-tools-ports-status

- 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", "ports", "status"],
"operation": "createDeviceLiveToolsPortsStatus",
}
serial = urllib.parse.quote(str(serial), safe="")
resource = f"/devices/{serial}/liveTools/ports/status"

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"createDeviceLiveToolsPortsStatus: ignoring unrecognized kwargs: {invalid}")

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

def getDeviceLiveToolsPortsStatus(self, serial: str, jobId: str):
"""
**Return a port status live tool job.**
https://developer.cisco.com/meraki/api-v1/#!get-device-live-tools-ports-status

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

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

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 createDeviceLiveToolsRoutingTableLookup(self, serial: str, **kwargs):
"""
**Enqueue a job to perform a routing table lookup request for a device**
https://developer.cisco.com/meraki/api-v1/#!create-device-live-tools-routing-table-lookup

- serial (string): Serial
- type (string): The type of route defined
- destination (object): The destination IP or subnet to lookup
- nextHop (object): The next hop to lookup
- vpn (object): VPN related search criteria
- callback (object): Details for the callback. Please include either an httpServerId OR url and sharedSecret
"""

kwargs.update(locals())

if "type" in kwargs:
options = [
"BGP",
"EIGRP",
"HSRP",
"IGRP",
"ISIS",
"LISP",
"NAT",
"ND",
"NHRP",
"OMP",
"OSPF",
"RIP",
"default WAN",
"direct",
"static",
]
assert kwargs["type"] in options, f'''"type" cannot be "{kwargs["type"]}", & must be set to one of: {options}'''

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

body_params = [
"type",
"destination",
"nextHop",
"vpn",
"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"createDeviceLiveToolsRoutingTableLookup: ignoring unrecognized kwargs: {invalid}"
)

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

def getDeviceLiveToolsRoutingTableLookup(self, serial: str, id: str):
"""
**Return a routing table live tool lookup job for a device**
https://developer.cisco.com/meraki/api-v1/#!get-device-live-tools-routing-table-lookup

- serial (string): Serial
- id (string): ID
"""

metadata = {
"tags": ["devices", "liveTools", "routingTable", "lookups"],
"operation": "getDeviceLiveToolsRoutingTableLookup",
}
serial = urllib.parse.quote(str(serial), safe="")
id = urllib.parse.quote(str(id), safe="")
resource = f"/devices/{serial}/liveTools/routingTable/lookups/{id}"

return self._session.get(metadata, resource)

def createDeviceLiveToolsRoutingTableSummary(self, serial: str, **kwargs):
"""
**Enqueue a routing table summary job for a device**
https://developer.cisco.com/meraki/api-v1/#!create-device-live-tools-routing-table-summary

- 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", "routingTable", "summaries"],
"operation": "createDeviceLiveToolsRoutingTableSummary",
}
serial = urllib.parse.quote(str(serial), safe="")
resource = f"/devices/{serial}/liveTools/routingTable/summaries"

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"createDeviceLiveToolsRoutingTableSummary: ignoring unrecognized kwargs: {invalid}"
)

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

def getDeviceLiveToolsRoutingTableSummary(self, serial: str, id: str):
"""
**Return the status and result of a routing table summary job**
https://developer.cisco.com/meraki/api-v1/#!get-device-live-tools-routing-table-summary

- serial (string): Serial
- id (string): ID
"""

metadata = {
"tags": ["devices", "liveTools", "routingTable", "summaries"],
"operation": "getDeviceLiveToolsRoutingTableSummary",
}
serial = urllib.parse.quote(str(serial), safe="")
id = urllib.parse.quote(str(id), safe="")
resource = f"/devices/{serial}/liveTools/routingTable/summaries/{id}"

return self._session.get(metadata, resource)

def createDeviceLiveToolsThroughputTest(self, serial: str, **kwargs):
"""
**Enqueue a job to test a device throughput, the test will run for 10 secs to test throughput**
Expand Down
4 changes: 4 additions & 0 deletions meraki/aio/api/networks.py
Original file line number Diff line number Diff line change
Expand Up @@ -2661,6 +2661,8 @@ def updateNetworkSnmp(self, networkId: str, **kwargs):
- access (string): The type of SNMP access. Can be one of 'none' (disabled), 'community' (V1/V2c), or 'users' (V3).
- communityString (string): The SNMP community string. Only relevant if 'access' is set to 'community'.
- users (array): The list of SNMP users. Only relevant if 'access' is set to 'users'.
- authentication (object): SNMPv3 authentication settings. Only relevant if 'access' is set to 'users'.
- privacy (object): SNMPv3 privacy settings. Only relevant if 'access' is set to 'users'.
"""

kwargs.update(locals())
Expand All @@ -2682,6 +2684,8 @@ def updateNetworkSnmp(self, networkId: str, **kwargs):
"access",
"communityString",
"users",
"authentication",
"privacy",
]
payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}

Expand Down
4 changes: 4 additions & 0 deletions 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 @@ -5471,6 +5473,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 @@ -5497,6 +5500,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
14 changes: 8 additions & 6 deletions meraki/aio/api/wireless.py
Original file line number Diff line number Diff line change
Expand Up @@ -2274,7 +2274,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 @@ -3103,6 +3103,7 @@ def updateNetworkWirelessSsidSplashSettings(self, networkId: str, number: str, *
- redirectUrl (string): The custom redirect URL where the users will go after the splash page.
- useRedirectUrl (boolean): The Boolean indicating whether the the user will be redirected to the custom redirect URL after the splash page. A custom redirect URL must be set if this is true.
- welcomeMessage (string): The welcome message for the users on the splash page.
- userConsent (object): User consent settings
- themeId (string): The id of the selected splash theme.
- splashLogo (object): The logo used in the splash page.
- splashImage (object): The image used in the splash page.
Expand Down Expand Up @@ -3144,6 +3145,7 @@ def updateNetworkWirelessSsidSplashSettings(self, networkId: str, number: str, *
"redirectUrl",
"useRedirectUrl",
"welcomeMessage",
"userConsent",
"themeId",
"splashLogo",
"splashImage",
Expand Down Expand Up @@ -4235,7 +4237,7 @@ def deleteOrganizationWirelessDevicesProvisioningDeployment(self, organizationId

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 @@ -4276,7 +4278,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 @@ -4311,7 +4313,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 @@ -4328,7 +4330,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 @@ -4369,7 +4371,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