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-09-16 | Library v4.5.0b2 | API 1.74.0-beta.2


No Python keyword parameter conflicts detected.


## 2026-09-09 | Library v4.5.0b1 | API 1.74.0-beta.1


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.exceptions import APIError, APIKeyError, APIResponseError, AsyncAPIError
from meraki.rest_session import RestSession

__api_version__ = "1.74.0-beta.1"
__api_version__ = "1.74.0-beta.2"

__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__ = "4.5.0b1"
__version__ = "4.5.0b2"
2 changes: 1 addition & 1 deletion meraki/aio/api/appliance.py
Original file line number Diff line number Diff line change
Expand Up @@ -5704,7 +5704,7 @@ def getOrganizationApplianceUmbrellaPoliciesByNetwork(

def getOrganizationApplianceUplinkStatuses(self, organizationId: str, total_pages=1, direction="next", **kwargs):
"""
**List the uplink status of every Meraki MX and Z series appliances in the organization**
**List the uplink status of every Meraki MX appliance, Z series appliance, and Secure Router in the organization**
https://developer.cisco.com/meraki/api-v1/#!get-organization-appliance-uplink-statuses

- organizationId (string): Organization ID
Expand Down
45 changes: 45 additions & 0 deletions meraki/aio/api/switch.py
Original file line number Diff line number Diff line change
Expand Up @@ -3597,6 +3597,8 @@ def updateOrganizationConfigTemplateSwitchProfilePort(
- tags (array): The list of tags of the switch template port.
- enabled (boolean): The status of the switch template port.
- poeEnabled (boolean): The PoE status of the switch template port.
- perpetualPoe (object): Perpetual PoE settings for the switch template port.
- fastPoe (object): Fast PoE settings for the switch template port.
- type (string): The type of the switch template port ('access', 'trunk', 'stack', 'routed', 'svl' or 'dad').
- vlan (integer): The VLAN of the switch template port. For a trunk port, this is the native VLAN. A null value will clear the value set for trunk ports.
- voiceVlan (integer): The voice VLAN of the switch template port. Only applicable to access ports.
Expand Down Expand Up @@ -3660,6 +3662,8 @@ def updateOrganizationConfigTemplateSwitchProfilePort(
"tags",
"enabled",
"poeEnabled",
"perpetualPoe",
"fastPoe",
"type",
"vlan",
"voiceVlan",
Expand Down Expand Up @@ -7362,6 +7366,47 @@ def getOrganizationSwitchRoutingStaticRoutes(self, organizationId: str, total_pa

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

def getOrganizationSwitchSoftwareUpdatesRetriesCandidates(self, organizationId: str, **kwargs):
"""
**List switch update retry candidates in an organization.**
https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-software-updates-retries-candidates

- organizationId (string): Organization ID
- networkIds (array): Optional array of network IDs used to limit results to specific networks in the organization.
"""

kwargs.update(locals())

metadata = {
"tags": ["switch", "configure", "software", "updates", "retries", "candidates"],
"operation": "getOrganizationSwitchSoftwareUpdatesRetriesCandidates",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
resource = f"/organizations/{organizationId}/switch/software/updates/retries/candidates"

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

array_params = [
"networkIds",
]
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 + 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(
f"getOrganizationSwitchSoftwareUpdatesRetriesCandidates: ignoring unrecognized kwargs: {invalid}"
)

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

def getOrganizationSwitchSpanningTree(self, organizationId: str, total_pages=1, direction="next", **kwargs):
"""
**Returns Spanning Tree configuration settings**
Expand Down
87 changes: 87 additions & 0 deletions meraki/aio/api/wireless.py
Original file line number Diff line number Diff line change
Expand Up @@ -267,6 +267,39 @@ def getDeviceWirelessLatencyStats(self, serial: str, **kwargs):

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

def updateDeviceWirelessMeshGatewaysPreferred(self, serial: str, gateways: list, **kwargs):
"""
**Replace the complete list of preferred gateways for this device**
https://developer.cisco.com/meraki/api-v1/#!update-device-wireless-mesh-gateways-preferred

- serial (string): Serial
- gateways (array): Complete list of preferred gateways, ordered by priority. Each gateway must specify exactly one of serial or mac. Send an empty array to clear the list. Maximum: 2 gateways.
"""

kwargs = locals()

metadata = {
"tags": ["wireless", "configure", "mesh", "gateways", "preferred"],
"operation": "updateDeviceWirelessMeshGatewaysPreferred",
}
serial = urllib.parse.quote(str(serial), safe="")
resource = f"/devices/{serial}/wireless/mesh/gateways/preferred"

body_params = [
"gateways",
]
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"updateDeviceWirelessMeshGatewaysPreferred: ignoring unrecognized kwargs: {invalid}"
)

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

