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-07-01 | Library v3.3.0b0 | API 1.72.0-beta.0


No Python keyword parameter conflicts detected.


## 2026-06-24 | Library v3.2.0b3 | API 1.71.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.71.0-beta.3"
__api_version__ = "1.72.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.2.0b3"
__version__ = "3.3.0b0"
60 changes: 56 additions & 4 deletions meraki/aio/api/appliance.py
Original file line number Diff line number Diff line change
Expand Up @@ -2896,7 +2896,7 @@ def createNetworkApplianceVlan(self, networkId: str, id: str, name: str, **kwarg
- dhcpOptions (array): The list of DHCP options that will be included in DHCP responses. Each object in the list should have "code", "type", and "value" properties.
- adaptivePolicyGroupId (string): Adaptive policy group ID this VLAN is assigned to.
- sgt (object): Security Group Tag settings for the VLAN.
- vrf (object): VRF configuration on the VLAN
- vrf (object): VRF configuration on the VLAN.
- uplinks (array): Per-uplink NAT exception override configuration on the VLAN. Applicable only for networks that support NAT exceptions.
"""

Expand Down Expand Up @@ -3054,7 +3054,7 @@ def updateNetworkApplianceVlan(self, networkId: str, vlanId: str, **kwargs):
- mandatoryDhcp (object): Mandatory DHCP will enforce that clients connecting to this VLAN must use the IP address assigned by the DHCP server. Clients who use a static IP address won't be able to associate. Only available on firmware versions 17.0 and above
- adaptivePolicyGroupId (string): Adaptive policy group ID that all traffic originating from this VLAN is assigned to.
- sgt (object): Security Group Tag settings for the VLAN.
- vrf (object): VRF configuration on the VLAN
- vrf (object): VRF configuration on the VLAN.
- uplinks (array): Per-uplink NAT exception override configuration on the VLAN. Applicable only for networks that support NAT exceptions.
"""

Expand Down Expand Up @@ -3163,11 +3163,11 @@ def updateNetworkApplianceVpnBgp(self, networkId: str, enabled: bool, **kwargs):

- networkId (string): Network ID
- enabled (boolean): Boolean value to enable or disable the BGP configuration. When BGP is enabled, the asNumber (ASN) will be autopopulated with the preconfigured ASN at other Hubs or a default value if there is no ASN configured.
- asNumber (integer): An Autonomous System Number (ASN) is required if you are to run BGP and peer with another BGP Speaker outside of the Auto VPN domain. This ASN will be applied to the entire Auto VPN domain. The entire 4-byte ASN range is supported. So, the ASN must be an integer between 1 and 4294967295. When absent, this field is not updated. If no value exists then it defaults to 64512.
- asNumber (integer): An Autonomous System Number (ASN) is required if you are to run BGP and peer with another BGP Speaker outside of the Auto VPN domain. This ASN will be applied to the entire Auto VPN domain and is only configurable for Auto VPN BGP networks. The entire 4-byte ASN range is supported. So, the ASN must be an integer between 1 and 4294967295. When absent, this field is not updated. If no value exists then it defaults to 64512.
- ibgpHoldTimer (integer): The iBGP holdtimer in seconds. The iBGP holdtimer must be an integer between 12 and 240. When absent, this field is not updated. If no value exists then it defaults to 240.
- ipv6 (object): Settings for IPv6 configurations on the organization.
- tunnelDownTermination (object): Settings for tunnel down termination on the organization.
- vpnAsNumber (integer): Network specific number of the Autonomous System to which the appliance belongs.
- vpnAsNumber (integer): Network specific number of the Autonomous System to which the appliance belongs. This field is only configurable for Independent BGP networks.
- priorityRoute (string): Sets the priority route between eBGP and Auto VPN.
- routerId (string): The router ID of the appliance
- neighbors (array): List of BGP neighbors. This list replaces the existing set of neighbors. When absent, this field is not updated.
Expand Down Expand Up @@ -4534,6 +4534,58 @@ def getOrganizationApplianceSecurityEvents(self, organizationId: str, total_page

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

def httpsiOrganizationApplianceSecurity(self, organizationId: str):
"""
**Retrieve the HTTPS Inspection state for all security appliances in an organization.**
https://developer.cisco.com/meraki/api-v1/#!httpsi-organization-appliance-security

- organizationId (string): Organization ID
"""

metadata = {
"tags": ["appliance", "configure", "security"],
"operation": "httpsiOrganizationApplianceSecurity",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
resource = f"/organizations/{organizationId}/appliance/security/httpsi"

return self._session.get(metadata, resource)

def certificatesOrganizationApplianceSecurityHttpsi(self, organizationId: str, contents: str, serials: list, **kwargs):
"""
**Upload an HTTPS Inspection certificate to MX devices in the same organization**
https://developer.cisco.com/meraki/api-v1/#!certificates-organization-appliance-security-httpsi

- organizationId (string): Organization ID
- contents (string): The private key and certificate used to inspect HTTPS traffic. The certificate must be in .pem format.
- serials (array): Serial numbers of the security appliances that will receive the new HTTPS certificate for HTTPS Inspection
"""

kwargs = locals()

metadata = {
"tags": ["appliance", "configure", "security", "httpsi"],
"operation": "certificatesOrganizationApplianceSecurityHttpsi",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
resource = f"/organizations/{organizationId}/appliance/security/httpsi/certificates"

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

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

def getOrganizationApplianceSecurityIntrusion(self, organizationId: str):
"""
**Returns all supported intrusion settings for an organization**
Expand Down
141 changes: 138 additions & 3 deletions meraki/aio/api/organizations.py
Original file line number Diff line number Diff line change
Expand Up @@ -3505,6 +3505,56 @@ def getOrganizationAssuranceWiredExperienceSuccessfulConnectionsByNetworkByInter

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

def getOrganizationAssuranceWiredExperienceSuccessfulConnectionsByNetworkByServer(self, organizationId: str, **kwargs):
"""
**Summarizes wired connection successes and failures by server.**
https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wired-experience-successful-connections-by-network-by-server

- organizationId (string): Organization ID
- networkIds (array): Filter results by network.
- serials (array): Filter results by device serial.
- 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.
"""

kwargs.update(locals())

metadata = {
"tags": ["organizations", "configure", "wired", "experience", "successfulConnections", "byNetwork", "byServer"],
"operation": "getOrganizationAssuranceWiredExperienceSuccessfulConnectionsByNetworkByServer",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
resource = f"/organizations/{organizationId}/assurance/wired/experience/successfulConnections/byNetwork/byServer"

query_params = [
"networkIds",
"serials",
"t0",
"t1",
"timespan",
]
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"getOrganizationAssuranceWiredExperienceSuccessfulConnectionsByNetworkByServer: ignoring unrecognized kwargs: {invalid}"
)

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

def getOrganizationAssuranceWorkflows(self, organizationId: str, total_pages=1, direction="next", **kwargs):
"""
**Return workflows filtered by organization ID, network ID, type, and category**
Expand Down Expand Up @@ -7137,6 +7187,94 @@ def getOrganizationDevicesSoftwareUpdatesOverviewsByNetwork(

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

def getOrganizationDevicesSoftwareVersions(self, organizationId: str, releaseType: str, **kwargs):
"""
**List the available software upgrade versions for an organization.**
https://developer.cisco.com/meraki/api-v1/#!get-organization-devices-software-versions

- organizationId (string): Organization ID
- releaseType (string): Filter by release type
"""

kwargs = locals()

if "releaseType" in kwargs:
options = ["beta", "generallyAvailable", "recommended"]
assert kwargs["releaseType"] in options, (
f'''"releaseType" cannot be "{kwargs["releaseType"]}", & must be set to one of: {options}'''
)

metadata = {
"tags": ["organizations", "configure", "devices", "software", "versions"],
"operation": "getOrganizationDevicesSoftwareVersions",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
resource = f"/organizations/{organizationId}/devices/software/versions"

query_params = [
"releaseType",
]
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"getOrganizationDevicesSoftwareVersions: ignoring unrecognized kwargs: {invalid}"
)

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

def getOrganizationDevicesSoftwareVersionsChangelogs(self, organizationId: str, total_pages=1, direction="next", **kwargs):
"""
**Provide changelogs for specified versions or, if unspecified, for all versions in the organization, including reference to the last and next versions.**
https://developer.cisco.com/meraki/api-v1/#!get-organization-devices-software-versions-changelogs

- 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
- versionIds (array): Array of version IDs for filtering
- perPage (integer): The number of entries per page returned. Acceptable range is 3 - 1000. Default is 30.
- 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.
"""

kwargs.update(locals())

metadata = {
"tags": ["organizations", "configure", "devices", "software", "versions", "changelogs"],
"operation": "getOrganizationDevicesSoftwareVersionsChangelogs",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
resource = f"/organizations/{organizationId}/devices/software/versions/changelogs"

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

array_params = [
"versionIds",
]
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"getOrganizationDevicesSoftwareVersionsChangelogs: ignoring unrecognized kwargs: {invalid}"
)

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

def getOrganizationDevicesStatuses(self, organizationId: str, total_pages=1, direction="next", **kwargs):
"""
**List the status of every Meraki device in the organization**
Expand Down Expand Up @@ -11574,7 +11712,6 @@ def attachOrganizationSaseSites(self, organizationId: str, **kwargs):

- organizationId (string): Organization ID
- items (array): List of Meraki SD-WAN sites with the associated regions to be attached.
- callback (object): Details for the callback. Please include either an httpServerId OR url and sharedSecret
"""

kwargs.update(locals())
Expand All @@ -11588,7 +11725,6 @@ def attachOrganizationSaseSites(self, organizationId: str, **kwargs):

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

Expand Down Expand Up @@ -11667,7 +11803,6 @@ def detachOrganizationSaseSites(self, organizationId: str, **kwargs):

- organizationId (string): Organization ID
- items (array): List of Secure Access sites to be detached.
- callback (object): Details for the callback. Please include either an httpServerId OR url and sharedSecret
"""

kwargs.update(locals())
Expand Down
Loading
Loading