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
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-05-27 | Library v3.1.0b3 | API 1.70.0-beta.3


No Python keyword parameter conflicts detected.


## 2026-05-20 | Library v3.1.0b2 | API 1.70.0-beta.2


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.2"
__api_version__ = "1.70.0-beta.3"

__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.0b2"
__version__ = "3.1.0b3"
201 changes: 167 additions & 34 deletions meraki/aio/api/appliance.py

Large diffs are not rendered by default.

3 changes: 3 additions & 0 deletions meraki/aio/api/campusGateway.py
Original file line number Diff line number Diff line change
Expand Up @@ -408,6 +408,7 @@ def getOrganizationCampusGatewayClustersNetworksOverviews(
- clusterIds (array): Optional parameter to filter by MCG cluster IDs. This filter uses multiple exact matches.
- siteIds (array): Optional parameter to filter by site IDs. This filter uses multiple exact matches.
- networkIds (array): Optional parameter to filter networks. This filter uses multiple exact matches.
- tunnelingSources (array): Optional parameter to filter networks by tunneling source. 'configured' returns networks explicitly set up to tunnel through the campus gateway. 'roaming' returns networks tunneling due to AP roaming or disaster recovery. 'roaming' is only effective when 'clusterIds' is also provided; without 'clusterIds', the filter defaults to configured-only behavior. Defaults to 'configured' if omitted.
- search (string): Optional parameter to filter networks by wireless network name. This filter uses case-insensitive substring matching.
- sortBy (string): Optional parameter to sort results. Default is 'name'. Use 'siteName' to sort by site name.
- sortOrder (string): Optional parameter to specify sort direction. Default is 'asc'.
Expand Down Expand Up @@ -440,6 +441,7 @@ def getOrganizationCampusGatewayClustersNetworksOverviews(
"clusterIds",
"siteIds",
"networkIds",
"tunnelingSources",
"search",
"sortBy",
"sortOrder",
Expand All @@ -453,6 +455,7 @@ def getOrganizationCampusGatewayClustersNetworksOverviews(
"clusterIds",
"siteIds",
"networkIds",
"tunnelingSources",
]
for k, v in kwargs.items():
if k.strip() in array_params:
Expand Down
72 changes: 36 additions & 36 deletions meraki/aio/api/devices.py
Original file line number Diff line number Diff line change
Expand Up @@ -862,25 +862,27 @@ def getDeviceLiveToolsPingDevice(self, serial: str, id: str):

return self._session.get(metadata, resource)

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

- serial (string): Serial
- ports (array): A list of ports to cycle. For Catalyst switches, IOS interface names are also supported, such as "GigabitEthernet1/0/8", "Gi1/0/8", or even "1/0/8".
- callback (object): Details for the callback. Please include either an httpServerId OR url and sharedSecret
"""

kwargs.update(locals())

metadata = {
"tags": ["devices", "liveTools", "portStatus"],
"operation": "createDeviceLiveToolsPortStatus",
"tags": ["devices", "liveTools", "ports", "cycle"],
"operation": "createDeviceLiveToolsPortsCycle",
}
serial = urllib.parse.quote(str(serial), safe="")
resource = f"/devices/{serial}/liveTools/portStatus"
resource = f"/devices/{serial}/liveTools/ports/cycle"

body_params = [
"ports",
"callback",
]
payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
Expand All @@ -889,50 +891,48 @@ def createDeviceLiveToolsPortStatus(self, serial: str, **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"createDeviceLiveToolsPortStatus: ignoring unrecognized kwargs: {invalid}")
self._session._logger.warning(f"createDeviceLiveToolsPortsCycle: ignoring unrecognized kwargs: {invalid}")

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

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

- serial (string): Serial
- portStatusId (string): Port status ID
- id (string): ID
"""

metadata = {
"tags": ["devices", "liveTools", "portStatus"],
"operation": "getDeviceLiveToolsPortStatus",
"tags": ["devices", "liveTools", "ports", "cycle"],
"operation": "getDeviceLiveToolsPortsCycle",
}
serial = urllib.parse.quote(str(serial), safe="")
portStatusId = urllib.parse.quote(str(portStatusId), safe="")
resource = f"/devices/{serial}/liveTools/portStatus/{portStatusId}"
id = urllib.parse.quote(str(id), safe="")
resource = f"/devices/{serial}/liveTools/ports/cycle/{id}"

return self._session.get(metadata, resource)

def createDeviceLiveToolsPortsCycle(self, serial: str, ports: list, **kwargs):
def createDeviceLiveToolsPortsStatus(self, serial: str, **kwargs):
"""
**Enqueue a job to perform a cycle port for the device on the specified ports**
https://developer.cisco.com/meraki/api-v1/#!create-device-live-tools-ports-cycle
**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
- ports (array): A list of ports to cycle. For Catalyst switches, IOS interface names are also supported, such as "GigabitEthernet1/0/8", "Gi1/0/8", or even "1/0/8".
- callback (object): Details for the callback. Please include either an httpServerId OR url and sharedSecret
"""

kwargs.update(locals())

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

body_params = [
"ports",
"callback",
]
payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
Expand All @@ -941,26 +941,26 @@ def createDeviceLiveToolsPortsCycle(self, serial: str, ports: list, **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"createDeviceLiveToolsPortsCycle: ignoring unrecognized kwargs: {invalid}")
self._session._logger.warning(f"createDeviceLiveToolsPortsStatus: ignoring unrecognized kwargs: {invalid}")

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

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

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

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

return self._session.get(metadata, resource)

Expand Down Expand Up @@ -1047,7 +1047,7 @@ def createDeviceLiveToolsRoutingTable(self, serial: str, **kwargs):

def createDeviceLiveToolsRoutingTableLookup(self, serial: str, **kwargs):
"""
**Enqueue a job to perform a routing table lookup request for the device**
**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
Expand Down Expand Up @@ -1108,7 +1108,7 @@ def createDeviceLiveToolsRoutingTableLookup(self, serial: str, **kwargs):

def getDeviceLiveToolsRoutingTableLookup(self, serial: str, id: str):
"""
**Return a routing table live tool lookup job.**
**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
Expand All @@ -1127,7 +1127,7 @@ def getDeviceLiveToolsRoutingTableLookup(self, serial: str, id: str):

def createDeviceLiveToolsRoutingTableSummary(self, serial: str, **kwargs):
"""
**Enqueue a job to perform a routing table summary request for the device**
**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
Expand Down Expand Up @@ -1160,7 +1160,7 @@ def createDeviceLiveToolsRoutingTableSummary(self, serial: str, **kwargs):

def getDeviceLiveToolsRoutingTableSummary(self, serial: str, id: str):
"""
**Return a routing table live tool summary job.**
**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
Expand Down
17 changes: 17 additions & 0 deletions meraki/aio/api/organizations.py
Original file line number Diff line number Diff line change
Expand Up @@ -3691,6 +3691,23 @@ def deleteOrganizationAuthRadiusServer(self, organizationId: str, serverId: str)

return self._session.delete(metadata, resource)

def codeOrganizationAutomateIdentity(self, organizationId: str):
"""
**Generate a single use short lived code that can be used to retrieve the identity of the current user in the organization.**
https://developer.cisco.com/meraki/api-v1/#!code-organization-automate-identity

- organizationId (string): Organization ID
"""

metadata = {
"tags": ["organizations", "configure", "automate", "identity"],
"operation": "codeOrganizationAutomateIdentity",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
resource = f"/organizations/{organizationId}/automate/identity/code"

return self._session.post(metadata, resource)

def getOrganizationBrandingPolicies(self, organizationId: str):
"""
**List the branding policies of an organization**
Expand Down
16 changes: 9 additions & 7 deletions meraki/aio/api/secureConnect.py
Original file line number Diff line number Diff line change
Expand Up @@ -887,19 +887,19 @@ def getOrganizationSecureConnectRemoteAccessLogsExports(

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

def createOrganizationSecureConnectRemoteAccessLogsExport(self, organizationId: str, from_: int, to: int, **kwargs):
def createOrganizationSecureConnectRemoteAccessLogsExport(self, organizationId: str, **kwargs):
"""
**Creates a export for a provided timestamp interval.**
**Creates an export for a provided timestamp interval.**
https://developer.cisco.com/meraki/api-v1/#!create-organization-secure-connect-remote-access-logs-export

- organizationId (string): Organization ID
- from (integer): The start of the interval, must be within the past 30 days.
- to (integer): The end of the interval, must not exceed the current date.
- t0 (string): The start of the interval, must be within the past 30 days. Must be provided with t1.
- t1 (string): The end of the interval, must not exceed the current date. Must be provided with t0.
- from (integer): Legacy start of the interval in epoch seconds, must be within the past 30 days. Must be provided with to.
- to (integer): Legacy end of the interval in epoch seconds, must not exceed the current date. Must be provided with from.
"""

kwargs = locals()
if "from_" in kwargs:
kwargs["from"] = kwargs.pop("from_")
kwargs.update(locals())

metadata = {
"tags": ["secureConnect", "configure", "remoteAccessLogsExports"],
Expand All @@ -909,6 +909,8 @@ def createOrganizationSecureConnectRemoteAccessLogsExport(self, organizationId:
resource = f"/organizations/{organizationId}/secureConnect/remoteAccessLogsExports"

body_params = [
"t0",
"t1",
"from",
"to",
]
Expand Down
Loading
Loading