def getDeviceWirelessRadioAfcPosition(self, serial: str):
"""
**Return the position for a wireless device**
Expand Down Expand Up @@ -9798,6 +9831,60 @@ def getOrganizationWirelessLocationWayfindingByNetwork(

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

def getOrganizationWirelessMeshGatewaysPreferredByDevice(
self, organizationId: str, total_pages=1, direction="next", **kwargs
):
"""
**List preferred gateways for this organization by device**
https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-mesh-gateways-preferred-by-device

- organizationId (string): Organization ID
- total_pages (integer or string): use with perPage to get total results up to total_pages*perPage; -1 or "all" for all pages
- direction (string): direction to paginate, either "next" (default) or "prev" page
- perPage (integer): The number of entries per page returned. Acceptable range is 3 - 1000. Default is 1000.
- startingAfter (string): A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.
- endingBefore (string): A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.
- networkIds (array): Optional filter for preferred gateways by exact network ID. Maximum: 100 network IDs.
- serials (array): Optional filter for preferred gateways by exact device serial number. Maximum: 100 serials.
"""

kwargs.update(locals())

metadata = {
"tags": ["wireless", "configure", "mesh", "gateways", "preferred", "byDevice"],
"operation": "getOrganizationWirelessMeshGatewaysPreferredByDevice",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
resource = f"/organizations/{organizationId}/wireless/mesh/gateways/preferred/byDevice"

query_params = [
"perPage",
"startingAfter",
"endingBefore",
"networkIds",
"serials",
]
params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}

array_params = [
"networkIds",
"serials",
]
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 + 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(
f"getOrganizationWirelessMeshGatewaysPreferredByDevice: ignoring unrecognized kwargs: {invalid}"
)

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

def getOrganizationWirelessMqttSettings(self, organizationId: str, total_pages=1, direction="next", **kwargs):
"""
**Return MQTT Settings for networks**
Expand Down
2 changes: 1 addition & 1 deletion meraki/api/appliance.py
Original file line number Diff line number Diff line change
Expand Up @@ -5704,7 +5704,7 @@ def getOrganizationApplianceUmbrellaPoliciesByNetwork(

def getOrganizationApplianceUplinkStatuses(self, organizationId: str, total_pages=1, direction="next", **kwargs):
"""
**List the uplink status of every Meraki MX and Z series appliances in the organization**
**List the uplink status of every Meraki MX appliance, Z series appliance, and Secure Router in the organization**
https://developer.cisco.com/meraki/api-v1/#!get-organization-appliance-uplink-statuses

- organizationId (string): Organization ID
Expand Down
4 changes: 4 additions & 0 deletions meraki/api/batch/switch.py
Original file line number Diff line number Diff line change
Expand Up @@ -2058,6 +2058,8 @@ def updateOrganizationConfigTemplateSwitchProfilePort(
- tags (array): The list of tags of the switch template port.
- enabled (boolean): The status of the switch template port.
- poeEnabled (boolean): The PoE status of the switch template port.
- perpetualPoe (object): Perpetual PoE settings for the switch template port.
- fastPoe (object): Fast PoE settings for the switch template port.
- type (string): The type of the switch template port ('access', 'trunk', 'stack', 'routed', 'svl' or 'dad').
- vlan (integer): The VLAN of the switch template port. For a trunk port, this is the native VLAN. A null value will clear the value set for trunk ports.
- voiceVlan (integer): The voice VLAN of the switch template port. Only applicable to access ports.
Expand Down Expand Up @@ -2117,6 +2119,8 @@ def updateOrganizationConfigTemplateSwitchProfilePort(
"tags",
"enabled",
"poeEnabled",
"perpetualPoe",
"fastPoe",
"type",
"vlan",
"voiceVlan",
Expand Down
25 changes: 25 additions & 0 deletions meraki/api/batch/wireless.py
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,31 @@ def updateDeviceWirelessElectronicShelfLabel(self, serial: str, **kwargs):
}
return action

def updateDeviceWirelessMeshGatewaysPreferred(self, serial: str, gateways: list, **kwargs):
"""
**Replace the complete list of preferred gateways for this device. Send an empty gateways array to clear the list. The list is ordered by priority and supports at most two gateways. **
https://developer.cisco.com/meraki/api-v1/#!update-device-wireless-mesh-gateways-preferred

- serial (string): Serial
- gateways (array): Complete list of preferred gateways, ordered by priority. Each gateway must specify exactly one of serial or mac. Send an empty array to clear the list. Maximum: 2 gateways.
"""

kwargs = locals()

serial = urllib.parse.quote(serial, safe="")
resource = f"/devices/{serial}/wireless/mesh/gateways/preferred"

body_params = [
"gateways",
]
payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
action = {
"resource": resource,
"operation": "update",
"body": payload,
}
return action

def updateDeviceWirelessRadioAfcPosition(self, serial: str, **kwargs):
"""
**Update the position attributes for this device**
Expand Down
45 changes: 45 additions & 0 deletions meraki/api/switch.py
Original file line number Diff line number Diff line change
Expand Up @@ -3597,6 +3597,8 @@ def updateOrganizationConfigTemplateSwitchProfilePort(
- tags (array): The list of tags of the switch template port.
- enabled (boolean): The status of the switch template port.
- poeEnabled (boolean): The PoE status of the switch template port.
- perpetualPoe (object): Perpetual PoE settings for the switch template port.
- fastPoe (object): Fast PoE settings for the switch template port.
- type (string): The type of the switch template port ('access', 'trunk', 'stack', 'routed', 'svl' or 'dad').
- vlan (integer): The VLAN of the switch template port. For a trunk port, this is the native VLAN. A null value will clear the value set for trunk ports.
- voiceVlan (integer): The voice VLAN of the switch template port. Only applicable to access ports.
Expand Down Expand Up @@ -3660,6 +3662,8 @@ def updateOrganizationConfigTemplateSwitchProfilePort(
"tags",
"enabled",
"poeEnabled",
"perpetualPoe",
"fastPoe",
"type",
"vlan",
"voiceVlan",
Expand Down Expand Up @@ -7362,6 +7366,47 @@ def getOrganizationSwitchRoutingStaticRoutes(self, organizationId: str, total_pa

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

def getOrganizationSwitchSoftwareUpdatesRetriesCandidates(self, organizationId: str, **kwargs):
"""
**List switch update retry candidates in an organization.**
https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-software-updates-retries-candidates

- organizationId (string): Organization ID
- networkIds (array): Optional array of network IDs used to limit results to specific networks in the organization.
"""

kwargs.update(locals())

metadata = {
"tags": ["switch", "configure", "software", "updates", "retries", "candidates"],
"operation": "getOrganizationSwitchSoftwareUpdatesRetriesCandidates",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
resource = f"/organizations/{organizationId}/switch/software/updates/retries/candidates"

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

array_params = [
"networkIds",
]
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 + 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(
f"getOrganizationSwitchSoftwareUpdatesRetriesCandidates: ignoring unrecognized kwargs: {invalid}"
)

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

def getOrganizationSwitchSpanningTree(self, organizationId: str, total_pages=1, direction="next", **kwargs):
"""
**Returns Spanning Tree configuration settings**
Expand Down
Loading
Loading